[ID CS4-CS6] Как "выбирать" только Story основного набора?

  • Автор темы Автор темы NikAR
  • Дата начала Дата начала

NikAR

Участник
Топикстартер
Сообщения
66
Реакции
3
Доброго здоровья всем!
Имеется несколько документов (достаточно объемных), и в каждом основной набор в тдельных цепочках фреймов (Story) по главам. В каждой главе есть фото с подписью, объединённое в группу, и таких групп достоточно много.
Вот таким образом я получаю ВСЕ Story:
Код:
#target "InDesign-8.0"
#targetengine main
// ======================
var myDoc = app.activeDocument;
app.doScript(main, undefined, undefined, UndoModes.ENTIRE_SCRIPT);
 
function main(){
    info_about_mydoc(myDoc); }
// ======================
 
 function info_about_mydoc(doc) {
     var _stories = doc.stories; // массив историй в документе
    $.writeln("В этом документе " + _stories.length+ " Story");
    
    for (var i=0;i<_stories.length;i++)  {
        var _lines = _stories[i].lines;   // массив строк в истори
        if (_lines.count() >0)
            $.writeln("В Story № " + i + "содержится " + _lines.count() + " строк");
        if (_lines.count() >1)
            $.writeln("\tПервая строка:  " + _lines.item(0).contents + "\n");     
    }
} // function info_about doc
и мне выдаётся большой список Story, куда входят названия глав из страниц по шаблону, подписи к фото и Story с основным набором, и всё это далеко не по-порядку. А мне надо обработать только основной набор, но как "выбирать" только Story основного набора?
В скриптинге я не силён т.к. не могу осилить объектную модель InDesign CS6
 
А теперь помедленнее. Что вы понимаете под "основным набором" и какова конечная цель сего действия?
 
выберите ту, у которой lines больше, чем у остальных. или characters
 
выберите ту, у которой lines больше, чем у остальных. или characters
Извиняюсь, я вчера поторопился "вырезать" ф-цию и не проверил... на самом деле делаю вот так:
Код:
 function info_about_mydoc(doc) {
    //var _stories = doc.stories; // массив историй в документе
    $.writeln("В этом документе " + _stories.length+ " Story");
    for (var i=0;i<_stories.length;i++)  {
        var _lines = _stories[i].lines;   // массив строк в истори
        if (_lines.count() >0) {
            $.writeln("В Story № " + i + "содержится " + _lines.count() + " строк");
            if (_lines.count() >10) // 10 - на всякий случай: вдруг в какой-то "не основной " Story строк тоже много!
            $.writeln("\tПервая строка:  " + _lines.item(0).contents + "\n");
        }
    }
} // function info_about doc
А дальше я ищу последние слова в строках без переноса и выделяю из них предлоги, правда пока только в консоль. Вот для того, чтобы работать именно с основным набором, мне и приходится сначала с помощью этой ф-ции визуально (по первой строке) определить номер Story, содержащей основной набор, а потом уже по этому номеру и работать с ней. Не удобно!
 
Последнее редактирование:
А не проще было бы руками проставить лэйбл и привязывать скрипт к нему?
 
а что вы в итоге хотите сделать? поставить неразрывные пробелы после предлогов?
 
а что вы в итоге хотите сделать? поставить неразрывные пробелы после предлогов?
Да, именно это! Отловить висящие предлоги и закрепить их.
А не проще было бы руками проставить лэйбл и привязывать скрипт к нему?
С метками пока не работал. Искал сейчас, но чёткого понимания нет. Буду признателен за справку или ссылку на мануал (или примеры)

Да, извините за запоздалую реакцию - за компом сижу только по утрам... То, что я верстаю, это личное - для моих потомков
 
Странная заумная схема "прибивания" предлогов.
Просто ищите грепом список из предлогов (он не такой уж и большой) и заменяйте пробел перед ним на неразрывный. И не надо тогда искать какой-то "основной набор" — замена пробела на неразрывный и в подписях ничего криминального не привнесет.
 
