跳转到主内容
版本发布

一份书稿从 Markdown 到可送印 PDF:md2pdf 的出版级排版

写完一本书稿,最后那一公里最磨人:注释要收到文末并按章重编号,目录要放在前言之后、还得把附录排除掉,送印前还要留出血位、按归档标准出文件。这些现在都是 md2pdf 的参数,一条命令走完,全程本地免费。

7 分钟
产品发布md2pdf排版出版本地处理

42md tools md2pdf 一直能把 Markdown 转成排版干净的 PDF。但真把一份书稿送到印厂之前,中间还有一长串琐碎要求:注释该收到文末去、目录要放在前言后面、附录不该出现在目录里、送印文件要留出血位、进档案馆的版本还得符合 PDF/A。

以前这些要么手工补,要么根本做不了。现在它们都是参数。下面按一份书稿真实的流程走一遍,用的是同一份 书稿.md,只是命令一步步长起来。

第一步:注释收到文末,还要按章重新编号

学术书和多数纸质出版物用的是尾注,不是页底脚注。Markdown 里照常写 [^1],转换时换一个模式:

42md tools md2pdf 书稿.md --notes endnote --notes-group 1

正文里留下上标编号,所有注释定义收到文末的「注释」一节。--notes-group 1 是按一级标题分组:每一章单起一个小节,编号从 1 重新开始。

注释

第一章 源头
  1  数据来自 2024 年的流域考察报告。

第二章 中游
  1  这个说法来自当地一位老船工。

不加 --notes-group 就是全书连续编号;改成 --notes-group 2 则按二级标题分。想保持页底脚注的,什么都不用做,默认没变。

第二步:目录放在你想要的位置

默认的目录固定排在标题块之后。但书稿常常是「前言在前、目录在后」。在 Markdown 里独占一行写:

[[toc]]

(写 <!-- toc --> 也行。)目录就在这一行的位置渲染,而不是被推到最前面。

深度用 --toc-depth 控制。一本「章 / 节」两级结构的书:

42md tools md2pdf 书稿.md --toc-depth 2

三级以下的小标题就不会挤进目录了。

第三步:把不该进目录的标题挑出去

前言、附录、版权页——这些有标题,但不该出现在目录里。两种排除方式,可以混用:

逐个标记,在标题行尾写 {-}

# 前言 {-}

# 附录 计量说明 {-}

{.notoc}{.unlisted} 等价,看你顺手哪个。)

批量正则,用命令行参数:

42md tools md2pdf 书稿.md --toc-depth 2 --toc-exclude '第二章|第一节'

匹配的是标题的纯文本。正文一个字不动,只是它们不再进目录——这一条对付「统一排除所有『第 N 节』」这类需求很省事。

顺带一提,正文里的上下标也支持:H~2~O 出来是 H₂O,O^18^ 出来是 O¹⁸。

第四步:送印要的出血位

裁切会有误差,所以送印文件要让内容延伸到裁切线外一圈,这圈叫出血位。印厂通常要 3mm:

42md tools md2pdf 书稿.md -o 书稿_送印.pdf --bleed 3mm

效果可以直接量出来。42md tools inspect 会报页数和开本:

书稿.pdf        3 页 · 开本 210×297 mm
书稿_送印.pdf   3 页 · 开本 216×303 mm

A4 的 210×297,四边各加 3mm,正好变成 216×303。单位写 mm / cm / pt / in 都认。

第五步:按标准出文件

交档案馆、投期刊、报无障碍合规,各有各的标准:

42md tools md2pdf 书稿.md --pdf-standard a-2b
  • a-2b / a-3b:PDF/A 归档标准,长期保存用,很多机构收稿时硬性要求。
  • ua-1:PDF/UA 无障碍标签,让屏幕阅读器能正确朗读结构。
  • pdf-1.7:指定 PDF 版本,应付只认老版本的系统。

出来的文件里确实带着合规标记(pdfaid:part = 2conformance = B),不是改个后缀了事。

把这些拼起来

实际送印的那条命令,大概长这样:

42md tools md2pdf 书稿.md -o 书稿_送印.pdf \
  --notes endnote --notes-group 1 \
  --toc-depth 2 \
  --bleed 3mm --pdf-standard a-2b

一次跑完:尾注按章编号、目录两级且排除了前言与附录、四边留了 3mm 出血、文件符合 PDF/A-2b。

版面还想再往下调

上面这些是排版参数,动的是结构。要换字体、改页边距、加封面,用自定义模板:

42md tools md2pdf --style new > 我的模板.typ

这会吐一份带注释的起始模板,里面写清楚了你的规则会被拼在哪一步、哪些东西 42md 会自动补上。照着改就行,然后:

42md tools md2pdf 书稿.md --style 我的模板.typ

模板里引用图片(比如封面)写相对路径即可,默认按模板文件所在目录解析;图放在别处就用 --asset-dir 指出来。只在你指定的这些目录里读文件,不会去翻目录之外的东西。


以上全部是 42md tools md2pdf 的参数,免费、在你自己的电脑上跑,不消耗 AI 额度。42md upgrade 升到最新版即可使用。

参考文献怎么按国标著录,是另一个话题,下一篇讲。