Задача замены стиля абзаца

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

-IKS-

Топикстартер
15 лет на форуме
Сообщения
208
Реакции
2
Нужно автоматизировать такой процесс. Текст подается размеченнным двумя стилями - Стиль1 и Стиль2. Таких вхождений сотни. Мне нужно чтобы между абзацами с двумя стилями разными стилями (например Стиль1 и Стиль2) рисовалась линия. Сейчас это делается с помощью Стиля3 = "Стиль1+линия снизу", который присваивается последнему абзац со Стилем 1. Но сам стиль приходится расставлять вручную.
Алгоритм таков: найти абазц, где после Стиля1 идет Стиль 2, и присвоить ему Стиль3.
Пример.
Было:
Абз.Стиль1
Абз.Стиль1
Абз.Стиль1
Абз.Стиль2
Абз.Стиль2
...

Нужно сделать так:
Абз.Стиль1
Абз.Стиль1
Абз.Стиль3
Абз.Стиль2
Абз.Стиль2
...

Вопрос: Можно ли это реализовать с помощью GREP? Или только скриптом?
 
Заменой сделать можно, но в несколько этапов.
 
Подскажите как, если можно. Я в FindChangeByList включу.
 
Попробую подсказать.
1. Выбираем 3 символа, которые не используются в тексте.
Например # $ &.
2. Заменой GREP вставляем в абзацы стиля 1 символ # первым и последним символом.
искать (.+)(\r) стиля 1
заменить #$1#$2
3. Заменой GREP вставляем в абзацы стиля 2 символ $ первым и последним символом.

4. В места изменения стиля вставляем абзац с символом &.
искать (#)\r($)
заменить $1\r&\r$2
и
искать ($)\r(#)
заменить $1\r&\r$2
5. Ищем символ & и присваиваем стиль 3.
6. Убираем все символы # $ &.
 
  • Спасибо
Реакции: -IKS-
упростим подсказку и кол-во проходов. :)
полагаем отсутствующий в вёрстке символ например @

1-й проход
найти:
(.+\r)+
стиль1

заменить:
$0@

2-й проход
найти:
@(.)
стиль2

заменить:
$1
стиль3


3-й проход (опциональный. если после стиля1 нет стиля 2)
найти и удалить лишние @
 
  • Спасибо
Реакции: -IKS-
Можно ли это реализовать с помощью GREP? Или только скриптом?
Это можно реализовать обычным Next Style.

Style1 = Абз.Стиль1
Style2 = Абз.Стиль1
Style3 = Абз.Стиль3
Style4 = Абз.Стиль2
Style5 = Абз.Стиль2

Если нужно оставить только 3 стиля, два можно удалить, подставив их аналоги.
 
Статус
Закрыто для дальнейших ответов.