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

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

我知道我可以使用-H--include-in-header命令在生成的输出中包含自定义前导码。现在的问题是潘多克包括我的序言,但在它前面放了另一个序言:

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

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

这是我正在使用的命令:

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

答案1

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

  1. 如果你想要一个完全自定义的序言,你需要使用指定模板文件

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

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

    pandoc -D latex
    
  2. 如果您想一劳永逸地使用新模板,您可以创建一个模板,调用它default.latex,并将其放在 templates 目录中(~/.pandoc/templates/在 unix 机器上)。在这种情况下,您需要通过调用来指定要使用模板

    pandoc -o output.tex --standalone input.txt
    
  3. 如果你不想处理模板,你可以直接运行

    pandoc -o output.tex input.txt
    

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

有关如何制作和使用模板的完整详细信息,请参阅Pandoc 的出色手册页

答案2

另请参阅 tex.stackexchange 上的这个答案使用 Pandoc 添加页眉和页脚

pandoc 1.12.x而且是新的YAML 元数据功能你可以在 markdown 文档中添加所需的所有信息和所有 LaTeX 代码,如下所示:

---
title: Test
author: Author Name
header-includes: |
    \usepackage{fancyhdr}
    \pagestyle{fancy}
    \fancyhead[CO,CE]{This is fancy}
    \fancyfoot[CO,CE]{So is this}
    \fancyfoot[LE,RO]{\thepage}
abstract: This is a pandoc test . . . 
---

# This is a test

Lorem ipsum....

这样您就不必修改模板,只需调用pandoc doc.md -o doc.pdf就足够了。

相关内容