Pandoc: конвертируем текстовую разметку

Конвертер текстовых файлов Pandoc нельзя отнести к классу обязательных программ для каждого пользователя. Но если нужно конвертировать файлы из одного формата разметки в другой, то Pandoc - это, как говорится, универсальный швейцарский армейский нож


Языки разметки

С языками разметки текста сталкиваются практически все пользователи, а многие даже с ними и работают. Текстовый документ, написанный с использованием языка разметки, содержит не только сам текст, но и дополнительную информацию о различных его участках - например, указание на заголовки, списки и т. д. Текстовую разметку ещё часто называют вёрсткой - например, HTML-вёрстка.

С языком разметки мы сталкиваемся, когда, например, используем BB-код при создании сообщения на форумах. И форматов разметки очень много: типографических - TeX, PostScript, PDF; офисных для файлов Microsoft Word и OpenOffice; браузерных - HTML, XML, SVG; почтовых - Markdown.

И бывает ситуации, когда текст из одного формата разметки нужно конвертировать в другой. Для этой цели и существует консольная программа-конвертер Pandoc.

Эта программа может принимать и преобразовывать следующие форматы друг в друга: Markdown, reStructuredText, Textile, HTML, DocBook, LaTeX.

Но выходных форматов, в которые можно конвертировать вышеперечисленные форматы, гораздо больше:

  • HTML-форматы XHTML, слайды Slidy, Slideous, S5;
  • офисные форматы: Microsoft Word docx, OpenOffice/LibreOffice ODT, OpenDocument XML;
  • электронные книги EPUB;
  • техническая документация DocBook, GNU TexInfo, Groff man pages
  • TeX-разметка: ConTeXt, слайды LaTeX Beamer;
  • простая разметка текста: AsciiDoc, MediaWiki, Emacs Org-Mode.

В отличие от большинства инструментов для конвертирования разметки, которые используют регулярные выражения для замены, Pandoc имеет модульную конструкцию. Программа состоит из множества отдельных модулей, которые делают разбор текста в собственное представление документа, из которого потом разметка и преобразуется в целевой формат.

Pandoc включает в себя библиотеки Haskell и автономные программы командной строки. Pandoc - это свободное программное обеспечение, распространяемое по лицензии GPL. Автор Джон Макфарлейн.

Pandoc - кроссплатформенное ПО. Существуют версии для Linux, Windows, Mac OS. В зависимости от ОС установочный файл "весит" 4-6 мегабайт. Для пользователей Linux приложение имеется практически во всех официальных репозиториях.

Как и положено, у проекта есть свой сайт и демостраница, где можно ознакомиться с базовыми функциями приложения.

Главный недостаток программы в отсутствии руководства (man) на русском языке. Pandoc имеет множество отдельных опций для разных форматов разметки, рассмотреть которые в отдельной статье затруднительно. Надеюсь, эта статья послужит для кого-нибудь стимулом создания для Pandoc русской справки man.


Основные команды

Ниже рассмотрим самые основные параметры и опции Pandoc, В остальных случаях желательно познакомится с довольно объёмным руководством на сайте или через руководство man.

Pandoc - программа консольная, и ей требуется передавать в качестве параметров имя входного файла, а и при помощи опции "-о" - целевого файла. Программа может понимать входной и выходной формат разметки по расширению файла.

pandoc input.md -o output.html

Однако можно указать входной и выходной форматы при помощи специальных опций. Выходной формат задаётся опциями "-t" или "--to", а входной - опциями "-f" или "--from". Например, следующая команда перекодирует файл input.md с разметкой Markdown в файл output.txt с html-разметкой

pandoc input.md -o output.txt -t html

Если опции форматов или расширения файлов не указаны или не известны для Pandoc, то по умолчанию программа считает форматом входного файла Markdown, а выходного - HTML.

Также Pandoc может работать для некоторых форматов в интерактивном режиме, когда используется стандартный вывод на экран терминала. Выход на стандартный вывод отключен для odt, docx, и epub форматов.

