Grep в indesign

У Індізайне є дуже корисна фішка, на яку багато хто не звертають уваги через незнання, а даремно. Використання GREP неймовірно розширює можливості Indesign. Які основні відмінності пошуку-заміни GREP, від звичайного пошуку-заміни:







1. На відміну від звичайного пошуку / заміни, GREP дозволяє змінювати дані, використовуючи шаблони. Як це зрозуміти?

Припустимо, в 80-120-сторінковому виданні вам потрібно змінити колір всіх цін з чорного, який використовується за умовчанням в якості кольору основного тексту, в синій. На сторінках бачимо від двох до десяти товарних позицій, і ціни дуже різні: від однієї до п'яти розрядів перед роздільником (коми) і два розряду після. Уявімо скільки доведеться попітніти, роблячи цю роботу вручну?

За допомогою GREP нам досить написати:

і застосувати до результатів пошуку заздалегідь підготовлений Character Style.

2. GREP-операції можна застосовувати не тільки до тексту, який вже розміщений в Індізайне на момент виникнення умов, але і до тексту, який додається пізніше.

GREP дозволяє написати таку послідовність:

І т. Д. Це всього лише пара прикладів, але насправді варіантів навіть не море, а океан ;-)

Отже, трохи докладніше. Але, щоб не вдаватися в нетрі, думаю найкраще показати використання GREP в Індізайне на прикладах. Так що почнемо.

Для виконання всіх цих запитів використовується Edit> Find / Change (Пошук і заміна) і закладка GREP (регулярні вирази).

Завдання №1. Розставити автоматом переноси в англійських або інших (не росіян) мовами, якщо мова основного тексту російську.

Суть проблеми в тому, що для розстановки переносів потрібно в параметрах символів вказати для кирилиці російську мову, а для латиниці - англійська і т.д. Вручну робити це досить складно. Але є дуже простий вихід:

в рядку пошуку задати: [a-zA-Z]

в рядку заміни нічого не ставити або ввести в неї "$ 0" (означає знайдений текст);

в форматі заміни вказати потрібну мову: англійська.

Попередньо потрібно застосувати для всього тексту російську мову. Далі шукаємо все слова латиниці і задаємо для них англійська мова. Для цього в пошуковий рядок вводимо шаблон пошуку будь-яких символів латиниці, який виглядає так [a-zA-Z] - в ньому перераховуються символи латиниці нижнього і верхнього регістру. Як варіант пошук всіх символів кирилиці виглядає так "[а-яА-Я]".

Завдання №2. Знайти всі словоформи слова "приклад" і завдання йому напівжирного формату.

Рядок пошуку: \<(?i)приме(р|ры|ров|ре|ра)\>

Рядок заміни - нічого не ставимо або пишемо "$ 0", що означає «знайдений текст»;

У форматі заміни вказати напівжирний.

Визначаємо все словоформи шуканого слова. В даному випадку це: "приклад", "прикладів", "приклади", "приклад", "прикладі", "наприклад" (крім "наприклад", "зразковий" та ін. - це вже інші слова).







Тепер задаємо альтернативні варіанти для слів, а не для символів. У шаблонах така можливість передбачена перерахуванням через символ "|" (вертикальна риса). В результаті рядок пошуку повинна виглядати: "приклад | прикладів | приклади | прикладі | прикладу"

Однак такий пошук не враховує слова з великої літери! Вирішуємо цю проблему введенням метасимвола "(? I)", який при пошуку змусить ігнорувати регістр. І тепер рядок пошуку виглядає так: "(? I) приклад | приклади | прикладів | прикладі | прикладу". Можете не хвилюватися, регістр буде збережений.

Враховуємо ще одну проблему - система знаходить ці слова і як частина інших інших слів ( «наприклад», «зразковий» і т. Д.), А це нам не потрібно! Потрібно шукати слово цілком. Вказуємо кордону слова в рядку пошуку - початок слова позначається метасимвол "\<”, а конец – “\>". У підсумку наша рядок пошуку:

