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.