引言
Pandoc 是一个功能丰富的工具,可以方便地将 Markdown 文件转换为 LaTeX、PDF、DOCX、HTML 等格式。借助 Pandoc,我们可以用 Markdown 编写文档,再轻松转换为所需的输出格式。相比直接使用 LaTeX 或 HTML 撰写文稿,这种方法大幅简化了文档的写作和组织过程。
安装
- 下载 TeX Live ISO 并安装。
- 安装 Pandoc。
使用方法
创建 Markdown 文件
使用 Pandoc 之前,需要先创建 Markdown 文件。Markdown 语法介绍见此处。推荐使用 VS Code,并安装 Markdown All in One 和 Markdown Preview Enhanced 扩展来编写 Markdown 文件。
插入图片
Pandoc 可以将标准的图片插入指令  转换为相应的 LaTeX 指令 \begin{figure} ... \end{figure}。问题在于如何指定图片的大小和位置。下面给出一些方法:
- 要指定图片大小(例如将图片宽度设为 300 px),可使用 Markdown 指令
{width=300px}。 - 要让图片在 Markdown 中居中,可以使用如下 HTML 指令:
<center>
{width=300px}
</center>- 注意,应在
<center>(</center>)和图片插入指令{width=300px}之间加入空行。 - 如果
caption留空,LaTeX 中的图片将不会居中,而是左对齐。 figure_path中的所有空格都应替换为%20,否则图片无法正常显示。- 如果希望两张图片并排显示,将两条图片插入指令连续放置,中间用空格而非换行分隔,例如
 。
设置 PDF 页边距
要控制 Pandoc 将 Markdown 文件转换为 PDF 时的页边距,可以在 Markdown 文件中加入以下头部:
---
geometry: margin=1in
---自定义 LaTeX 模板
如果希望自定义 Pandoc 生成 LaTeX 或 PDF 文件时使用的 LaTeX 模板,可以切换到输入 Markdown 所在文件夹,新建 pandoc 文件夹,并在其中创建 pandoc_template.latex 文件。要在转换时启用该模板,请使用如下 Pandoc 命令:
pandoc input.md -o output.tex --template=./pandoc/pandoc_template.latex请将 input.md 和 output.tex 替换为输入和输出文档的文件名。
我为 Pandoc 制作了一个 LaTeX 模板,生成的 PDF 外观接近原生 LaTeX,下载地址见此处。该模板基于 Pandoc 默认模板修改,包含以下调整:
插入通栏水平线
若希望在 Pandoc 生成的 LaTeX/PDF 文档中插入通栏水平线,效果类似 Markdown 中的 ---,需注意以下几点:
- 在输入 Markdown 中,确保
---与其他文本之间有空行。 - 使用自定义 LaTeX 模板,并在模板文件中加入重新定义水平线函数(
rule)的命令,否则水平线不会占满整行。 - 重新定义的命令如下:
\let\OldRule\rule
\renewcommand{\rule}[2]{\OldRule{\linewidth}{#2}}多行公式
在 Markdown 中,可以在每行公式之后加入 \\ 来创建多行公式。然而,Pandoc 将 Markdown 转换为 LaTeX 后,这一换行命令会保留在 LaTeX 文件中,却不会在最终 PDF 中呈现为换行。
一个简单的解决方法是重新定义 Pandoc 默认的公式渲染方式。具体而言,Pandoc 使用 \[ \] 定义 LaTeX 公式;我们可以在它的 LaTeX 模板中加入以下重定义命令,将每个公式放入 \begin{align*} \end{align}* 环境,从而支持使用 \\ 换行。
\def\[#1\]{%
\begin{align*}#1\end{align*}%
}