Странная заумная схема "прибивания" предлогов.
Просто ищите грепом список из предлогов (он не такой уж и большой) и заменяйте пробел перед ним на неразрывный. И не надо тогда искать какой-то "основной набор" — замена пробела на неразрывный и в подписях ничего криминального не привнесет.
Наверное, действительно так было бы легче, но GREP не ищет по концу строки (именно строки, а не абзаца) - он ищет по всему набору. А может я просто не знаю как такое выражение составить...
 
wanga.png
Не в конце строки нет необходимости, значит ставить не надо.
"Экономика должна быть экономной." :bayan: ;)
 
Леша, не усложняй и без того непонятный момент ;)
 
он ищет по всему набору
Обычно так и делают, иначе после каждой правки придется опять расставлять. Или вы по каким-то
pop.gif
причинам исключительно в конце строки хотите?
 
Наверное, действительно так было бы легче, но GREP не ищет по концу строки (именно строки, а не абзаца) - он ищет по всему набору. А может я просто не знаю как такое выражение составить...
Дело в том, что подход, выбранный Вами, принципиально нетехнологичен. InDesign всякий раз пересчитывает строки (в зависимости от выбранного компоновщика строк) после их изменения (как после изменения символов, так и после изменения любого форматирования). Вставили Вы свою неразрывную шпацию в "конец строки", а InDesign — раз и пересчитал, и перекомпоновал строки в абзаце, и не факт, что Ваш текст не поползет.
Кошерно решать такую проблему по всему тексту, а не пытаться ловить скачущих блох во славу неправильно поставленной себе задачи.
 
Сразу всем и простите за флуд!
Может и не технологично, и не практично но, извините уважаемые - мне хочется довести до ума именно эту версию... Ну а то, что возможно "съезжание" текста, так это будет в пределах абзацев - не такая уж и беда. Да и предлгов-то таких у меня, слава Богу, не так ужи много

Не по теме:
1. У меня уже всё сделано: после вычитки проведена прекомпоновка по частям и главам; проведена правка с добавками и корректировкой; произведено окончательное приведение текста по нормам типографики - вобщем старался, чтобы потомки не смеялись над дедом. Естественно, старался не упустить и висячие предлоги, но... они, коварные, всё же остались!
2. Работая над ошибками, у меня появился интерес к скриптингу и с осени прошлого года я занялся этим (просто для себя, можно сказать - спортивный азарт) и это мне помогло вытащить из текста интернет-ссылки и собрать их в конец. Далее, я подсмотрел в каком-то скрипте Иванюшина выделение цветом последних слов - это меня тут же навело на мысль проверить предлоги - вот тут-то я и обнаружил их! Пока без "подкрашивания" - просто в консоль, но уже результат. И переносы уже знаю как вытащить...
Естественно, всё это на массе готовых примеров как с этого форума, так и из других источников. Понимание JavaScript уже есть, но очень тормозит НЕпонимание объектной модели Indesign! Из-за этого очень многие замечательные примеры я так и не смог реализовать

 
Последнее редактирование:
Кстати, мысли вслух: если "прибивать" предлоги разом по всему тексту, то после этого уж точно он "съедет" и опять придётся вновь от начала до конца править! А ведь по факту висячий предлог попадёт не на каждой странице, да и на странице-то не много (если вёрстка уже приведена в порядок). Так что мне мой замысел не кажется "божественным"
 
Как ставить метки понял, буду пробовать с ними
 
Хочется узнать как организовать интерактивный поиск и правку найденного, т.е. запустил скрипт - он находит, например, тот же "висячий" предлог, я "прибиваю" его и скрипт идёт к следующему.
 
Диалоговое окно типа palette.
 
  • Спасибо
Реакции: NikAR
А я добивал висячие предлоги и прочие "отрывы" (отмеченными корректором) так:
Код:
var aline = app.selection[0].lines[0];
aline.characters[-1].contents = "\xA0";
Поставить курсор в строку с отметкой и пускать скрипт быстрой клавишей.
Чик-чик... - Все!
p.s. это когда не прибивал предлоги до верстки. Не всегда удобно прибивать их по всему тексту. Затрудняется поиск в ворде (если нужен), так как пробелов уже нет и ворд искомый текст (с предлогами) не находит.