Forenindex » Programmierung/Entwicklung » AppleScript » Text in Xpress laden mit Xpress-Tags bzw Stilvorlage

Text in Xpress laden mit Xpress-Tags bzw Stilvorlage

Anonym
Beiträge gesamt: 22827

10. Jan 2004, 19:41
Bewertung:

gelesen: 3075

Beitrag als Lesezeichen
Hallo Hans, Hallo Forum
erstmal alles gute im neuen Jahr... (ist vielleicht ein bisschen spät).

Ich habe folgendes Problem:
ich möchte via AS Text (Text mit Xpress Tags) in einen Xpress Bildrahmen laden mit definierter Stilvorlage. Ich weiß allerdings nicht den wie ich das importieren von Tags "einschalten" kann.

Dieses Script funktioniert so weit ganz gut - allerdings erscheint der text nicht in der entsprechenden xpress-tag formatierung sondern alle tags werden normal in die textbox geladen. 

--
set mycontent to "<v2.05><e0>@stilvorlage1:hallo"
tell application "QuarkXPress Passport"
tell document 1
tell text box 1
set properties of paragraph 1 to {contents:mycontent}
end tell
end tell
end tell
--

Achso - Das Script sollte läuft zur mit Xpress 4 + 6 gleichermaßen - so sollte es wenn möglich auch bleiben.

Danke für alle Tips!
Sebastian

Text in Xpress laden mit Xpress-Tags bzw Stilvorlage

Hans Haesler
  
Beiträge gesamt: 5826

11. Jan 2004, 00:29
Bewertung:

gelesen: 3074

Beitrag als Lesezeichen
Hallo Sebastian,

ein Text im XPress-Tags-Format muss zwingend importiert werden. Sonst hat die XPress-Tags-XTension keine Gelegenheit die Tags zu interpretieren.

Das Importieren eines Text-Strings geschieht immer ab vorhandener Datei auf der Harddisk (oder einem anderen Medium) aber nie direkt aus dem Speicher.

Ein weiterer Fehler: Der Name einer Stilvorlage muss immer am Anfang eines Absatzes stehen. Sonst erscheint er garantiert in der Textbox. Du musst also zwischen '<e0>', dem Code für die Mac-Plattform (<e1> = Windows) und dem "@"-Zeichen einen Return eingeben. Keine Angst, dieser wird nicht als Leerzeile in der Textbox auftauchen. XPress ist da mal schlau genug &#133;

Noch 'n Tip: vermeide bei Variablen den Gebrauch der Vorsilbe 'my'. Ja, ich weiss: sämtliche offizielle Scripts für InDesign strotzen davon. Aber es ist trotzdem eine Unsitte. Das 'my' &#150; als alleinstehendes Wort &#150; ist ein geschützer Begriff. Wenn beim Tippen irrtümlicherweise ein Wortzwischenraum eingefügt wird, dann wird dies beim Prüfen der Syntax nicht erkannt. Beim Ausführen kommt aber eine Fehlermeldung, weil der Rest der Variablen nicht definiert ist.

Zurück zu Deinem Problem! Wenn Du den Import einer Datei vermeiden willst, dann funktioniert dies:
---
set aString to "hallo"

tell document 1 of application "QuarkXPress 4.11"
  tell current box
    set properties of paragraph 1 to {contents:aString, style sheet:"stilvorlage1"}
  end tell
end tell
---

Wenn Du aber den Umgang mit XPress Tags lernen willst, dann gehört früher oder später das Schreiben und Lesen von Dateien dazu. Gut, man kann den mit Tags versehenen Text mit einem Texteditoren in eine Datei sichern:
---
<v2.05><e0>
@stilvorlage1:hallo
---
Dieser Text kann auch in einem XPress-Dokument getippt, ausgewählt und mit dem Menü-Artikel "Ablage / Text sichern... " im ASCII-Format gesichert werden. Du hast im Script die Wahl, den Pfad zur Datei entweder "hard-coded" (d.h. absolut) einzugeben oder per 'choose file' den Anwender die Datei auswählen zu lassen.

