Изменение размера или стиля шрифта Pandoc monospace в выводе DOCX

при использовании блоков кода markdown результирующий размер шрифта monospace слишком велик в документах DOCX.

Я могу настроить размер шрифта абзацев, указав пользовательский шаблон.файлы DOCX file, но по какой-то причине сгенерированные блоки кода не используют стиль абзаца, в отличие от большинства других сгенерированных выходных данных.

есть ли способ, чтобы:

  • сделать блоки кода использовать определенный стиль, чтобы я мог переопределить стиль в шаблон.файлы DOCX

  • переопределить шрифт monospace, используемый в представлении DOCX блоков кода?

обновлено для уточнения: Я использую внешнюю ссылку.docx на основе ранее созданного docx, как описано в комментариях. Изменяя стили для heading1 и т. д., Я имею разумный контроль над выходом. Проблема в том, что сгенерированный моноширинный текст не использует именованный стиль, он просто "нормальный" с некоторыми изменениями. Так У меня нет способа изменить его в шаблоне, если я также не изменю размер всего "нормального" текста.

2 ответов


Pandoc, при создании документов DOCX (MS Word) использует ссылка.файлы DOCX. Это должно быть дано в командной строке Pandoc. Затем Pandoc извлекает все стили по умолчанию и параметры форматирования (если они не используют пользовательские имена) из этого справочного DOCX и применяет их к сгенерированному DOCX:

    pandoc -t docx -o out.docx in-markdown.txt --reference-docx=my.docx

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


для ODT (LibreOffice/OpenOffice/OpenDocument) в дополнение к reference.odt (который вы можете использовать с --reference-odt флаг), есть также шаблон. Шаблон по умолчанию можно распечатать с помощью pandoc -D odt, затем измените его и используйте его с pandoc -o out.odt --template=modifiedTemplate.odt


последний совет: используйте последнюю версию Pandoc! (Ток 1.13.2.1. В конце этого месяца ожидается 1.14.) Его поддержка DOCX значительно улучшилась в последних выпусках.


используя Pandoc 1.17.2 и Word 2013 я, наконец, нашел решение, кажется, более поздние версии Pandoc использует связанный стиль, который по умолчанию скрыт в Word.

Шаг 1: Создайте пользовательский файл шаблона с помощью

pandoc -o template_1.17.2.docx test.md

где тест.md включает исходный код и все другие стили, которые вы можете изменить. Например:

~~~~
this is preformatted source using style "Source Code"
~~~~

~~~ xml
<this> is preformatted source using "KeyworkTok" and "NormalTok"</this>
~~~

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

измените этот стиль, как вы хотите, и сохраните шаблон. Затем создайте документ на основе этого шаблона:

pandoc --reference-docx=template_1.17.2.docx -o mydoc.docx mydoc.md

Теперь вы должны увидеть источник, правильно отформатированный в mydoc.

@LinusR предполагает, что другой источник стили использует разные стили макета. В качестве примера я добавил XML. Форматированный XML будет использовать "KeywordTok"и " NormalTok".