Конвертируем ePub из LaTeX

TeX и LaTeX отлично подходят для создания разного рода электронных книг. Книги формата .pdf создаются легко и, более того, у LaTeX имеется нативная поддержка данного формата. Как уже не раз было показано ранее, следует лишь ввести команду для сборки pdf-файла из tex-файла, например:

$ pdflatex my_book.tex
1

Но как обстоят дела с другими форматами? Многие имеют в своём распоряжении смартфоны или планшеты и, разумеется, читают с экранов этих устройств книги. В метро, по пути на работу, в парке, выгуливая собаку, да мало ли где ещё. Но порази меня гром, читать pdf с подобных девайсов совершенно неудобно.

Gadgets

Итак, что такое ePub и как конвертировать вашу собственную книгу из tex в epub?

# Что такое ePub?

EPUB (electronic publication) — один из форматов электронных книг. Вообще, книга формата ePub является по сути своей документом XHTML, в котором содержится сам текст + XML с описанием книги. Последний может выводить оглавление с навигационными ссылками.

Конвертаци tex в epub состоит из двух действий:

  1. конвертировать книгу в XHTML
  2. запаковать XHTML в epub-файл

# Переводим tex в XHTML

В Linux доступны две отличные программы для преобразования чего угодно во что угодно: это pandoc и calibre. Но мы пойдём другим путём и вместо того, чтобы тащить многочисленные библиотеки Qt (calibre) или же over 90 пакетов haskell (pandoc) установим небольшую консольную программу с наименованием tth:

# emerge -apv tth
1

С TtH перегнать книгу в XHTML не составит труда:

$ tth -w2 -e2 -u my_book.tex
1

Эта команда создаст файл с расширением .html в текущей директории.

  • флаг -w2 гарантирует получение XHTML в выводе
  • флаг -e2 встраивает графику из tex-файла
  • флаг -u обеспечивает поддержку юникода, по-умолчанию используется iso-8859-1
  • справку можно вызвать командой tth -?

Это всё, первый шаг сделан.

# Включаем метаданные

Для этого установим ещё одну небольшую программу, требующую минимального количества зависимостей (хотя и оно тянет qtgui, qtwebkit, намекая на пристрастия разработчиков), а именно sigil:

# emerge -apv sigil
1

Теперь откройте sigil и выбирайте вашу книгу, внести необходимые изменения и сохраните их. Какие изменения? Дело в том, что нам нужно удостовериться в правильности генерируемого XML-файла. В частности оглавления и валидации.

# Оглавление

Должно быть, ваш tex-докмент уже содержит созданное автоматически содержание книги, не так ли? Если оно сгенерировано самим LaTeX, TtH переведёт его в XHTML без указаний сверху. А вот TOC (Table of Content) файл для ePub должен быть сгенерирован отдельно. Для этого воспользуйтесь командой меню Generate TOC from headings, здесь всё просто.

ePub

# Валидация документа

Следующим шагом будет проверка валидации: Tools->Validate ePub. К несчастью, получаем две ошибки:

  • "The < language > element is missing"
  • "The < title > element is missing"

То есть не указан язык документа и его название. Дабы исправить это досадное недоразумение отправляемся к настройкам Tools->Meta data и вносим соответствующие правки.

Когда закончите с этим, проверьте валиден ли документ ещё раз. Если всё в порядке, вы должны получить сообщение "No problems found".

В принципе для второго этапа может подойти и какой-нибудь онлайн-конвертер, хотя автору не попадался ни один, который генерировал бы корректное содержание для книги epub.

2014  TeX