Damit die XPress-Tags konvertiert werden, muss die Checkbox "Einschließlich Stilvorlagen" (im Text-laden-Dialog) aktiviert sein. Es schadet auch nichts, "Anführungszeichen umwandeln" anzuklicken. Man kann dies manuell, vor dem Ausführen des Scripts, durchführen. Aber es geht auch per Script:
---
set import styles to true
set convert quotes to true
---

Das Script lautet dann:
---
set filePath to (choose file with prompt "Eine Textdatei auswählen" of type "TEXT")

tell application "QuarkXPress 4.11"
  set import styles to true
  set convert quotes to true
  tell document 1
    tell current box
      set story 1 to filePath
    end tell
  end tell
end tell
---
Damit dies aber auch richtig gelingt, muss die Stilvorlage im XPress-Dokument vorhanden sein. Sonst wird der Text mit der Formatierung der Stilvorlage "Normal" erscheinen. Die Stilvorlage "stilvorlage1" ist zwar zugewiesen. Sie kann auch bearbeitet, aber im Dialog nicht entfernt werden. Tip: mit dem Kontextmenü in der Stilvorlagenpalette geht es: Control-Taste niederhalten, den Mauszeiger auf die zu löschende Stilvorlage richten, die Maustaste niederhalten und im Menü den Artikel "Löschen stilvorlage1" wählen.

Der formatierte Text kann aber auch im Script definiert sein, dann wird er in eine Datei geschrieben und gleich wieder geladen:
---
-- Textkette vorbereiten
set aString to "<v2.05><e0>
@stilvorlage1:hallo"

-- Pfad zur Textdatei festlegen (Pfad zur Harddisk plus Name der Datei)
set textPath to (path to startup disk as string) & "test.txt"
-- versuchen &#133;
try
  -- die Datei mit Schreib-Erlaubnis zu öffnen
  open for access file textPath with write permission
  -- das Ende der Datei (eof = end of file) auf Null setzen,
  -- damit bei einer weiteren Ausführung der Inhalt gelöscht wird
  set eof of file textPath to 0
  -- die Textkette in die Datei schreiben
  write aString to file textPath
  -- die Datei schliessen
  close access file textPath
  -- bei einem Fehler versuchen, die Datei zu schliessen
on error
  try
    close access file textPath
  end try
end try

tell application "QuarkXPress 4.11"
  -- die Stilvorlagen werden umgewandelt
  set import styles to true
  -- die Anführungszeichen auch
  set convert quotes to true
  tell document 1
    try
      -- die ausgewählte Box wird adressiert
      tell current box
        -- die Textdatei wird geladen
        set story 1 to textPath as alias
      end tell
    end try
  end tell
end tell
---
Soviel für heute &#133; Ach ja: die Script-Snippets sind mit QuarkXPress 4.11 unter Mac OS 9.2.2 getestet worden. Für XPress 6 unter Mac OS X würde ich eine eigene Version vorsehen.

Hans Haesler <hsa@ringier.ch>

Text in Xpress laden mit Xpress-Tags bzw Stilvorlage

Anonym
Beiträge gesamt: 22827

11. Jan 2004, 01:09
Bewertung:

gelesen: 3074

Beitrag als Lesezeichen
Hallo Hans,
erstmal vielen Dank für deine mehr als perfekte Antwort. Danke.
Danke auch für die Tips am Rande... :)


Also ich hatte mir das so vorgestellt das der Text aus Filemaker kommt.
Dann müsste ich den Text aus Filemaker in eine temporäre Datei schreiben und diesen dann mit Xpress importieren.

Ich muss also den Text iauf jedenfall importieren ?

Ich werd mir die snippets morgen  gleich te

Text in Xpress laden mit Xpress-Tags bzw Stilvorlage

Hans Haesler
  
Beiträge gesamt: 5826

11. Jan 2004, 10:32
Bewertung:

gelesen: 3074

Beitrag als Lesezeichen
Hallo Sebastian,

es kommt darauf an, wie die Texte in XPress formatiert werden müssen.

Wenn nur eine Stilvorlage zugewiesen wird &#150; und der Text jedesmal in eine eigene Box gesetzt wird &#150; dann kann es, wie oben gezeigt, direkt über eine Variable geschehen.

Aber: Ein Text, welcher XPress Tags enthält, muss importiert werden. Nur so kann der XPress-Tags-Filter wirken.

