Das folgende Script benutze ich, um im Text eines französischen Restaurant-Führers gewisse Informationen einzusetzen. Es handelt sich um Zeichen in einer speziellen Schrift: Anzahl Kochmützen, Anzahl Bestecke, eine neue Adresse bekommt ein "N", wer bei den Punkten zugelegt hat einen Pfeil, Pictos für verschiedene Angebote wie Parkplatz, Terrasse, Konferenzzimmer, rollstuhlgängig.
Diese Zeichen könnten nur mit grösster Mühe in die danebenstehenden Zeilen (Name des Restaurants, Adresse, Telefon, usw.) eingesetzt werden. Dank der verankerten Box wird man nicht mehr gezwungen, artistische Verrenkungen mit dem Grundlinienversatz vorzunehmen.
Der Haupttext wird ab Datenbank im XPress-Tags-Format exportiert. Die oben erwähnten Infos werden in separate, kleine Dateien geschrieben. Die Nummer aus den Namen dieser Dateien (z.B. "001.TXT") werden beim Export in den Haupttext eingesetzt, ergänzt mit einem Dollar-Zeichen und der Anzahl Kochmützen (= "$0013").
Letztere wird benötigt, weil die Mützen an die Oberlängen des Restaurant-Namens aliniert werden müssen. Am einfachsten gelingt dies mit dem Versatz der ersten Grundlinie. Weil dieser Wert bei jedem Zeichen verschieden ist, müssen 5 Boxen vorbereitet werden. Diese Boxen enthalten alle eine verankerte, benannte Box (z.B. "toq3") und stehen allein auf der ersten Seite. So können sie problemlos adressiert werden.
Der Haupttext wird manuell in die verketteten Boxen geladen. Sämtliche Textattribute sind mit Stilvorlagen definiert und die XPress-Tags werden beim Import korrekt umgesetzt.
Das Script geht die Absätze des Textes durch. Wenn ein Absatz mit einem Dollarzeichen beginnt, wird geprüft, ob die vier nächsten Zeichen in eine Ganzzahl verwandelt werden können. Wenn ja, wird mit den Zeichen 1 bis 3 der Name der Info-Datei zusammengesetzt, z.B. "001.TXT". Das vierte Zeichen ist die Anzahl der Kochmützen. Mit dieser Zahl wird der Name der Textbox zusammengesetzt (z.B. "toq3").
Das Script löscht den Code, setzt die Höhe der entsprechenden Quell-Box auf einen Standard-Wert, lädt den Info-Text in diese Box, stellt die Höhe des Textes fest, verkleinert die Höhe demnach, benennt die Box mit der laufenden Nummer (z.B. "001"), verankert die Box zu Beginn des aktuellen Absatzes und setzt den Namen der Muster-Box zurück (z.B. "toq3").
Das Script ist hier aus Platzgründen gekürzt. Es soll nur den Ablauf zeigen. Ich habe ebenfalls sämtliche Befehle für die Erzeugung und Aktualisierung eines Progress-Balkens (per Dialog Director) entfernt.
---
set folPath to (path to startup disk as string) & "Headers_GM:"
tell document 1 of application "QuarkXPress 4.11"
tell story 1 of text box "text_1"
repeat with i from 1 to count of paragraphs
set okay to 1
try
tell paragraph i
if character 1 = "$" then
set testVal to text from character 2 to character 5
repeat with j from 1 to count of testVal
if character j of testVal is not in "0123456789" then
set okay to 0
exit repeat
end if
end repeat
if okay = 1 then
set aCode to text from character 2 to character 4
set nToque to character 5
delete (text from character 1 to character 5)
set textPath to folPath & aCode & ".TXT"
my loadText(nToque, textPath)
my renameBox(nToque, aCode)
my anchorBox(nToque, i)
my restoreName(aCode, nToque)
end if
end if
end tell
end try
end repeat
end tell
display dialog "Fertig." buttons "OK" default button 1 with icon 1
end tell
on loadText(nToque, textPath)
tell document 1 of application "QuarkXPress 4.11"
tell page 1
try
tell text box ("toq" & nToque)
set height of bounds to 40
set story 1 to textPath as alias
tell story 1
set bLine to (baseline of line -1) as real
end tell
set height of bounds to bLine + 0.8
end tell
end try
end tell
end tell
end loadText
on renameBox(nToque, aCode)
tell document 1 of application "QuarkXPress 4.11"
tell page 1
try
tell text box ("toq" & nToque)
set name to aCode
end tell
end try
end tell
end tell
end renameBox
on anchorBox(nToque, i)
tell document 1 of application "QuarkXPress 4.11"
try
copy text 1 of text box ("toques" & nToque) to before paragraph i of story 1 of text box "text_1"
end try
end tell
end anchorBox
on restoreName(aCode, nToque)
tell document 1 of application "QuarkXPress 4.11"
tell page 1
try
tell text box aCode
set name to ("toq" & nToque)
end tell
end try
end tell
end tell
end restoreName
---
In einem weiteren Thema ("Seitenzahlen-Liste für den Index generieren") wird beschrieben, wie dank dieser verankerten Boxen die Seitenzahlen für den Index zusammengetragen werden können.
Hans Haesler, hsa@ringier.ch