ich versuche nun schon seit geraumer Zeit erfolglos folgendes hinzubekommen (ist Teil meines letzten Postings):
Wie kann ich einen Absatz mit einem bestimmten Absatzformat finden, z. B. "Dia_A"? Wenn ich den gefunden habe, möchte ich den kompletten Absatz markieren und ausschneiden.
Ciao Uli
P.S. gibt es im Netz irgendwo eine komplette Referenz für InDesign Javascript?
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden
vielen Dank für die Antwort. Ich tu mir noch ziemlich schwer, die Konstrukte wirklich zu verstehen ...
Ich habe in der Zwischenzeit mein Skript so hinbekommen, dass es ein bestimmtes Absatzformat sucht, den Absatz markiert und ausschneidet. Danach wird die Tabelle an dieser Stelle eingesetzt und in die erste Zelle (ist aber eine 1×1-Tabelle, ich brauche nur die Umrahmung) der ausgeschnittene Text eingesetzt.
Ich habe aber noch das Problem, dass sich zu diesem Zeitpunkt der Cursor innerhalb der Tabelle befindet, sodass bei einem weiteren Aufruf das Ganze innerhalb der Tabelle ausgeführt wird!
Ich suche also noch eine Anweisung, wie ich den Cursor aus der Tabelle an den Anfang des nächsten Absatzes platzieren kann. Kannst Du mir da weiterhelfen? Wenn ich das gelöst habe, kann ich nämlich eine Schleife bauen, damit alles für den Rest des Dokuments gemacht wird.
Ciao Uli
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden
Es geht um den Zähler in einer Schleife rückwärts. Anfang ist der das letzte gefundene Objekt. In JavaScript (das mit 0 zu zählen anfängt) hat dieses Objekt den Index Anzahl der Elemente -1.
Deinen Code verstehe ich nicht. Aber mit GREP müsste der obige Code für Deine Zwecke etwa so aussehen:
vielen Dank für die schnelle Antwort und den Literaturempfehlungen. Ich nerve hoffentlich nicht zu sehr ...
Dein
scheint aber nichts zu machen. Wenn ich das von Dir verpönte "app.cut();" teste, erhalte eine Fehlermeldung "Cannot copy/cut due to invalid selection state."
Ciao Uli
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden
Ich nochmal. Funktioniert schon, aber es wird immer der erste Absatz im Dokument genommen, d. h. beim zweiten Aufruf des Skript wird wieder der erste Absatz bearbeitet. Ich will aber dann den nächsten mit diesem Format finden ... Hat das etwas mit ".firstItem()" zu tun"?
Ciao Uli
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden
Nein, das hat damit zu tun, daß ich Dich falsch verstanden und die Schleife rausgenommen habe.
Bau die Schleife wieder ein.
Allerdings wir das Skript auch damit bei erneuter Ausführung genau dort starten, wie beim ersten Mal, wenn sich am Kontext (Absätze mit dem AF) nichts ändert.
Viele Grüße Martin
(Dieser Beitrag wurde von Martin Fischer am 25. Jan 2011, 19:43 geändert)
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden
Ja, genau. Das Absatzformat ändert sich nicht, der Absatz wird lediglich in die Tabelle kopiert.
Das Skript soll von vorn das Dokument nach Absätzen mit diesem bestimmten AF suchen. Sobald es auf einen solchen Absatz stößt, soll es ihn markieren und ausschneiden. Im zweiten Schritt (das funktioniert schon dank Deiner Hilfe) wird eine 1×1-Tabelle erstellt und der ausgeschnittene Absatz dort hineingestellt. Wenn das erledigt ist, soll nach dem nächsten Absatz mit diesem AF gesucht werden und das Ganze solange wiederholt werden, bis das Dokument komplett durchsucht wurde.
Vielen Dank nochmal für Deine Geduld, ich schätze das sehr!
Ciao Uli
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden
Das // mach was mit Fundstelle i; wäre in Deinem Fall: 1. erzeuge an der Fundstelle eine Tabelle mit bestimmten Parametern; 2. verschiebe die Fundstelle in die erste Zelle der soeben erzeugten Tabelle.
Im Code sieht das etwa so aus:
Viele Grüße Martin
(Dieser Beitrag wurde von Martin Fischer am 26. Jan 2011, 08:10 geändert)
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden
vielen, vielen Dank! Damit ist es fast perfekt!! Hier das Skript:
Das einzige Problem ist durch "convertToTable()" entstanden. Denn es löscht das Carriage Return da als Trenner erkannt und macht dadurch zwei Tabellenzeilen, wobei das Löschen der leeren letzten Zeile kein Problem ist (siehe Code). Aber dadurch wird nachfolgender Text in das AF der Tabelle umgewandelt. Man bräuchte eigentlich nach der Tabelle ein Carriage Return.
Wie könnte man das lösen?
Ansonsten ist das Skript nun super, braucht auch mit Kommentaren nur 30 Zeilen!
Ciao Uli
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden
Handelt es sich bei den gesuchten Absätzen stets um einzelne, nicht aufeinanderfolgende Absätze? Dann könnte es eventuell durch eine Spezifizierung des Suchausdrucks gelöst werden:
Andernfalls müsste man hinter der Fundstelle eine zusätzliche Absatzschaltung einfügen und darauf achten, dass sie bei der Konvertierung in die Tabelle nicht mit berücksichtigt wird.
Viele Grüße Martin
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden
Mit folgendem Code sollte es auch funktionieren, wenn mehrere aufeinanderfolgende Absätze das gesuchte AF haben:
(result[i].characters.lastItem().contents == '\r') prüft, ob das letzte Zeichen der Fundstelle eine Absatzmarke ist. Wenn ja, dann wird der zu konvertierende Text auf die Fundstelle abzüglich des letzten Zeichens reduziert: result[i].parentStory.characters.itemByRange(result[i].characters.firstItem().index, result[i].characters.lastItem().index -1)
Auf Deutsch: Zeichenbereich (itemByRange()) vom ersten Zeichen der Fundstelle (result[i].characters.firstItem().index)
bis zum vorletzten Zeichen der Fundstelle (result[i].characters.lastItem().index -1).
Viele Grüße Martin
(Dieser Beitrag wurde von Martin Fischer am 26. Jan 2011, 11:25 geändert)
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden
gerade bin ich auch auf die Idee gekommen, das CR bei der Suche auszuschließen ;-) (ich lerne also doch ...) Und in der Tat, diese extra Zeile tut's!
Muchas gracias!!!
Genau an dem habe ich mich die ganze Zeit festgebissen. Aber es hat nie an der richtigen Stelle geklappt. Übrigens habe ich mir die beiden Bücher gekauft, hoffe, ich muss dann nicht mehr so dumm fragen ;-)
Ciao Uli
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden
Hinter dem Fragezeichen steht die Anweisung für den Fall, dass die Bedingung wahr ist. Hinter dem Doppelpunkt folgt die Anweisung für den Fall, dass die Bedingung falsch ist.
Wg. der besseren Übersicht schreibe ich das gerne so
Ausführlich würde Dein Beispiel so lauten:
Viele Grüße Martin
(Dieser Beitrag wurde von Martin Fischer am 4. Jul 2011, 21:41 geändert)
Absatz mit bestimmtem Absatzformat suchen, markieren und ausschneiden