Создание сноски из выделенного текста

Я пытаюсь написать сценарий InDesign с помощью ExtendScript. Я хочу, чтобы скрипт вырезал выделенный текст, вставлял сноску и вставлял текст в тело сноски. Что я пробовал:

 function makeFootnoteOfSelection(){
   var fnText = app.activeDocument.selection[0];
         // this should actually clone the selected text, not reference it, because the next statement zaps it from memory
   app.activeDocument.selection[0].remove();  // works
   var fNote = app.activeDocument.selection[0].footnotes.add();  // works, adds an empty footnote with a reference
   fNote.contents = fnText.contents;
         // this replaces the reference number, I was hoping to retain it and just add the text
         // fNote.contents += fnText.contents; also replaces the reference number
}

person Jannie Theunissen    schedule 08.02.2011    source источник


Ответы (1)


InDesign CS5:

function makeFootnoteOfSelection(){

  // Reference the selection
  var fnText = app.activeDocument.selection[0];

  // Add an empty footnote where the selected text is
  var fNote = app.activeDocument.selection[0].footnotes.add();

  // Move the selected text at the end of the empty footnote
  fnText.move(LocationOptions.AFTER, fNote.insertionPoints[-1]);
}

InDesign CS4:

function makeFootnoteOfSelection(){

  // Reference the selection
  var fnText = app.activeDocument.selection[0];

  //  Position of the text end
  var endPoint = fnText.length - 1;

  // Add an empty footnote where the selected text is
  var fNote = app.activeDocument.selection[0].footnotes.add();

  // Duplicate the selected text at the end of the empty footnote
  fnText.duplicate(LocationOptions.AFTER, fNote.insertionPoints[-1]);

  // Delete the old Text
  fnText.characters.itemByRange(0, endPoint).contents = "";
}
person Jonas    schedule 10.02.2011
comment
Ошибки сценария с текстом не могут быть перемещены в текущее местоположение на третьем шаге. Я думаю, это потому, что сноска включена в выборку после шага 2. - person Jannie Theunissen; 11.02.2011
comment
Вы используете InDesign CS4? Это дало мне ту же ошибку. Но я нашел другое решение, которое сработало для меня. Ваше предположение может быть правильным. Насколько я понимаю, сноски привязаны к определенной точке вставки. Следовательно, если эта точка находится в пределах выделения, то и сноска тоже. Но, кажется, они изменили поведение в CS5, чтобы оно было более похоже на то, что вы ожидаете. - person Jonas; 11.02.2011
comment
Превосходно! Ты гений. Как ты всему этому научился? Из средства просмотра объектной модели? Изучая примеры сценариев? Большое спасибо. - person Jannie Theunissen; 14.02.2011
comment
Большое спасибо *краснеет*. На jongware.com/idjshelp.html есть более удобная версия средства просмотра объектной модели, которая пользуюсь широко. Иногда просто методом проб и ошибок выясняется, как вещи (например, сноски) обрабатываются InDesign. Я почти никогда не использую образцы кода Adobe, потому что мне не нравится их стиль программирования. - person Jonas; 14.02.2011
comment
Отличная ссылка. Мне очень нравится эталон jongware. - person Jannie Theunissen; 21.02.2011