Bei einem Export aus FileMaker hast Du zwei Vorteile: 1. Die XPress Tags können leicht eingefügt werden. 2. Du hast eine bessere Kontrolle über die verwendeten Stilvorlagen (im Gegensatz zu einem Text, welcher z.B. in Word aufbereitet wurde).

Wie findet man heraus, welche XPress Tags wo eingefügt werden müssen? Ganz einfach: in XPress den Text formatieren, Stilvorlagen sauber zuweisen, anschliessend den Text auswählen, und mit dem Menü-Artikel "Ablage / Text sichern... " im XPress-Tags-Format in eine Datei sichern.

Diese Datei wieder importieren, aber beide Checkboxen deaktivieren. Die Definitionen der Stilvorlagen, welche nach der Versionszeile '<v2.05><e0>' stehen, kannst Du löschen. Sie müssen nicht importiert werden, wenn die Stilvorlagen schon existieren.

Im restlichen Text siehst Du, wie die XPress Tags aussehen und wo sie eingefügt werden müssen.

Hans Haesler <hsa@ringier.ch>

Text in Xpress laden mit Xpress-Tags bzw Stilvorlage

Anonym
Beiträge gesamt: 22827

11. Jan 2004, 12:14
Bewertung:

gelesen: 3074

Beitrag als Lesezeichen
Guten Morgen Hans.
Danke nochmal für deine Antwort.

Ich denke mir reicht im Moment der Weg über eine Stilvorlage.
Ich hab  das snippet gerade mal ausprobiert:

-
set aString to "hallo"
set aStyle to "stil1"

tell document 1 of application "QuarkXPress Passport&#153; 4.11"
   tell current box
      set properties of paragraph 1 to {contents:aString, style sheet:aStyle}
   end tell
end tell
-

Ich kann es allerdings im moment nur unter OSX 10.3 mit Xpress 6 testen.
oder Xpress 4.11 in der Classic Umgebung.

Hier bringt mir Xpress allerdings folgende Meldung:
-
&#132;QuarkXPress Passport&#147; hat einen Fehler erhalten: Einige Daten können nicht in den erwarteten Typ umgewandelt werden."
-

Der Text ist wurde in den Rahmen geladen - allerdings nicht in der richtigen mit der Stilvorlage versehen..

Ich habe dann "style sheet"  durch "character style" ersetzt:
-
set aString to "hallo"
set thestyle to "stil"
tell document 1 of application "QuarkXPress Passport&#153; 4.11"
 activate
 
  tell current box
     set properties of paragraph 1 to {contents:aString, character    style:thestyle}
   end tell
end tell
-

und siehe da es läuft!!!

Hans ich danke dir für deine schnelle Unterstützung - schönen Sonntag noch.


Sebastian..

Text in Xpress laden mit Xpress-Tags bzw Stilvorlage

Hans Haesler
  
Beiträge gesamt: 5826

11. Jan 2004, 14:54
Bewertung:

gelesen: 3074

Beitrag als Lesezeichen
Hallo Sebastian,

bitte sehr.

Also &#133; wenn die Absatzstilvorlage "stil1" existiert, dann sollte es mit 'style sheet' keine Fehlermeldung absetzen. Wenn Du aber für eine Absatzstilvorlage eine Zeichenstilvorlage ('character style') definiert hast, dann entspricht dies nicht dem korrekten Definieren von Stilvorlagen.

Die Zeichenstilattribute sollten in der Absatzstilvorlage definiert werden. Dazu braucht es nicht zusätzlich eine Zeichenstilvorlage. Leider ist der Dialog nicht gerade anwenderfreundlich entworfen. Grund: damals war bei Quark keiner, welcher sich mit dem Gebrauch von Stilvorlagen auskannte. Und meine Einwände wurden zwar bestätigt, aber nicht umgesetzt.

Eine Zeichenstilvorlage braucht es nur, um innerhalb eines Absatzes eine lokale Änderung vorzunehmen.
Zudem sollte einem Absatz grundsätzlich eine Absatzstilvorlage zugewiesen werden. Okay, es gibt Ausnahmen.

Und nochmals meckern ;-): für die Vorsilbe 'the' gilt das Gleiche wie für 'my'. Nie als Bestandteil einer Variablen einsetzen.

