[ID CS4-CS6] Вставка кавычек через Поиск/Замена

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

Deniks

Участник
Топикстартер
Сообщения
112
Реакции
0
Друзья, выручайте. Задача такая: на странице имеется несколько текстовых фреймов с одним или двумя словами (подписи к изображениям). Необходимо доставить кавычки к тексту. Как это можно реализовать через поиск/замену.
 
grep find: ^(\w+|\w+ \w+)\z
change: "$1"
 
Низкий поклон, большое вам спасибо, всё получилось. Правда появилась ещё одна трудность - текстовые фреймы не вмещают текст, нужен видно скрипт который перебирает каждый фрейм и увеличивает его ширину, чтобы текст влез. Текст во фрейме отцентрирован и не должен переходить на вторую строку. Может есть решение?
 
есть решение в самом Индизайне
Text frame options/auto size/width only
 
ну или если не озаботились стилями для подписей, можно и скриптом пройтись
не уверен, правда, что в cs5.5 был уже автосайз...

Код:
#target Indesign
try {
    var doc = app.activeDocument;
    var myItems = doc.allPageItems;
    for (var i = 0; i<myItems.length; i++) {
        if (myItems[i].hasOwnProperty("overflows") && (myItems[i].overflows== true)) {
            myItems[i].textFramePreferences.autoSizingType = AutoSizingTypeEnum.WIDTH_ONLY;
        };
    };
} catch(e) {};
 
Последнее редактирование:
В CS 5.5. нет функции автосайза по ширине. К сожалению скрипт не работает. Ещё интересно логическое объяснение конструкции: "^(\w+|\w+ \w+)\z", дело в том, что некоторые подписи через такой запрос не удаётся найти.

ну или если не озаботились стилями для подписей
Кстати, да, стиль абзаца имеется и применён к подписям. Это что-то может изменить?
 

Вложения

  • QIP_Shot_-_Screen_035.jpg
    QIP_Shot_-_Screen_035.jpg
    163.6 КБ · Просм.: 855
Последнее редактирование:
в скрипте первую строку уберите и запускайте через ExtendScript toolkit, выбрав индизайн в выпадающем списке наверху.
Или поставьте в первой строке скрипта вашу версию индизайна (#target "Indesign-11.064" для CC2015 64-битного; #target "Indesign-11.032" для CC2015 32-битного, например).

Происхождение греп конструкции очень простое.
\w+ - это одно слово, а \w+ \w+ - два слова. Где не находит - там, наверное, другое количество слов.
 
Это не помогает, подозреваю, что необходимого функционала в версии CS 5.5 нет.
 
а \w+ \w+ - два слова. Где не находит - там, наверное, другое количество слов.

Либо какой-нибудь хитрый пробел между словами, отличающийся от простого. Если написать так:
^(\w+|\w+\s\w+)\z
- то будут отрабатываться все пробелы.
 
Вот пример файла, в котором конструкция:^(\w+|\w+\s\w+)\z не находит текст - Пример.indd
 
@Deniks, у вас там везде после последнего слова стоит пробел.
потому и не находит.

space.jpg
 
@Deniks, ищите так

^(\w+|\w+\s\w+)\s?\z
 
Спасибо, получилось. А что делать с автосайзом, который не работает в CS5.5?
 
Ещё не находит текст типа"Домик у горной реки".
 
Да, виноват, не совсем точно сформулировал задачу, действительно встречается текст более чем с одним и двумя словами. Это конечно исключение, но всё же.
 
А возможно ли составить конструкцию, которая бы закавычивала весь текст независимо от количества слов, наличия предлогов, пробелов, точек в тексте? При условии, что каждый текст находится в отдельном фрейме.
 
Большое спасибо, получилось.
 
Статус
Закрыто для дальнейших ответов.