Du liegst mit Deiner Vermutung richtig. Der Fehler liegt in diesen beiden Zeilen:
st ist Deine Story. Dein itemByRange bezieht sich also auf den Textfluß. start[k].index bezieht sich, wenn start[k] in einer Tabelle ist, nicht auf den Textfluß, sondern auf die Zelle.
Angenommen Du hast in Zelle 3 der ersten Tabelle im Textfluß nach dem 1. Zeichen ein "". Dann lautet dessen Index 1. Und dann folgt das Kommando: Weise den Buchstaben von Index 1 im Textfluß bis zum Index (stop[k]) das Zeichenformat xy zu. Du siehst das Problem? start[k].index liefert Dir die relative Position des gesuchten Strings in der Tabelle. Aber du nimmst diesen, um die Zeichen ab einer relativen Position zum Textfluß auszuzeichnen.
Ein Workaround: 1. Prüfen ob der Treffer in einer Zelle ist (...parent.constructor.name == "Cell"). 2. Wenn nein -> weiter wie bisher. 3. Wenn ja -> Index der Zelle und Index der Tabelle bestimmen und relativ zu diesen die Zeichen ab Pos x bis Pos y mit dem Zeichenformat auszeichnen. Im itemByRange darfst Du Dich dabei also nicht auf die story beziehen, sondern auf die relative Postition innerhalb der Tabelle.
Das ist ziemlich mühsam.
Hast Du es mal mit dem oben angegebenen Skript ReplaceInStringWithConfig.jsx versucht?
(Dieser Beitrag wurde von Martin Fischer am 18. Okt 2006, 14:45 geändert)
Änderungsverlauf:
Beitrag geändert von Martin Fischer
(Moderator) am 18. Okt 2006, 14:45