Conversão de Markdown para LaTeX com um preâmbulo personalizado usando Pandoc

16

Eu sei que posso usar os comandos -Hou --include-in-headerpara incluir um preâmbulo personalizado na saída gerada. O problema agora é que Pandoc inclui meu preâmbulo, mas coloca outro preâmbulo à sua frente:

\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 ...]

Eu sei que este é o preâmbulo padrão do LaTeX ( default.latex) que o Pandoc carrega de sua templatespasta. A mesma coisa acontece quando eu estou usando --include-after-bodycom \end{document}.

Este é o comando que estou usando:

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

Respostas:

20

Como você descobriu, --include-in-headeradiciona texto ao preâmbulo especificado no modelo LaTeX da Pandoc. Existem algumas maneiras de fazer o que você está tentando fazer.

  1. Se você quiser um preâmbulo completamente personalizado, precisará especificar um arquivo de modelo usando

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

    O modelo pode ter variáveis ​​(como $title$e, mais importante $body$) e condicionais. Se você quiser alguma inspiração, verifique o modelo padrão usando o comando

    pandoc -D latex
    
  2. Se você deseja usar um novo modelo de uma vez por todas, você pode criar um, chamá-lo default.latexe colocá-lo no diretório de modelos ( ~/.pandoc/templates/em uma máquina unix). Nesse caso, você precisa especificar que deseja usar um modelo chamando

    pandoc -o output.tex --standalone input.txt
    
  3. Se você preferir não lidar com modelos, basta executar

    pandoc -o output.tex input.txt
    

    e o resultado será um documento simples do LaTeX, isto é, sem um preâmbulo \begin{document}ou \end{document}. Então você pode adicionar um preâmbulo. Observe que todos os metadados (título, autor) serão perdidos ao usar esse método.

Detalhes completos sobre como criar e usar modelos podem ser encontrados na excelente página de manual do Pandoc .

Nathan Grigg
fonte