[GastForen Programme Print/Bildbearbeitung Adobe InDesign GREP-Suche: gerades Komma nach kursivem Wort

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

GREP-Suche: gerades Komma nach kursivem Wort

Martin Fischer
  
Beiträge gesamt: 12714

18. Okt 2007, 23:22
Beitrag # 1 von 15
Bewertung:
(12731 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich möchte alle gerade gesetzten Kommata, die direkt auf kursiv gestellten Text folgen, ebenfalls kursiv stellen.

Ebenso möchte ich überprüfen, ob kursiv gesetzter Text von Anführungszeichen umgeben ist, die gerade sind: „meinText“. In diesem Fall sollen die Anführungszeichen auch kursiv werden.

Meine Versuche mit lookbehind und lookahead in GREP sind bislang nicht von Erfolg gekrönt.
Ich scheitere schon an der Suche:
Code
(?<=„)\w 
//Format suchen: Italic


Es sieht so aus, also ob das Versteckspiel von lookbehind und lookahead nicht für die Formatierung gilt.

Weiß jemand eine Lösung?

(Dieser Beitrag wurde von Martin Fischer am 18. Okt 2007, 23:24 geändert)
X

GREP-Suche: gerades Komma nach kursivem Wort

Gerald Singelmann
  
Beiträge gesamt: 6268

18. Okt 2007, 23:32
Beitrag # 2 von 15
Beitrag ID: #317853
Bewertung:
(12725 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Weiß jemand eine Lösung?


Jede reine grep-Lösung wäre meines Erachtens einer Script-Lösung, die gerade Dich nicht mehr als ein paar Minuten kostet, unterlegen.
Folgender 2-Pass Vorgang wäre denkbar:
Suche (.)(?=,) mit Formatierung kursiv und ersetze $1, mit Formatierung kursiv
Dann suche ,, und ersetze durch ,


als Antwort auf: [#317850]

GREP-Suche: gerades Komma nach kursivem Wort

Martin Fischer
  
Beiträge gesamt: 12714

18. Okt 2007, 23:38
Beitrag # 3 von 15
Beitrag ID: #317856
Bewertung:
(12726 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Jede reine grep-Lösung wäre meines Erachtens einer Script-Lösung,
> die gerade Dich nicht mehr als ein paar Minuten kostet, unterlegen.

Die Skript-Lösung habe ich - für CS2.
Bin aber zu faul, sie auf CS3 anzupassen.

Antwort auf: (.)(?=,)
mit Formatierung kursiv und ersetze


Hast Du das ausprobiert?
Oder das:
Code
(.)(?=“) 


Damit finde ich nur Stellen, an denen das Anführungszeichen auch kursiv ist (und dort wird das Zeichen vor dem Abführungszeichen ausgewählt).
Nicht aber Stellen, wo das Zeichen vor der Abführung kursiv, die Abführung selbst aber gerade ist.


als Antwort auf: [#317853]

GREP-Suche: gerades Komma nach kursivem Wort

Gerald Singelmann
  
Beiträge gesamt: 6268

18. Okt 2007, 23:39
Beitrag # 4 von 15
Beitrag ID: #317858
Bewertung:
(12724 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Hast Du das ausprobiert?

Um diese Uhrzeit? Nö, mach ich aber gleich...


als Antwort auf: [#317856]

GREP-Suche: gerades Komma nach kursivem Wort

Martin Fischer
  
Beiträge gesamt: 12714

18. Okt 2007, 23:47
Beitrag # 5 von 15
Beitrag ID: #317863
Bewertung:
(12718 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Um diese Uhrzeit?

Paßt es Dir morgen um 8:00 besser?
Ich könnte da nochmal nachfragen.

Aber das Ergebnis dürfte auch morgen noch ernüchternd sein.


als Antwort auf: [#317858]
(Dieser Beitrag wurde von Martin Fischer am 18. Okt 2007, 23:48 geändert)

GREP-Suche: gerades Komma nach kursivem Wort

Peter Kahrel
Beiträge gesamt: 182

18. Okt 2007, 23:57
Beitrag # 6 von 15
Beitrag ID: #317867
Bewertung:
(12714 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Martin,

As you mentioned, lookbehind and lookahead always include any formatting specified. One would have hoped that they would ignore the formatting, but they don't. Remember that in WordPerfect it is easy to search for some x in italic followed by some y not in italic? It's not straightforward in inDesign.

Anyway, I often need to search these things, too, and what I found easiest in the end was to convert italics to HTML-like codes <i> and </i> (or any kind of text code). For a word in italics in roman quotes, just search for "<i>word</i>" or something like that. When you're done, convert the codes back to italics. Not exactly a subtle approach, but it works like a breeze. The two conversion functions are quoted, below.

Peter

Code
// Convert italics to HTML-style codes 

function ital2code ()
{
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.fontStyle = 'Italic';
var f = app.activeDocument.findGrep();
for ( var i = f.length-1; i > -1; i-- )
{
f[i].insertionPoints[-1].contents = '</i>';
f[i].insertionPoints[0].contents = '<i>'
}
// delete italics
app.changeGrepPreferences.fontStyle = 'Regular';
app.activeDocument.changeGrep();
}


// Convert HTML-style codes to italics

function code2ital ()
{
// Everything between <i> and </i> to italic
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = '<i>.*?</i>';
app.changeGrepPreferences.fontStyle = 'Italic';
app.activeDocument.changeGrep();
// Delete <i> and </i>
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = '</?i>';
app.changeGrepPreferences.changeTo = '';
app.activeDocument.changeGrep();
}



als Antwort auf: [#317856]
(Dieser Beitrag wurde von Peter Kahrel am 19. Okt 2007, 00:01 geändert)

GREP-Suche: gerades Komma nach kursivem Wort

Gerald Singelmann
  
Beiträge gesamt: 6268

19. Okt 2007, 00:04
Beitrag # 7 von 15
Beitrag ID: #317869
Bewertung:
(12704 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sowas lässt mir ja keine Ruhe...

Wie wär's mit:

Suche (\w\b) in italic und ersetze $1~k
Dann: suche ~k, ohne Formatierungsangabe und ersetze , mit italic
Dann: suche ~k in italic und ersetze durch nichts.
Schmerz im Hintern, weil man drei mal die Formatierung umstellen muss.


als Antwort auf: [#317863]

GREP-Suche: gerades Komma nach kursivem Wort

Gerald Singelmann
  
Beiträge gesamt: 6268

19. Okt 2007, 00:05
Beitrag # 8 von 15
Beitrag ID: #317870
Bewertung:
(12703 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Und Peter war schon wieder schneller und gründlicher als ich. Dann kann ich ja auch ins Bett gehen :)


als Antwort auf: [#317869]

GREP-Suche: gerades Komma nach kursivem Wort

Martin Fischer
  
Beiträge gesamt: 12714

19. Okt 2007, 00:12
Beitrag # 9 von 15
Beitrag ID: #317871
Bewertung:
(12702 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Peter,

Antwort auf: Remember that in WordPerfect it is easy to search for some x in italic followed by some y not in italic? It's not straightforward in inDesign.

Ah, I remember very well!
It is about twenty years ago, isn't it?

Antwort auf: what I found easiest in the end was to convert italics to HTML-like codes <i> and </i>

An interesting approach.
You loved WordPerfect too, as one can see.
Did you ever work with Ventura Publisher?
In this point Ventura seems to bee related with WordPerfect.
Or do you know CCS Textline?
How fine it would be to make the borders of formating styles visible e.g. in text mode.
This would help to find overrides and the extension of overrides, too.

Here is my script-approach (in CS2) to do the job (there might be some code of yours inside the script):
Code
// ExtendCharstyle2Symbols.jsx 

Array.prototype.array_merge = function() {
for(x=0;x<arguments.length;++x) {
for(y=0;y<arguments[x].length;++y) {
this[this.length] = arguments[x][y];
}
}
};


var myCounter = 0;
var myDoc = app.documents[0];
if (app.selection.length > 0) {
var myRange = app.selection[0];
}
else {
var myRange = myDoc;
}
var myBaseStyle = "Italic";
var myDefaultSymbols = ",;:";
var mySymbols = new Array
var theDialog = myDisplayDialog();
var myStyle = myDoc.characterStyles.item(theDialog[0]);
var myNewStyle = checkCS(myStyle.name + "_extended", myStyle);
var mySymbols = theDialog[1].split("");

app.findPreferences = null; app.changePreferences = null;
var myResult = myRange.search("", false, false, undefined,{appliedCharacterStyle:myStyle});
for (oneResult = 0; oneResult < myResult.length; oneResult++)
{
try{
var myIndex = myResult[oneResult].characters[-1].index;
extendCharStyle(myResult[oneResult].parentStory.characters[myIndex +1]);
} catch(e){}
}
alert("Ergebnis:\r" + myCounter + " Ersetzungen");
// --------------------------------------------------------------------
// Prüfung des Zeichens danach und ggf. Erweiterung des Zeichenformats
// --------------------------------------------------------------------
function extendCharStyle(theCharAfter)
{
for (oneSymb = 0; oneSymb < mySymbols.length; oneSymb++)
{
try
{
if (theCharAfter.contents == mySymbols[oneSymb])
{
//theCharAfter.appliedCharacterStyle = myStyle;
theCharAfter.appliedCharacterStyle = myNewStyle;
myCounter += 1;
}
}
catch(e){}
}
}

// --------------------------------------------------------------------
// Dialog zur Auswahl von Zeichenformat und Folgezeichen
// --------------------------------------------------------------------
function myDisplayDialog(){
var myFieldWidth = 80;
var myCharStyles = myDoc.characterStyles.everyItem().name;
// Festlegung Vorauswahl
for (theCSIndex = myCharStyles.length-1; theCSIndex >= 0; theCSIndex--)
{
if (myCharStyles[theCSIndex].substr(0,myBaseStyle.length) == myBaseStyle) break;
}

var myDialog = app.dialogs.add({name:"Erweitere Zeichenformat"});
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Zeichenformat:", minWidth:myFieldWidth});
}
with(dialogColumns.add()){
var mySourceDropdown = dropdowns.add({stringList:myCharStyles, selectedIndex:theCSIndex});
}
}
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"Folgezeichen:", minWidth:myFieldWidth});
}
with(dialogColumns.add()){
var mySymbolsField = textEditboxes.add({editContents:myDefaultSymbols});
}
}
}
var myResult = myDialog.show();
if(myResult == true){
var theCharStyle =myCharStyles[mySourceDropdown.selectedIndex];
var theSymbolList = mySymbolsField.editContents;
myDialog.destroy();
}
else{
myDialog.destroy()
exit();
}
return [theCharStyle, theSymbolList] ;
}


// -------------------------------------------------------------------------------------
// Überprüfe Zeichenformat
// -------------------------------------------------------------------------------------
function checkCS(oneStyle, myBase){
try {
app.activeDocument.characterStyles.item(oneStyle).name;
}
catch (e) {
app.activeDocument.characterStyles.add({name:oneStyle, basedOn:myBase});
}
return app.activeDocument.characterStyles.item(oneStyle)
}



als Antwort auf: [#317867]
(Dieser Beitrag wurde von Martin Fischer am 19. Okt 2007, 07:27 geändert)

GREP-Suche: gerades Komma nach kursivem Wort

Martin Fischer
  
Beiträge gesamt: 12714

19. Okt 2007, 00:15
Beitrag # 10 von 15
Beitrag ID: #317872
Bewertung:
(12700 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Schmerz im Hintern, weil man drei mal die Formatierung umstellen muss.

Wenn Du öfters solchen nächtlichen Aktivitäten nachgehst, könnte der Schmerz auch von wo anders her rühren.

Aber Deine Methode hat was.
Ich meine, in Anbetracht der Uhrzeit. ;-)

Und wenn Peter nicht die Lösung mit den Tags ins Spiel gebracht hätte, dann wärst Du jetzt König. ;-)

Dank für Dein Beharrungsvermögen.


als Antwort auf: [#317869]

GREP-Suche: gerades Komma nach kursivem Wort

Peter Kahrel
Beiträge gesamt: 182

19. Okt 2007, 00:30
Beitrag # 11 von 15
Beitrag ID: #317873
Bewertung:
(12689 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Martin,

>Did you ever work with Ventura Publisher?

No, never.

Interesting approach you have there. I need some sleep before reading it ;)

Regards,

Peter


als Antwort auf: [#317871]

GREP-Suche: gerades Komma nach kursivem Wort

Marco Morgenthaler
Beiträge gesamt: 2474

3. Apr 2009, 11:59
Beitrag # 12 von 15
Beitrag ID: #391989
Bewertung:
(11975 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Da das Problem von Satzzeichen nach kursivem Text immer wieder auftaucht, habe ich mal diesen alten Beitrag hervorgesucht und möchte eine einfache Grep-Lösung zur Diskussion stellen. Der Grep-Ausdruck (mit einem negativen Lookbehind):

(?<!.)[,.:]

kombiniert mit Formatsuche (siehe angehängten Screenshot 1): Suche nach Grundschrift (ZF [Ohne]), ersetze durch ZF kursiv.

Ich suche also nach einem Satzzeichen (Zeichenklasse [,.:] kann beliebig erweitert werden), wenn vorher KEIN Zeichen steht. Das ist der ganze Trick.

Sind mehrere Zeichenformate vorhanden, die das nachfolgende Satzzeichen betreffen (z. B. ZF Bold, ZF Bold Italic usw.), gibt es einfach mehrere Durchgänge, immer mit dem gleichen Grep-Ausdruck. Es ändert sich nur die Formatsuche bzw. -änderung, also:

(2. Durchgang)
Format suchen: ZF kursiv
Format ersetzen: ZF Bold

(3. Durchgang)
Format suchen: ZF Bold
Format ersetzen: ZF Bold Italic

Da es auch ZF gibt, die keinen Einfluss auf das nachfolgende Satzzeichen nehmen (z. B. hochgestellt usw.), einfach am Schluss der Grep-Durchgänge die betreffenden Satzzeichen wieder auf die Grundschrift zurücksetzen, also auch hier derselbe Grep und:

Format suchen: ZF Bold Italic
Format ersetzen: ZF [Ohne] + Grundschrift

Das Ergebnis nach dem letzten Schritt ist im Screenshot 2 zu sehen. Es funktioniert also.

Der Weg mit dem negativen Lookbehind sollte sich auch auf das Problem der geraden Anführungszeichen bei kursivem Text anwenden lassen (Grep-Ausdruck müsste entsprechend angepasst werden, es käme dann auch ein negativer Lookahead zur Anwendung). Das habe ich aber nicht getestet.

Gruss
Marco


als Antwort auf: [#317873]
Anhang:
Satzzeichen 1.png (57.5 KB)   Satzzeichen 2.png (62.9 KB)

GREP-Suche: gerades Komma nach kursivem Wort

Quarz
Beiträge gesamt: 3522

3. Apr 2009, 12:12
Beitrag # 13 von 15
Beitrag ID: #391994
Bewertung:
(11965 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke und Gruß
Quarz


als Antwort auf: [#391989]

GREP-Suche: gerades Komma nach kursivem Wort

Jochen Uebel
Beiträge gesamt: 3200

3. Apr 2009, 12:51
Beitrag # 14 von 15
Beitrag ID: #392003
Bewertung:
(11940 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Habe den Thread nicht Zeile für Zeile durchlesen können, gleichwohl eine Frage:
Aus alten Typografie-Zeiten (als ich noch häufiger mit Werksatz zu tun hatte) erinnere ich Einschränkungen der Regel "kursiv nach kursiv": Wenn nur Teile eines Satzes, z.B. nur ein Wort, kursiviert wurde, sollten das folgende Satzzeichen nicht kursiviert werden (wohl aber mit positivem Kerning etwas abgetrennt, wel sonst das letzte kursive Zeichen unschön in das nicht kursive Satzzeichen reinragt). Kursivierung nur, wenn zuvor der ganze Satzteil kursiv gestellt wurde. Erinnere ich falsch?


als Antwort auf: [#391994]

GREP-Suche: gerades Komma nach kursivem Wort

Neil77
Beiträge gesamt: 287

3. Apr 2009, 13:55
Beitrag # 15 von 15
Beitrag ID: #392013
Bewertung:
(11911 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Diese Fallunterscheidung ist sicher noch ein bisschen schöner, im Mengensatz aber m.E. kaum praktikabel. Das positive Kerning zwischen Wort und Satzzeichen müsste man, wenn's richtig schön werden soll, bei jeder Buchstabenkombination von Hand anpassen, da das automatische Kerning zwischen zwei Schriftschnitten normal nicht greift.
Nach Forssman/de Jong, Detailtypografie sind übrigens auch beide Vorgehensweisen erlaubt.

Grüße
Martin


als Antwort auf: [#392003]
X