hilfdirselbst.ch
Facebook Twitter gamper-media
Mac OS X enthält verschiedene integrierte Werkzeuge und Technologien, mit denen sich gängige Aufgaben schnell und einfach automatisieren lassen.
Hans Haesler  M  p
Beiträge: 5460
7. Mär 2004, 10:47
Beitrag #1 von 4
Bewertung:
(657 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Markierten Text verschieben


Michael Slomski hat im QuarkXPress-Forum den Wunsch geäussert, eine manuelle Tätigkeit zu automatisieren. Thema "Markierten Text löschen und woanders einsetzen", http://www.page-online.de/page/forum/viewthread/2167

Er hat später selbst eine funktionierende Löung gefunden. Doch den aktuellen Absatz kann man direkter herausfinden. Zudem sollten lokale Formatierungen erhalten bleiben. Und man sollte auch eine Fehlermeldung abfangen, welche unweigerlich gezeigt wird, wenn der "nächste Absatz" nicht existiert.

Zuerst wird der Offset der Auswahl festgestellt. Dies ist die Anzahl Zeichen, welche sich vor dem ersten ausgewählten Zeichen befinden – vom Anfang der Textkette an gezählt. Wenn dieser Wert aber Null ist, dann beginnt die Auswahl mit dem ersten Zeichen. Es befinden sich keine anderen davor, deshalb die '0'. Und deshalb muss der Wert auf '1' gesetzt werden, damit durch den Befehl, welcher die Absätze zählt, keine Fehlermeldung generiert wird.

Wenn die Anzahl Absätze feststehen, wird versucht (= 'try'), einen Zwischenraum vor den nächsten Absatz zu setzen. Gelingt dies, dann wird auch der nächste Befehl funktionieren. Gelingt es nicht, dann wird ein Dialog gezeigt, welcher den Anwender informiert.

Durch den Gebrauch von 'move contents' werden auch eventuelle lokale Formatierungen mit verschoben.
---
tell document 1 of application "QuarkXPress 4.11"
  activate
  set insPoint to offset of selection
  if insPoint = 0 then set insPoint to 1
  tell current box
    tell story 1
      set paraNum to count paragraphs of (text from character 1 to character insPoint)
    end tell
  end tell
  try
    copy space to before paragraph (paraNum + 1) of story 1 of current box
    move contents of selection to before paragraph (paraNum + 1) of story 1 of current box
  on error
    display dialog "Die Auswahl kann nicht vor den
nächsten Absatz kopiert werden,
weil sie sich im letzten der Textkette
befindet." buttons "OK" default button 1 with icon 0
  end try
end tell
---
Man sollte aber noch mehr 'error handling' einbauen: Ist ein Dokument geöffnet? Ist Text ausgewählt?

Hans Haesler <hsa@ringier.ch> Top
 
X
Anonym
Beiträge: 22827
8. Mär 2004, 23:47
Beitrag #2 von 4
Beitrag ID: #418663
Bewertung:
(656 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Markierten Text verschieben


Hallo Hans,
gut, das es dich gibt. Geht also doch noch etwas eleganter, die Geschichte mit dem Absatzzählen :-))
Und jetzt könnte ich sogar die Formatierungen mit nehmen. Nur brauchte ich witklich nur den Text.. Er bekommt an der eingefügten Stelle eine gänzlich anderes Format zu gewiesen. Nur habe ich die Zeile gemeinerweise aus meinem Beispiel gelöscht :-)

Gruß Michael
als Antwort auf: [#418662] Top
 
Hans Haesler  M  p
Beiträge: 5460
9. Mär 2004, 08:41
Beitrag #3 von 4
Beitrag ID: #418664
Bewertung:
(656 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Markierten Text verschieben


Hallo Michael,

ahaaa &#133; und zum Neuformatieren benötigst Du auch die Anzahl Zeichen der Auswahl = 'selLength'
(der Wert, der in Deinem Beispiel zwar gespeichert, aber nicht verwendet wird).

Hans Haesler <hsa@ringier.ch>
als Antwort auf: [#418662] Top
 
Anonym
Beiträge: 22827
9. Mär 2004, 21:04
Beitrag #4 von 4
Beitrag ID: #418665
Bewertung:
(656 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Markierten Text verschieben


Naja, einfach nur den Text verschieben ist ja auch langweilig. Der muß schon ordentlich durch die Formatierungsmühle damit was gescheites rauskommt.

Gruß Michael
als Antwort auf: [#418662] Top
 
X