[GastForen Programmierung/Entwicklung AppleScript Text mit Formatierungen kopieren

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

Text mit Formatierungen kopieren

Goar
Beiträge gesamt: 371

26. Jul 2004, 22:04
Beitrag # 1 von 3
Bewertung:
(601 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Scripter,

in einer Artikelliste gibt es Absatzformate für Artikel-Bezeichnung und Artikel-Text. Wenn die Artikel-Bezeichnung aus einer Zeile besteht und der Artikel-Text aus zwei Zeilen (erste Zeile Text, zweite Zeile Artikel-Nr. und Preis), soll die erste Zeile des Artikel-Textes hinter die Artikel-Bezeichnung gesetzt werden, sofern dort der Platz ausreicht.

Eigentlich habe ich schon alles zusammen, bis einschließlich der Gesamtlänge der beiden Zeilen:
---
[code:1]set maxWidth to 60

tell document 1 of application "QuarkXPress 4.11"
 tell current box
  tell story 1
   repeat with i from 3 to 8 -- testweise nur diese Absätze
    try
     if name of style sheet of paragraph i contains "Bezeichnung" then
      if (count of lines of paragraph i) = 1 then
       set bezWidth to width of line 1 of paragraph i as millimeter units as real
      end if
      log bezWidth
     else if (name of style sheet of paragraph i contains "Artikel-Text") and (bezWidth ≠ "") then
      if (count of lines of paragraph i) = 2 then
       set txtWidth to width of line 1 of paragraph i as millimeter units as real
       set totalWidth to bezWidth + txtWidth
       if maxWidth > totalWidth then
       -- hier müsste ich jetzt irgendwie den Text markieren statt ihn zu kopieren
        set txtPara to every text of line 1 of paragraph i
       end if
       log (txtPara & totalWidth) as text
      else
       set bezWidth to ""
      end if
     else
      set bezWidth to ""
     end if
    on error
    end try
   end repeat
  end tell
 end tell
end tell
[/code:1]---

Nur gelingt es mir nicht, die erste Zeile des Artikel-Textes zu markieren, damit ich sie mit aller Formatierung (per XP-Marken-Text) sichern und hinter der Artikel-Bezeichnung wieder einsetzen kann. Dafür müsste ich nach dem Kopieren die Einfügemarke ans Ende des Artikel-Bezeichnungs-Absatzes setzen.

Meine Versuche, Begriffe aus dem XP-Verzeichnis (selection, insertion point) ohne Beispiel in funktionierenden Scriptzeilen unter zu bringen, sind wie so oft fehlgeschlagen.

Wer entfrustet mich?

Gruß, Goar
X

Text mit Formatierungen kopieren

Hans Haesler
  
Beiträge gesamt: 5800

27. Jul 2004, 00:34
Beitrag # 2 von 3
Beitrag ID: #418951
Bewertung:
(600 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,

ich würde Dich gerne von Deinen Qualen erlösen. Aber es ist etwas zu abstrakt.
Deshalb mein Angebot: sende mir bitte ein Dokument mit der entsprechenden Textbox,
welche Du kopierst und darin manuell das gewünschte Resultat herstellst.

Danach werde ich sicher klarer sehen und Dir mindestens eine funktioniende Lösung
präsentieren.

Hans Haesler <[email protected]>


als Antwort auf: [#418950]

Text mit Formatierungen kopieren

Hans Haesler
  
Beiträge gesamt: 5800

28. Jul 2004, 09:17
Beitrag # 3 von 3
Beitrag ID: #418952
Bewertung:
(600 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Goar,

ja, mit einem konkreten Beispiel ist es viel einfacher.

Zu Beginn des Scripts sollte die Variable 'bezWidth' initialisiert sein, weil dies sonst nur
unter bestimmten Umständen in der 'if / else if'-Schleife geschieht. Und wenn man Pech hat,
dann ist sie beim ersten Umgang unbekannt. Gut, es ist abgesichert durch 'try'.

Damit die Formatierungen übernommen werden, darf man den Text nicht direkt in eine Variable
geben. Man muss die Auswahl in eine Temp-Datei auf die Harddisk sichern und dann wieder
eingelesen. Nur so funktioniert das mit den XPress Tags.

Eine Variante ist, die gewünschte Textkette mit 'move' zu verschieben. Hier ist das Kernstück
des Scripts, die 'if maxWidth'-Schleife:
---
if maxWidth > totalWidth then
  -- den Zwischenraum einfügen
  copy space to before character 1 of line 1 of paragraph i
  -- den Text verschieben
  move every text of line 1 of paragraph i to before character -1 of paragraph (i - 1)
  -- das Shift-Return-Zeichen entfernen
  delete character -1 of line 1 of paragraph (i - 1)
end if
---
Nun wünsche ich Dir viel Spass beim Weiterentwickeln dieses Scripts.

Hans Haesler <[email protected]>


als Antwort auf: [#418950]

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
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

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

digicomp.ch/d/9PM

Veranstaltungen
12.03.2021 - 16.07.2021

Digicomp Academy AG, Zürich oder virtuell
Freitag, 12. März 2021, 13.00 Uhr - Freitag, 16. Juli 2021, 17.00 Uhr

Lehrgang

Steigen Sie in die Welt des Publishings ein und erlangen Sie die Zertifizierung von publishingNETWORK. Lernen Sie in diesem Lehrgang Druckmedien professionell zu erarbeiten, druckfertige PDFs zu erstellen und CI/CD-Vorgaben umzusetzen.

Preis: CHF 6'300.-
Dauer: 18 Tage (ca. 126 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

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

digicomp.ch/d/9PBAS