Написание и редактирование текстовых документов относится к числу наиболее распространенных действий, для которых мы используем наши (настольные) компьютеры. При этом используются разные способы - от "голого" текстового редактора вроде Vim до графических приложений вроде Open/Libre Office или облачных сервисов, доступных через веб-браузер, вроде Google Docs.
К нашему сожалению, каждый инструмент поставляется со своим собственным форматом документов, а также с набором других поддерживаемых форматов. Качество конвертации между этими форматами сильно различается, что может привести к разочарованию при пересечении границ форматов.
В этой статье мы рассмотрим конвертацию между Markdown и DOCX - родным форматом документов Microsoft Word, который используется с 2007 года. Вам может быть интересно, почему энтузиаст Markdown и Asciidoc (вроде меня) занимается этим делом. Сотрудничество с группой других авторов может привести к тому, что один или несколько участников попросят DOCX в качестве выходного формата. Не подведите никого и узнайте, какие ограничения существуют и как сделать так, чтобы все члены группы были довольны.
Что такое Markdown?
Как уже говорилось в статье "Введение в Markdown" , Markdown был задуман как простое преобразование текста в HTML. Идея заключалась в том, чтобы сделать написание веб-страниц, документации и особенно записей в блогах таким же простым, как написание электронного письма. На сегодняшний день это де-факто синоним класса легких языков описания разметки, и можно считать, что цель достигнута.
Markdown использует синтаксис форматирования обычного текста. В соответствии с подходом, аналогичным HTML, ряд маркеров обозначает заголовки, списки, изображения и ссылки в вашем тексте. Несколько строк ниже иллюстрируют базовый документ, содержащий два заголовка (первого и второго уровня), а также два абзаца и окружение в виде списка.
1 2 3 4 5 6 | # Recommended Places To Visit In Europe ## France This is a selection of places: * Paris (_Ile de France_) * Strasbourg (_Alsace_) For a proper visit plan about a week. |
Преобразование в DOCX
Чтобы преобразовать документ Markdown в DOCX, воспользуйтесь инструментом pandoc. Pandoc - это библиотека на языке Haskell, которая описывает себя как "универсальный конвертер документов" или "швейцарский армейский нож для конвертации документов". Она доступна для различных платформ, таких как Linux, Microsoft Windows, Mac OS X и BSD. Pandoc обычно входит в пакет дистрибутивов Linux, таких как Debian GNU/Linux, Ubuntu и CentOS.
Простой вызов преобразования выглядит следующим образом:
1 | pandoc -o test.docx test.md |
Первый параметр "-o" указывает на выходной файл, за ним следует имя файла (test.docx). Расширение файла помогает pandoc определить нужный выходной формат. Второй параметр называет входной файл - в нашем случае это просто "test.md".
Длинная версия команды, показанная выше, содержит два параметра "-f markdown" и "-t docx". Первый из них сокращает термин "flavour" и описывает формат входного файла. Второй делает то же самое для выходного файла и сокращает "-to".
Полная команда выглядит следующим образом:
1 | pandoc -o test.docx -f markdown -t docx test.md |
Открыв преобразованный файл с помощью Microsoft Word, вы получите следующий результат:
Для различных текстовых элементов Pandoc использует таблицы стилей. Это позволяет вам впоследствии корректировать эти элементы в соответствии с вашими потребностями во всем документе. В новых версиях Pandoc есть и обратная возможность - вы можете преобразовать файл DOCX в Markdown следующим образом:
1 | pandoc -o test.md test.docx |
Сгенерированный файл будет иметь следующее содержание:
1 2 3 4 5 6 7 8 | Recommended Places To Visit In Europe ===================================== France ------ This is a selection of places: - Paris (*Ile de France*) - Strasbourg (*Alsace*) For a proper visit plan about a week. |
Полезные опции командной строки
Список опций Pandoc довольно длинный. Следующие из них помогут вам получить лучшие результаты и значительно облегчат жизнь:
- -P (длинная версия -preserve-tabs): Сохранять табуляции вместо того, чтобы преобразовывать их в пробелы. Это полезно для блоков кода с отступами, которые являются частью вашего текста.
- -S (длинная версия -smart): Производить типографски корректный вывод.
- Эта опция исправляет кавычки, дефисы/тире, а также многоточия ("..."). После некоторых аббревиатур, таких как "Mr.", добавляются дополнительные пробелы, не разрывающие текст.
- -track-changes=value: Определяет, что делать со вставками, удалениями и комментариями, которые создаются с помощью функции Microsoft Word "Отслеживание изменений". Значение может быть либо принято, либо отклонено, либо все, чтобы включить или удалить изменения, внесенные в документ. В результате получается плоский файл.
Для получения дополнительной информации ознакомьтесь с документацией и страницей руководства Pandoc.
Заключение
Преобразование между Markdown и DOCX больше не является загадкой. Она выполняется в несколько шагов и работает очень хорошо. Счастливого взлома