[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

JonesRidder
Beiträge gesamt: 85

11. Mai 2011, 17:00
Beitrag # 1 von 30
Bewertung:
(13979 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

meine Anführungs- und Schlusszeichen werden folgendermaßen nach einem XML Import dargestellt in ID CS5:
Anführungszeichen: AnführungszeichenOben senkrecht (")
Schlusszeichen: SchlusszeichenOben senkrecht (")
Beispiel: "Das steht innerhalb der Anführungszeichen"
(sind beide anscheinend das selbe Symbol).

Wie kann ich innerhalb eines Scripts mit GREP oder Suchen und Ersetzen bewirken, dass alle Anführungs- und Schlusszeichen im Dokument "richtig" angezeigt werden?
Lösung sollte so aussehen:
Anführungszeichen: Anführungszeichen unten schräg (entspricht: Alt + 0132, bzw. Unicode 201E, bzw. „)
Schlusszeichen: Schlusszeichen oben schräg (entspricht: Alt + 0147, bzw. Unicode 201C, bzw. “)
Beispiel: „So ist es richtig“ (wobei das Schlusszeichen nach rechts gekippt sein sollte - liegt aber wahrscheinlich hier an der Schriftart vermute ich mal).

Mein letzter Versuch (funtkioniert nicht):
Code
app.findGrepPreferences = app.changeGrepPreferences = null; 
app.findChangeGrepOptions = null;
app.findGrepPreferences.findWhat = '\(';
app.changeGrepPreferences.changeTo = '„';
_dok.changeGrep();

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findChangeGrepOptions = null;
app.findGrepPreferences.findWhat = '\>~"'; // Suchstring

app.changeGrepPreferences.changeTo = "“";
_dok.changeGrep();


Folgende Beiträge konnten mir leider auch nicht helfen:
http://www.hilfdirselbst.ch/foren/GREP_Ersetzen_von_Anf%FChrungszeichen_P451719.html
http://www.hilfdirselbst.ch/foren/GREP-Suche%3A_gerades_Komma_nach_kursivem_Wort_P317853.html

Weiß einer Rat?
Gruß
J.R.
X

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

JonesRidder
Beiträge gesamt: 85

12. Mai 2011, 08:30
Beitrag # 2 von 30
Beitrag ID: #471248
Bewertung:
(13936 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

bin mittlerweile soweit gekommen, dass ich das ganze anhand des Suchen/Ersetzen Fenster hinbekommen habe.

Meine Schritte sehen folgendermaßen aus:
Code
1. STRG+F drücken 

2. Auf GREP Reiter klicken

3. Anführungszeichen bearbeiten
3.1 Unter "suchen nach" auf "@" Schaltfläche klicken > Anführungszeichen > Alle doppelten Anführungszeichen wählen
3.2 Nochmal auf "@" Schaltfläche klicken > Positionen > Wortbeginn wählen (Ergebnis unter Suchen sollte sein: [Anführungszeichen oben][Backslash][Pfeil nach links])
3.3 Unter ändern in auf "@" Schaltfläche klicken > Anführungszeichen > Öffnendes Anführungszeichen (Ergebnis unter ersetzen sollte sein: [Tilde][Runde Geschweifte Klammer auf -> {])
3.4 Unter Durchsuchen "Dokument" wählen
3.5 Schaltfläche "Alle ändern klicken"

4. Schlusszeichen bearbeiten
4.1 Unter "suchen nach" auf "@" Schaltfläche klicken > Anführungszeichen > Alle doppelten Schlusszeichen wählen
4.2 Nochmal auf "@" Schaltfläche klicken > Positionen > Wortende wählen (Ergebnis unter Suchen sollte sein: [Backslash][Pfeil nach rechts][Anführungszeichen oben]
4.3 Unter ändern in auf "@" Schaltfläche klicken > Anführungszeichen > Schließendes Anführungszeichen (Ergebnis unter ersetzen sollte sein: [Tilde][Runde Geschweifte Klammer zu -> }]
4.4 Unter Durchsuchen "Dokument" wählen
4.5 Schaltfläche "Alle ändern klicken"


Im Code klappt es leider immernoch nicht ...
Soweit ich das beurteilen kann, machen die Anführungszeichen (im Code nach dem =) in Verbrindung mit den Anführungszeichen (im Suchstring) Probleme ... - habe auch schon versucht, nach dem = im Code Suchstring und Co in zwei ' zu setzen - hat auch nicht funktioniert.

Hilfe!

Gruß
J.R.


als Antwort auf: [#471209]
(Dieser Beitrag wurde von JonesRidder am 12. Mai 2011, 08:33 geändert)

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

Martin Fischer
  
Beiträge gesamt: 12711

12. Mai 2011, 08:48
Beitrag # 3 von 30
Beitrag ID: #471250
Bewertung:
(13919 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Im Code klappt es leider immernoch nicht ...
Soweit ich das beurteilen kann, machen die Anführungszeichen (im Code nach dem =) in Verbrindung mit den Anführungszeichen (im Suchstring) Probleme ... - habe auch schon versucht, nach dem = im Code Suchstring und Co in zwei ' zu setzen - hat auch nicht funktioniert.


Im Code musst Du das gesuchte Anführungszeichen escapen:
findWhat:"\""


Die Zollzeichen sollten sich bei entsprechenden Voreinstellungen ('typographische Anführungszeichen verwenden', Wörterbuch) auch einfach durch Ersetzen von " (= <0022>) durch " in typographische Anführungszeichen konvertieren lassen.


Hier ein Schnippsel für FindChangeByList.jsx:
Code
//findet alle doppelten Anführungszeichen, also auch die typographischen 
//text {findWhat:"\""} {changeTo:"\""} {includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true, wholeWord:false, caseSensitive:false, kanaSensitive:true, widthSensitive:true, ignoreKashidas:true, ignoreDiacritics:false} //alle Anführungen in typographische

//findet nur die Zollzeichen "
text {findWhat:"<0022>"} {changeTo:"\""} {includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true, wholeWord:false, caseSensitive:false, kanaSensitive:true, widthSensitive:true, ignoreKashidas:true, ignoreDiacritics:false} //alle Zollzeichen in typographische Anführungszeichen


Das erste Schnippsel findet alle doppelten Anführungszeichen, also auch die (bereits) typographischen.

Das zweite Schnippsel findet nur die Zollzeichen " (Gänsefüßchen).



Kontrolle z.B. mit Hilfe eines GREPs (von Marco ?):

Suchen: (?<=[\s\(])["](.*?)["](?![\w])(?=\)?)
Ersetzen: „$1“


als Antwort auf: [#471248]
(Dieser Beitrag wurde von Martin Fischer am 12. Mai 2011, 09:11 geändert)

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

JonesRidder
Beiträge gesamt: 85

12. Mai 2011, 09:18
Beitrag # 4 von 30
Beitrag ID: #471252
Bewertung:
(13902 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

das escapen hatte ich auch schon probiert vorher - hatte nicht geklappt.

Berücksichtigt dein Code auch, dass
- vor einem Wort das Anführungszeichen unten sein muss
- nach einem Wort das Schlusszeichen oben sein muss?

Wie bette ich es ambesten in meinen Code ein (oder auch in das FindChangeByList.jsx)?

Gehe ich recht in der Annahme, dass es sich bei deinem Code um suchen und ersetzen und nicht um GREP handelt?

Danke!
Gruß
J.R.


als Antwort auf: [#471250]

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

Martin Fischer
  
Beiträge gesamt: 12711

12. Mai 2011, 09:45
Beitrag # 5 von 30
Beitrag ID: #471257
Bewertung:
(13892 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: das escapen hatte ich auch schon probiert vorher - hatte nicht geklappt.


Bei mir hat's geklappt.
Bei Dir immer noch nicht?


Antwort auf: Berücksichtigt dein Code auch, dass
- vor einem Wort das Anführungszeichen unten sein muss
- nach einem Wort das Schlusszeichen oben sein muss?


Der Code stützt sich auf die Regeln, nach welchen InDesign die typographischen Anführungszeichen setzt. Das stimmt in der Regel, kann aber auch mal falsch sein (eine allgemeine Regel für die Fehler, die InDesign da macht, kann ich im Moment nicht formulieren).

Der zitierte GREP-Ausdruck berücksichtigt die Umsetzung in Anführungszeichen unten und Abführungszeichen oben.


Antwort auf: Wie bette ich es ambesten in meinen Code ein (oder auch in das FindChangeByList.jsx)?

Hm, eigentlich so wie angegeben.
Vom obigen Beitrag über die Zwischenablage in eine geöffnete Suchliste für FindChangeByList.jsx – txt-Datei in Text-Editor geöffnet – einfügen.


Antwort auf: Gehe ich recht in der Annahme, dass es sich bei deinem Code um suchen und ersetzen und nicht um GREP handelt?


Dem ist so.
Hierfür ist kein GREP nötig.
Aber es ist auch per GREP möglich.

Statt <0022> verwende dann \x{22}.


Für FindChangeByList.jsx:

Code
grep	{findWhat:"\\x{22}"}	{changeTo:"\""}	{includeLockedStoriesForFind:false, includeLockedLayersForFind:false, includeHiddenLayers:false, includeMasterPages:false, includeFootnotes:true, wholeWord:false, caseSensitive:false, kanaSensitive:true, widthSensitive:true, ignoreKashidas:true, ignoreDiacritics:false}	//alle Zollzeichen in typographische Anführungszeichen 



als Antwort auf: [#471252]
(Dieser Beitrag wurde von Martin Fischer am 12. Mai 2011, 10:08 geändert)

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

JonesRidder
Beiträge gesamt: 85

12. Mai 2011, 10:19
Beitrag # 6 von 30
Beitrag ID: #471263
Bewertung:
(13877 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mein aktueller Code:
Code
    //Anführungszeichen schräg unten anstatt senkrecht oben am Wortbeginn GREP 
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findChangeGrepOptions = null;
app.findGrepPreferences.findWhat = "\"\<";
app.changeGrepPreferences.changeTo = "„";
_dok.changeGrep();
// Dier Suchstrings wurde vorher unter suchen/ersetzen in InDesign probiert und funktionierte. Ich habe Sie jetzt nochmal für den Code mit dem \ ergänzt.

Der Code wird anscheinend Fehlerlos (Syntax) ausgeführt, im InDesign sehe ich keine Änderungen (alles blebit beim alten - Zeichen werden nicht umgesetzt....)

Kannst du etwas mit dem Code anfangen und siehst den Fehler?
Analog dazu habe ich auch anderen Suchen/Ersetzen Anweisungen im Code, die funktionieren einwandfrei - Beispiel:
Code
    //Gedankenstrich statt Minus  
app.findTextPreferences = app.changeTextPreferences = null;
app.findChangeTextOptions = null;
app.findTextPreferences.findWhat = " - ";
app.changeTextPreferences.changeTo = " <2013> ";
_dok.changeText();


Danke!
Gruß
J.R.


als Antwort auf: [#471257]
(Dieser Beitrag wurde von JonesRidder am 12. Mai 2011, 10:20 geändert)

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

Martin Fischer
  
Beiträge gesamt: 12711

12. Mai 2011, 10:26
Beitrag # 7 von 30
Beitrag ID: #471266
Bewertung:
(13871 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Der Code wird anscheinend Fehlerlos (Syntax) ausgeführt, im InDesign sehe ich keine Änderungen (alles blebit beim alten - Zeichen werden nicht umgesetzt....)


Du hast vergessen, den Backslash von \< zu escapen:
Code
//Anführungszeichen schräg unten anstatt senkrecht oben am Wortbeginn GREP  
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findChangeGrepOptions = null;
app.findGrepPreferences.findWhat = "\"\\<";
app.changeGrepPreferences.changeTo = "„";
app.activeDocument.changeGrep();
// Dier Suchstrings wurde vorher unter suchen/ersetzen in InDesign probiert und funktionierte. Ich habe Sie jetzt nochmal für den Code mit dem \ ergänzt.



Die anderen Lösungen (GREP und FindChangeByList.jsx) interessieren Dich nicht oder liefern nicht das gewünschte Ergebnis?


als Antwort auf: [#471263]
(Dieser Beitrag wurde von Martin Fischer am 12. Mai 2011, 10:27 geändert)

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

JonesRidder
Beiträge gesamt: 85

12. Mai 2011, 11:17
Beitrag # 8 von 30
Beitrag ID: #471272
Bewertung:
(13857 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Für das Anführungszeichen funktioniert es jetzt einwandfrei (ich wusste nicht, dass ich auch < escapen musste ...).

Das Schlusszeichen scheint aber noch einen Fehler zu haben (analog zu Anführungszeichen - nur dass am Textende und nicht am Textanfang ersetzt wird):
Code
    //Schlusszeichen schräg oben anstatt senkrecht oben am Wortende GREP 
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findChangeGrepOptions = null;
app.findGrepPreferences.findWhat = "\"\\>";
app.changeGrepPreferences.changeTo = "“"; // " entspricht: Alt + 0147
app.activeDocument.changeGrep();

Wo ist da der Fehler?

Für meine Aufgabe wäre diese ("meine") Lösung denke ich einfacher (auch vom verständnis) - jetzt nochmal auf FindChangeByList umzusteigen wäre noch mehr Arbeit ...

Danke für die Hinweise bisher!
Gruß
J.R.

PS: InDesign sollte man als Studiengang oder so anbieten, wenn es das schon nicht gibt ... ;-)


als Antwort auf: [#471266]

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

Martin Fischer
  
Beiträge gesamt: 12711

12. Mai 2011, 11:31
Beitrag # 9 von 30
Beitrag ID: #471274
Bewertung:
(13848 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Für das Anführungszeichen funktioniert es jetzt einwandfrei (ich wusste nicht, dass ich auch < escapen musste ...).


Nicht das < muss escaped werden, sondern der Backslash vor <, der fester Bestandteil des Ausdrucks für den Wortanfang ist.


Antwort auf: Das Schlusszeichen scheint aber noch einen Fehler zu haben (analog zu Anführungszeichen - nur dass am Textende und nicht am Textanfang ersetzt wird):


Das Wort endet nicht nach dem schließenden Anführungszeichen, sondern davor:
Code
    //Schlusszeichen schräg oben anstatt senkrecht oben am Wortende GREP  
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findChangeGrepOptions = null;
app.findGrepPreferences.findWhat = "\\>\"";
app.changeGrepPreferences.changeTo = "“"; // " entspricht: Alt + 0147
app.activeDocument.changeGrep();


Aber prüfe, ob das auch in Kombination mit Satzzeichen funktioniert.
InDesign betrachtet m.W. ein Satzzeichen am Ende eines Worts als zum Wort gehörig.


Antwort auf: PS: InDesign sollte man als Studiengang oder so anbieten, wenn es das schon nicht gibt ... ;-)

Sind die HDS-Foren nicht so etwas wie eine Fernuni und die aktive Beteiligung demnach ein Fernstudiengang? ;-)
Freilich ohne einen qualifizierten Abschluss.
Deswegen ist es auch mit den Plagiaten nicht so schlimm. ;-)


als Antwort auf: [#471272]
(Dieser Beitrag wurde von Martin Fischer am 12. Mai 2011, 11:33 geändert)

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

JonesRidder
Beiträge gesamt: 85

12. Mai 2011, 12:15
Beitrag # 10 von 30
Beitrag ID: #471280
Bewertung:
(13833 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Funktioniert, auch das Schlusszeichen wird ersetzt - Wobei das Satzzeichen nicht als "zum Wort gehörend" betrachtet wird anscheinend. In den Fällen, wo am Schluss ein !, ?, oder . ist, wird es nicht ersetzt, sondern bleibt beim alten.
Wie bringe ich InDesign bei, dass er auch mit !, ? und . richtig umgeht?
Oder noch besser (flexibler, denn wer sagt, dass es nur diese drei Zeichen am Schluss geben kann): Nachdem die Gänsefüßchen unten korrigiert sind, bleiben ja nur noch welche übrig, die oben sind. Kann ich nicht im zweiten GREP sagen, "jetzt ersetze nur alle Gänsefüßchen, die oben stehen"? Wenn das gehen würde, wäre es egal, was vor dem Schlusszeichen steht ...

Gruß
J.R.


als Antwort auf: [#471274]

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

Martin Fischer
  
Beiträge gesamt: 12711

12. Mai 2011, 12:29
Beitrag # 11 von 30
Beitrag ID: #471282
Bewertung:
(13816 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Wie bringe ich InDesign bei, dass er auch mit !, ? und . richtig umgeht?


Integriere die Satzzeichen als optional.
Code
    //Schlusszeichen schräg oben anstatt senkrecht oben am Wortende GREP   
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findChangeGrepOptions = null;
app.findGrepPreferences.findWhat = "\\>[[:punct:]]?\"";
app.changeGrepPreferences.changeTo = "“"; // " entspricht: Alt + 0147
app.activeDocument.changeGrep();


Ansonsten !, ? und . im Code escapen.


als Antwort auf: [#471280]
(Dieser Beitrag wurde von Martin Fischer am 12. Mai 2011, 12:56 geändert)

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

herar
Beiträge gesamt:

12. Mai 2011, 13:17
Beitrag # 12 von 30
Beitrag ID: #471294
Bewertung:
(13797 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Ich habe das mal via GREP mit verschiedenen und zum Teil falsch geschriebenen Anführungszeichen gelöst.
Es werden alle Vorkommen ersetzt, ausser es fehlt ein An- oder Abführungszeichen. Dabei wird der Text zwischen den An- und Abführungen zwischengespeichert und dann zusammen mit den gewünschten An- und Abführungen ersetzt.
ZIP-File mit XML-File und Screenshots angehängt.

Gruss


als Antwort auf: [#471282]

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

JonesRidder
Beiträge gesamt: 85

12. Mai 2011, 15:31
Beitrag # 13 von 30
Beitrag ID: #471317
Bewertung:
(13758 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das hier (deine abgeänderte find Anweisung):
Code
app.findGrepPreferences.findWhat = "\\>[[:punct:]]?\""; 

bewirkt bei mir, dass immer, wenn ein !, . oder ? (Symbole) vor dem Schlusszeichen stehen, die Symbole alle samt entfernt werden - Anführungszeichen und Schlusszeichen werden aber richtig "formatiert" (sind beide schräg und nicht wie Zollsymbol).
Mal in eine andere Richtung gedacht:
Wäre es nicht noch viel flexibler, wenn ich in der Suchen Anweisung so etwas sagen könnte:
Suche nach: ["][Belibige Buchstaben, Zahlen Zeichen]["]
(Jokerzeichen mäßig, zwischen " und " kann stehen was will ...)
Ersetze durch : [„][Joker][“]
Gibt es so eine Möglichkeit und GREP oder Suchen/Ersetzen für Javascript Code (irgendwie wie * oder so, aber das habe ich schon getestet - klappt nicht).
Oder renne ich völlig in die falsche Richtung?

Danke!
Gruß
J.R.


als Antwort auf: [#471282]

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

Martin Fischer
  
Beiträge gesamt: 12711

12. Mai 2011, 15:55
Beitrag # 14 von 30
Beitrag ID: #471319
Bewertung:
(13747 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
zum [:punct:]: mein Fehler.

Müsste so lauten:
Code
app.findGrepPreferences.findWhat = "\\>([[:punct:]]?)\"";  
app.changeGrepPreferences.changeTo = "$1“";


zum GREP: siehe oben.


als Antwort auf: [#471317]
(Dieser Beitrag wurde von Martin Fischer am 12. Mai 2011, 16:07 geändert)

Falsche Anführungszeichen durch richtige ersetzen per Script (GREP oder Suchen und Ersetzen?)

JonesRidder
Beiträge gesamt: 85

12. Mai 2011, 17:07
Beitrag # 15 von 30
Beitrag ID: #471339
Bewertung:
(13724 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das ist krank (positiv gemeint) - es funktioniert (wie soll denn ein normalsterblicher auf so etwas kommen??????)

Super!

Habe da noch eine letzte (hoffentlich) Suchen und Ersetzen/GREP Aufgabe zu bewerkstelligen, bei der ich auch nicht weiß, wie ich das der Maschine mitteilen soll - die versteht mich irgendwie nicht ;-) (ich spreche nicht ihre Sprache anscheinend):

Das soll gemacht werden:
Wenn innerhalb des Absatzformats "Infokasten" das Muster "[Absatz][-][Leerzeichen]" gefunden wird, dann dieses durch Zeichenformat "Pfeil" Ersetzstring: "[Absatz][4]" ersetzen (die "4" steht in Verbindung mit der Schriftart Webdings für einen Pfeil - sieht aus wie PLAY).
Wiedermal mein nicht funktionierender Code:
Code
        app.findTextPreferences.findWhat = "\^\p- "; 
app.findTextPreferences.appliedParagraphStyle = "Infokasten";
app.changeTextPreferences.changeTo = "^p4";
app.changeTextPreferences.appliedCharacterStyle = "Pfeil";
_dok.changeText();


Tausend Dank für die spitzen Hilfe!
Gruß
J.R.


als Antwort auf: [#471319]
X