Удалить абзацы с определенным стилем

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

AlesVG

Участник
Топикстартер
Сообщения
3
Реакции
0
Есть абзац со стилем "СтильА". Если за ним следует абзац со стилем "СтильБ" - нужно удалить абзац "СтильА" и 1 абзац перед ним.

Т.е. из

АбзаМ
АбзацX
АбзацА
АбзацБ

остается

АбзаМ
АбзацБ

И так до "исчерпания".

Насколько я понимаю поиском и заменой это не реализуемо?
 
Ответ: Удалить абзацы с определенным стилем

Поиском и заменой у меня за 5 ходов получилось:
1. FW .+
CT @\r$0
FF StyleB
2. FW $\r@
CT @
FF
3. FW .+@
CT @
FF StyleA
4. FW .+\r@
CT @
FF
5. FW \r?@
CT
FF

@-вспомогательный символ, можно любой. В скриптописании не силен, но, думаю, затолкать все это в скрипт вполне возможно или через findchangebylist реализовать.
 
Ответ: Удалить абзацы с определенным стилем

Проверять на копии документа.
Код:
var doc = app.activeDocument;
var p = doc.selection[0].parentStory.paragraphs;
var pl = p.length;
var psN = doc.paragraphStyles.everyItem().name;
var psI = doc.paragraphStyles.everyItem().id;
var psg = doc.paragraphStyleGroups;
for (i=0;i<psg.length;i++){
var ps = psg[i].paragraphStyles;
for (j=0;j<ps.length;j++){
psN.push(ps[j].name+" ("+psg[i].name+")");
psI.push(ps[j].id);}}
var w = new Window ("dialog");
w.alignChildren = "left";
w.add("statictext",undefined,"Выбрать абзац со стилем:");
var nps = w.add("dropdownlist",undefined,psN);
nps.maximumSize.width = 150;
w.add("statictext",undefined,"Если за ним абзац со стилем:");
var nextps = w.add("dropdownlist",undefined,psN);
nextps.maximumSize.width = 150;
var bg = w.add("group");
bg.add("button",undefined,"OK");
bg.add("button",undefined,"Cancel");
if (w.show()!=1){exit();}
var nid = doc.paragraphStyles.itemByID(psI[nps.selection.index]);
var nextid = doc.paragraphStyles.itemByID(psI[nextps.selection.index]);
for (i=pl-2;i>0;i--){
if ((p[i].appliedParagraphStyle == nid)&&(p[i+1].appliedParagraphStyle == nextid)){
p[i].remove();
p[i-1].remove();
i--;}}
alert("Готово");
 
Ответ: Удалить абзацы с определенным стилем

Всем откликнувшимся - спасибо.

Поиском и заменой у меня за 5 ходов получилось:

Это ведь GREP? Что-то пока не могу въехать в логику. Попытаюсь разобраться.

Проверять на копии документа.

В скрипте фигурирует только один стиль - запрашиваемый в диалоге. А должно быть два.

Во вложении на рис.1 - как есть, рис.2 - что должно получиться.
 

Вложения

  • 1.jpg
    1.jpg
    175.8 КБ · Просм.: 1 019
  • 2.jpg
    2.jpg
    203 КБ · Просм.: 865
Ответ: Удалить абзацы с определенным стилем

Во вложении на рис.1 - как есть, рис.2 - что должно получиться.
Букв много, а ничего непонятно.
Но вчитался ещё раз в ТЗ и поправил. Забирайте из 3-го сообщения и проверяйте (на копии).
 
Статус
Закрыто для дальнейших ответов.