[GastForen Programme Print/Bildbearbeitung Adobe InDesign Fussnote und Satzzeichen Reihenfolge wechseln

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

Fussnote und Satzzeichen Reihenfolge wechseln

Lehmann
Beiträge gesamt: 7

18. Apr 2011, 10:58
Beitrag # 1 von 20
Bewertung:
(11903 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Gibt es eine Möglichkeit, das Satzzeichen (Komma, Punkt, Strichpunkt), das nach einer Fussnote folgt neu vor die Fussnote zu stellen resp. auch umgekehrter Fall?

Beispiel: FN6. muss FN.6 sein
X

Fussnote und Satzzeichen Reihenfolge wechseln

Martin Fischer
  
Beiträge gesamt: 12732

18. Apr 2011, 11:40
Beitrag # 2 von 20
Beitrag ID: #469372
Bewertung:
(11886 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Lehmann,

das geht per GREP-Suche.

Wenn Du die Satzzeichen nach dem Fußnotenverweis meinst:
Suchen: (~F)([,;\:\.\?\!])
Ersetzen: $2$1

Wenn Du die Satzzeichen nach der Zahl nach 'FN' meinst (Dein Beispiel: FN6. -> FN.6):
Suchen: (?<=FN)(\d+)([,;\:\.\?\!])
Ersetzen: $2$1


Umgekehrt:
Wenn Du die Satzzeichen nach dem Fußnotenverweis meinst:
Suchen: ([,;\:\.\?\!])(~F)
Ersetzen: $2$1

Wenn Du die Satzzeichen zwischen 'FN' und einer Zahl meinst (Dein Beispiel: FN.6 -> FN6.):
Suchen: (?<=FN)([,;\:\.\?\!])(\d+)
Ersetzen: $2$1



Zwischen den eckigen Klammern [] stehen die Zeichen, die vor bzw. hinter das Fußnotenzeichen verschoben werden sollen.


als Antwort auf: [#469371]
(Dieser Beitrag wurde von Martin Fischer am 18. Apr 2011, 12:01 geändert)

Fussnote und Satzzeichen Reihenfolge wechseln

Lehmann
Beiträge gesamt: 7

18. Apr 2011, 12:27
Beitrag # 3 von 20
Beitrag ID: #469374
Bewertung:
(11841 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin

Vielen Dank für die Antwort. Wenn ich die GREP-Suche
Suchen (~F)([,;\:\.\?\!]) Ersetzen mit $2$1
mache, dann wirft es mir die Fussnote raus und macht dafür 2 gleiche Satzzeichen (z.B. 2 Punkte). Was mache ich falsch?
Auch habe ich mich unklar ausgedrückt. Mein Beispiel ist:
FN. muss .FN geben resp. umgekehrter Fall .FN muss FN. geben
Gruss
Lehmann


als Antwort auf: [#469372]

Fussnote und Satzzeichen Reihenfolge wechseln

Martin Fischer
  
Beiträge gesamt: 12732

18. Apr 2011, 12:51
Beitrag # 4 von 20
Beitrag ID: #469379
Bewertung:
(11830 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Suchen (~F)([,;\:\.\?\!]) Ersetzen mit $2$1


Das funktioniert hier (in CS5).

Aber das nicht:
Zitat Suchen ([,;\:\.\?\!])(~F) Ersetzen mit $2$1

Da wird tatsächlich die Fußnote gelöscht.

In CS4 funktioniert auch Suchen (~F)([,;\:\.\?\!]) Ersetzen mit $2$1 nicht. Da wird das Satzzeichen zwar vorne eingefügt, bleibt aber auch hinten stehen.

Im Moment weiß ich keine Abhilfe.


als Antwort auf: [#469374]
(Dieser Beitrag wurde von Martin Fischer am 18. Apr 2011, 12:58 geändert)

Fussnote und Satzzeichen Reihenfolge wechseln

Uwe Laubender
Beiträge gesamt: 5298

18. Apr 2011, 14:34
Beitrag # 5 von 20
Beitrag ID: #469401
Bewertung:
(11779 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Martin!
Folgende Idee für InDesign CS4: mit einem Script die Fundstellen per move() tauschen.
Etwa so:

Code
app.findGrepPreferences = app.changeGrepPreferences = null; 

app.findGrepPreferences.findWhat = "(~F)([,;\:\.\?\!])";
app.changeGrepPreferences.changeTo = "$1$2";

var f = app.activeDocument.changeGrep();


for(n=0;n<f.length;n++){
f[n].characters[1].move(LocationOptions.BEFORE,f[n].characters[0]);
};

app.findGrepPreferences = app.changeGrepPreferences = null;



als Antwort auf: [#469379]

Fussnote und Satzzeichen Reihenfolge wechseln

Marco Morgenthaler
Beiträge gesamt: 2474

18. Apr 2011, 14:50
Beitrag # 6 von 20
Beitrag ID: #469405
Bewertung:
(11772 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

In CS4 funktioniert das Suchen/Ersetzen mit Fussnoten (~F) offenbar nicht, in CS5 nur bedingt. In CS4 kann ich nicht mal eine FN suchen und durch sich selbst ($0) ersetzen.

Also darf die FN nur in einer Lookaround-Klammer vorkommen und der Weg führt über eine mehrstufige Suche.

Satzzeichen FN > FN Satzzeichen

Suchen: \w(?=~F([[:punct:]]))
Ändern: $0$1

Dies fügt das Satzzeichen, das nach der FN steht, auch vor die FN ein (blabla,FN, oder blabla.FN.)

FN Satzzeichen > Satzzeichen FN

Suchen: ([[:punct:]])~F
Ändern: $0$1

Hier funktioniert seltsamerweise $0, auch jetzt haben wir Satzzeichen FN Satzzeichen als Resultat.

In einem weiteren Schritt lässt sich das doppelte Satzzeichen löschen, entweder jenes vor der FN oder jenes nach der FN. Beispiel:
Suchen: ([[:punct:]])(?=~F\1)
Ändern: Nichts (löschen)

löscht etwa das erste Satzzeichen von zwei identischen vor und nach FN.

Gruss, Marco

EDIT: Wenn Uwes Skript geht, wäre das natürlich die einfachste Lösung. Offenbar funktioniert ein Grep, der über die Grep-Suche nicht funktioniert, wenn er über ein Skript aufgerufen wird. Seltsam.


als Antwort auf: [#469379]
(Dieser Beitrag wurde von Marco Morgenthaler am 18. Apr 2011, 14:56 geändert)

Fussnote und Satzzeichen Reihenfolge wechseln

Martin Fischer
  
Beiträge gesamt: 12732

18. Apr 2011, 14:55
Beitrag # 7 von 20
Beitrag ID: #469406
Bewertung:
(11771 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

die move()-Methode ist gut.

Kannst Du den o.g. unterschiedlichen Erfolg der GREP-Methode (ohne JavaScript) in CS4 und CS5 bestätigen?
Ich meinte, in CS4 früher schon öfters die Satzzeichen auf diese Weise vor das Fußnotenzeichen geholt zu haben. Deswegen hatte ich mir zunächst keine Gedanken gemacht, dass das nicht funktionieren könnte. Und jetzt habe ich mich vom Gegenteil überzeugt.

Es ist aber möglich, dass ich dazu an einzelnen Stellen das ReverseCharacters-Skript missbracht habe.

Code
//reverseCharacters.jsx 

if (app.selection.length > 0 && app.selection[0].hasOwnProperty('baseline'))
{
var myText = app.selection[0];
for ( var myCounter = 0; myCounter < myText.characters.length-1; myCounter ++ )
myText.characters.firstItem().move( LocationOptions.after, myText.characters.item( -myCounter-1 ) );
}



als Antwort auf: [#469401]
(Dieser Beitrag wurde von Martin Fischer am 9. Jan 2014, 17:27 geändert)

Fussnote und Satzzeichen Reihenfolge wechseln

Uwe Laubender
Beiträge gesamt: 5298

18. Apr 2011, 15:11
Beitrag # 8 von 20
Beitrag ID: #469411
Bewertung:
(11747 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Martin!
Für CS4 kann ich bestätigen, dass es mit 1stufigem GREP nicht funktioniert. Gleiches Resultat wie bei Dir. Deshalb auch der Script-Ansatz mit move().

Das Script kann natürlich einfacher geschrieben werden. Die beiden Klammern können wegfallen und aus $1$2 wird $0.

In CS5 kann ich nicht testen.


als Antwort auf: [#469406]

Fussnote und Satzzeichen Reihenfolge wechseln

flobuc
Beiträge gesamt: 246

18. Apr 2011, 16:21
Beitrag # 9 von 20
Beitrag ID: #469421
Bewertung:
(11712 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

da das Search&Replace mit Fussnoten in CS3 nicht funktionierte, verwende ich seitdem folgendes Skript um Satzzeichen und Fussnoten zu tauschen. Vielleicht kann es noch jemand brauchen.

Code
var currentDocument = app.activeDocument;		// Referenz auf gerade geoeffnetes Dokument 

//find/change Preferences zurücksetzen
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;

app.findTextPreferences.findWhat = "^F";
//Find options
app.findChangeTextOptions.caseSensitive = false;
app.findChangeTextOptions.includeFootnotes = false;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findChangeTextOptions.includeLockedLayersForFind = false;
app.findChangeTextOptions.includeLockedStoriesForFind = false;
app.findChangeTextOptions.includeMasterPages = false;
app.findChangeTextOptions.wholeWord = false;

var allFootnotes = currentDocument.findText(); // Suche alle Fussnoten

for(i =0;i<allFootnotes.length;i++) { // Alle Fussnoten durchlaufen
var currentFootnote = allFootnotes[i];
var parentStory = currentFootnote.parent;
try{
var followingCharacter = parentStory.characters.item(currentFootnote.index+1).contents;
if(followingCharacter == "."||followingCharacter == "!"||followingCharacter == "?"||followingCharacter == ";"||followingCharacter == ","){
app.select(parentStory.characters.item(currentFootnote.index+1));
app.cut();
app.select(parentStory.characters.item(currentFootnote.index).insertionPoints[0]);
app.paste();
}
} catch (e){
//$.write("Fehler");
}
}



Gruss

Flo


als Antwort auf: [#469411]

Fussnote und Satzzeichen Reihenfolge wechseln

Lehmann
Beiträge gesamt: 7

21. Apr 2011, 07:56
Beitrag # 10 von 20
Beitrag ID: #469687
Bewertung:
(11628 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe und hallo an Alle

Vielen Dank für die guten Lösungsvorschläge. Wie einfach ist es, wenn man weiss wie! Meine Mitarbeiter und ich sind sehr, sehr froh und es erspart uns viel Zeit und Handarbeit. Nochmals herzlichen Dank!

Code
app.findGrepPreferences = app.changeGrepPreferences = null; 

app.findGrepPreferences.findWhat = "(~F)([,;\:\.\?\!])";
app.changeGrepPreferences.changeTo = "$1$2";

var f = app.activeDocument.changeGrep();


for(n=0;n<f.length;n++){
f[n].characters[1].move(LocationOptions.BEFORE,f[n].characters[0]);
};

app.findGrepPreferences = app.changeGrepPreferences = null;


Ich wünsche schöne Ostern
Marianne Lehmann


als Antwort auf: [#469401]

Fussnote und Satzzeichen Reihenfolge wechseln

Martin Fischer
  
Beiträge gesamt: 12732

21. Apr 2011, 09:41
Beitrag # 11 von 20
Beitrag ID: #469697
Bewertung:
(11612 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marianne,

in dem veröffentlichten Code sind einige überflüssige bzw. fehlerhafte Zeilen enthalten.

Antwort auf: app.findGrepPreferences.findWhat = "(~F)([,;\:\.\?\!])";


In JavaScript müssen die Backslashes im GREP für die Suche escaped werden.
Die Zeile lautet richtig:

Code
app.findGrepPreferences.findWhat = "(~F)([,;\\:\\.\\?\\!])"; 


Aber die Zeile mit den unescaped Backslashes ist nicht so schlimm, weil changeGrep() mit changeTo = "$1$2" nichts ändert. ;-)

Richtig müsste der changeTo-Ausdruck "$2$1" lauten (Umkehrung der Treffergruppen).

Aber dann hätten wir dasselbe Ergebnis wie bei der manuellen GREP-Ersetzen Methode: in CS4 wird das Satzzeichen lediglich nach vorne dupliziert, bleibt aber hinten stehen.



Der funktionierende Kern des Skripts ist folgender:
Code
app.findGrepPreferences = null;  
app.findGrepPreferences.findWhat = "(~F)([,;\\:\\.\\?\\!])";
var f = app.activeDocument.findGrep();
for (var n = 0; n < f.length; n++)
{
f[n].characters[1].move(LocationOptions.BEFORE, f[n].characters[0]);
};
app.findGrepPreferences = null;



als Antwort auf: [#469687]
(Dieser Beitrag wurde von Martin Fischer am 21. Apr 2011, 09:49 geändert)

Fussnote und Satzzeichen Reihenfolge wechseln

Lehmann
Beiträge gesamt: 7

21. Apr 2011, 10:48
Beitrag # 12 von 20
Beitrag ID: #469708
Bewertung:
(11595 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Der funktionierende Kern des Skripts ist folgender:
Code
app.findGrepPreferences = null;  
app.findGrepPreferences.findWhat = "(~F)([,;\\:\\.\\?\\!])";
var f = app.activeDocument.findGrep();
for (var n = 0; n < f.length; n++)
{
f[n].characters[1].move(LocationOptions.BEFORE, f[n].characters[0]);
};
app.findGrepPreferences = null;

Antwort auf: Hallo Martin

Vielen Dank für das korrigierte Script. Das ist die Suche nach FN Satzzeichen. Wie lautet das Script für Satzzeichen FN? Habe leider nicht viel Ahnung vom Programmieren :(

Herzliche Grüsse von
Marianne Lehmann



als Antwort auf: [#469697]

Fussnote und Satzzeichen Reihenfolge wechseln

Martin Fischer
  
Beiträge gesamt: 12732

21. Apr 2011, 10:59
Beitrag # 13 von 20
Beitrag ID: #469709
Bewertung:
(11586 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Satzzeichen allgemein (auch Klammern u.a.):
Code
app.findGrepPreferences = null;   
app.findGrepPreferences.findWhat = "[[:punct:]]~F";
var f = app.activeDocument.findGrep();
for (var n = 0; n < f.length; n++)
{
f[n].characters[1].move(LocationOptions.BEFORE, f[n].characters[0]);
};
app.findGrepPreferences = null;



Satzzeichen ,;:.?! (wie oben):
Code
app.findGrepPreferences = null;   
app.findGrepPreferences.findWhat = "[,;\\:\\.\\?\\!]~F";
var f = app.activeDocument.findGrep();
for (var n = 0; n < f.length; n++)
{
f[n].characters[1].move(LocationOptions.BEFORE, f[n].characters[0]);
};
app.findGrepPreferences = null;



als Antwort auf: [#469708]

Fussnote und Satzzeichen Reihenfolge wechseln

Marco Morgenthaler
Beiträge gesamt: 2474

21. Apr 2011, 15:16
Beitrag # 14 von 20
Beitrag ID: #469740
Bewertung:
(11537 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin

Ich weiss nicht, wie es in einem Skript sein muss, aber in einem «normalen» Grep-Ausdruck müssen bei einer definierten Zeichenklasse zwischen eckigen Klammern nur wenige Zeichen maskiert (escaped) werden.

Eine abschliessende Liste (nach Gregor Fellenz) aller Metazeichen, die in einer Zeichenauswahl maskiert werden müssen:
] ^ - \ ~

Das Skript sollte also auch mit der Zeichenklasse [,;:.?!] funktionieren (hoffe ich wenigstens).

Gruss, Marco


als Antwort auf: [#469709]

Fussnote und Satzzeichen Reihenfolge wechseln

Martin Fischer
  
Beiträge gesamt: 12732

21. Apr 2011, 16:15
Beitrag # 15 von 20
Beitrag ID: #469745
Bewertung:
(11512 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Marco,

bei Fragezeichen, Ausrufezeichen und Doppelpunkt gebe ich Dir gerne Recht.
Allerdings schadet m.W. die Maskierung auch nicht.
Man kann z.B. ein gesuchtes Fragezeichen leichter von der Begrenzung einer Gier unterscheiden.

Und beim Punkt innerhalb einer eckigen Klammer muss ich Dir auch Recht geben. ;-)
Wenn er außerhalb der eckigen Klammer stünde, müsste er maskiert werden, um als Satzzeichen und nicht als beliebiges Zeichen interpretiert zu werden.

Im Skript oben hatte ich bemängelt, dass bestimmte Satzzeichen nur zum Schein maskiert waren:
Code
app.findGrepPreferences.findWhat = "(~F)([,;\:\.\?\!])"; 



Für JavaScript ist dieser Ausdruck aber äquivalent mit

Code
app.findGrepPreferences.findWhat = "(~F)([,;:.?!])"; 


Denn ein unmaskierter Backslash wird bei der Zuweisung in den FindGrepPreferences nicht als Backslash erkannt – er dient damit auch nicht zur Maskierung des nachfolgenden Zeichens.

Deswegen die Umschreibung mit den doppelten Backslashes.

Code
app.findGrepPreferences.findWhat = "(~F)([,;\\:\\.\\?\\!])"; 


Aber wie ich heute gelernt habe, hast Du Recht, wenn Du sagst, diese Satzzeichen brauchen gar nicht maskiert zu werden.

Also werden in JavaScript alle drei o.g. Ausdrücke in eckigen Klammern gleich interpretiert.
Egal ob zwei Backslashes, einer oder gar keiner vorangestellt wird.
Wenn das hoffentlich mal kein Stolperstein wird.

Für mich selbst werde ich das grundsätzliche Maskieren von einem Punkt (und einem Fragezeichen, Ausrufezeichen und Doppelpunkt) beibehalten.
Dann brauch ich mir nicht zu merken, dass er eigentlich nur außerhalb einer eckigen Klammer maskiert werden müsste, innerhalb einer Klammer aber unmaskiert bleiben könnte.
Es ist anstrengend genug, sich zu merken, dass ein Backslash für eine Einstellung der findGrep-Properties in JavaScript maskiert werden muss. Das ist m.E. wichtiger als das Behalten der Weglaßmöglichkeit eines Backshlashes innerhalb der eckigen Klammern.


als Antwort auf: [#469740]
X