Oleg Butrin
20 лет на форуме
- Сообщения
- 1 993
- Реакции
- 1 224
А почему-то работает и так:app.findGrepPreferences.findWhat = '(?<=\\r)' + txt[w] + '(?=\\r)';
app.findGrepPreferences.findWhat = "\\r"+txt[w]+"\\r";
app.changeGrepPreferences = txt[w]+"\\r"+"\\r"+"\\r"+"\\r"+"\\r";
Нет.А почему-то работает и так:
app.findGrepPreferences.findWhat = "\\r"+txt[w]+"\\r";
Это одно и то же?
А в чем отличие, объясните пожалуйста? И правильнее сделать так как вы написали же? И как бы переводы строк добавить?
^Первый$
будет в этом случае оптимальной.Отдельным запускомИ как бы переводы строк добавить?
story.changeGrep()
до замены текста на файл. С правильными настройками поиска/замены.«Отступ до/после» в параметрах абзацного стиля сделайте.И как бы переводы строк добавить?
Вот так бы хорошо сделать, но это ж еще глубже вникнуть надо. Я так понимаю достаточно просто картинкам присвоить стиль, и описать его«Отступ до/после» в параметрах абзацного стиля сделайте.
Не могли бы вы объяснить поподробнее как именно это сделать? GREP знаю, но только как это работает через диалоговое окно.Так, как написал я, означает: найти текст, перед которым стоит конец абзаца и после него тоже конец абзаца (не включая оба символа). Ваш вариант заменит не только текст, но и знаки абзацев.
@_MBK_, кстати, вполне резонно намекал, что строка^Первый$
будет в этом случае оптимальной.
Отдельным запускомstory.changeGrep()
до замены текста на файл. С правильными настройками поиска/замены.
Вы GREP в ID знаете?
app.findGrepPreferences.findWhat = '(?<=\\r)' + txt[w] + '(?=\\r)';
app.changeGrepPreferences.changeTo = "\\r"+"\\r"+txt[w]+;
story.changeGrep();
А плюс то куда в воздухе повис?Не могли бы вы объяснить поподробнее как именно это сделать? GREP знаю, но только как это работает через диалоговое окно.
UPD: вроде доперло как ) Вроде работает:
Код:app.findGrepPreferences.findWhat = '(?<=\\r)' + txt[w] + '(?=\\r)'; app.changeGrepPreferences.changeTo = "\\r"+"\\r"+txt[w]+; story.changeGrep();
Ну плюс затесался ))) Убрал уже )А плюс то куда в воздухе повис?
или как ей задать стиль
texts[w].paragraphs[0].spaceBefore = UnitValue('16pt');
/*
Скрипт может помочь везде, где нужно заменить ключевые слова на содержимое буфера обмена.
1. Создайте фрейм со списком автозамен (используйте GREP!):
а. В виде таблицы: | Выражение GREP | Объект, вставленный в текст |
б. В виде списка с разделителем-табом: Выражение GREP[tab]Объект, вставленный в текст
2. Выделите фрейм со списком автозамен, затем, зажав shift, выделите фрейм, в котором вы хотите произвести замены, и запустите скрипт.
Если будет выбран только один фрейм, скрипт сработает для всего документа.
By Alexey Stukun, st_verstka@mail.ru.
*/
if (app.documents.length == 0) {
myExit("Нет открытого документа для работы.");
}
if (!app.activeDocument.saved) {
myExit("Сохраните документ где-нибудь и попробуйте ещё раз.");
}
if (app.selection.length == 0) {
myExit("READ ME\nВыделите фрейм со списком автозамен, затем, зажав shift, выделите фрейм, в котором вы хотите произвести замены, и запустите скрипт. Если будет выбран только один фрейм, скрипт сработает для всего документа.");
}
var myDoc = app.activeDocument;
var dataFrame = app.selection[0];
var dataStory = dataFrame.parentStory;
if (app.selection.length > 1) {
var workArea = app.selection[1].parentStory;
} else {
var workArea = myDoc;
}
// Превращаем ваш список в таблицу:
if (dataFrame.tables.length == 0) {
dataStory.texts[0].convertToTable();
}
var dataTable = dataFrame.tables[0];
// Перебираем строки таблицы:
for (i = 0, iLen = dataTable.rows.length; i < iLen; i++) {
var myRow = dataTable.rows[i];
var myFindWhat = myRow.cells[0].contents;
try {
myRow.cells[1].characters.everyItem().select();
app.copy();
} catch(error) {
continue;
}
// Настройки поиска:
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = myFindWhat;
try {
var myFounds = workArea.findGrep();
} catch (error) {
continue;
}
app.findGrepPreferences = app.changeGrepPreferences = null;
if (myFounds.length == 0) {
continue;
}
for (t = 0, tLen = myFounds.length; t < tLen; t++) {
if (myFounds[t].parent.parent.parent == dataFrame) {
alert("ww");
continue;
}
if (myFounds[t].parent.parent == dataFrame) {
alert("wwwwww");
continue;
}
myFounds[t].select();
app.paste();
}
}
function myExit(message) {
alert(message);
exit();
}
if (myFounds[t].parent.parent.parent == dataFrame) { alert("ww"); continue; } if (myFounds[t].parent.parent == dataFrame) { alert("wwwwww"); continue; }
Первый пост комом (
/*
Скрипт может помочь везде, где нужно заменить ключевые слова на содержимое буфера обмена.
1. Создайте фрейм со списком автозамен (используйте GREP!):
а. В виде таблицы: | Выражение GREP | Объект, вставленный в текст |
б. В виде списка с разделителем-табом: Выражение GREP[tab]Объект, вставленный в текст
2. Выделите фрейм со списком автозамен, затем, зажав shift, выделите фрейм, в котором вы хотите произвести замены, и запустите скрипт.
Если будет выбран только один фрейм, скрипт сработает для всего документа.
by Alexey Stukun st_verstka@mail.ru
*/
if (app.documents.length == 0) {
myExit("Нет открытого документа для работы.");
}
if (!app.activeDocument.saved) {
myExit("Сохраните документ где-нибудь и попробуйте ещё раз.");
}
if (app.selection.length == 0) {
myExit("READ ME\nВыделите фрейм со списком автозамен, затем, зажав shift, выделите фрейм, в котором вы хотите произвести замены, и запустите скрипт. Если будет выбран только один фрейм, скрипт сработает для всего документа.");
}
var myDoc = app.activeDocument;
var dataFrame = app.selection[0];
var dataStory = dataFrame.parentStory;
if (app.selection.length > 1) {
var workArea = app.selection[1].parentStory;
} else {
var workArea = myDoc;
}
// Превращаем ваш список в таблицу:
if (dataFrame.tables.length == 0) {
dataStory.texts[0].convertToTable();
}
var dataTable = dataFrame.tables[0];
// Перебираем строки таблицы:
for (i = 0, iLen = dataTable.rows.length; i < iLen; i++) {
var myRow = dataTable.rows[i];
var myFindWhat = myRow.cells[0].contents;
try {
myRow.cells[1].characters.everyItem().select();
app.copy();
} catch(error) {
continue;
}
// Настройки поиска:
app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = myFindWhat;
try {
var myFounds = workArea.findGrep();
} catch (error) {
continue;
}
app.findGrepPreferences = app.changeGrepPreferences = null;
if (myFounds.length == 0) {
continue;
}
for (t = 0, tLen = myFounds.length; t < tLen; t++) {
if (myFounds[t].parent.parent.parent == dataFrame) {
continue;
}
myFounds[t].select();
app.paste();
}
}
function myExit(message) {
alert(message);
exit();
}