Вместо локальных файлов могут использоваться абсолютные адреса URI в интернет. В этом случае Pandoc будет скачивать содержимое с помощью HTTP:

pandoc -f html -t markdown http://www.fsf.org

Следует не забывать, что Pandoc использует UTF-8 кодировку для входа и выхода. Поэтому, если кодировка не UTF-8, нужно сначала использовать отдельные утилиты для перекодировки - например, iconv.

Pandoc может конвертировать форматированные тексты в файл формата pdf. Но для этого программа использует внешние приложения для получения PDF. Например, для Windows можно использовать TeX-движок MiKTeX, а для Mac OS X - BasicTeX. Для создания файла PDF просто укажите выходной файл с pdf расширением. Pandoc создаст файл LaTeX и использует pdflatex установленного PDF-движка.

pandoc input.txt -o output.pdf


Параметры форматирования

В Pandoc можно управлять многими параметрами форматирования языков разметки. Повторим, что в этой статье приведены только некоторые примеры таких параметров.

Например, при помощи опции "--strict" можно указать строгий синтаксис для входного формата Markdown, где не используются дополнительные расширения этого языка разметки.

При помощи опции "-R" непереводимый код вводного формата HTML и LaTeX не будет игнорироваться, и непереведённые теги HTML или команды LaTeX будут вставляться в выходной файл как есть.

Опция "-S" преобразуют входные форматы Markdown или Textile в типографский правильный вывод. Например, три подряд коротких тире будут преобразованы в длинное тире и т.д.

Для выходного файла форматов HTML или LaTeX при помощи опций "-H", "-B", "-A" можно вставлять содержимое внешних файлов соответственно в конце заголовка, в тело документа или в конец документа. Пример

pandoc input.txt -H footer.html -o output.html

При помощи опции "-c URL" можно добавить в выходной HTML-файл ссылку на css-файл.


Шаблоны

Pandoc имеет развитую систему шаблонов. Это такие куски кода-разметки, которые программа будет добавлять в начале и конце документа дополнительно к конвертируемому тексту. Например, шаблон для HTML-файла включает теги DOCTYPE, HEAD, начальный и конечный тег BODY и HTML.

Чтобы включить шаблон в конвертируемый файл, нужно использовать опцию "-s". Другими словами при помощи этой опции создаётся полноценный формат со всеми дополнительными тегами разметки.

pandoc input.txt -s -o output.html

Поглядеть код вставляемого по умолчанию шаблона можно командой

pandoc -D FORMAT

где FORMAT - это имя выбранного формата. Можно создавать свои собственные шаблоны и подключать их опцией "--template". Например,

pandoc input.md -s --template=mytemplate.tex -o output.pdf


Математика

Интересной особенностью Pandoc является поддержка конвертирования математических формул из разметки LaTeX в представление HTML. Для вывода математики в HTML используются на выбор несколько специальных математических движков на основе MathML, Java-Script, онлайн-сервисов, код которых будет вставлен в сконвертированный HTML-файл.

Для конвертирования математических формул можно использовать следующие опции:

  • --mathml - преобразует формулы LaTeX в разметку MathML;
  • --webtex - преобразует формулы LaTeX при помощи онлайн-сервиса Google Chart API;
  • --mathjax - преобразует формулы LaTeX при помощи расширения MathJax для MediaWiki;
  • --latexmathml - преобразует формулы LaTeX при помощи JS-библиотеки Latexmathml.

Осталось ещё познакомиться с возможностями Pandoc на каком-нибудь практическом примере. И такой практический пример мы рассмотрим в следующей статье, создавая при помощи этой программы полноценную электронную книгу в формате EPUB.

Михаил АСТАПЧИК

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя mike

Лучшая статья в выпуске! 

Прочитав, дважы кликнул и набрал pandoc, получилось sudo apt-get install pandoc

Неск. секунд, и пакет стал. Tongue Out  Большое спасибо автору! Люблю офицерские ножи.