Як я пішов з InDesign а в LaTeX Хабр
Історія почалася з того, що InDesign мене образив тим, що почав нахабно брехати у вічі. Я намагався зробити іменний покажчик і бачив у ньому не ті сторінки, на яких реально стояли «якорі», а трохи відмінні. Жодні танці з бубнами не допомагали. Робити покажчики вручну – не мій жанр. Писати свої скрипти, які будуть знаходити на сторінках якісь додаткові приховані знаки – теж не надто надійний варіант. Тим більше, що список завдань при підготовці видання був приблизно такий:
- зробити тематичний покажчик,
- зробити іменний покажчик,
- розставити купу наголосів з урахуванням того, що в обраному шрифті, на жаль, юнікодівський знак наголосу не працює,
- добитися того, щоб ці наголоси потрібним чином кочували в колонтитули, зміст і покажчики,
- зрідка користуватися конструкціями типу «див. виноску 15 на сторінці 45»,
- зробити прогалини навколо тире вже, симетричними, а попередній тире - ще й нерозривним,
- зробити покажчик посилань на Біблію (відсортований за порядком біблійних книг, далі - за розділами, далі - за віршами розділів).
Можливо, серед читачів знайдуться експерти InDesign, які підкажуть, як саме вищезгадані завдання можна вирішити. Але в тих рішеннях, які я уявляю собі, багато рухів мишкою, всякого копіювання та вставляння. Наприклад, для того, щоб вказати, де ще зустрічається те ім'я, яке я хочу в іменний покажчик, мені треба або заново вбивати його в панельці Index, або шукати в документі цей заповітний символ нульової ширини,копіювати його та вставляти. Ширина ж у нього нульова, а ось висота — ні, і потім доводиться ловити косяки, що в тебе в виносці інтерліньяж поповз через це «диво-символ».
Мене ці численні операції в ручному режимі лякали тим, що в той момент, коли треба буде здавати макет, напевно знадобиться терміново внести якусь правку, відповідно, щось поїде, щось треба буде заново компілювати, і з тисячі речей, які треба не забути, сотня буде забута. Крім того, це «не забути» означає, що макет, поставлений на поличку, має бути заморожений - трюки залишаться незадокументованими, а тому при повторному виданні неповторними (ну чи принаймні болісними).
Натомість тепер є певний інструментарій, яким можна й поділитись.
Отже, процес підготовки книги відбувається приблизно в такий спосіб.
Початковий документ з текстом і будь-якими виносками відкривається в OpenOffice і через writer2latex виганяється в LaTeX, де старанно чиститься (там багато сміття зазвичай). За бажання документ ділиться на частини, але нам якось зручніше було працювати з одним загальним файлом тексту твору.
За загальний вигляд макета відповідають насамперед пакети geometry і fancyhdr , за вигляд і розташування заголовків - titlesec (за його допомогою я домагався і приведення верстки). Друкарських вишукувань можна досягати, використовуючи пакети microtype і fnpct , які допомагають зробити оптичне вирівнювання по краю і легке «заганення» розділових знаків під попередній знак виноски. Самі виноски можна варіювати набагато більше, ніж у InDesign (хоча на полі виноси, хоч усі виноски в один абзац об'єднуй) — на це є footmisc. Буквиці (і образ їхнього обтікання текстом) вставляються за допомогою пакету lettrine.
Поки не пішов далеко,описи пакетів та приклади їх використання є на www.ctan.org А чудовий майданчик взаємодопомоги — tex.stackexchange.com
Питання з розстановкою наголосів довелося вирішувати так:
А з тире - ось так (ця штука працює і в тирі, що позначають пряму мову: Переноси LaTeX розставляє в цілому набагато краще, ніж стандартний InDesign (хоча модуль Ігоря Володимировича Батова дуже якісно виправляє цей недолік InD). Але тут є така особливість. LaTeX немає кнопочки «заборонити переноси через сторінку», це пов'язано з тим, що LaTeX спочатку формує абзаци, а потім намагається рядки розподілити по сторінках. Втім, в InD я цією кнопочкою не користувався - як мені здається, забороняти треба тільки перенесення з непарної сторінки на парну (тобто на оборот сторінки) При включенні цієї кнопочки InDesign забороняє і перенесення між колонками (у багатоколонковій верстці), що мені здається зовсім перебором.
Ігри з переносами полягають у варіюванні значень параметрів
Докладніше про ці параметри можете подивитися ось тут. InDesign, звичайно, не дає такого ступеня контролю за процесом формування абзацу. І мені доводилося стикатися з ситуацією, коли в InD абзац починав виглядати бридко через те, що стояла заборона на 4 переноси поспіль — але ці 4 переноси не спохабили б так абзац, як діри, що виникли між словами. Отже, підхід LaTeX'а з підрахунком загального значення penalty мені здається дуже розумним. Перенесення з непарної сторінки можна зловити за допомогою texttopdf та скрипту на perl.
Робота з покажчиками стає дуже комфортною, якщо в преамбулі написати щось на кшталт такого:
Тоді в тексті можна буде вставляти щоразу на окремому рядку, відбитому кількома tab'ами (щоб не зливалося з основним.потоком тексту \subj , потім проганяти sed -n "/\\ ame/p;/\\\geo/p" main-file.tex sed "s/[)(]//g" LANG=uk LC_COLATE=C sort uniq name-and-geo-index.tex і без будь-якої компіляції файлу бачити чернетку покажчика, з якої потім просто брати і копіювати в основний файл ті гнізда покажчика, які знову знадобилися. можливо, щось доточити самостійно, зате мені вдалося зробити в книзі єдиний географічний покажчик, в якому є і номери сторінок, і квадрати прикладених карт, а також я навчив гнізда молодших рівнів не залишати «вдовими» батьки (в InDesign цього не можна добитися в стилях за допомогою «Keep with next/previous»: або всі діти липнуть до єдиного блоку, або сирий батько липне до наступного батька).
А правильним чином доточивши напилком пакет bibleref , можна домогтися того, що при додаванні в основний файл рядка \bible наприкінці книги буде розділ "Покажчик посилань на Святе Письмо", де в розділі "Новий Завіт" буде підрозділ "Євангеліє від Матвія", і там рядок 1:1. (номер сторінки).
Якщо на цьому абзаці ви готові розлютитися і вигукнути «Ох ці церковники! Навіть на Хабр пробралися!», то зачекайте трішки, зараз перейдемо до найцікавішого — до того, як працювати з картинками (помітивши в дужках, що TeX є абсолютно прекрасним для верстки церковнослов'янських текстів).
InDesign типово вбиває картинку в макет як цвях у стіну - вона повинна стояти тут, а текст нехай тече як хоче. TeX сприймає картинки як плаваючі об'єкти, про які користувач каже: "Картинку добре б десь тут, вгорі сторінки (або внизу, або без різниці)". І картинка не відпливає далеко від тексту, до якого прив'язана (навіть якщо вам за півгодини доздачі макета скажуть урізати ширину сторінки на два сантиметри). Можна добитися і того, щоб картинка виявлялася на найближчій правій смузі:
У наведеному коді заразом вирішується і те завдання, щоб на сторінці, що містить лише картинку, не було ні колонтитула, ні колонцифри.
Ну і для ТеХ'а не становить жодних проблем включити до книги список ілюстрацій (причому елементи цього списку можна зробити відмінними від підпису під самою ілюстрацією). В InDesign для цього потрібно було б, мабуть, ставити бокси з білим текстом, які обов'язково потрапляють на сторінку (яка вказується на узбіччі InDesign в індекси не включає).
LaTeX приймає досить обмежений перелік графічних форматів: PDF, JPG, PNG. Жодних вам TIFF, ніяких PSD. Це не дає розслабитись, але й жити не заважає. Для швидкості компіляції можна зробити дві директорії для картинок: large та small.
А в самому тексті тимчасово користуватися Навіть найрозумніша машина не може зробити все так, як хотілося б людині, і в кінці все одно потрібна ручна доводка (яка дещо руйнує ідею поділу контенту від оформлення - але це можна розвести вже на рівні гілок Git). Потрібно займатися вигонкою та вгонкою, щоб досягти прекрасного вигляду. Від частини роботи може позбавити такий трюк: який у перекладі українською означає: «Хочу, щоб останні рядки в абзаці були заповнені не менше, ніж на 25%». Решту роботи доведеться робити за допомогою звичних прийомів: зміни трекінгу і міжслівних прогалин. може бути різним, поки не тицьнеш, не дізнаєшся).
Що не може не засмучувати — те, що після кожної змінипараметра доводиться знову компілювати документ, щоб подивитися, вийшло чи не вийшло. Якщо документ величезний, на це може йти кілька хвилин. Але й тут є трюки: можна користуватися \includeonly або написати свої команди, що змушують LaTeX компілювати лише потрібний фрагмент, а решту пропускати.
І тепер підходимо до найскладнішого етапу — здавання макета до друкарні. Для початку у нас вимагатимуть відступ (bleed) у 5 мм. Будь ласка:
Потім вимагатимуть вигонки в PostScript і прогонки через Adobe Disttiller. Я намагався зробити це двома варіантами
cupsfilter -P "PrintDriver.ppd" -m "application/postscript" my-book.pdf > my-book.ps та pdftops my-book.pdf my-book-another-way.ps . Але виходила якась нісенітниця. Чорний текст після прогонки через cupsfilter (або pdftops), а потім через Distiller перетворювався на композитний CMYK. Довелося користуватися Adobe Acrobat Pro: відкрити та зберегти як PostScript. Так чорний зберіг свою безпритульність.
Щоб не робити це руками, написав трохи AppleScript:
Отже, перехід із InDesign у LaTeX відбувся. Швидше за все, безповоротний (якщо не доведеться верстати журнали з купою картинок). Зі своїми радощами. Зі своїми прикростями. З купою відкриттів. Якими готовий ділитися – пишіть, питайте.