Замены GREP при переносе их в FindChangeByList

Статус
Закрыто для дальнейших ответов.

victort

10 лет на форуме
Сообщения
55
Реакции
0
Ответ: GREP в InDesign. Что и как

victort, штатными средствами — запуск только по одному, по очереди. Скриптом можно, сходите туда еще раз, Вам там уже ответили :).

Ну во первых там на мой вопрос не ответили а предложили книги для изучения, что я попросил для самостоятельного изучения. Осталось только их найти и разобратся что почем.
А во вторых раз вы видели все мои сообщения то я думаю заметили что мне предложили написать в обоих темах для получения ответа на мой вопрос.

Просто я подумал может у Индизайна есть чтото наподобе ActionScript как в Photoshope т.е. запустил его сделал все что надо сохранил под именем. Потом просто запускаешь и все.
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: GREP в InDesign. Что и как

чтото наподобе ActionScript как в Photoshope
В индизайне такого нет. Зато в стандартной поставке есть скрипт FindChangeByList.jsx. А если с ним разбираться пока не получается, можно набросать на скорую руку что-то такого плана:
Код:
var mySel = app.activeDocument.selection[0]; //Работаем с выделенной областью

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findChangeGrepOptions.includeLockedLayersForFind = true;
app.findChangeGrepOptions.includeLockedStoriesForFind = true;
app.findChangeGrepOptions.includeHiddenLayers = true;
app.findChangeGrepOptions.includeMasterPages = false;
app.findChangeGrepOptions.includeFootnotes = true;

var myF = [];
var myC = [];

//Наполняем два массива: первый - поиск, второй - замена
myF[0] = " —";
myC[0] = "~S—";

myF[1] = "(\\s[А-ЯЇЄІ]\.)\\s";
myC[1] = "$1~S";

myF[2] = "(\\s[А-ЯЇЄІа-яїєі])\\s";
myC[2] = "$1~S";

myF[3] = "(\\d)\\s";
myC[3] = "$1~S";

myF[4] = "\\n";
myC[4] = "\r";

//И т.д. myF[5] = ...; myC[5] = ...;

for (i=0; i<myF.length; i++){
	app.findGrepPreferences.findWhat = myF[i];
	app.changeGrepPreferences.changeTo = myC[i];
	mySel.changeGrep();
	}

app.findGrepPreferences = app.changeGrepPreferences = null;

//Образец работы с форматированием:
app.findGrepPreferences.fontStyle = "Bold";
app.changeGrepPreferences.appliedCharacterStyle = "bold";
mySel.changeGrep();
app.findGrepPreferences.fontStyle = "Italic";
app.changeGrepPreferences.appliedCharacterStyle = "italic";
mySel.changeGrep();
app.findGrepPreferences.fontStyle = "Bold Italic";
app.changeGrepPreferences.appliedCharacterStyle = "bolditalic";
mySel.changeGrep();
 

victort

10 лет на форуме
Сообщения
55
Реакции
0
Ответ: GREP в InDesign. Что и как

Eugenyus, за это большое спасибо! Сейчас буду разбиратся, хотя принцип работы скрипта уже понял.
Не подскажешь а можно еще к найденному тексту цвет присвоить. Просто у меня знакомые делают эту же работу они еще цветом выделяют.
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: GREP в InDesign. Что и как

Цвет я бы прописал в символьные стили, тогда можно добавить еще один массив:
Код:
var myCStyle = new Array();
myCStyle[0] = "Красный";
myCStyle[1] = "Синий";
myCStyle[2] = "Жирный";
myCStyle[3] = "Курсив";
myCStyle[4] = "";  //не назначаем симв.стиль в замене с индексом 4
а в цикл тогда добавить парамер замены:
Код:
for (i=0; i<myF.length; i++){
	app.findGrepPreferences.findWhat = myF[i];
	app.changeGrepPreferences.changeTo = myC[i];
[B]	app.changeGrepPreferences.appliedCharacterStyle = myCStyle[i];[/B]
	mySel.changeGrep();
	}
 

NNN5

Модератор
15 лет на форуме
Сообщения
1 256
Реакции
1 012
Ответ: GREP в InDesign. Что и как

Могу всем помочь разобраться со скриптом FindChangeByList.jsx. Очень полезная штука. Но, действительно, не слишком простая.
 

UnMiguel

Участник
Сообщения
90
Реакции
39
Ответ: GREP в InDesign. Что и как

Думаю, что это было бы весьма кстати.
 

biblioman

Участник
Сообщения
2
Реакции
0
Ответ: GREP в InDesign. Что и как

Могу всем помочь разобраться со скриптом FindChangeByList.jsx. Очень полезная штука. Но, действительно, не слишком простая.

NNN5, спасибо и за предложение, и, заранее, за ответ. у меня вопрос о том, почему findChangeByList не работает даже с заведомо корректными GREP-выражениями (с режимом Text проблем пока не было). сообщений об ошибках скрипт не генерирует, и что идет не так, приходится гадать. я предполагал вот что (проводил различные тесты, но после нескольких дней мозгового штурма разобраться не удалось):

