[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Fußnoten per Script erzeugen (win cs4 js)

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

Fußnoten per Script erzeugen (win cs4 js)

cwenet
Beiträge gesamt: 1131

2. Apr 2010, 07:50
Beitrag # 1 von 24
Bewertung:
(7885 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,
ich habe ein Dokument in dem die Fußnoten als Klartext an der Aufrufstelle mitlaufen. Also:
text text text <fnote>fussnotentext fussnotentext </fnote>text text text
wie lassen sich nun alle Fußnoten per script in echte Fußnoten umwandeln? Über Hilfe freue ich mich. Ostergrüsse Christoph
X

Fußnoten per Script erzeugen (win cs4 js)

Martin Fischer
  
Beiträge gesamt: 12732

2. Apr 2010, 10:35
Beitrag # 2 von 24
Beitrag ID: #438379
Bewertung:
(7863 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

was hast Du bislang unternommen?
Hast Du einen GREP entwickelt, mit dem der Fußnotentext gefunden werden kann?
Das wäre bereits die halbe Miete.


als Antwort auf: [#438374]

Fußnoten per Script erzeugen (win cs4 js)

cwenet
Beiträge gesamt: 1131

2. Apr 2010, 11:20
Beitrag # 3 von 24
Beitrag ID: #438384
Bewertung:
(7850 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke für Deine Antwort.
Dies könnte ich anbieten:
Code
<fnote>.+</fnote> 

Es wird schonmal alles markiert.

Und hiermit mache ich schon meine erste Fussnote:
Code
var myInsertionPoint = app.selection[0]; 
var mySelection=app.selection[0];
app.selection[0].contents = "";
myInsertionPoint.footnotes.add({contents:"Meine erste Fussnote"});


Was nicht klappt, ist, wenn ich mySelection statt "Meine erste Fussnote" verwende.

Wo ich aber generell im Dunklen tappe ist, wie bringe ich das nun alles zusammen?

Gruss
Christoph

Gruss Christoph


als Antwort auf: [#438379]

Fußnoten per Script erzeugen (win cs4 js)

Martin Fischer
  
Beiträge gesamt: 12732

2. Apr 2010, 11:44
Beitrag # 4 von 24
Beitrag ID: #438386
Bewertung:
(7845 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das Problem bei myInsertionPoint.footnotes.add({contents:"Meine erste Fussnote"});
ist, dass damit auch die Fußnotenziffer in der Fußnote überschrieben wird.
Mit footnotes.add() wird eine neue Fußnote angelegt.
Aber mit dem Attribut {contents:"Meine erste Fussnote"} wird der Inhalt der gesamten Fußnote ersetzt durch den Text "Meine erste Fussnote".
Es braucht eine Lösung, wo der Inhalt nicht ersetzt wird, sondern hinten angehängt.
Z.B. die move()-Methode.

Wo soll die Fußnote erzeugt werden?
Am ersten Einfügepunkt der Auswahl: app.selection[0].insertionPoints.firstItem()

Beispiel:
Code
var fn_ip = app.selection[0].insertionPoints.firstItem(); // erster Einfügepunkt der Auswahl  
var foot_note = fn_ip.footnotes.add(); // Fußnote hinzufügen
app.selection[0].texts.firstItem().move(LocationOptions.AT_END, foot_note.texts.firstItem()); // Auswahl ans Ende der Fußnote verschieben



als Antwort auf: [#438384]
(Dieser Beitrag wurde von Martin Fischer am 2. Apr 2010, 12:35 geändert)

Fußnoten per Script erzeugen (win cs4 js)

Martin Fischer
  
Beiträge gesamt: 12732

2. Apr 2010, 12:16
Beitrag # 5 von 24
Beitrag ID: #438387
Bewertung:
(7833 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: <fnote>.+</fnote>

Hast Du diesen Code ausprobiert?
Was passiert, wenn mehr als eine Fußnoten im Absatz vorkommt?

GREP ist gierig!
Wie kann man diese Gier zügeln?


als Antwort auf: [#438384]

Fußnoten per Script erzeugen (win cs4 js)

cwenet
Beiträge gesamt: 1131

2. Apr 2010, 12:34
Beitrag # 6 von 24
Beitrag ID: #438388
Bewertung:
(7824 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ah, danke ja, da wir viel zu viel gefunden.
So sieht es, glaube ich, besser aus:
Code
<fnote>.+?</fnote> 

Kürzeste Entsprechung. Müßte so in Ordnung sein?

Die Fussnote wird jetzt eichtig ausgegeben, danke.
Nun schaue ich mal, ob ich das fürs ganze Dokument hinbekomme.

Gruss
Christoph


als Antwort auf: [#438387]
(Dieser Beitrag wurde von cwenet am 2. Apr 2010, 12:35 geändert)

Fußnoten per Script erzeugen (win cs4 js)

Martin Fischer
  
Beiträge gesamt: 12732

2. Apr 2010, 12:39
Beitrag # 7 von 24
Beitrag ID: #438390
Bewertung:
(7819 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Kürzeste Entsprechung. Müßte so in Ordnung sein?
Gut.


Für das Anlegen der Fußnote und das Verschieben der Fundstellen kannst Du folgende aus obigem Code entwickelte Funktion verwenden:
Code
function make_note(a_text) 
{
var fn_ip = a_text.insertionPoints.firstItem(); // erster Einfügepunkt der Fundstelle
var foot_note = fn_ip.footnotes.add(); // Fußnote hinzufügen
a_text.move(LocationOptions.AT_END, foot_note.texts.firstItem()); // Fundstelle ans Ende der Fußnote verschieben
}


Jetzt musst Du nur noch den Fußnotentext suchen und die Fundstellen in der richtigen Reihenfolge abarbeiten. Anschließend die überflüssigen Marker löschen.


als Antwort auf: [#438388]

Fußnoten per Script erzeugen (win cs4 js)

cwenet
Beiträge gesamt: 1131

2. Apr 2010, 13:04
Beitrag # 8 von 24
Beitrag ID: #438391
Bewertung:
(7806 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Martin,

auch für die Funktion. Das muss ich mir jetzt mal in Ruhe anschauen.
Zuvor habe ich noch das Problem, dass auch ein Return zwischen den beiden tags <fnote> und </fnote> vorkommen kann. </fnote> steht also im nächsten Absatz. Wie kann ich sicher gehen, dass der Fund tatsächlich bis zum nachsten </fnote> geht?

Gruss
Christoph


als Antwort auf: [#438390]

Fußnoten per Script erzeugen (win cs4 js)

Martin Fischer
  
Beiträge gesamt: 12732

2. Apr 2010, 13:10
Beitrag # 9 von 24
Beitrag ID: #438392
Bewertung:
(7806 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Wie kann ich sicher gehen, dass der Fund tatsächlich bis zum nachsten </fnote> geht?


Verwende dafür im GREP \X anstelle des Punkts .
\X schließt Absatzschaltungen ein.

Vergiss nicht, den Backslash zu escapen.


als Antwort auf: [#438391]

Fußnoten per Script erzeugen (win cs4 js)

cwenet
Beiträge gesamt: 1131

2. Apr 2010, 14:19
Beitrag # 10 von 24
Beitrag ID: #438393
Bewertung:
(7779 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Martin,

das klappt so. Nur habe ich nichts escaped.
<fnote>\X+?</fnote>

Escaped sieht es doch so aus:
<fnote>\\X+?</fnote>
Da wird nichts gefunden.

Kennst Du noch folgendes Phänomen:
Beim Import aus Word sind bei einigen Dokumente kleine Textfragmente am Ende des Textes platziert. Die gehören aber in den Fliesstext. So auch ab und zu meine </fnote> tags. Aber nur ein Schnipsel davon.

Gruss
Christoph


als Antwort auf: [#438392]

Fußnoten per Script erzeugen (win cs4 js)

Martin Fischer
  
Beiträge gesamt: 12732

3. Apr 2010, 11:05
Beitrag # 11 von 24
Beitrag ID: #438416
Bewertung:
(7707 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

Antwort auf: das klappt so. Nur habe ich nichts escaped.
<fnote>\X+?</fnote>


Vermutlich hast Du mich falsch verstanden.
Im Suchen-Dialogfeld auf der Benutzeroberfläche muß nicht escaped werden.
Aber in der findWhat-Anweisung im JavaScript.

Antwort auf: Kennst Du noch folgendes Phänomen:
Beim Import aus Word sind bei einigen Dokumente kleine Textfragmente am Ende des Textes platziert. Die gehören aber in den Fliesstext. So auch ab und zu meine </fnote> tags. Aber nur ein Schnipsel davon.


Ja, dieses Phänomen kenne ich gut.
Kommt erst in CS4 vor.
Sieht aus, wie ein kleines Puzzleteil, was sich beim Import zum Ende des Textabschnitts verirrt.
Es besteht in der Regel aus 3-4 Zeichen mit Schlußpunkt und einer Absatzschaltung.

Dieses Stück fehlt dann im Textabschnitt.
Das teuflische daran ist: Da die Absatzschaltung mit verschoben wird und deswegen aus zwei Absätzen einer wird, ist die betroffene Stelle gar nicht so einfach zu finden, indem man etwa nach einem seltsam anmutenden Ende eines Absatzers sucht.
Meist gelingt es nur mit Hilfe einer Recherche in der Worddatei herauszufinden, wo die paar verschobenen Teile hingehören.

Aus diesem Grunde bin ich dazu übergegangen, Wordtexte zunächst in einem neuen Dokument in CS3 zu platzieren und später aus der CS3-Datei in ein neues CS4-Dokument zu übernehmen. In CS3 taucht dieser Fehler nicht auf. Und die Fehler, die ich von CS3 her kenne, lassen sich in CS4 1:1 nachbilden (z.B. rosa Kästchen statt Fußnotenreferenzen + Fußnoten danach verschoben – http://www.hilfdirselbst.ch/..._P406949.html#406949 und http://www.hilfdirselbst.ch/..._P344301.html#344301). In CS4 hat sich in dieser Hinsicht nichts verbessert, sondern (mit den zufälligen Verschiebungen) eher verschlechtert.

Überhaupt hat der Import von Word-Dokumenten nach meinen Erfahrungen in CS4 gegenüber der Vorgängerversion an Zuverlässigkeit verloren. Oft stürzt mir CS4 beim Versuch, eine Word-Datei mit Fremdalphabeten (Griechisch, Hebräisch, Kyrillisch) zu platzieren, ab, während sich dieselbe Word-Datei in CS3 problemlos platzieren läßt.

Es verwundert mich immer wieder, wie wenig diese Tatsache von andern beklagt wird und vermutete die Ursache schon bei exotische Daten mit Fremdalphabeten und Sonderzeichen, wie ich sie teilweise zu verarbeiten habe. Aber auch bei simplen, anspruchslosen Wordtexten kann ich die genannten Fehler beobachten. Dabei sind die Anforderungen hinsichtlich der Importformate heutzutage doch deutlich gesunken. Was hatte Pagemaker nicht alles an Importformaten außer dem Wordformat zu berücksichtigen?

Deswegen bin ich nun sehr erleichtert, daß auch Du von diesem Fehler mit den verschobenen Puzzlestückchen berichtest.

Manchmal löst man diese Importprobleme, indem man die Worddatei zunächst als HTML-Datei und diese dann wieder als Word-Datei speichert.
Manchmal hilft, die Word-Datei über OpenOffice zu öffnen und dort als RTF zu sichern. Allerdings gehen dabei häufig Unicodezeichen bei Fremdalphabethen verloren.


als Antwort auf: [#438393]
(Dieser Beitrag wurde von Martin Fischer am 3. Apr 2010, 11:24 geändert)

Fußnoten per Script erzeugen (win cs4 js)

Uwe Laubender
Beiträge gesamt: 5299

3. Apr 2010, 17:02
Beitrag # 12 von 24
Beitrag ID: #438430
Bewertung:
(7676 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Martin!
Auch ich hatte bereits Schwierigkeiten mit dem Import von Word-Fremdsprachdateien. In meinem Fall: Arabisch. Gelöst habe ich das dann über die Zwischenstation TextEdit und copy/paste. Traurig, aber wahr…


als Antwort auf: [#438416]

Fußnoten per Script erzeugen (win cs4 js)

cwenet
Beiträge gesamt: 1131

3. Apr 2010, 18:06
Beitrag # 13 von 24
Beitrag ID: #438433
Bewertung:
(7666 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Martin,
für Deinen Bericht. Hier handelt es sich um ein deutschsprachiges Dokument.

Gleichermaßen unzuverlässig ist ja auch der Fussnotenimport aus Word.
Dies wollte ich ja mit dem Script umgehen.

In Word habe ich ein Macro im Einsatz, welches mir die Fussnoten in Inline Text auflöst.
Danach wollte ich in Indesign die Fussnoten erstellen.
Nun bin ich kurz davor dieses Projekt wieder hinzuwerfen, da mir dieses Schnipselphänomen einen Strich durch Rechnung macht.
Denn das hätte so schön funktioniert.

Aber um des Lernens Willen beisse ich mich da durch.
Mal sehen, ob ich jetzt weiter komme.

Sich er melde ich mich noch mal.

Gruss
Christoph


als Antwort auf: [#438416]
(Dieser Beitrag wurde von cwenet am 3. Apr 2010, 18:10 geändert)

Fußnoten per Script erzeugen (win cs4 js)

Martin Fischer
  
Beiträge gesamt: 12732

3. Apr 2010, 19:29
Beitrag # 14 von 24
Beitrag ID: #438437
Bewertung:
(7630 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

> Auch ich hatte bereits Schwierigkeiten mit dem Import von Word-Fremdsprachdateien.

Nun, bei mir sind in CS4 diese Schwierigkeiten eher die Regel als die Ausnahme.
Deswegen der Umweg über CS3.

@ Christoph:
> Nun bin ich kurz davor dieses Projekt wieder hinzuwerfen,
> da mir dieses Schnipselphänomen einen Strich durch Rechnung macht.

Hast Du keine Möglichkeit, den Text in CS3 zu importieren und von dort nach CS4 zu nehmen?
Dieses Schnipselproblem gibt es nur in CS4.

Versuche mal die Worddatei unter einem anderen Namen zu speichern.
Möglicherweise hat dieses SICHERN UNTER Auswirkungen auf die Schnipselproblematik.

Hier noch das Skript, das nach obigem Schema getaggten Text – <fnote>Xxxx xxxxxx Xxxx.</fnote> – in Fußnoten umwandelt:
Code
// TaggedText2Footnote.jsx 

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = '<fnote>\\X+?</fnote>';
var the_result = app.documents.firstItem().findGrep();
for (var i = the_result.length -1; i >= 0; i--)
makeNote(the_result[i]);

app.findChangeGrepOptions.includeFootnotes = true;
app.findGrepPreferences.findWhat = '</?fnote>';
app.documents.firstItem().changeGrep();


function makeNote(a_text)
{
var fn_ip = a_text.insertionPoints.firstItem();
var foot_note = fn_ip.footnotes.add();
a_text.move(LocationOptions.AT_END, foot_note.texts.firstItem());
}



als Antwort auf: [#438433]

Fußnoten per Script erzeugen (win cs4 js)

cwenet
Beiträge gesamt: 1131

4. Apr 2010, 15:09
Beitrag # 15 von 24
Beitrag ID: #438446
Bewertung:
(7544 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank Martin,

nun wollte ich Dein Script noch abändern, da ja Fussnoten in Tabellen nicht funktionieren. Im Moment bleibt nur das übrig <?>
Die fussnote löst sich jetzt ins nichts auf.
Wenn ich diesen Platzhalter <?> wieder in den Fliesstext kopiere, dann taucht die Fussnote wieder auf. Jetzt weiss ich aber nicht wie zuverlässig das funktioniert.
Nun wollte ich mit dieser Abfrage Tabellen ausklammern:

Code
if(the_result.parent.parent.constructor.name != 'Table') 


Das funktioniert leider nicht.
Bin aber überfragt, an welcher Stelle ich eingreifen muss.

Oder wie würdest Du dieses Problem angehen?

Grüße
Christoph


als Antwort auf: [#438437]
X