Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03136.jsonl.gz/960

XPress: Absatzlinie oben auslesen
Hallo Goar,
sehr gut beobachtet! Respekt! Ja, dies ist eines der grossen (aber nicht unüberwindbaren) Probleme mit QuarkXPress 4.11:
um korrekte Informationen über die Absatzlinien zu erhalten, muss der Absatz ausgewählt sein. Gut, es genügt, das erste
Zeichen auszuwählen oder die Einfügemarke im Absatz zu positionieren.
Das Abfragen von Stilvorlagen ist mit der QXP 4.11 ein noch grösseres Problem: direkt (wie mit QXP 3.32) ist unmöglich.
Man muss die Stilvorlage einem Absatz zuweisen und dann diesen abfragen.
Das folgende Script wählt das erste Zeichen des Absatzes aus. Dies kann nicht in der Repeatschleife selber geschehen.
Es braucht den Aufruf eines Handlers, damit die Selektion richtig formuliert werden kann:
---
tell document 1 of application "QuarkXPress 4.11"
activate
tell current box
tell story 1
repeat with i from 1 to count paragraphs
my selPara(i)
tell paragraph i
set linoben1 to position of rule above as real
end tell
end repeat
end tell
end tell
end tell
on selPara(i)
tell document 1 of application "QuarkXPress 4.11"
try
set selection to character 1 of paragraph i of story 1 of current box
end try
end tell
end selPara
---
Das Wörtchen 'my' vor 'selPara(i)' ist zwingend notwendig, weil man sich innerhalb einer 'tell application QXP'-Schleife
befindet. Und das 'i' innerhalb der Klammern übergibt den Wert des Zählers an den Handler. Der 'try' wrapper verhindert
eine Fehlermeldung, wenn ein Return am Textende einen leeren Absatz verursacht hat.
Variante (zum Setzen der Einfügemarke):
Mit diesem Vorgehen erhält man immer die richtige Position der Linie. Aber: man sollte zugleich feststellen, ob die
Absatzlinie aktiviert ist oder nicht. Dies geschieht mit 'if rule on of rule above is true then' und könnte so
eingebaut werden:
---
tell paragraph i
set zab to leading as real
set abstvor to space before as real
tell rule above
if rule on is true then
set linoben1 to position as real
my modPara(i)
end if
end tell
end tell
---
Der Aufruf 'my modPara(i)' geht an einen noch zu definierenden Handler. Ich nehme an, dass die Werte 'zab', 'abstvor'
und 'linoben1' auch berücksichtigt werden müssen. Aber weil ich den Überblick nicht habe, lasse ich es bei diesen
Andeutungen bewenden.
Hans Haesler, <email-pii>
als Antwort auf: [#418181]