Forenindex » Programmierung/Entwicklung » AppleScript » XPress 4.11: Verankerte Textrahmen ansprechen

XPress 4.11: Verankerte Textrahmen ansprechen

Goar
Beiträge gesamt: 395

27. Jun 2003, 08:46
Bewertung:

gelesen: 1201

Beitrag als Lesezeichen
Hallo Forum,

ist der gezielte Zugriff auf den in einem bestimmten Absatz verankerten Textrahmen möglich?

Einige der Textabsätze in einer einspaltigen Textkette über 1 bis 2 Seiten enthalten einen verankerten Textrahmen. Ein bestimmter Absatz mit verankertem Rahmen hat z.B. den Index 11.

Von diesem Rahmen bräuchte ich die Rahmenhöhe oder die Anzahl der enthaltenen Zeilen; aber wenn ich den Rahmen gepackt kriege, düften diese Details nicht mehr das Problem sein.

Oder muss ich die y-Position der ersten Zeile des Absatzes 11 ermitteln und alle Textrahmen mit der Breite 20 mm aufsuchen und abgleichen, ob ihre Oberkante auf dieser y-Position ±3 mm stehen?

Gruß, Goar

XPress 4.11: Verankerte Textrahmen ansprechen

Hans Haesler
  
Beiträge gesamt: 5826

4. Jul 2003, 14:54
Bewertung:

gelesen: 1200

Beitrag als Lesezeichen
Hallo Goar,

das Ansprechen von verankerten Boxen ist ein grossen Problem. Weil die Box, welche in einem bestimmten
Absatz steckt, nicht als Box, sondern als Teil des Textflusses betrachtet wird, wenn die Story adressiert
wird. Am besten wäre es, die Boxen zu benennen...

Mit dem folgenden Snippet erhält man eine Liste der Objektreferenzen der verankerten Boxen.
---
tell document 1 of application "QuarkXPress 4.11"
  tell page 1
    set objRef to object reference of every text box whose anchored is true
  end tell
end tell
---

Wenn aber der Bezug zum Absatz beibehalten werden sollte, dann muss man anders vorgehen. Das Script geht
die Absätze der Reihe nach durch. Wenn ein Absatz einen "ASCII character 4" enthält, dann ist sehr
wahrscheinlich eine Box darin verankert (kann sich aber auch um einen Text handeln, welcher mit einer
XTension wie XData geladen wurde). Anschliessend kann man versuchen, Deinen Lösungsansatz umzusetzen.
---
tell document 1 of application "QuarkXPress 4.11"
  tell current box
    set pageName to name of page 1
    set Y1 to top of bounds as real
    tell story 1
      repeat with i from 1 to count of paragraphs
        if paragraph i contains (ASCII character 4) then
          set bLine to (baseline of line 1 of paragraph i) as real
          my getBox(pageName, Y1, bLine, i)
        end if
      end repeat
    end tell
  end tell
end tell

on getBox(pageName, Y1, bLine, i)
  set refVal to Y1 + bLine
  tell document 1 of application "QuarkXPress 4.11"
    tell page pageName
      repeat with k from 1 to count of text boxes
        tell text box k
          if anchored is true then
            set kY1 to top of bounds as real
            if kY1 > (refVal - 3) and kY1 < (refVal + 3) then
              --
              -- hier die Werte ausziehen, usw.
              --
            end if
          end if
        end tell
      end repeat
    end tell
  end tell
end getBox
---
Achtung: sobald das Script die Textkette der zweiten Box erreicht, stimmt der Wert 'refVal' nur, wenn
beide Boxen die gleiche Y-Position haben. Aber das obige Script soll nur als Denkanstoss dienen.

Hans Haesler, hsa@ringier.ch

XPress 4.11: Verankerte Textrahmen ansprechen

Goar
Beiträge gesamt: 395

4. Aug 2003, 20:07
Bewertung:

gelesen: 1200

Beitrag als Lesezeichen
Hallo Hans,

vielen Dank für den Hinweis auf die einfachste Lösung: über Rahmen-Namen.

Da die Story incl. verankerter Textrahmen außerhalb von XPress erzeugt und mit XTags (kleiner Bruder von XData) importiert wird, habe ich die Möglichkeit, die verankerten Textrahmen zu benennen. Sie bekommen laufende Nummern, die mit dem Vorkommen bestimmter Eigenschaften der Absätze übereinstimmen, in denen sie verankert sind. Beim Hochzählen dieser Vorkommen in XPress ergibt sich also automatisch der richtige Rahmenname.

Gruß, Goar

XPress 4.11: Verankerte Textrahmen ansprechen

Hans Haesler
  
Beiträge gesamt: 5826

5. Aug 2003, 14:23
Bewertung:

gelesen: 1200

Beitrag als Lesezeichen
Hallo Goar,

ja, die Boxen benennen, bevor man sie verankert, ist die beste Lösung. XTags habe ich noch nie eingesetzt,
weil bisher "gewöhnliches" AppleScript genügte.

Letzte Woche habe ich ein Script ausgebaut. Bislang verankerte es vorbereitete Textboxen, in welche zuerst
eine kleine Textdatei importiert wird. Neu werden die Namen der Textboxen kurz vor dem Verankern umbenannt.
Damit kann per Script die Liste der Seitenzahlen, auf welchen die Boxen stehen, erzeugt werden.

Diese Datei bildet eine der Quellen, welche benutzt werden, um in einem speziellen Index &#150; welcher ab
Datenbank generiert wird &#150; nachträglich die Seitenzahlen einzusetzen. Ich werde versuchen, in einem neuen
Thema eine kurze Beschreibung zu veröffentlichen.

Hans Haesler, hsa@ringier.ch