Hallo Ursula,
anbei das DoppelSkript für Kerning-Zeichenfolgen und Zeichenfolgen "ohne Umbruch".
Der Vorteil einer Unterbindung des Umbruchs durch "kein Umbruch" im Gegensatz zum geschützten Leerzeichen liegt darin, daß im Blocksatz das "kein Umbruch"-Leerzeichen flexibel bleibt (sich so wie die übrigen Leerzeichen ausdehnt oder zusammenzieht). Das geschützte Leerzeichen hingegen hat eine feste Breite.
Der Code unten ist zwar etwas holprig (weil alt).
Aber für eine Vereinfachung habe ich heute keine Zeit mehr.
Und er tut ja, was er tun soll.
Zum Kerning-Teil gilt, was bei KernPairsOptical.js dokumentiert ist:
http://www.hilfdirselbst.ch/foren/Kerning_%28unterschneiden%29_in_InDesign_P185640.html#185640
Eigentlich handelt es sich nicht um Kerningpaare, sondern um Zeichenfolgen - eskönnen also auch 3 oder mehr Zeichen sein, die optisch gekernt werden sollen.
Zum "kein Umbruch" folgendes:
1. Die Zeichenfolgen, die nicht umbrochen werden sollen, sind in einer externen Datei (reine Text-Datei, kein RTF oder Word-Doc) "noBreak.txt" definiert. Skript und Zeichenfolgenliste müssen im selben Verzeichnis (Scripts) liegen.
2. Die Ersetze-Funktion ist case sensitive, unterscheidet also Groß-/Kleinschreibung.
3. Gesucht wird nicht nach ganzen Worten, sondern nach Bestandteilen von Worten.
4. Und hier eine Beispielliste "noBreak.txt" für Zeichenfolgen, die nicht umbrochen werden sollen:
Nr.<0020>^9
Anm.<0020>^9
Z.<0020>^9
^9 vol
ols. ^9
<0020>…
…<0020>
<0020>^=
^=<0020>
^9 Kings
^9 Kgs
^9. Jahr
^9. Jhd.
Entsprechend der Liste oben werden folgende Zeichenfolgen mit dem Attribut "kein Umbruch" versehen (also nicht umbrochen):
Nr.[Leerstelle][Ziffer]
Anm.[Leerstelle][Ziffer]
Z.[Leerstelle][Ziffer]
[Ziffer] vol
ols. [Ziffer]
[Leerstelle]...
...[Leerstelle]
[Leerstelle]^=
^=[Leerstelle]
[Ziffer] Kings
[Ziffer] Kgs
[Ziffer]. Jahr
[Ziffer]. Jhd.
Beachte:
"^9. Jahr" fixiert sowohl "19. Jahr" als auch "12. Jahrhundert".
"ols. ^9" fixiert sowohl "Vols. 3" als auch "vols. 4" (also einmal groß und einmal klein).
Es ist möglich, das Leerzeichen als " " (Leerzeichen) oder als Code "<0020>" einzugeben.
// KerningOrNoBreak.js
//
var myDoc = app.activeDocument;
var myWords = [""];
var myCounter=0;
var KerningTextFileName="KernPairsOptical.txt"
var noBreakTextFileName="noBreak.txt"
var noBreakColor="noBreak";
myDialog = app.dialogs.add({name:"Modify Pairs"});
with(myDialog) {
with(dialogColumns.add()) {
staticTexts.add({staticLabel:"Auswahl:"});
mySelection = dropdowns.add({stringList:["Kerning", "kein Umbruch"], selectedIndex:0}) ;
}
}
var myReturn = myDialog.show();
if (myReturn == true) {
// Kerning Pairs
if (mySelection.selectedIndex == 0) {
TextFileName=KerningTextFileName;
myChangeFormat= {kerningMethod:"optical"};
}
// no Break
else if (mySelection.selectedIndex == 1) {
TextFileName=noBreakTextFileName;
myChangeFormat= {noBreak:true};
}
myScriptFileName = app.activeScript;
myScriptFile = File(myScriptFileName);
myFolder = myScriptFile.parent;
myFindChangeFileName = myFolder + "/" + TextFileName;
myFindChangeFile = File(myFindChangeFileName);
myResult = myFindChangeFile.open("r", undefined, undefined);
if (myResult == false){
myFindChangeFile = File.openDialog("Wähle die Datei mit der Liste der Zeichenfolgen:")
myResult = myFindChangeFile.open("r", undefined, undefined);
}
do{
myLine = myFindChangeFile.readln();
myFindChangeArray = myLine.split("#*#");
if (myFindChangeArray[0].length > 1){
myWords[myCounter] = myFindChangeArray[0];
myCounter+=1;
}
} while(myFindChangeFile.eof == false);
myFindChangeFile.close();
app.findPreferences = null;
app.changePreferences = null;
for (k=0; k < myWords.length; k++){
myChanging(myDoc,myWords[k]);
}
}
function myChanging(oneRange,oneWord) {
if (oneWord.length>0 && oneWord !=" ") {
myResults = oneRange.search(oneWord,false,true,undefined, undefined, myChangeFormat);
}
}