Добрый день!
Мне трудно объяснить это "на пальцах" не имея реального файла и исходя из вашего очень краткого описания.
Здесь я выложил два тестовых файла "
до" и
"после" и сампл-скрипт. Запустите скрипт на
Test-Before.indd и увидите как это работает. Это не готовый к использованию скрипт: здесь нет проверки условий необходимых для корректной работы (открыт ли файл, есть ли нужный формат перекрестной ссылки и т.д и т.п.). Моя цель продемонстрировать общий подход к решению данной задачи.
Предположим: в начале мы имеем такой вот документик.
Перед разделами уже стоят анкера. А текст, который должен стать перекрестной ссылкой, помечен символьным стилем "
Number". (голубым цветом)
В документе уже определен формат перекрестной ссылки — "
смотрите раздел"
Сначала скрипт находит этот стиль используя GREP-выражение:
цифра(ы) + точка + цифра(ы) + точка + цифра(ы)
Его, разумеется можно, подправить под ваши конкретные нужды.
Затем, для каждого найденного номера проверяется существует ли анкер с таким же именем. Если да, то создается перекрестная ссылка.
Вот тот же документик после скрипта:
JavaScript:
main();
function main() {
try {
var foundItem, foundItems, sourceText, sourceName, source, dest, hyperLink,
doc = app.activeDocument,
xRefFormat = doc.crossReferenceFormats.item("смотрите раздел");
app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.NOTHING;
app.findGrepPreferences.findWhat = "\\d+\.\\d+\.\\d+";
app.findGrepPreferences.appliedCharacterStyle = doc.characterStyles.itemByName("Number");
foundItems = doc.findGrep();
for (var i = 0; i < foundItems.length; i++) {
sourceText = foundItems[i];
sourceName = sourceText.contents;
source = doc.crossReferenceSources.add(sourceText, xRefFormat);
dest = doc.hyperlinkTextDestinations.itemByName(sourceName);
if (dest.isValid) {
hyperLink = doc.hyperlinks.add(source, dest);
}
}
}
catch(err) {
$.writeln(err.message + ", line: " + err.line);
}
}
Как видите ничего сложного здесь нет.