Преобразование Markdown в LaTeX с пользовательской преамбулой с использованием Pandoc

14535
John

Я знаю, что могу использовать команды -Hили --include-in-headerдля включения пользовательской преамбулы в сгенерированный вывод. Проблема в том, что Pandoc включает мою преамбулу, но ставит перед ней другую преамбулу:

\documentclass \usepackage \usepackage \ifxetex \usepackage \defaultfontfeatures \else \ifluatex \usepackage \defaultfontfeatures \else \usepackage[utf8] \fi \fi \ifxetex \usepackage[setpagesize=false, % page size defined by xetex unicode=false, % unicode breaks when used with xetex xetex] \else \usepackage[unicode=true] \fi \hypersetup} \setlength{\parindent} \setlength{\parskip} \setlength{\emergencystretch} % prevent overfull lines \setcounter  [... my preamble ...] 

Я знаю, что это преамбула LaTeX по умолчанию ( default.latex), которую Pandoc загружает из своей templatesпапки. То же самое происходит, когда я использую --include-after-bodyс \end.

Это команда, которую я использую:

pandoc -o output.tex input.txt --include-before-body=header.tex --include-after-body=footer.tex 
14

1 ответ на вопрос

19
Nathan Grigg

Как вы обнаружили, --include-in-headerдобавляет текст в преамбулу, указанную в шаблоне LaTeX Пандока. Есть несколько способов сделать то, что вы пытаетесь сделать.

  1. Если вам нужна полностью настраиваемая преамбула, вам нужно указать файл шаблона, используя

    pandoc -o output.tex --template=FILE input.txt 

    Шаблон может иметь переменные (такие как $title$и, что более важно, $body$) и условные выражения. Если вы хотите получить вдохновение, вы можете проверить шаблон по умолчанию с помощью команды

    pandoc -D latex 
  2. Если вы хотите использовать новый шаблон раз и навсегда, вы можете создать его, вызвать его default.latexи поместить в каталог шаблонов ( ~/.pandoc/templates/на компьютере с Unix). В этом случае вам нужно указать, что вы хотите использовать шаблон, позвонив

    pandoc -o output.tex --standalone input.txt 
  3. Если вы не хотите иметь дело с шаблонами, вы можете просто запустить

    pandoc -o output.tex input.txt 

    и результатом будет чистый документ LaTeX, то есть без преамбулы, \beginили \end. Затем вы можете добавить преамбулу самостоятельно. Обратите внимание, что любые метаданные (название, автор) будут потеряны при использовании этого метода.

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