1) заменой присваиваете абзацам с меченными словами стиль с другим названием
2) собираете содержание по этим абзацам
3) заменой удаляете лишний текст
Шаг 1 нормально работает, если все выделения встречаются в абзацах одного стиля, который можно безболезненно заменить на такой же, но с другим названием; если же выделения встречаются в абзацах разного стиля, то макет может поехать.
Для ситуации с символьными выделениями в абзацах одного стиля метод
@imma работает хорошо.
После выполнения Шагов 1 и 2 (или на Шаге 2 при генерации содержания) можно применить к тексту содержания новый абзацный стиль, чтобы на следующем этапе не произошло замены в обычном тексте.
Далее можно выполнить
Шаг 3, например, в два следующих этапа в окне
"Найти/Заменить - GREP":
Шаг 3-1:
Найти текст: (.+) (стиль символа - тот, который используется для наших выделений; стиль абзаца - тот, что мы применили к тексту содержания после (или на) Шага(е) 2)
Заменить на: ~j$1~j
(Полезно сохранить запрос
Шага 3-1 на будущее.)
Шаг 3-2 (для случая, когда в содержании между входом и номером страницы стоит табулятор)
:
Найти текст: (^.*)(~j)(.+)(~j)(.*)(?=\t) (формат поиска пустой или оставить только стиль абзаца для содержания)
Заменить на: $3
(Полезно сохранить запрос
Шага 3-2 на будущее.)
Если же символьные выделения встречаются в абзацах разных стилей, то, чтобы макет не поехал, надо последовательно обработать все такие варианты, а потом объединить, - но это будет сложнее.