Перекрёстные ссылки

  • Автор темы Автор темы Prokh
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Prokh

Топикстартер
12 лет на форуме
Сообщения
17
Реакции
33
Прошу поправить код

Исходные данные:
Текст с нумерованным списком (стиль: "Numerak") и указатель с номерами (зелёного цвета)

Задача:
Заменить номера в указателе на перекрёстные ссылки из спика в тексте

Код:
var myDoc = app.activeDocument;
app.findGrepPreferences = NothingEnum.nothing;
app.changeGrepPreferences = NothingEnum.nothing;
app.findGrepPreferences.findWhat = "\\<6\\d\\>"; // это тест, нужен "\\<\\d{4}\\>"
app.findGrepPreferences.fillColor = "Green";
var myResults = myDoc.findGrep();
for (var i = myResults.length - 1; i >= 0; i--)
{
  app.select(myResults[i].insertionPoints[0]);
  j=Number(myResults[i].contents);
var dest = myDoc.paragraphDestinations.itemByName("Numerak",j).toSource();
var xrefFmt = myDoc.crossReferenceFormats.item("Paragraph Number");
var xref = myDoc.hyperlinks.add(sourze,dest);
}
app.findGrepPreferences = null;
app.changeGrepPreferences = null;
В результате:
В панели Cross-Reference появляются ссылки с красными флажками, т.е. неактивные

Варианты решения:

— в строке:
var dest = myDoc.paragraphDestinations.itemByName("Numerak",j).toSource();
правильно задать имя (или номер) стиля нумерованного абзаца, так чтобы оно было вместе с номером

или

— после строки:
var xref = myDoc.hyperlinks.add(sourze,dest);
вызвать созданную ссылку и отредактировать

Прошу подсказать, как это сделать

Заранее благодарен за любую оказанную помощь
 
Во-первых, надо проверить результат выполнения этого фрагмента:
Код:
app.select(myResults[i].insertionPoints[0]);
  j=Number(myResults[i].contents);
путём добавления после него:
Код:
alert(j);
exit();
Когда убедитесь, что переменная j содержит нужные данные, эти строки можно удалить.
Во-вторых:
— в строке:
var dest = myDoc.paragraphDestinations.itemByName("Numerak",j).toSource();
правильно задать имя (или номер) стиля нумерованного абзаца, так чтобы оно было вместе с номером
Код:
itemByName("Numerak"+j)
В-третьих,
var xref = myDoc.hyperlinks.add(sourze,dest);
Что такое sourze у Вас — не нашёл.
Дальше "будем посмотреть".
 
1 = данная строка находит нужный номер
2 = попробовал эту замену —> результат тотже
3 = действительно пропустил строку в коде на форуме
Код:
var sourze = myDoc.crossReferenceSources.add(app.selection[0],xrefFmt);
но в скрипте она есть
 
Статус
Закрыто для дальнейших ответов.