Hans Haesler <hsa@ringier.ch>

Text in Xpress laden mit Xpress-Tags bzw Stilvorlage

Anonym
Beiträge gesamt: 22827

11. Jan 2004, 15:56
Bewertung:

gelesen: 3074

Beitrag als Lesezeichen
,-) ok ich machs nie wieder.. (nie mehr "the" oder "my") .
Danke.

Kann man mit AS auch die Namen der Stilvorlagen (Zeichen und Absatz) auslesen ? 

Sebastian.

Text in Xpress laden mit Xpress-Tags bzw Stilvorlage

Hans Haesler
  
Beiträge gesamt: 5826

11. Jan 2004, 20:54
Bewertung:

gelesen: 3074

Beitrag als Lesezeichen
Hallo Sebastian,

was meinst Du genau mit Deiner Frage? Möchtest Du die Stilvorlagen, welche in einem XPress-Dokument definiert sind auflisten? Oder die Namen, welche sich im XPress-Tags-Format in einer Text-Datei befinden?

Die Liste der Absatzstilvorlagen eines XPress-Dokuments zu erhalten ist einfach:
---
tell document 1 of application "QuarkXPress 4.11"
  set paraStyleList to name of style specs
  if class of paraStyleList is not list then set paraStyleList to {paraStyleList}
end tell
paraStyleList
Code
Die Zeichenstilvorlagen-Liste wird so ausgezogen: 

tell document 1 of application "QuarkXPress 4.11"
  set charStyleList to name of character specs
  if class of charStyleList is not list then set charStyleList to {charStyleList}
end tell
charStyleList
---

Anstelle von 'sheet' wird 'spec' verwendet. Das ist die Kurzform von 'specification' (= Definition).
Achtung: das Resultat ist nur in Listenform, wenn mehr als eine Stilvorlage definiert ist. Deshalb die zweite Befehlszeile in beiden Beispielen. Die Listen sind nicht in alphabetischer Reihenfolge, sondern in jener, in welcher die Stilvorlagen erzeugt worden sind. Die Listen kann man sortieren (aber dies wäre ein anderes Thema).

Hans Haesler <hsa@ringier.ch>

Text in Xpress laden mit Xpress-Tags bzw Stilvorlage

Anonym
Beiträge gesamt: 22827

11. Jan 2004, 22:26
Bewertung:

gelesen: 3074

Beitrag als Lesezeichen
Danke - die Listenform reicht mir schon - ich will die Namen dann in Filemaker importieren.

Ich staune echt wie flüssig du die scripts mal "eben" schreibst. Naja - danke nochmal.

Bis denn

Sebastian

Text in Xpress laden mit Xpress-Tags bzw Stilvorlage

Hans Haesler
  
Beiträge gesamt: 5826

12. Jan 2004, 10:21
Bewertung:

gelesen: 3074

Beitrag als Lesezeichen
Hallo Sebastian,

bitte sehr. Ja, manchmal staune ich auch &#133; ;-)

Übrigens habe ich mich wieder einmal nicht verständlich genug ausgedrückt. Die Zeile &#133;
Code
if class of paraStyleList is not list then set paraStyleList to {paraStyleList} 

&#133; ist notwendig, um zu garantieren, dass das Resultat eine Liste ist. Wenn keine benutzerdefinierten Stilvorlagen im Dokument vorkommen, dann enthält 'paraStyleList' nur "Normal". Wenn das Script dann die Elemente der Liste (welche keine ist) zählen will, dann ist das Ergebnis '6' (die Anzahl Buchstaben des Wortes "Normal") und eine folgende Wiederholschleife generiert eine Fehlermeldung, weil das erste Element von 'paraStyleList' dann nur ein Einzelbuchstabe ist und kein kompletter Name.

Könnte man denn nicht die Namen direkt als Liste verlangen?
Code
set paraStyleList to name of style specs as list 

Könnte man schon, aber dann wäre das Resultat eine Liste von vielen Listen:
--> {{"Normal"}, {"01_Titel"}, {"02_Einleitung"}, {"03_Grundtext"}, {"04_Legende"}}

Hans Haesler <hsa@ringier.ch>