[GastForen Programme Print/Bildbearbeitung Adobe InDesign

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

Per GREP Leeraum vor Fußnoten löschen

Martin Fischer
  
Beiträge gesamt: 12783

17. Mär 2010, 21:32
Bewertung:

gelesen: 9770

Beitrag als Lesezeichen
Hallo Christa,

hier eine Abwandlung eines Skripts, mit dem ich ein Zeichenformat (z.B. kursiv) auf bestimmte Satzzeichen (,;:) nach diesem Zeichenformat erweitere (extendCharstyle2Chars.jsx ).

Diese angepasste Version ermittelt zunächst ein Zeichenformat ('Fußnotenzeichen' ist voreingestellt).

Dann prüft es entweder im ausgewählten Textabschnitt oder (wenn nichts ausgewählt ist) im ganzen Dokument die Zeichen vor dem Text mit dem Zeichenformat.

Ist dieses Zeichen ein Leerzeichen (oder Tab), so wird es gelöscht.

Am Ende folgt eine Meldung über die Zahl der Löschungen.

Code
// removeBlanc_beforeCS.jsx 

var myCounter = 0;
var myDoc = app.documents.firstItem();
var myRange = (app.selection.length > 0)
? app.selection[0].parentStory
: myDoc;
var myBaseStyle = "Fußnotenzeichen";
var theDialog = myDisplayDialog();
var myStyle = myDoc.characterStyles.item(theDialog);

app.findTextPreferences = null; app.changeTextPreferences = null;
app.findTextPreferences.appliedCharacterStyle = myStyle;
var myResult = myRange.findText();

for (oneResult = myResult.length-1; oneResult >= 0; oneResult--)
{
try{
var myIndex = myResult[oneResult].characters[0].index;
if (myResult[oneResult].parent.characters[myIndex -1].contents.match(/\s/) )
{
myResult[oneResult].parent.characters[myIndex -1].remove();
myCounter += 1;
}
} catch(e){}
}
alert("Ergebnis:\r" + myCounter + " Leerzeichen gelöscht");


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:"Prüfe auf Leerzeichen vor dem 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});
}
}
}
var myResult = myDialog.show();
if(myResult == true){
var theCharStyle =myCharStyles[mySourceDropdown.selectedIndex];
myDialog.destroy();
}
else{
myDialog.destroy()
exit();
}
return theCharStyle;
}


Viel Erfolg.

(Dieser Beitrag wurde von Martin Fischer am 17. Mär 2010, 22:18 geändert)
Änderungsverlauf:
Beitrag geändert von Martin Fischer (Moderator) am 17. Mär 2010, 21:34
Beitrag geändert von Martin Fischer (Moderator) am 17. Mär 2010, 21:37
Beitrag geändert von Martin Fischer (Moderator) am 17. Mär 2010, 22:16
Beitrag geändert von Martin Fischer (Moderator) am 17. Mär 2010, 22:18