Markdown to docx, включая сложный шаблон
Я автоматизировал свою сборку для преобразования файлов Markdown в файлы DOCX с помощью Pandoc. Я даже использовал справочный документ для окончательного оформления документа. Команда, которую я использую:
pandoc -f markdown -t docx --data-dir=docs/rendering/ mydoc.md -o mydoc.docx
reference.docx
подбирается Pandoc из docs/rendering
, а Pandoc отображает mydoc.docx
с теми же стилями, что и ссылочный doc.
Однако reference.docx
содержит больше, чем просто стилей. Он содержит кодовые логотипы, преамбулу и т.д.
Как я могу автоматизировать слияние содержимого Markdown с стилями и контентом reference.docx
. Мое решение должно работать на Linux.
Ответы
Ответ 1
Обновить
Используйте версию, предложенную пользователем Christian Long:
pandoc -t latex mydoc.md | pandoc -f latex --data-dir=docs/rendering/ -o mydoc.docx
Я знаю, что это поздно, но я буду предполагать, что люди все еще ищут решения для этих трех лет после первоначального вопроса - я знаю, что был.
Мое решение состояло в том, чтобы использовать LaTeX в качестве посредника между markdown и docx (на самом деле, я конвертировал из режима org, но с той же разницей). Так что в вашем случае я считаю, что однострочное решение будет:
pandoc -f markdown -t latex -o mydoc.tex mydoc.md && \
pandoc -f latex -t docx --data-dir=docs/rendering/ -o mydoc.docx mydoc.tex
Что может приблизить вас к вашей цели. Конечно, у Пандока есть около ста аргументов, с которыми он может справиться, и, вероятно, есть способы сделать это красивее. Он также получил довольно много обновлений с тех пор, как вы впервые опубликовали свой вопрос.
Ответ 2
В идеале PanDoc будет вырабатывать эту функцию но в ближайшее время она не выглядит вероятной.
Я не знаю о каких-либо инструментах, которые будут выполнять эту работу напрямую, но вы, вероятно, можете вернуться к объединению reference.docx
и созданного вами PanDoc mydoc.docx
в коде.
Формат .docx - это ZIP-архив (в основном) файлов XML. Наиболее важным является word/document.xml
. Если вы используете инструмент XML, чтобы взять (большую часть) из document.xml
из одного файла и вставить его в другой, у вас будет нечто более близкое к тому, что вам нужно.
Я мог бы взломать пример, например, в Ruby, если это поможет иллюстрации.
Ответ 3
В идеале вы можете использовать собственный шаблон docx, но pandoc пока не поддерживает его. Файл reference.docx
позволяет только встроить встроенные стили во вновь созданные файлы docx.
К счастью, вы можете приблизиться к этому, используя odt вместо docx. Вы можете довольно легко изменить шаблон OpenDocument по умолчанию, чтобы включить свои пользовательские логотипы, преамбулу и другие материалы. Используйте специальный шаблон в сочетании с файлом reference.odt
, чтобы получить все стили и пользовательский контент.
Как только у вас есть файл в формате odt, вы можете использовать любое количество инструментов командной строки для преобразования из odt в docx. Например, в Linux вы можете запускать
libreoffice --invisible --convert-to docx test.odt
Или в OS X:
/Applications/LibreOffice.app/Contents/MacOS/soffice.bin --invisible --convert-to docx test.odt
Ответ 4
ОБНОВЛЕНИЕ: эта функция не завершена
Я использовал его в некоторых сложных шаблонах и нашел, что он очень хорошо отображает шрифты, логотипы компаний и т.д. Но при переходе к .docx ->.docx мне пришлось вручную применять стили заголовков к разрывам глав/разделов. Шрифт был правильным, но раздел не был. Я попробую .md ->.docx дальше.
Эта функция теперь доступна в Pandoc, как описано здесь:
Уценка до docx, включая сложный шаблон
По ссылке выше:
pandoc input --reference-docx=my-reference.docx -o out.docx
где my-reference.docx
(не .dotx
) может быть:
- текущая папка ИЛИ
- папка, которая определяется --data-dir ИЛИ
- системная папка по умолчанию для data-dir, которая
- $ HOME/.pandoc в UNIX-подобных системах
- C:\Documents And Settings\ИМЯ ПОЛЬЗОВАТЕЛЯ \Application Data\pandoc в Windows XP, вы больше не должны использовать
- C:\Users\USERNAME\AppData\Roaming\pandoc в Windows Vista или более поздней версии.