Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03464.jsonl.gz/1075

Automatische Seitenzahlen durch "echte" ersetzen
Automatische Seitenzahlen werden bekanntlich mit Befehl-3 erzeugt. Dabei
spielt es keine Rolle, ob sich die Textbox auf einer Musterseite oder auf
einer Seite des Dokuments befindet.
Im Dokument erscheint die entsprechende Nummer der Seite in der Box. Nach
dem Einfügen oder Löschen von Seiten ändert sich der Wert automatisch. Daher
der Name. Auch beim Ändern des Kapitelanfangs werden die Zahlen angepasst.
So weit, so gut. Probleme gibt es erst, wenn der Inhalt dieser Boxen in eine
Datei geschrieben werden soll. Ob als XPress Tags oder im ASCII-Format:
keine Spur von einer Zahl. Die Datei ist leer.
Dass solch eine Zahl "speziell" ist, kann man auch manuell prüfen: es ist
nicht möglich, den Cursor zwischen zwei Stellen einzusetzen, etwa, um einen
Unterschneidungswert einzugeben. Wenn man eine Zahl auswählt und per Script
die Zeichen zählt, ist das Ergebnis immer 1. Gleichgültig, wieviele Stellen
die Seitenzahl hat. Wenn man die ASCII-Nummer dieses Zeichens verlangt,
dann ist das Resultat immer 4. Damit kann man etwas anfangen...
Am besten ist es, wenn die Boxen der Seitenzahlen benannt sind. Dadurch kann
man die Boxen direkt adressieren. Die Ausführung ist somit viel schneller.
Das folgende Script geht die Seiten durch und versucht dabei, den Inhalt der
Textbox "pageNumber" mit der "echten" Seitenzahl zu ersetzen. Dazu wird
der "Name der Seite 1" eingesetzt. Die '1' ist kein Tippfehler. Weil die
Adressierung über die Textbox geschieht, darf nicht der Wert des Zählers 'i'
genommen werden, sondern eine '1', welche für jede Seite gilt.
---
tell document 1 of application "QuarkXPress 4.11"
activate
repeat with i from 1 to count of pages
tell page i
try
tell text box "pageNumber"
set story 1 to name of page 1 as string
end tell
end try
end tell
end repeat
display dialog "Fertig." buttons "OK" default button 1 with icon 1
end tell
---
Falls die Boxen nicht benannt sind, muss sie das Script der Reihe nach durch-
gehen. Wenn der Inhalt einer Box nur aus einem Zeichen besteht und dessen
ASCII-Nummer 4 ist, dann wird es durch den Namen der Seite 1 ersetzt.
---
tell document 1 of application "QuarkXPress 4.11"
activate
repeat with i from 1 to count of pages
tell page i
repeat with j from 1 to count of text boxes
tell text box j
if story 1 = (ASCII character 4) then
set story 1 to name of page 1 as string
exit repeat
end if
end tell
end repeat
end tell
end repeat
display dialog "Fertig." buttons "OK" default button 1 with icon 1
end tell
---
Der Befehl 'exit repeat' beschleunigt die Ausführung: wenn die "echte" Zahl
eingesetzt ist, wird die Schleife verlassen und zur nächsten Seite übergegangen.
Übrigens: Wer nicht sicher ist, wie man Boxen benennt - ich habe zwei Scripts,
welche für diesen Zweck geschrieben worden sind.
Hans Haesler, <a href="mailto:<email-pii>"><email-pii></a>
als Antwort auf: [#418023]