Conversión de Markdown a LaTeX con un preámbulo personalizado usando Pandoc

16

Sé que puedo usar los comandos -Ho --include-in-headerpara incluir un preámbulo personalizado en la salida generada. El problema ahora es que Pandoc incluye mi preámbulo pero pone otro preámbulo al 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 ...]

Sé que este es el preámbulo predeterminado de LaTeX ( default.latex) que Pandoc carga desde su templatescarpeta. Lo mismo sucede cuando estoy usando --include-after-bodycon \end{document}.

Este es el comando que estoy usando:

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

Respuestas:

20

Como ha descubierto, --include-in-headeragrega texto al preámbulo especificado en la plantilla LaTeX de Pandoc. Hay algunas maneras de hacer lo que está tratando de hacer.

  1. Si desea un preámbulo completamente personalizado, debe especificar un archivo de plantilla utilizando

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

    La plantilla puede tener variables (como $title$y, lo que es más importante $body$) y condicionales. Si desea algo de inspiración, puede consultar la plantilla predeterminada con el comando

    pandoc -D latex
    
  2. Si desea usar una nueva plantilla de una vez por todas, puede hacer una, llamarla default.latexy ponerla en el directorio de plantillas ( ~/.pandoc/templates/en una máquina Unix). En este caso, debe especificar que desea utilizar una plantilla llamando

    pandoc -o output.tex --standalone input.txt
    
  3. Si prefiere no tratar con plantillas, simplemente puede ejecutar

    pandoc -o output.tex input.txt
    

    y el resultado será un simple documento de LaTeX, es decir, sin preámbulo, \begin{document}o \end{document}. Luego puede agregar un preámbulo usted mismo. Tenga en cuenta que cualquier metadato (título, autor) se perderá al usar este método.

Los detalles completos sobre cómo hacer y usar plantillas se pueden encontrar en la excelente página de manual de Pandoc .

Nathan Grigg
fuente