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

16

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

\documentclass{article}
\usepackage{amssymb,amsmath}
\usepackage{ifxetex,ifluatex}
\ifxetex
  \usepackage{fontspec,xltxtra,xunicode}
  \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
\else
  \ifluatex
    \usepackage{fontspec}
    \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase}
  \else
    \usepackage[utf8]{inputenc}
  \fi
\fi
\ifxetex
  \usepackage[setpagesize=false, % page size defined by xetex
              unicode=false, % unicode breaks when used with xetex
              xetex]{hyperref}
\else
  \usepackage[unicode=true]{hyperref}
\fi
\hypersetup{breaklinks=true, pdfborder={0 0 0}}
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt plus 2pt minus 1pt}
\setlength{\emergencystretch}{3em}  % prevent overfull lines
\setcounter{secnumdepth}{0}

[... my preamble ...]

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

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

pandoc -o output.tex input.txt --include-before-body=header.tex --include-after-body=footer.tex
Джон
источник

Ответы:

20

Как вы обнаружили, --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{document}или \end{document}. Затем вы можете добавить преамбулу самостоятельно. Обратите внимание, что любые метаданные (название, автор) будут потеряны при использовании этого метода.

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

Натан Григг
источник