—неправильную кодировку своего файла со списком замен (исходный образец, как показывает мой notepad++, записан в ANSI, а необходим ли UTF-8?)
—некие ошибки в скрипте FindChangeByList.jsx для INDD 5, которые, возможно, были устранены в CS4 или CS5 (известно ли об этом?)

в ходе поисков отмечал, что после исполнения скрипта поиск через штатное окно FindChange отказывался работать (точнее, ничего не находил, хотя сочетания, удовлетворяющие условию, в тексте были). перезагрузки INDD проблему снимала (тот же GREP находил всё, что положено).

может, поделитесь опытом и обобщите здесь основные узкие места, которые заставляют скрипт запускаться, но работать некорректно. думаю, это сэкономит много седых волос у всех, кто хотел бы свою работу с GREP'ами отчасти автоматизировать. даже если выяснится, что моя версия CS3 безнадежно устарела, ответ, в любом случае, очень нужен и важен.
 

Begus

12 лет на форуме
Сообщения
16
Реакции
0
Ответ: GREP в InDesign. Что и как

А как найти через FindChangeByList точку?
Чтобы находил 1.1, но не трогал 1-1, \\d\.\\d тут вроде не подходит.
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: GREP в InDesign. Что и как

Если в выражении GREP используется слеш "\", то в скрипте он заменяется на два слеша: "\\":
\\d\\.\\d

Не по теме:
Может в шапку уже занести пора?
 

Begus

12 лет на форуме
Сообщения
16
Реакции
0
Ответ: GREP в InDesign. Что и как

В том-то и дело, что когда ставлю двойной слеш перед точкой, вообще перестает работать.
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: GREP в InDesign. Что и как

Интересно, у меня после запуска этого скрипта (сам им не пользуюсь) даже вручную точки перестает искать. Помогает только перезапуск индизайна. До первого запуска FindChangeByList.
 

A**Z

Участник
Сообщения
527
Реакции
627
Ответ: GREP в InDesign. Что и как

Gore
Через квадратные скобки попробуйте:
[.]

В некоторых версиях ИД через \ много чего не ищется
 

A**Z

Участник
Сообщения
527
Реакции
627
Ответ: GREP в InDesign. Что и как

Интересно, у меня после запуска этого скрипта (сам им не пользуюсь) даже вручную точки перестает искать. Помогает только перезапуск индизайна. До первого запуска FindChangeByList.
До какого-то апдейта ID CS4 (кажется) почти любая неправильная запись в файле подстановок этого скрипта приводила к тому, что поиск (GREP) вообще переставал работать. Но необязательно перезапускать ИД, достаточно запустить один из Запросов, предустановленных в GREP.
 

Begus

12 лет на форуме
Сообщения
16
Реакции
0
Ответ: GREP в InDesign. Что и как

A**Z
Квадратные пробовал, не помогают
 

biblioman

Участник
Сообщения
2
Реакции
0
Ответ: GREP в InDesign. Что и как

До какого-то апдейта ID CS4 (кажется) почти любая неправильная запись в файле подстановок этого скрипта приводила к тому, что поиск (GREP) вообще переставал работать. Но необязательно перезапускать ИД, достаточно запустить один из Запросов, предустановленных в GREP.

Ужасно интересно: можно ли узнать, до какого точно апдейта? CS3 весь с этим глюком однозначно? А CS4 — всё OK с момента релиза или с какого-то апдейта? И, главное, с чем связана проблема — с ошибкой в программном ядре или в самом скрипте findChangeByList? Думаю, эти вопросы имеют к теме GREP самое непосредственное отношение, поскольку речь о базовом инструментарии, где GREP'ы применяются в промышленных масштабах. Кстати, а у Адоба по этому поводу можно что-нибудь (официальное) найти?
 

Begus

12 лет на форуме
Сообщения
16
Реакции
0
Ответ: GREP в InDesign. Что и как

Помогла установка CS5. В нем точку находит через двойной слеш.
 

Lytvynenkosi

Участник
Сообщения
2
Реакции
0
Ответ: GREP в InDesign. Что и как

Может кто-нибудь подсказать где найти описание стандартного скрипта findchangebylist? Конкретней - интересут следующие вопросы: что он делает (какие именно замены) в базовом виде если нет текстового файла с описанием? И второй - как прописывать для него собственные замены Grep в текстовом файле? Куда его разместить чтобы скрипт его видел?
 

[desp]

15 лет на форуме
Сообщения
33
Реакции
0
Ответ: GREP в InDesign. Что и как

Может кто-нибудь подсказать где найти описание стандартного скрипта findchangebylist? Конкретней - интересут следующие вопросы: что он делает (какие именно замены) в базовом виде если нет текстового файла с описанием? И второй - как прописывать для него собственные замены Grep в текстовом файле? Куда его разместить чтобы скрипт его видел?
В исходном состоянии убирает двойные пробелы, табуляторы, еще что-то.
Изменения пишутся в файл FindChangeList.txt примерно в таком виде:
Код:
grep	{findWhat:"обед за 30 минут"}	{changeTo:"обед\nза 30 минут"}
Я, конечно, нечень разбираюсь, но работает, по крайней мере.
 
Статус
Закрыто для дальнейших ответов.