# Markdown 文稿要转成 Word 或 PDF，Pandoc 官方怎么转？

**URL:** <https://www.shiqidu.com/t/topic/2091>\
**Category:** 开发调优\
**Tags:** 设计, 编程, 问与答, 开源软件\
**Created:** [2026 年11 月 15 日 06:11 UTC](https://www.shiqidu.com/t/topic/2091 "2026-11-15T06:11:47Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![shiqidu\_editor](https://www.shiqidu.com/user_avatar/www.shiqidu.com/shiqidu_editor/32/528_2.png) [@shiqidu\_editor](https://www.shiqidu.com/u/shiqidu_editor)\
发布日期： [2026 年11 月 15 日 06:11 UTC](https://www.shiqidu.com/t/topic/2091/1 "2026-11-15T06:11:47Z")

</div>

手里是一份 Markdown，要交出去的却是 Word 或 PDF。想按官方命令把格式转过去，不是去搭一套论文排版系统。

[Getting started with pandoc](https://pandoc.org/getting-started.html) 面向还不熟命令行的人，命令行已经用顺的可以直接看 [User’s Guide](https://pandoc.org/MANUAL.html)。它是命令行工具，没有图形界面。安装按入门页第一步，对照自己平台的官方说明来做。装好后在终端里执行 `pandoc --version`，能看到版本信息就说明命令已经可用。Windows 若走经典的 `cmd`，入门页还提醒先执行 `chcp 65001`，把编码设成 UTF-8。手册也写明，Pandoc 的输入和输出都按 UTF-8 处理。

不指定任何输入文件时，它会作为过滤器来用：从终端读入，再把结果写回终端。默认把输入当成 pandoc 的 Markdown，输出是 HTML。要改格式，用 `-f` / `--from` 指定输入，用 `-t` / `--to` 指定输出。入门页演示过 `pandoc -f html -t markdown`，把一段 HTML 转回 Markdown。源文件要用文本编辑器来写，不要用 Word 这类字处理器去存那份 Markdown。入门页给过一份很短的例子：先用 YAML 元数据块写上 title，再写标题、斜体和列表，保存为 `test1.md`，然后就可以按下面的命令转换。真正转换一份文件时，常见写法是：

```auto
pandoc test1.md -f markdown -t html -s -o test1.html

```

`-s`（`--standalone`）表示生成带页眉页脚的独立文档，而不是一段片段。`-o` 指定输出文件。从 Markdown 转到 HTML 时，这两种格式本来就是默认值，`-f` 和 `-t` 可以省略，写上也不妨碍。Pandoc 常常能根据文件名的扩展名判断格式，所以转到 LaTeX 也可以只写 `pandoc test1.md -s -o test1.tex`。入门页接着让读者试着生成扩展名为 `docx` 的 Word 文档。按同样的扩展名推断，可以写成 `pandoc test1.md -s -o test1.docx`，也可以显式加上 `-f markdown -t docx`。

要出 PDF，入门页写的是本机需要先装好 LaTeX（macOS 用 MacTeX，Windows 用 MiKTeX，Linux 则安装 texlive 包），然后执行 `pandoc test1.md -s -o test1.pdf`。手册把这件事写得更完整：只要输出文件用 `.pdf` 扩展名即可。默认会借助 LaTeX 引擎来生成，因此需要安装该引擎，具体用哪一个可以用 `--pdf-engine` 指定。也可以把 ConTeXt、roff ms 或 HTML 当作中间格式，在命令里加上 `--pdf-engine`，或使用 `-t context`、`-t html`、`-t ms`。排查 PDF 问题时，手册提到可以先不直接 `-o test.pdf`，而是例如用 `-s -o test.tex` 把中间的 LaTeX 拿出来，再单独用 `pdflatex` 试。这里只把官方的转换命令跑通，不去展开 LaTeX 本身怎么排版。

手册把 Pandoc 写成一套用 Haskell 写的库，外加调用这套库的命令行工具，用来在不同标记和字处理格式之间转换，范围包括多种 Markdown、HTML、LaTeX 和 Word 的 docx，也可以产出 PDF。完整的输入、输出格式列表见手册里 `-f` 和 `-t` 的说明。也可以在本机执行 `pandoc --list-input-formats` 和 `pandoc --list-output-formats` 查看当前这份程序支持哪些。没有显式指定时，它会尝试从扩展名猜测。结果写到标准输出、或扩展名无法识别时，默认当成 HTML。从标准输入读取、或来源后缀无法识别时，则按 Markdown 处理。多份输入会先按顺序拼接（中间插入空行）再解析。它的模块设计是先由 reader 解析成一份中间的抽象语法树，再交给 writer 写成目标格式。正因为中间表示比许多源格式更简单，不要指望每一种格式之间都能无损转换：它会尽量保留文档的结构要素，但不会保留页边距这类排版细节，复杂表格也可能放不进它的文档模型。记不住参数时，用 `pandoc --help` 就能列出支持的选项和格式。

这和站内这篇 [Typst 排版入门](https://www.shiqidu.com/t/topic/2084) 不是同一层：那边谈的是用一套排版系统把文稿写出来，这里只按官方命令，把已经写好的 Markdown 转成 Word 或 PDF。

这份稿你是先转成 Word 方便别人改，还是本机已经能调 LaTeX，直接出 PDF？
