Hallo Frank,
wenn ich Dich nun richtig verstanden habe, dann ist das Hauptziel, die Fußnoten, welche als solche getaggt sind und am Ende eines Textabschnitts oder in einem eigenen Textabschnitt stehen, dort einzuarbeiten, wo der Verweis auf die jeweilige Fußnote ist.
Mich irritiert der Ansatz, den Du in der Passage beschrieben hast.
Zitat Element p: neuen Absatz erzeugen Textknoten: 'Hallo Text, ':einfügen Element i: 'ich bin mal kursiv' : Zeichenformatierung kursiv oder Zeichenformat anwenden, Text einfügen Textknoten: 'oder auch ' einfügen, normalformatierung Element b: 'fett oder ' formatierung fett, text einfügen Textknoten: 'beides' : fett und kursiv formatieren Ich kann darin nicht erkennen, was das mit den Fußnoten zu tun hat.
Mein Vorgehen wäre das folgende:
1. Formatierung des Textes (inklusive der Fußnoten) entsprechend der Tags mit Bordmitteln (Formate zu Tags zuordnen) oder mit einem separaten Skript.
2. Ermittlung der Position der Fußnotenverweise im Text.
3. Ermittlung der Fußnoten.
4. Zuordnung der Verweise zu den Fußnoten.
5. Erzeugung von neuen "InDesign"-Fußnoten im Text und Verschieben des Textes der Fußnoten, die diesen Fußnoten zugeordnet sind. Miteinhergehend Aufräumarbeiten.
Punkt 2 und 3 könntest Du über eine Erweiterung des Sammelskripts für XML-Elemente
arrayOfXmlElements.jsx erledigen. Halte beim Einsammeln Fußnotenverweise und Fußnoten in zwei separaten Arrays fest. Am Ende sollten sich die Längen der beiden Arrays entsprechen (dieselbe Zahl an Elementen enthalten).
Anschließend wird in einer Schleife rückwärts durch den Verweis-Array die Position des jeweiligen Fußnotenverweises ermittelt, dort eine neue Fußnote erzeugt und schließlich der Fußnotentext (nicht das Element selbst), aus dem entsprechenden Element des Fußnotenarrays ans Ende der Fußnote verschoben (
move() ). Dabei wird ggf. eine überflüssige Absatzmarke am Ende der Fußnote gelöscht.
Es ist schon ein paar Jahre her (Juli 2009), da habe ich mir eben diese Schritte in einer Studie skizziert. Allerdings stehen hier die Fußnoten-Elemente bereits an der Stelle im Text, wo sie als InDesign-Fußnote eingearbeitet werden sollen – nicht wie bei Dir am Ende des Textabschnitts oder in einem eigenen Textabschnitt.
Du könntest das mal ansehen und prüfen, ob das – nach einem entsprechenden Umbau – für Dich funktioniert.
Code #target InDesign var myDoc = app.documents[0]; var myXMLElements = new Array; for (var b = 0; b <myDoc.xmlElements.firstItem().xmlElements.count(); b++) getXML(myDoc.xmlElements.firstItem().xmlElements.item(b)); for ( var i = myXMLElements.length-1; i >= 0; i--) { if (myXMLElements[i].markupTag == myDoc.xmlTags.item('footnote')) makeFootnote(myXMLElements[i]); } function makeFootnote(fnXMLElement) { var myNote = fnXMLElement.parentStory.insertionPoints.item(fnXMLElement.texts.firstItem().insertionPoints.lastItem().index +1).footnotes.add(); var myCharLength = myNote.characters.length; fnXMLElement.texts.firstItem().move(LocationOptions.AT_END, myNote.texts.firstItem()); if (myNote.characters.lastItem().contents == '\r') (myNote.characters.lastItem().contents = '') if (myNote.characters.item(myCharLength).contents == '\r') (myNote.characters.item(myCharLength).contents = '') } function getXML(aNode) { for (var i = 0; i < aNode.xmlElements.count(); i++) { myXMLElements.push(aNode.xmlElements.item(i)); getXML(aNode.xmlElements.item(i)); } } Man könnte das bestimmt besser strukturieren, aber mich hat damals in erster Linie das Vorgehen interessiert.
Ich hoffe nun, nicht komplett an Deiner Fragestellung vorbei geantwortet zu haben.