[GastForen Programmierung/Entwicklung AppleScript Seitenzahlen-Liste für Index generieren

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Seitenzahlen-Liste für Index generieren

Hans Haesler
  
Beiträge gesamt: 5796

6. Aug 2003, 13:21
Beitrag # 1 von 1
Bewertung:
(391 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Dies ist die Fortsetzung des Themas "Boxen benennen und verankern". Dort wird beschrieben, wie Textboxen "fliegend" mit einer laufenden Nummer benannt und verankert werden. Nachdem der Text fertig umbrochen ist, kann mit dem folgenden Script eine Datei erzeugt werden, welche die Zahlen der Seiten enthält, auf welchen sich die Boxen befinden. Diese Datei wird später verwendet, um mit einem weiteren Script einen Index zu ergänzen.
---
property ctr : 1
set indexList to {}
set pageNumbers to (path to startup disk as string) & "pageNumbers.txt"

tell document 1 of application "QuarkXPress 4.11"
  repeat
    set boxName to text -1 thru -3 of ("00" & ctr)
    try
      tell text box boxName
        set pageNumber to name of page 1
      end tell
      set end of indexList to pageNumber
      set ctr to ctr + 1
    on error
      exit repeat
    end try
  end repeat
end tell

set AppleScript's text item delimiters to return
set indexString to (every text item of indexList as string) & return
set AppleScript's text item delimiters to {""}

try
  open for access file pageNumbers with write permission
  write indexString to file pageNumbers starting at eof
  close access file pageNumbers
on error
  try
    close access file pageNumbers
  end try
end try
---
Die Variable 'ctr' wird als 'property' deklariert, damit beim zweiten Abspielen der Wert dieses Zählers erhalten bleibt. Dies ist notwendig, weil der Umbruch bogenweise vorgenommen wird und deshalb mehrere XPress-Dokumente der Reihe nach abgefragt werden müssen. In der endgültigen Version werde ich die Möglichkeit einbauen, den Zähler auf einen bestimmten Wert einzustellen.

Die Variable 'indexList' wird als leere Liste initialisiert. Und in 'pageNumbers' wird der Pfad zur Textdatei definiert, in welcher nach jedem Abspielen die gesammelten Seitenzahlen angehängt werden.

In der Repeat-Schleife wird als erstes der Name der Box zusammengesetzt. Weil der Wert des Zählers einstellig beginnt, müssen die beiden Nullen vorangestellt werden. Mit 'text -1 thru -3 of ("00" & ctr)' wird dies automatisch gemacht. Und wenn der Wert von 'ctr' zweistellig ist, wird durch den gleichen Befehl nur noch eine Null vorangestellt. Wie gelingt dies? Beim Wert '10' werden die beiden Nullen davorgesetzt: "0010". Und 'text -1 thru -3' bedeutet: den Text vom letzten bis zum drittletzten Buchstaben. Die erste Null wird also abgeschnitten und das Ergebnis ist "010".

Dann wird versucht, mit dem Befehl 'set pageNumber to name of page 1' die Zahl der Seite, auf welcher sich die Box befindet, festzustellen. Diese Zahl wird an das Ende von 'indexList' gehängt. Und der Zähler 'ctr' wird um eins erhöht.

Die verwendete Schleife ist vom Typ "endlos", weil keine Ausstiegsbedingung definiert ist. Aber sie enthält einen 'try'-Block. Wenn ein Fehler auftritt, ist der Grund sehr wahrscheinlich, dass sich die angesprochene Box im nächsten Dokument befindet. Mit 'exit repeat' wird darauf die Schleife beendet.

In den folgenden drei Zeilen wird zuerst der Text-Einheiten-Trenner als 'return' definiert. Dann wird die Liste mit den Nummern in einen String verwandelt und ein Return wird angesetzt, damit auch nach der letzten Zahl ein Return steht (sonst würde beim zweiten  Schreiben in die gleiche Datei die erste Zahl gleich an die letzte angehängt). Und die 'text item delimiters' werden auf einen leeren String zurückgesetzt.

Das Umwandeln in einen String ist notwendig, weil das Schreiben einer Liste in eine Datei nicht das erwartete Resultat ergibt. Dieses Problem ist – glaube ich – spätestens unter Mac OS X gelöst, aber hier mit Mac OS 9.2.1 und AS 1.6 noch nicht.

Am Schluss wird die definierte Datei geöffnet (beim ersten Mal wird sie erzeugt) und der String wird an den bestehenden Inhalt angehängt mit 'starting at eof'. Die drei letzten Buchstaben stehen für 'end of file', also: 'beginnend am Ende der Datei'.

Wie diese Datei für das Ergänzen der Index-Seiten benutzt wird, werde ich vielleicht in einer weiteren Folge beschreiben. Möglicher Titel "Index mit Seitenzahlen ergänzen".

Hans Haesler, hsa@ringier.ch
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
21.01.2021 - 22.01.2021

Digicomp Academy AG, Bern oder Basel
Donnerstag, 21. Jan. 2021, 08.30 Uhr - Freitag, 22. Jan. 2021, 17.00 Uhr

Kurs

Dieser Basic-Kurs ist der perfekte Einstieg in die Welt von InDesign, dem vielseitigen Layout-Programm. Sie lernen, wie InDesign aufgebaut ist, wie saubere Dokumente erstellt werden und wie man korrekt mit gelieferten InDesign-Projekten umgeht.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/INDEM1

Veranstaltungen
25.01.2021 - 26.01.2021

Digicomp Academy AG, Bern oder Zürich
Montag, 25. Jan. 2021, 08.30 Uhr - Dienstag, 26. Jan. 2021, 17.00 Uhr

Kurs

In diesem Basic-Kurs lernen Sie das Wichtigste über den Aufbau und die Funktionsweise von Photoshop. Zusammen mit den notwendigen Grundlagen von Farbenlehre bis Bildauflösung lernen Sie zudem die kreativen Möglichkeiten von Photoshop kennen.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/PHOTM1

Neuste Foreneinträge


Wordpress - Video per CSS mit Datenschutzerklrung DSGVO erstellen. Wie geht es?

Langsamer MacMini

Tabellenspalte als „auf der Seite aussen liegend“ definieren

Balken hinter einen Bildteil

Nicht "Silben über Spalten hinweg trennen" (CC 2018/ CC 2021)

PSD CS6 (!) Mac: Dialog "Dateiinformationen" Fenster leer und Sackgasse

InDesign CS6 (8.1.0)-Patch

komische DOC – seltsames Verhalten beim Import in InDesign

Statische Fußnoten-Ziffern

Laser Drucker druckt schwarze Flecken Links und Rechts von Blatt
medienjobs