Добавление Notes к определенным словам в тексте

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

Dresden

Топикстартер
20 лет на форуме
Сообщения
3 162
Реакции
665
Есть у меня привычка помечать в тексте все ссылки на рисунки и таблицы при помощи заметок (Notes). Очень облегчает дальнейшую работу. Пытался сам автоматизировать такую расстановку Notes, но моих знаний в скриптинге совершенно недостаточно.

Техзадание: Notes должна ставиться после буквы "р" в словах "рис.", "рисунок" (со всеми склонениями), а также после буквы "т" в словах "табл." и "таблица" (со всеми склонениями).
Естественно, буду благодарен, если будет скрипт хотя бы для одного из этих слов с пояснением, как добавить остальные (т. е. сделаю это самостоятельно, чтобы не утруждать уважаемых коллег рутиной).

Если это стоит каких-то денег - велком в ЛС с коммерческими предложениями.

P.S. Пару лет назад обращался с аналогичной просьбой, но как-то не нашел отклика.
 
Ответ: Добавление Notes к определенным словам в тексте

А сами Notes пустые, или как?
 
Ответ: Добавление Notes к определенным словам в тексте

Без разницы. Они просто позволяют визуально контролировать ссылки на рисунки/таблицы в тексте.
 
Ответ: Добавление Notes к определенным словам в тексте

Код:
var myGrepFindWhat = [];
var foundItems;

myGrepFindWhat.push('(?i)табл.');
myGrepFindWhat.push('(?i)рис.');
myGrepFindWhat.push('(?i)схем.');
// myGrepFindWhat.push('(?i)что-то еще');
// myGrepFindWhat.push('(?i) и еще что-то еще и так далее');

 for (var i = 0; i < myGrepFindWhat.length; i++)
{
        resetGREPfindChange();
        app.findGrepPreferences.findWhat = myGrepFindWhat[i];
        foundItems = app.findGrep();
        if(foundItems.length != 0) 
        {
            for(var j= foundItems.length-1; j>=0; j-- )
            {
                 foundItems[j].insertionPoints.item(1).notes.add();
            }
            
        }
}

function resetGREPfindChange()
{
    app.changeGrepPreferences = NothingEnum.nothing;
    app.findGrepPreferences = NothingEnum.nothing;
    app.findChangeGrepOptions.includeFootnotes = true;
    app.findChangeGrepOptions.includeHiddenLayers = false;
    app.findChangeGrepOptions.includeLockedLayersForFind = false;
    app.findChangeGrepOptions.includeLockedStoriesForFind = false;
    app.findChangeGrepOptions.includeMasterPages = false;
}
Подредактируйте Grep-ы по своему вкусу, если что не так.
 
Ответ: Добавление Notes к определенным словам в тексте

Подумалось, что правильнее будет вверх добавить
Код:
var myDoc = app.activeDocument;
и вместо
Код:
= app.findGrep
поставить
Код:
= myDoc.findGrep();
- это чтобы не пошло шерстить по всем открытым документам.
И выражения для поиска пожалуй в таком виде:
Код:
myGrepFindWhat.push('(?i)\\<табл');
- но на ваше усмотрение.
 
Ответ: Добавление Notes к определенным словам в тексте

Спасибо огромное, работает (с учетом предложенных усовершенствований)!
Есть только одно скромное пожелание: как убрать "перескакивание" по страницам во время работы скрипта?
 
Ответ: Добавление Notes к определенным словам в тексте

У меня в ID CS5.5 перескакиваний нет. Попробуйте снять галочку с пункта Enable Redraw в меню панели Scripts (опять же у меня она не снята). Больше идей по подавлению перескакивания пока нет. Может, кто более компетентный предложит здесь решение. И еще раз касательно выражений по Grep-поиску. Обнаружилось, что в слово риск и его склонения ставится Notes, что неправильно. Но как вы поняли, в Grep-ах я не очень силен, подправьте сами.
 
Ответ: Добавление Notes к определенным словам в тексте

Спасибо, попробую. "Риск" попадает, это я тоже заметил (допускаю, что и "рислинг" тоже:)). Буду допиливать (хотя тоже отнють не эксперт по Grep).
 
Ответ: Добавление Notes к определенным словам в тексте

Можно попробовать разделить на два:
myGrepFindWhat.push(''(?i)\\<рис\\.') - для сокращенного варианта "рис."
myGrepFindWhat.push('(?i)\\<рисун') - для "рисунок" и его склонений
или объединить это в одном Grep-е
 
Статус
Закрыто для дальнейших ответов.