Hier ein zusammengefasstes Skript, mit dem man den Text der Fußnoten innerhalb von ausgewähltem Text hoch- oder herunterschieben kann.
// fnText_UpOrDown.jsx
//DESCRIPTION:Verschiebt den Text der Fußnoten innerhalb der Auswahl um eine Fußnote hoch oder herunter.
//AUTHOR: Martin Fischer
//DATE: 5.8.2011
main();
function main()
{
if (app.selection.length > 0 && app.selection[0].hasOwnProperty('parentStory'))
{
// Dialog zur Eingabe der Verschieberichtung
var _window = new Window ('dialog', 'Fußnotentexte verschieben');
_window.alignChildren = 'left';
var _r1 = _window.add ('radiobutton', undefined, 'jeweils eine Fußnote hoch');
var _r2 = _window.add ('radiobutton', undefined, 'jeweils eine Fußnote herunter');
var _buttongroup = _window.add ('group');
_buttongroup.alignment = 'right';
_buttongroup.add ('button', undefined, 'OK');
_buttongroup.add ('button', undefined, 'Cancel');
_r1.value = true;
// Skript abbrechen, wenn nicht OK geklickt wurde
if (_window.show () != 1)
exit ();
// Auswahl erweitern, wenn Auswahl = Einfügepunkt
var _sel = app.selection[0];
if (app.selection[0].constructor.name == 'InsertionPoint')
_sel.parentStory.characters.itemByRange(_sel.insertionPoints.firstItem().index, _sel.parentStory.characters.lastItem().index - 1).select();
if (_r1.value == true)
move_fn_up();
else
move_fn_down();
}
else
alert('Bitte Text auswählen.')
}
// Fußnotentexte je eine Fußnote hochschieben
function move_fn_up()
{
var _step = 1;
// am Ende der Auswahl eine leere Fußnote einfügen
var new_fn = app.selection[0].insertionPoints.lastItem().footnotes.add( {contents:''} );
var _fn = app.selection[0].footnotes;
for( var i = _fn.length - 2; i >= 0; i-- )
_fn.texts.firstItem().move(LocationOptions.after, _fn[i + _step].insertionPoints.lastItem() );
}
// Fußnotentexte je eine Fußnote hochschieben
function move_fn_down()
{
var _step = -1;
var _fn = app.selection[0].footnotes;
for( var k = 1; k < _fn.length; k++ )
_fn[k].texts.firstItem().move(LocationOptions.after, _fn[k + _step].insertionPoints.lastItem() );
}
Ist vor Ausführung des Skripts kein Text ausgewählt, sondern lediglich der Cursor im Text platziert, dann wird die Auswahl von diesem Punkt bis zum Ende des Textabschnitts erweitert.
Beim [#0000cc]Hochschieben[/#0000cc] wird am Ende der Auswahl eine leere Fußnote eingefügt.
In diese neue Fußnote wird der Text der ursprünglich letzten Fußnote verschoben.
Und so fort bis zur ersten Fußnote in der Textauswahl.
Beim [#0000cc]Herunterschieben[/#0000cc] wird zu Beginn der Skriptausführung der Text der zweiten Fußnote in der Auswahl ans Ende des Texts der ersten Fußnote verschoben; dann der Text der dritten in die leer gewordene zweite usw.
Die letzte Fußnote bleibt am Ende leer stehen, damit deren Position auch nach Ausführung des Skripts noch erkennbar bleibt.