Pandoc

3 декабря 2016 (00:00:00)

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

Если совсем коротко, то Pandoc — это универсальный текстовый конвертор. Очень удобная и полезная штука, сейчас попробуем разобрать почему.

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

Ценная технология, да. Но при более-менее тесном знакомстве с ней возникает ряд вопросов.

Во-первых, почему только в HTML? А если хочется сохранить подготовленный текст в той же красивой разметке для оффлайн-применения? И чтобы одним файлом? В PDF, например, или даже в Word'овском (буэ!) формате?

Во-вторых, почему именно Markdown? Есть ведь и другие стандарты легковесной разметки, вот хотя бы с ходу можно назвать вполне годный TextToTags. Менее распространённые, факт, но мало ли кому что удобнее?

В-третьих, редакторы с поддержкой Markdown хоть и имеются, но как быть, если кто-то хочет пользоваться другим, гораздо более привычным ему, но не поддерживающим этот язык редактором?

Так вот, Pandoc является ответом на все эти вопросы. Он понимает кучу форматов на входе и выходе. Из практически любого «простотекстового» представления может сделать хоть HTML, хоть PDF (с одним уточнением, о котором чуть ниже), хоть (буэ!) Word, хоть даже электронную книгу в FB2 (буээээ!!) или EPUB.

Кроме того, он бесплатен, существует под все хоть сколько-нибудь распространённые платформы и является внешним инструментом — это не редактор, а именно конвертор. То есть работа над текстом происходит в вашем любимом и привычном редакторе, а дальше вы говорите, например,

pandoc -f markdown MyText.txt -t pdf -o MyText.pdf

Через весьма непродолжительное время рядом с вашим файлом образуется его красивое PDF-представление со всеми изысками вёрстки и переносами. Здесь ключ -f задаёт входной формат текста, ключ -t формат результата, а ключ -o определяет имя файла, в который нужно результат записать (если не указано, результат уйдёт на стандартный вывод и его можно перенаправить, например, в буфер вот так). Подробности можно найти в обширной документации.

Если ваш любимый текстовый редактор позволяет выполнять вызовы внешних программ применительно к редактируемым файлам, то вам очень повезло — достаточно настроить эти вызовы со всеми их ключами ровно один раз и затем просто нажимать кнопочки для преобразований. Если такие вызовы не поддерживаются — тоже ничего страшного, их можно настроить в файловом менеджере (FAR отлично подойдёт!) или, на совсем уж худой конец, подготовить пакетные файлы.

Несколько важных нюансов.

  • Pandoc умеет работать не только с файлами на диске, но и со ссылками. То есть можно сохранять и преобразовывать статьи с любимых сайтов… хотя, скорее всего, результат понадобится доводить до ума руками.
  • Часть преобразований (например, в PDF) выполняется посредством вызова pdfLaTeX или его юникодовской инкарнации XeLaTeX. Входит в состав любой современной TeX-дистрибуции, хоть платной, хоть бесплатной.
  • Поддерживается конвертация с шаблонами и управляющими переменными. Для их полноценного использования придётся поработать со специальным макроязыком, но зато на выходе можно получать что угодно с любыми желаемыми нюансами.
  • Поддерживается работа с математическими формулами через тот же LaTeX. То есть — формулы любой красоты и сложности. Вот здесь, например, посмотрите — этот материал полностью набран в обычном текстовом редакторе, затем сконвертирован при помощи Pandoc, и его публикация заняла буквально пару минут.

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