Forenindex » Programmierung/Entwicklung » AppleScript » Automatische Seitenzahlen durch "echte" ersetzen

Automatische Seitenzahlen durch "echte" ersetzen

Hans Haesler
  
Beiträge gesamt: 5826

24. Dez 2002, 15:37
Bewertung:

gelesen: 1027

Beitrag als Lesezeichen
Du kannst den Text als Xpress-Marken-Text exportieren und in Word mit leistungsfähigen Suchen und Ersetzen-Routinen so aufbereiten, daß nur die gewünschten Textblöcke übrig bleiben.

Script-Unterstützung unter Windows gibt es leider nicht

Automatische Seitenzahlen durch "echte" ersetzen

Hans Haesler
  
Beiträge gesamt: 5826

24. Dez 2002, 15:37
Bewertung:

gelesen: 1026

Beitrag als Lesezeichen
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:hsa@ringier.ch">hsa@ringier.ch</a>