(? I) \<пример|примеры|примеров|примере|примера\>. або так:

Але і це можна значно спростити! Можна написати: "примі (р | ри | рів | ре | ра)" або "приклад | приклад (и | ів | е | а)"

І отримуємо рядок: \<(?i)приме(р|ры|ров|ре|ра)\>

Далі буде менше води, тільки коротко про найважливіше.

Завдання №3. Пошук тексту в лапках, включаючи лапки. Наприклад, для оформлення італіків.

Рядок заміни - нічого не ставити або ввести в неї "$ 0" (означає знайдений текст);

У форматі заміни вказати оформлення курсивом.

Ось деякі метасимволи, які замінюють звичайні символи:

Мінімум n і максимум m повторень

На перший погляд здається, що підійде варіант "« \ w + »". Але в цьому випадку не враховується присутність прогалин всередині, а також те, що вираз може знайти текст не до першої закриває лапки, а, скажімо, до другої. Знайти текст тільки між сусідніми лапками можна використовуючи короткий варіант: "« \ w +? »". А щоб врахувати ще і пропуск ( "\ s") всередині, зробимо так: "« [\ w \ s] +? »".

Практично всі, але якщо ми зіткнемося зі словом «секс-машина», то система ця назва пропустить. Значить розширимо максимально набір допустимих символів, для цього використовуємо метасимвол "." І отримаємо: "«. +? »". Ось тепер все.

Завдання №4. Пошук вираження в лапках, НЕ включаючи самі лапки. І застосувати курсив (наприклад «Золота рибка»).

рядок заміни - нічого не ставити або ввести в неї "$ 0" (тобто знайдений текст);

в форматі заміни вказати оформлення курсивом.

Значить рядок пошуку замість «. +?» Потрібно набрати як: (?<=«).+?(?=»)

Завдання №5. З'єднати прізвище та ініціали нерозривним пропуском.

Рядок заміни - $ 1

Такі завдання краще вирішувати шляхом початкової розбивки і подальшого складання. У шаблонах для цього є можливість запам'ятовування результатів пошуку. Шукані фрагменти пишуться в рядку пошуку в круглих дужках, а в рядку заміни вміст дужок можна викликати "$ 1" (перші дужки), "$ 2" (другі дужки) і т.д. до "$ 9" (всього в Індізайне є 9 фрагментів) і зібрати з їх допомогою потрібну фразу.

Враховуємо, що прізвище починається з великої літери, а ініціали складаються із заголовних букв, які розділені крапкою і пропуском. Наприклад, так: "Петров В. Б."; або так: "Путін-Полежайкін С. Н."

В результаті шаблон пошуку повинен виглядати як \ u [А-Яа-я -] + \ s \ u. \ S \ u.

Тобто спочатку шукаємо велику літеру \ u. потім шукаємо комбінацію букв [А-Яа-я -] +. далі ініціали \ s \ u. \ s \ u.

Але як тепер додати нерозривний пробіл? Ось тут і стане в нагоді запам'ятовування результатів пошуку. Попередньо засунь в круглі дужки елементи шаблону:

А для збірки результату в рядку заміни заповнимо $ 1

S - це нерозривний пробіл). Вуаля!

Рядок заміни - нічого не задаємо або ввести "$ 0" (означає знайдений текст);

в форматі заміни вказати необхідну оформлення.

рядок заміни - порожньо або "$ 0" (знайдений текст);

в форматі заміни вказати необхідну оформлення.

Регулярні вирази шикарно використовувати в скриптах - це дає можливість автоматизувати обробку тексту. А в Індізайн CS4 і більш пізніх регулярні вирази використовують навіть в параметрах стилю абзацу для завдання оформлення «на льоту»!

Ну, думаю для введення досить. Далі буде.







Схожі статті