使用 Pandoc 使用自定义序言将 Markdown 转换为 LaTeX

Joh*_*ohn 16 latex conversion pandoc

我知道我可以使用-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 ...]
Run Code Online (Sandbox Code Playgroud)

我知道这是default.latexPandoc 从其templates文件夹加载的默认 LaTeX 序言 ( ) 。当我使用--include-after-bodywith时也会发生同样的事情\end{document}

这是我正在使用的命令:

pandoc -o output.tex input.txt --include-before-body=header.tex --include-after-body=footer.tex
Run Code Online (Sandbox Code Playgroud)

Nat*_*igg 22

正如您所发现的,--include-in-header将文本添加到 Pandoc 的 LaTeX 模板中指定的序言中。有几种方法可以做你想做的事。

  1. 如果您想要完全自定义的前导码,则需要使用指定模板文件

    pandoc -o output.tex --template=FILE input.txt
    
    Run Code Online (Sandbox Code Playgroud)

    模板可以有变量(例如$title$和,更重要的是,$body$)和条件。如果你想要一些灵感,你可以使用命令查看默认模板

    pandoc -D latex
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果你想一劳永逸地使用一个新模板,你可以制作一个,调用它default.latex,然后把它放在 templates 目录(~/.pandoc/templates/在 unix 机器上)。在这种情况下,您需要通过调用来指定要使用模板

    pandoc -o output.tex --standalone input.txt
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果您根本不想处理模板,则可以运行

    pandoc -o output.tex input.txt
    
    Run Code Online (Sandbox Code Playgroud)

    结果将是一个裸露的 LaTeX 文档,即没有序言,\begin{document}或者\end{document}. 然后你可以自己添加一个序言。请注意,使用此方法时,任何元数据(标题、作者)都将丢失。

关于如何制作和使用模板的完整细节可以在Pandoc 的优秀手册页中找到