История началась с того, что InDesign меня обидел тем, что начал нагло врать в глаза. Я пытался сделать именной указатель и видел в нём не те страницы, на которых реально стояли «якоря», а чуть отличающиеся. Никакие танцы с бубнами не помогали. Делать указатели вручную — не мой жанр. Писать свои скрипты, которые будут отыскивать на страницах какие-то дополнительные скрытые знаки — тоже не очень надёжный вариант. Тем более что список задачек при подготовке издания, был примерно таков:
- сделать тематический указатель,
- сделать именной указатель,
- расставить кучу ударений с учётом того, что в выбранном шрифте, увы, юникодовский знак ударения не работает,
- добиться того, чтобы эти ударения нужным образом кочевали в колонтитулы, оглавления и указатели,
- изредка пользоваться конструкциями типа «см. сноску 15 на странице 45»,
- сделать пробелы вокруг тире поуже, симметричными, а предшествующий тире — ещё и неразрывным,
- сделать указатель ссылок на Библию (отсортированный по порядку библейских книг, далее — по главам, далее — по стихам глав).
При этом хотелось максимально распараллелить задачи работы над текстом и минимально пользоваться интернетом (рабочее место находится не в городе, а в глуши, где интернет еле живой).
Может быть, среди читателей найдутся эксперты по InDesign, которые подскажут, как именно вышеупомянутые задачи можно решить. Но в тех решениях, которые я представляю себе, много движений мышкой, всякого копирования и вставляния. Например, для того, чтобы указать, где ещё встречается то имя, которое я хочу в именной указатель, мне надо либо заново его вбивать в панельке Index, либо искать в документе этот заветный символ нулевой ширины, копировать его и вставлять. Ширина-то у него нулевая, а вот высота — нет, и потом приходится ловить косяки, что у тебя в сноске интерлиньяж пополз из-за этого «чудо-символа».
Меня эти многочисленные операции в ручном режиме пугали тем, что в тот момент, когда надо будет макет сдавать, наверняка понадобится срочно внести какую-то правку, соответственно, что-то поедет, что-то надо будет заново компилировать, и из тысячи вещей, которые надо не забыть, сотня будет забыта. Кроме того, это «не забыть» означает, что макет, поставленный на полочку, должен быть заморожен — трюки останутся незадокументированными, а потому при повторном издании неповторимыми (ну или, по крайней мере, мучительными).
Возвращение к LaTeX (точнее, к XeLaTeX) было непростым. Пришлось разбираться, как добиться выбранного макета. Пришлось придумывать, как добиться приведённой вёрстки (чтобы строки на просвет совпадали). Пришлось теребить автора одного из пакетов, чтобы добиться возможности использовать Pantone (в некоторых изданиях часть страниц печаталась в CMYK, часть — в 2 краски: чёрную и бордовую). Пришлось освоить азы ещё нескольких языков общения с компьютером: bash, perl, xindy, AppleScript, …
Зато теперь есть некоторый инструментарий, которым можно и поделиться.
Итак, процесс подготовки книги происходит примерно следующим образом.
Начальный документ с текстом и всякими сносками открывается в OpenOffice и через writer2latex выгоняется в LaTeX, где старательно чистится (там полно всякого мусора обычно). При желании документ делится на части, но нам как-то удобнее было работать с одним общим файлом текста произведения.
В рамках представления о том, что надо разделять содержание и оформление, создаётся отдельный файл header.tex, в который потихоньку бузуется куча всяких подгрузок пакетов и определений своих команд.
Все изменения и объединение версий происходит в Git, в нашем случае в приватном репозитории на bitbucket.org. Когда кто-то из редакторов или корректоров боится этих штук, он редактирует как умеет и присылает файлы и по почте, но всё же из почты их кто-то отправляет в репозиторий.
За общий вид макета отвечают в первую очередь пакеты
geometry
и fancyhdr
, за вид и расположение заголовков — titlesec
(с его помощью я добивался и приводки вёрстки). Типографских изысков можно достигать, используя пакеты microtype
и fnpct
, которые помогают сделать оптическое выравнивание по краю и лёгкое «загоняние» знаков препинания под предшествующий знак сноски. Сами сноски можно варьировать намного больше, чем в InDesign (хоть на поле выноси, хоть все сноски в один абзац объединяй) — на это есть footmisc
. Буквицы (и образ их обтекания текстом) вставляются при помощи пакета lettrine
.Пока не ушёл далеко, описания пакетов и примеры их использования есть на www.ctan.org А совершенно замечательная площадка взаимопомощи — tex.stackexchange.com
Вопрос с расстановкой ударений пришлось решать вот так:
\usepackage{accentbx}
\def\'#1{\upaccent{\aboxshift[.9ex]{^^^^00b4}}{#1}}
\makeatletter
\let\@acci\'
\makeatother
А с тире — вот так (эта штука работает и в тире, обозначающих прямую речь:
\usepackage{newunicodechar}
\def\tire{—}
\newcommand\vokrugtire{\hskip .1em plus .1em minus .05em}
\newunicodechar{—}{\ifvmode\tire\kern .1em\ignorespaces\else\unskip\nolinebreak\vokrugtire\nolinebreak\tire\vokrugtire\ignorespaces\fi}
Переносы LaTeX расставляет в целом намного лучше, чем стандартный InDesign (хотя модуль Игоря Владимировича Батова весьма качественно исправляет этот недостаток InD). Но тут есть такая особенность. В LaTeX нет кнопочки «запретить переносы через страницу». Это связано с тем, что LaTeX сначала формирует абзацы, а потом пытается строки распределить по страницам. Впрочем, в InD я этой кнопочкой не пользовался — как мне представляется, запрещать надо только переносы с нечётной страницы на чётную (то есть на оборот страницы). При включении этой кнопочки InDesign запрещает и переносы между колонками (в многоколоночной вёрстке), что мне кажется совсем перебором.
Игры с переносами заключаются в варьировании значений параметров
\righthyphenmin
\lefthyphenmin
\hyphenpenalty
\doublehyphendemerits
\finalhyphendemerits
Подробнее про эти параметры можете посмотреть вот тут. InDesign, конечно, не даёт такой степени контроля над процессом формирования абзаца. И мне приходилось сталкиваться с ситуацией, когда в InD абзац начинал выглядеть мерзко из-за того, что стоял запрет на 4 переноса подряд — но эти 4 переноса не испохабили бы так абзац, как возникшие дыры между словами. Так что подход LaTeX'а с подсчётом общего значения penalty мне кажется очень разумным. Переносы с нечётной страницы можно поймать при помощи
texttopdf
и скрипта на perl.Работа с указателями становится весьма комфортной, если в преамбуле написать что-то вроде такого:
\usepackage{makeidx}
\usepackage{multind}
\makeindex{subj}
\makeindex{name}
\newcommand{\subj}[1]{\index{subj}{#1}}
\newcommand{\name}[1]{\index{name}{#1}}
Тогда в тексте можно будет вставлять каждый раз на отдельной строке отбитую несколькими tab'ами (чтобы не сливалось с основным потоком текста
\subj{...}
, потом прогонятьsed -n "/\\\name/p;/\\\geo/p" main-file.tex | sed "s/|[)(]//g" | LANG=ru LC_COLATE=C sort | uniq > name-and-geo-index.tex
и без всякой компиляции файла видеть черновик указателя, из которого потом просто брать и копировать в основной файл те гнёзда указателя, которые снова понадобились. Для полноценной компиляции вам придется разобраться с настройками
xindy
и, возможно, что-то доточить самостоятельно. Зато мне удалось сделать в книге единый географический указатель, в котором есть и номера страниц, и квадраты приложенных карт. А также я научил гнёзда младших уровней не оставлять «вдовыми» гнёзда-родители (в InDesign этого нельзя добиться в стилях при помощи «Keep with next/previous»: либо все дети липнут в единый блок, либо сирый родитель липнет к следующему родителю).А правильным образом доточив напильником пакет
bibleref
, можно добиться того, что при добавлении в основной файл строчки \bible{Мф. 1:1}
в конце книги будет главка «Указатель ссылок на Священное Писание», где в разделе «Новый Завет» будет подраздел «Евангелие от Матфея», и там строчка 1:1........(номер страницы).Если на этом абзаце вы готовы вспылить и воскликнуть «Ох уж эти церковники! Даже на Хабр пробрались!», то погодите немножко, сейчас перейдём к самому интересному — к тому, как работать с картинками (заметив в скобках, что TeX совершенно прекрасен для вёрстки церковнославянских текстов).
InDesign типично вбивает картинку в макет как гвоздь в стену — она должна стоять тут, а текст пусть течёт как хочет. TeX воспринимает картинки как плавающие объекты, про которые пользователь говорит: «Картинку хорошо бы где-то тут, вверху страницы (или внизу, или без разницы)». И картинка не уплывает далеко от текста, к которому привязана (даже если вам за полчаса до сдачи макета скажут урезать ширину страницы на два сантиметра). Можно добиться и того, чтобы картинка оказывалась на ближайшей правой полосе:
\newcommand{\kartinkavramke}[1]{\fboxrule=2pt\fboxsep=0pt
{\centering\boxkinovar{\includegraphics[height=\textheight]{#1}}\par}}
\newcommand{\kartinkavskoresprava}[1]{
\ifodd\value{page}\afterpage{\kartinkavskoresprava{#1}}%
\else\afterpage{\thispagestyle{empty}\noindent%
\kartinkavramke{#1}}\fi}
В приведённом коде заодно решается и та задача, чтобы на странице, содержащей только картинку, не было ни колонтитула, ни колонцифры.
Ну и для ТеХ'а не составляет никаких проблем включить в книгу список иллюстраций (причём элементы этого списка можно сделать отличными от подписи под самой иллюстрацией). В InDesign для этого потребовалось бы, наверное, ставить боксы с белым текстом, обязательно попадающие на страницу (валяющееся на обочине InDesign в индексы не включает).
LaTeX принимает довольно ограниченный список графических форматов: PDF, JPG, PNG. Никаких вам TIFF, никаких PSD. Это не даёт расслабиться, но и жить не мешает. Для быстроты компиляции можно сделать две директории для картинок:
large
и small
.cd large
for i in *.*; do echo $i; convert -resize 25% -quality 60 $i ../small/$i; done
А в самом тексте временно пользоваться
\newcommand{\pathtoimg}[1]{small/#1}
\includegraphics[height=\textheight]{\pathtoimg{myself.jpg}}
Даже самая умная машина не может сделать всё так, как хотелось бы человеку, и в конце всё равно нужна ручная доводка (которая несколько разрушает идею разделения контента от оформления — но это можно развести уже на уровне веток Git). Нужно заниматься выгонкой и вгонкой, чтобы добиться прекрасного вида. От части работы может избавить вот такой трюк:
\setlength{\parfillskip}{0pt plus .75\textwidth}
который в переводе на русский означает: «Хочу, чтобы последние строки в абзаце были заполнены не менее, чем на 25%». Остальную работу придётся делать при помощи привычных приёмов: изменения трекинга и межсловных пробелов.
\newcommand{\tracking}[2]{{\addfontfeature{LetterSpace=#1}#2}}
\newcommand{\interword}[2]{{\setlength{\spaceskip}{#1\fontdimen2\font plus #1\fontdimen3\font minus #1\fontdimen4\font}#2}}
Что не может здесь не радовать, так это то, что верстальщику всё видно: где какие применены инструменты (у InDesign есть режим подсветки трекинга, но значение-то в каждой точке может быть разным, пока не ткнёшь, не узнаешь).
Что не может не огорчать — то, что после каждого изменения параметра приходится заново компилировать документ, чтобы посмотреть, получилось или не получилось. Если документ огромный, на это может уходить пара минут. Но и тут есть трюки: можно пользоваться
\includeonly{...}
или написать свои команды, заставляющие LaTeX компилировать только нужный фрагмент, а остальное пропускать.И теперь подходим к самому сложному этапу — сдаче макета в типографию. Для начала у нас потребуют отступ (bleed) в 5 мм. Пожалуйста:
\usepackage[
layoutsize={140mm,200mm},
papersize={150mm,210mm},
layouthoffset=5mm,
layoutvoffset=5mm,
...]{geometry}
Потом потребуют выгонки в 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:
on replace_chars(this_text, search_string, replacement_string)
set AppleScript's text item delimiters to the search_string
set the item_list to every text item of this_text
set AppleScript's text item delimiters to the replacement_string
set this_text to the item_list as string
set AppleScript's text item delimiters to ""
return this_text
end replace_chars
on run argv
set current_path to "/Volumes/data/process_me"
set in_file to current_path & "/" & item 1 of argv
set out_file to replace_chars(in_file, ".pdf", ".ps")
set in_file_correct to POSIX file in_file
set out_file_correct to POSIX file out_file
with timeout of (8 * 60) seconds
tell application "Acrobat"
activate
open in_file_correct
save document 1 to out_file using PostScript Conversion
close document 1
end tell
end timeout
end run
*acrodist.scpt*
on run argv
set current_path to "/Volumes/data/process_me"
set opt_file to current_path & "/Typo.joboptions"
set in_file to current_path & "/" & item 1 of argv
set out_file to replace_chars(in_file, ".ps", "-distilled.pdf")
with timeout of (8 * 60) seconds
tell application "Acrobat Distiller"
Distill sourcePath in_file destinationPath out_file adobePDFSettingsPath opt_file
end tell
end timeout
end run
osascript acro-pdf-to-ps.scpt my-book.pdf
osascript acrodist.scpt my-book.ps
Все эти скрипты преследуют одну цель: если в последний момент скажут что-то поменять, то должен быть уже отлажен поток, по которому эти изменения войдут в итоговую выгрузку файлов. Особенно если файлов несколько.
Так что переход из InDesign в LaTeX состоялся. Скорее всего, безвозвратный (если не придётся верстать журналы с кучей картинок). Со своими радостями. Со своими горестями. С кучкой открытий. Которыми готов делиться — пишите, спрашивайте.
Как говорится, happy TeXing!
Комментарии (80)
vconst
19.09.2016 13:313, 4, 6 — GREP
1,2, 7 — стандартные задачи не вызывающие затруднений, без подробностей непонятно в чем была проблема
Для полноты оценки не ясно, сколько лет содержится в: «проработав в нём немалое количество времени» и для чего предназначался макет. Если полгода-год, а макет хоббийный для малотиражки, то вопросов нет — каждый развлекается как хочет, если это 5-10+ лет и макет коммерческий и для нормальной полиграфии — тогда я не знаю, что сказатьpantlmn
21.09.2016 13:23Расскажите, пожалуйста, как в InD делать сразу несколько указателей.
Я уходил, когда был CS6, он поддерживал только один (с генерацией вышеупомянутых ошибок в номерах страниц).vconst
21.09.2016 13:47С несколькими указателями я не сталкивался. не знаю насколько это сложно и как решается
Vjatcheslav3345
21.09.2016 23:08Я слышал о пакетах для подготовки множества (да хоть 4 000 указателей в одной книжке) самых разных указателей. По поводу тонкости с тесной взаимосвязью их элементов сказать ничего не могу — не было у меня этого, а были несвязанные (связь только с основным текстом, без проброса ссылок на другие указатели, другого вида и назначения) — но с учётом возможности для пользователя с опытом настроить или даже написать свой пакет на базе имеющегося — это не непреодолимая проблема.
Подробности можно глянуть здесь.
На русском языке документация к системе вёрстки лежит здесь.
Vjatcheslav3345
19.09.2016 14:32Возможно автору поста будет интересен ещё один современный литкомпилятор Patoline(http://patoline.org/about.html).
Правда ему для полного удовольствия пригодился бы кросскомпилятор, чтобы безболезненно преобразовать накопленный багаж стилей и классов от TeX, LaTeX в понятный ему код — такой штуки вроде в нём нет, (пока его никто не написал) но ограниченно — т. е. с некоторыми исключениями LaTeX он понимает. А поскольку в его основе лежит весьма неслабый язык программирования, то его можно приспособить и для других интересных применений типа продвинутых отчетов из баз данных или вычислений прямо в своём документе — статье, диссертации, рабочем отчете.
Кстати — не поделитесь тем, как вы преобразовали writer2latex библиографию — у меня прямо сейчас с ней неслабая головная боль — она выводится в виде "активных символов"?
staticlab
19.09.2016 14:37Думается, что библиография — это отдельная головная боль. По опыту знаю, что идеально правильную библиографию никто не пишет, а реальные ссылки (при условии, что в них нет фактических ошибок) часто затруднительно распарсить даже вручную.
Vjatcheslav3345
19.09.2016 15:46Она выводится в виде "активных символов" в формате BibTeХ — поэтому я не о парсинге обычного текста спросил а о том как избавлялись от "активных символов" там какой нибудь скрипт -перекодировщик нужен был бы.
pantlmn
19.09.2016 17:07Не приходилось пока библиографию перегонять, обычно она была оформлена простым текстом.
«Активные символы» — в смысле \cyrA, ...?
Так что мешает написать sed s/\\cyrA/А/g и еще 6 десятков аналогичных команд?Vjatcheslav3345
19.09.2016 22:54Примерно так всё и закончилось, но я надеялся найти что то уже готовое.
О вёрстке
Кстати, если невизуальная вёрстка будет слишком уж трудна, то можно вспомнить про Scribus, имеющий возможность работать со сценариями на питоне (есть и API ) — таким образом можно будет получить сочетание правильной вёрстки и привычной визуальной работы с документом с возможностями широчайшей автоматизации.
Тут на ресурсе ещё есть пример книжки написанной и свёрстанной математиками в LaTeX — я её глянул — вроде прекраснейшая книга — мне бы так свои работы верстать, но, может я ошибаюсь, и профессионалы и любители вёрстки найдут в ней проблемы?
Если это действительно так — не покритикуют ли они оформление этой книги здесь?vconst
20.09.2016 17:08Еще раз, я не знаю правил английской верстки, но по русским правилам — там все ошибки дилетанта: союзы и предлоги висящие в конце строки; единичные строки оторванные от абзаца и повисшие или последней строкой или первой; перенос предложения с разворота на разворот; формулы в тексте разорванные на куски переносом строки.
Я волне допускаю, что сверстать такое в Индизе — это ад, но невозможность в визуальном режиме поправить перечисленные косяки — не есть хорошо. С другой стороны, математикам важно правильное отображение формул, а не тонкости верстки художественной литературы. Каждой задаче — свой инструментVjatcheslav3345
21.09.2016 00:58Вроде бы большая часть правил русской вёрстки включается просто вбиванием соответствующих команд и параметров из русских стилей и пакетов и все косяки пропадают автоматически — также, как в том же ворде, когда в нём по человечески настроишь абзац в стиле или текстовые формулы — во всяком случае не удалось припомнить о существовании каких то готовых решений именно только для висячих предлогов и союзов — но, может и они есть, я все таки не настолько хорошо знаю LaTeX-экосистему, чтобы это с уверенностью опровернгуть.
staticlab
21.09.2016 11:29Я так понимаю, что висячие союзы и предлоги что в Индизайне, что в Латехе одинаково лечатся расстановкой неразрывных пробелов регуляркой.
vconst
21.09.2016 11:33С союзо-предлогами — да, остальное настройками программы
staticlab
21.09.2016 11:39В Латехе настройками тоже можно запретить сирот, вдов и переносы на разрыве страницы.
vconst
21.09.2016 11:43А с висящими строками что делать?
Если эти проблемы решаются, почему все тексты из ТеХ, которые я видел — все с этими косяками?staticlab
21.09.2016 12:23Подождите, разве висячая строка — это не «вдова»?
vconst
21.09.2016 12:24Есть верхние и нижние висячие. Но это вопрос терминологии, мне правда непонятно, почему хотя бы неразрывные пробелы не ставят скриптами?
staticlab
21.09.2016 12:36В терминологии латеха верхняя висячая строка — это вдова, нижняя — сирота. Ну не суть. Думаю, что причины в целом такие:
- пользуются латехом как правило "учёные", а не профессиональные верстальщики, знакомые с правилами хорошего тона в вёрстке;
- если жёстко запретить латеху вдов и сирот, то он либо будет подгонять последнюю строку к краю полосы, расширяя межабзацное расстояние (тогда, разумеется, строки слева и справа на развороте не будут совпадать, а пробел между абзацами может получиться конским), либо оставит пустые строки внизу (получится рваный нижний край); для исправления косяка придётся поиграться вручную, каждый раз перекомпилируя исходники;
- не влезшие в строку формулы и прочее для наведения красоты тоже придётся фиксить вручную;
- расстановку неразрывных пробелов скорее всего многим делать просто лень.
vconst
21.09.2016 12:38Другими словами, те кто им пользуются или не знают о правилах верстки, или они их совсем не волнуют. Для узкой среды пользователей — математиков и физиков, это логично и понятно
pantlmn
21.09.2016 13:17Англоязычная вёрстка совершенно спокойно относится к вдовам и сиротам, их полным полно в NewYorker'е — одном из уважаемых американских еженедельников.
vconst
21.09.2016 13:48Интересно, однако. Непонятно даже почему, там это игнорируют
Vjatcheslav3345
21.09.2016 21:47"строки слева и справа на развороте не будут совпадать, а пробел между абзацами может получиться конским" — вроде и эту болезнь можно вылечить соответствующими настройками в преамбуле — если не полениться и поискать в сети соответствующую инфу: на http://ctan.org/ есть куча пакетов имеющих отношение к работе с абзацами — они то и занимаются такими моментами (а, ещё, скажем, есть и пакеты для "прозы жизни" как этот, родом из Франции — petiteannonce — верстающий "заборную" рекламу, какую можно легко встретить у любого подъезда — mirror.macomnet.net/pub/CTAN/macros/latex/contrib/petiteannonce/petiteannonceexample.pdf или этот — http://mirror.macomnet.net/pub/CTAN/macros/latex/contrib/stubs/stubs_ex.pdf — тоже применяется при подготовке объявлений или чего то подобного) — такие пакеты там имеются; сейчас вот вспомнил ещё и про пакет для баркода, но поискать его поленился.
Вообще же именно на этой системе невизуальной верстки свет клином не сошёлся — много их на свете существует, например, для использования гуманитариями, например, писателями, юристами, был придуман Sisu (им, кстати Кори Доктороу пользуется).
Почему бы не рассмотреть критически (и профессионально, обоснованно покритиковать) результаты вёрстки в этой системе?
Мнение профи всегда интересно услышать. Тем более, что, при правильном использовании, системы невизуальной верстки могут экономить их опытным пользователям неприлично много рабочего времени, повышать производительность труда и творить прочие "непотребства", которые можно попробовать сконвертировать в заработок.
Примеры:
http://www.sisudoc.org/samples_by_language/en/pdf/gullivers_travels.jonathan_swift.portrait.a4.pdf
http://www.sisudoc.org/samples_by_language/en/pdf/content.cory_doctorow.portrait.a4.pdf
http://www.sisudoc.org/samples_by_language/en/pdf/autonomy_markup0.portrait.a4.pdf
vconst
22.09.2016 11:58Открыл первый пример и офигел — ни одного переноса в тексте. Спасибо — но такой автоматизации нам не надо
Что касается баркодов. Самый распространенный формат — цифры между двумя астериксами, то есть достаточно набрать текст баркодовским шрифтом и поставить * с обеих сторон. Никаких плагинов ждя этого вообще не требуетсяVjatcheslav3345
22.09.2016 13:21Эээ… а где это нет переносов? Я вот повстречал перенос, скажем, на странице 3 (там абзац с цифрой "6" ) и в нём "of the Gulliv-ers." и дальше там они есть. Но переносов реально мало — это да.
vconst
22.09.2016 13:30Этот перенос там случайно проскочил :)
Короче — очень странная верстка, даже по свободным буржуйским стандартамVjatcheslav3345
22.09.2016 14:31А где примеры хорошей русской верстки можно посмотреть?
vconst
22.09.2016 14:33В инете — навскидку даже не скажу где. Лучше всего в бумажных книгах годов этак 90-00
Vjatcheslav3345
22.09.2016 21:19А старинные книги могут являться образцом вёрстки (естественно, с поправкой на отсутствие в современном алфавите "ятей" — http://www.mathesis.ru/)?
Vjatcheslav3345
22.09.2016 21:59Кстати, любителям современной науки на заметку — прочитав название научной книги "Благородные и радiоактивные газы" и не сразу подумаешь, что написана она… в 1909 году (проф. Рамзаем В.) — просто подумаешь, что книжка издана где нибудь, где славяне используют латиницу, так современно звучит её название — фундаментальные научные книги практически не устаревают.
Или — "Введенiе въ химическую кристаллографiю"… заинтересовавшиеся сами посмотрят год издания этой книги.
А название "Жидкiе кристаллы и теорiи жизни" вообще как будто только-только снято с ленты Гиктаймса.
http://www.mathesis.ru/books/9999/titleasc/
Интересно, а система верстки TeX, существующая в почти неизменном виде лет 30 — треть столетия, по сути, — она протянет столько, чтобы и в 2115 году наши потомки могли на ней отрендерить какой нибудь свеженаписанный в 2016 г математический "бестъселлеръ"?
Vjatcheslav3345
21.09.2016 23:45Я так понимаю, что висячие союзы и предлоги что в Индизайне, что в Латехе одинаково лечатся расстановкой неразрывных пробелов регуляркой.
Если документ большой или очень большой или очень часто меняется, то лучше написать для ТеХ-а в преамбуле указания считать, что перед любым предлогом или союзом, стоящим в последней или первой строке страницы имеется неразрывный пробел — это сложнее придумать, но работать будет лучше чем неразрывные пробелы, выставленные прямо в тексте.
pantlmn
22.09.2016 15:24А можно код этой преамбулы?
Vjatcheslav3345
22.09.2016 16:27Честно говоря — я никогда не боролся с висячими союзами и предлогами, поэтому готового рецепта-преамбулы у меня нет.
Но по поводу того как это сделать — я думаю так:
-определить счетчики для счета и нахождения проблемных предлогов или союзов,
-получить данные о геометрии от используемого пакета для геометрии страниц или от команд:
\settowidth{cmd-length}{text}
\settoheight{cmd-length}{text}
\settodepth{cmd-length}{text}
- используя пакет ifthen — заменить пробел перед проблемными предлогами или союзами при "подаче" текста в компилятор — т. е. заставить счесть, что перед предлогом стоит тильда (~) вместо пробела. Подобную вещь можно проделать и со ссылками, чтобы не отрывались от текста (~\cite{pupkin}). Со ссылками часто ставится неразрывный пробел, поэтому в поисках готовых решений можно посмотреть код пакетов для цитирования — вдруг их авторы уже сделали готовое решение, которое можно просто адаптировать и выпустить как отдельный пакет.
pacificOcean
19.09.2016 15:37Посмотрите на Adobe FrameMaker. ИМХО: InDesign пакет более общего назначения с широким набором возможностей из коробки, но слаб для специализированных задач.
pantlmn
19.09.2016 17:04Да, я думал об этом варианте. Но подумал, что лучше работать в свободном и более-менее знакомом ТеХе, чем в левом и совершенно неизученном FM.
pantlmn
19.09.2016 17:16Глянул историю версий FrameMaker: только в 2015 году добавлена поддержка письменностей справа налево (и это тоже иногда мне было нужно, для иврита) — TeX умеет это уже давно.
Думаю, это касается и многих других опций.
temujin
А можно показать, как выглядит итоговый результат? Это тот случай, когда одна картинка может заменить тысячу слов.
vconst
Кстати да. Если в итоге получается макет с висяками, вдовами и сиротами, с лестницами и коридорами, с 6 переносами подряд и прочим дилетанством в стиле «печатаю и рыдаю», то овчинка явно не стоила выделенки. Если качественная верстка, то профессионализм и настойчивость — заслуживают уважения
staticlab
Если бы TeX умел завёрстывать поабзацно, а не построчно… Настройки хоть и есть, но они косвенные. Плюс, если не подводит память, если запретить вдов и сирот, то TeX грубо переносит строки на следующую страницу, делая неравное число строк. И количеством последовательных переносов сложно управлять. Хоть в целом подход мне и нравится, но часто возникала мысль, что было бы неплохо, если бы существовал полноценный мощный аналог, умеющий и всю полноту юникода со шрифтами без костылей, и более интеллектуальную вёрстку, возможно, детектирующую коридоры/лесенки, висячий слог последней строкой абзаца, более быструю сборку без кучи проходов и непонятных ошибок.
vconst
В статье описывается:
А это значит, что нет даже выравнивания базовых линий по сеткеЯ не хейтер ТеХа, вообще в нем не разбираюсь и сравнивать могу только по конечному результату NB!, но как то уж очень много костылей приходится строить — для самых базовых вещей. Возможно, в некоторых узких областях изданий, автоматизированная верстка, без требований хорошего знания адобовского пакета, свободным софтом, и имеет место быть. Но я плохо представляю, как этот пакет можно использовать для повседневных задач дизайнера или верстальщика: сделать дизайн, сверстать набор визиток по гайдбуку, рекламный лефлет с парой бигов, брощюрку, рекламный модуль в журнал, сам журнал, бигборд для наружки.
А те результаты, которые я видел сверстанные в ТеХ — выглядели совершенно по дилетантски, с висяками в одну строчку и прочим. Если это будет читать три человека — сойдет, но если всерьез — то это брак
staticlab
> Пришлось придумывать, как добиться приведённой вёрстки (чтобы строки на просвет совпадали).
Точно. Это, как ни странно, дефолтное поведение TeX. То есть, те строки, которые он решил оставить на странице после удаления вдов и сирот, равномерно распределяются по высоте. Потому межстрочное расстояние может быть на разных страницах разным. Да, знаю, для профессионального верстальщика это звучит дико.
> Возможно, в некоторых узких областях изданий, автоматизированная верстка, без требований хорошего знания адобовского пакета, свободным софтом, и имеет место быть.
Опять же, по опыту вёрстки в LaTeX и ID, могу сказать, что первый более удобен для вёрстки научных статей, возможно, с формулами, перекрёстными ссылками, ссылками на литературу и т.п. То есть там, где в первую очередь важно содержание и вменяемое представление материала с разумной долей автоматизации процесса. Кроме того, из-за текстовых исходников становится возможно использовать систему контроля версий, в том числе, для совместной работы. Таким образом, для научной среды (для которой, собственно, TeX и создавался) — это очень удобно. Строго говоря, в этой области ему можно было бы сопоставить скорее FrameMaker, а не InDesign.
Там же, где необходима большая дизайнерская работа — цвета и иллюстрации в CMYK с треппингом, оверпринтом и прочим, произвольное позиционирование блоков текста, представление результата в реальном времени — там LaTeX бессилен.
vconst
Ну да, я примерно так и думал. Но я не думаю, что профи в Индизе сделает статью хуже и медленнее, чем научный сотрудник в ТеХ
Delphinum
Многие научные журналы не примут у профи в Индизе его научную статью, сделанную не в TeX.
vconst
PDF то примут? Ну и какая разница, как его верстать? Или там изначально формат верстки только ТеХ?
Delphinum
В том то и дело, что не примут. Они сами рендерят, принимают только в .tex
vconst
Тогда выбора нет. В этой узкой нише по другому нельзя
SirEdvin
Хм, я с InDesign не работал, но не подскажите, как там набирать сложные математические формулы? Если только через интерфейсик, то научный сотрудник сделает значительно быстрее в силу того, что обычно шаблон проекта ему предоставляет издание или институт, или он сам уже сделал себе некий шаблон и набор команд с которым работает.
Delphinum
На сколько я знаю, в современной верстке (в том числе под ID) есть куча плагинов, реализующих набор формул согласно TeX стандартам и форматам.
SirEdvin
Я вот погулил и пишут, что нет. Только через MathType, что, конечно, немного уменьшает боль, но все равно добрый ламповый TeX как-то ближе (особенно учитывая, насколько его синтаксис обрезан в MathType)
vconst
Мне, в свою очередь, не приходилось верстать формулы, но есть несколько инструментов — навскидку: Верстка математической книги или другой в InDesign с MathType. Не знаю насколько это удобно, возможно костыли от безысходности, а может и наоборот
SirEdvin
Ответил выше. В целом, через TeX все равно будет быстрее, но зависит больше от сложности формулы.
Скажем, TeX может автоматически выбирать размер для дроби или его можно указать вручную, а вот в MathType я такого не нашел.
Пример
\frac12
— дробь 1/2 с автоматическим масштабированием, а\cfrac12
— дробь среднего размера.такие штуки нужны в формулах с больших количеством вложенных дробей (такие встречаются довольно часто), так как автоматические размеры часто заставляют людей рассматривать формулу под микроскопом.
UPD: судя по всему, это можно делать через визуальный интерфейс, что совсем не торт и боль. Вот тут такое делают, но с другими формулами.
vconst
Значит в Индизе это костыли, понятно
Но у автора в статье мелькают ссылки на библию, не факт, что там много формул
mickvav
Да это ж дикая боль… Тех их во-первых делает по скорости набора, во-вторых — по пригодности для версионирования, в-третьих — по переносимости. Если нужно писать реальную научную статью по математике или физике, и не единственную в жизни — стоит уже сделать над собой усилие и осознать LaTeX. Если это полторы формулы в научпопе или диплом-сдал-забыл — можно ограничbnmcz MathType-ом.
pantlmn
Да и вообще если писать диссер (не дипломку) со сносками, ссылками и указателями, то тоже лучше делать это в ТеХе, даже если там нет ни одной формулы.
Word и Writer прекрасны, но велика опасность, что они либо зависнут, либо глюканут.
staticlab
Да там по-человечески ни заголовки не пронумеруешь, ни ссылки на литературу не проставишь.
RomanArzumanyan
Когда заканчивал второе образование, из принципа решил делать дипломную в Writer'е. На то время (2012) были какие-то самописные модули для оформления списка источников в соответствие с ГОСТом. А ёщё там редактор формул гораздо удобнее.
Ближе к концу написания работы Writer тормозил при скролле, но не глючил.
staticlab
А заголовки нумеровали?
RomanArzumanyan
ЕМНИП — просто руками это делал. Там требования были примерно на уровне бакалаврской, объём не очень большой (40-60 страниц). Поэтому и решился на эксперимент с Writer'ом.
Vjatcheslav3345
Автонумерация заголовков делается в стиле заголовков.
staticlab
Раньше в Writer при включении нумерации заголовков, они начинали глючить. Сегодня открыл 5.2 — она вообще заблокирована.
Vjatcheslav3345
Даже с заблокированной нумерацией я, пользуясь стилями глав, спокойно создал нумеруемый заголовок с автоматически проставляемым словом "Глава" и автономером после слова — всё работает.
QuickJoey
вряд ли хуже, на то он и профи, а вот медленее, вполне может быть.
в бытность студентом была задача, сверстать учебник по ядерной физике, от 70-лохматого года отпечатанный на ротапринте, с формулами написанными от руки, страниц эдак на 200 формата А5. задача была из разряда «помогите, чем сможете». последовательно, разные люди прикладывали к ней руки, и когда дошло до меня, я получил файлик в формате txt с результатом распознавания. так как изначальное качество печати было не очень, и в тексте попадались греческие буквы, и формулы, можете представить что это было.
в итоге, увлёкшись, я сделал полную его разметку в LaTeX, а это много сложных формул, с ссылками, главы, и всё то, что вы и без меня знаете. учитывая, что с точки зрения профи я никто, согласитесь, это результат. причём большую часть времени я тратил не на вёрстку, как таковую, а на вычитку и исправления распознавальщика. более того, результат можно было печатать, для учебных целей этого уже было достаточно.
SirEdvin
Скорее, там это сложнее сделать, чем в InDesign, но вполне возможно с некоторыми навыками.
pantlmn
Равномерно распределяются по высоте не строки, а абзацы. Или не распределяются — если сделать \raggedbottom.
pantlmn
Oxford University Press верстает в TeXe.
И вот еще showcase прекрасных штук, сделанных в ТеХе.
vconst
Не знаком с правилами иностранной верстки, но по русским правилам — это если не брак, то близко к тому. В наличии почти все вышеперечисленные косяки и я подозреваю, что только небольшой объем текстовых блоков спасает — а то и остальные бы всплыли. Дизайн нормальный, но все остальное — кровь из глаз.
Ничего личного — просто я полиграфист со стажем и мне все это сразу в глаза бросается, профессиональная девиация. Возможно в научном журнале на такое просто не обращают внимания, но обычную периодику — меня бы заставили переделывать
pantlmn
ТеХ верстает, конечно, поабзацно — основной весь его алгоритм заточен на то, чтобы сделать прекрасным абзац (а не отдельную строку).
И юникод он спокойно принимает и множество OTF фич.
Какие-то тонкости (коридоры, например) можно вылавливать при помощи pdftotext + perl.
pantlmn
Вот здесь есть примеры страниц из 4-томника, в котором первые 2 тома свёрстаны в InD, а 3 и 4 — в XeLaTeX.
vconst
Они за «посмотреть» — денег просют…
staticlab
Выбираете любую книгу, на странице о ней внизу будут "Страницы из книги" (Flash).
vconst
Если учесть время на освоение и решение всех описанных в статье проблем ТеХ — сколько уходило времени на верстку в Индизе и ТеХХ
pantlmn
Я ж говорю, что всё началось с того, что InD выдал неправильные номера страниц в указателе. Так что если прибавить время на вычитку указателей после лёгкого сдвига в последний момент — то экономия солидная.
Я ж не призываю всех переходить в ТеХ. Под каждую задачку надо подбирать правильный инструмент. Есть, например, программы для подготовки критических изданий, которые, насколько я понимаю, итоговый вывод генерируют при помощи ТеХ.
vconst
Я спросил не в плане критики, а для примерной оценки затрат на верстку. Можете оценить в единицах полос/день? Сдвиг указателя — это непонятный и неприятный сюрприз