[ID CC-CC2021] Расставить индексы

Irina_Lie

Участник
Топикстартер
Сообщения
63
Реакции
1
Извините, если было уже. Есть техническая брошюра с массой кодов. Все кодам нужно добавить индексы. Соответственно, вручную как-то это долго. Я могу с помощью регулярного выражения задать поиск по ключевым буквам кода, но вот вопрос, как найденному коду присваивать автоматически индекс?

Заранее спасибо!
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
Хоть бы пример, что ли.
 

Irina_Lie

Участник
Топикстартер
Сообщения
63
Реакции
1

Вложения

  • 2018-01-17_10-31-09.png
    2018-01-17_10-31-09.png
    565.3 КБ · Просм.: 847

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
Я догадался. Каждый найденный код надо внести в индекс.
 
  • Спасибо
Реакции: _MBK_

Irina_Lie

Участник
Топикстартер
Сообщения
63
Реакции
1
Вам что, к каждому найденному коду надо порядковый номер (непонятно как формируемый) еще добавить или?
Нужно создать индексный указатель по всем кодам в брошюре, с сортировкой по первой букве-цифре примерно как на скриншоте.
 

Вложения

  • 2018-01-17_10-51-20.png
    2018-01-17_10-51-20.png
    50.5 КБ · Просм.: 492

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
Это скриптом, замена никак заменить не может.
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
Пока нет. И примерно час не будет. Потом, возможно, появится.
 
  • Спасибо
Реакции: NNN5

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
upload_2018-1-17_16-56-37.png


Код:
#target indesign

function clearGrepPreferences() {
    app.findGrepPreferences = NothingEnum.NOTHING;
    app.changeGrepPreferences = NothingEnum.NOTHING;
}

function getTopic (index, name) {

    for (var i = 0; i < index.topics.length; i++) {
        if (index.topics[i].name == name) {
            return index.topics[i];
        }
    }

    var topic = index.topics.add(name);
    return topic;

}

function main () {
    
    if (app.documents.length == 0) {
        return false;
    }

    var doc = app.activeDocument;

    clearGrepPreferences();

    app.findGrepPreferences.findWhat = '^(\\dS)\\w+';
    var texts = doc.findGrep(true);
    
    clearGrepPreferences();

    if (doc.indexes.length == 0) {
        doc.indexes.add();
    }
    var index = doc.indexes[0];

    for (var i = 0; i < texts.length; i++) {
        var text = texts[i];
        var name = text.contents.toString();
        var topic = getTopic(index, name);
        topic.pageReferences.add(text);
    }

}

main();
 
  • Спасибо
Реакции: LeonidB и Irina_Lie

Irina_Lie

Участник
Топикстартер
Сообщения
63
Реакции
1
@Oleg Butrin, ух красота какая! Спасибо нереально огромное!'beer1''dans))''alil'

А js синтаксис выражений отличается? В Вашем примере там дополнительно по одному слешу стоит.
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
Синтаксис идентичен. Слеши экранируются так.
 
  • Спасибо
Реакции: Irina_Lie