Конвертер текстовых файлов 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.
Михаил АСТАПЧИК
Комментарии
Лучшая статья в выпуске!
Прочитав, дважы кликнул и набрал pandoc, получилось sudo apt-get install pandoc