Seb möchte gerne eine Bildunterschrift unter die Box des soeben geladenen Bildes anfügen. Damit die Textbox an der richtigen Stelle erzeugt werden kann, müssen – wie er richtig vermutet – die Koordinaten der Bildbox ausgelesen werden.
Das Script beginnt mit dem Definieren des Textes: die Variable 'aCaption' (= eine Legende) wird initialisiert.
Dann werden die vier Werte der 'bounds' in eine Liste geschrieben.
Weil eine Textbox erzeugt wird, muss die Seite, auf welcher die ausgewählte Bildbox steht, festgestellt werden. Dies geschieht mit 'set nPage to name of page 1'. Anschliessend muss die Auswahl aufgehoben werden (= 'set selection to null') sonst stürzt XPress unweigerlich ab.
Die Werte der Liste sehen aus wie Textketten, aber ihre 'class' wird entweder als 'vertical measurement' oder 'horizontal measurement' zurückgegeben. Damit man mit diesen Werten rechnen kann, müssen sie in Bruchzahlen (= 'as real') verwandelt werden. Aber nur der untere Rand (= y2) muss konvertiert werden. Den oberen Rand (= y1) brauchen wir überhaupt nicht. Und den linken (= x1) und den rechten (x2) können wir unverändert in die Properties der Textbox einsetzen.
Der Zusatz 'as millimeter units' ist nur notwendig, wenn die vertikale Masseinheit des Dokuments nicht "Millimeter" ist. Man könnte auch zu Beginn des Scripts die Masseinheit abfragen und nach Bedarf temporär umstellen, damit im Script die nackten Zahlen verwendet werden können.
Das Script befiehlt der aktuellen Seite, eine Textbox zu erzeugen: 'at beginning' heisst soviel wie "zuvorderst". Die Properties der Textbox werden gleichzeitig festgesetzt. Die 'bounds' entsprechen jenen der Bildbox. Das heisst, der untere Rand plus 2 mm ist der obere Rand der Textbox. Der untere Rand der Textbox wird auch vom unteren Rand der Bildbox aus bestimmt. Die horizontalen Werte werden unverändert von der Bildbox übernommen.
Die weiteren Properties: 'contents' ist der Inhalt, also das definierte Copyright, der Schriftgrad wird bestimmt (= 'size:10) und ebenso die Ausrichtung (zentriert = 'centered').
---
set aCaption to "Copyright: Sebs!"
tell application "QuarkXPress 4.11"
activate
tell document 1
tell current box
set {y1, x1, y2, x2} to bounds as list
set nPage to name of page 1
end tell
set selection to null
set y2 to y2 as millimeter units as real
tell page nPage
make text box at beginning with properties {bounds:{((y2 + 2) as millimeter units), x1, ((y2 + 6) as millimeter units), x2}}
tell text box 1
set properties of paragraph 1 to {contents:aCaption, size:10, justification:centered}
end tell
end tell
end tell
end tell
---
Mit QXP 4.11 und unter Mac OS 9.2.2 funktioniert dieses Snippet. Aber auch diesmal habe ich es unter Mac OS X nicht getestet (es macht überhaupt keinen Sinn, QuarkXPress 4 oder 5 im Classic-Modus einzusetzen).
Hans Haesler <hsa@ringier.ch>