TeX и LaTeX отлично подходят для создания разного рода электронных книг. Книги
формата .pdf
создаются легко и, более того, у LaTeX имеется нативная поддержка
данного формата. Как уже не раз было показано ранее, следует
лишь ввести команду для сборки pdf-файла из tex-файла, например:
$ pdflatex my_book.tex
Но как обстоят дела с другими форматами? Многие имеют в своём распоряжении
смартфоны или планшеты и, разумеется, читают с экранов этих устройств книги. В
метро, по пути на работу, в парке, выгуливая собаку, да мало ли где ещё. Но
порази меня гром, читать pdf
с подобных девайсов совершенно неудобно.
Итак, что такое ePub и как конвертировать вашу собственную книгу из tex
в
epub
?
Что такое ePub?
EPUB (electronic publication) — один из форматов электронных книг. Вообще, книга формата ePub является по сути своей документом XHTML, в котором содержится сам текст + XML с описанием книги. Последний может выводить оглавление с навигационными ссылками.
Конвертация tex
в epub
состоит из двух действий:
- конвертировать книгу в XHTML
- запаковать XHTML в epub-файл
Переводим tex в XHTML
В Linux доступны две отличные программы для преобразования чего угодно во что
угодно: это pandoc и calibre. Но мы пойдём другим путём и вместо того, чтобы
тащить многочисленные библиотеки Qt (calibre) или же over 90 пакетов haskell
(pandoc) установим небольшую консольную программу с наименованием tth
:
# emerge -apv tth
С TtH перегнать книгу в XHTML не составит труда:
$ tth -w2 -e2 -u my_book.tex
Эта команда создаст файл с расширением .html
в текущей директории.
- флаг
-w2
гарантирует получение XHTML в выводе - флаг
-e2
встраивает графику из tex-файла - флаг
-u
обеспечивает поддержку юникода, по-умолчанию используется iso-8859-1 - справку можно вызвать командой
tth -?
Это всё, первый шаг сделан.
Включаем метаданные
Для этого установим ещё одну небольшую программу, требующую минимального количества
зависимостей (хотя и оно тянет qtgui, qtwebkit
, намекая на пристрастия разработчиков),
а именно sigil
:
# emerge -apv sigil
Теперь откройте sigil и выбирайте вашу книгу, внести необходимые изменения и сохраните их. Какие изменения? Дело в том, что нам нужно удостовериться в правильности генерируемого XML-файла. В частности оглавления и валидации.
Оглавление
Должно быть, ваш tex-документ уже содержит созданное автоматически содержание
книги, не так ли? Если оно сгенерировано самим LaTeX, TtH переведёт его в XHTML
без указаний сверху. А вот TOC (Table of Content) файл для ePub должен быть сгенерирован
отдельно. Для этого воспользуйтесь командой меню Generate TOC from headings
,
здесь всё просто.
Валидация документа
Следующим шагом будет проверка валидации: Tools -> Validate ePub
. К несчастью,
получаем две ошибки:
- "The < language > element is missing"
- "The < title > element is missing"
То есть не указан язык документа и его название. Дабы исправить это досадное
недоразумение отправляемся к настройкам Tools -> Meta data
и вносим
соответствующие правки.
Когда закончите с этим, проверьте валиден ли документ ещё раз. Если всё в порядке, вы должны получить сообщение "No problems found".
В принципе для второго этапа может подойти и какой-нибудь онлайн-конвертер, хотя автору не попадался ни один, который генерировал бы корректное содержание для книги epub.