在一台已经服役 13.5年 的老旧 PC 上,把一部4万词、120页的中篇小说从纯文本编译成排版精致的 A5 尺寸 PDF,只需要 1.6秒。德国开发者 movq 在2026年10月用行动证明,扔掉动辄占用几个 G 内存的现代编辑器,回到四十多年前的 Unix 传统排版工具 groff,写小说的反馈循环可以快到接近直觉。

他用这套工具链写完了两部不打算公开发表的中篇小说:第一部约1.5万词、50页,耗时超七个月,编译耗时 700毫秒;第二部约4万词、120页,写作只花了 10天。如果你受够了现代排版软件的卡顿,这套方案在编译速度和底层控制力上几乎是降维打击;但如果你指望它像现代软件那样自动处理好所有版面细节,它简陋的底层机制会让你在页眉页脚和断行上交足学费。

13.5年老旧 PC 上的 groff 极限排版耗时 第一部中篇(50页 / 1.5万词) 700 ms 写作耗时超 7 个月 第二部中篇(120页 / 4万词) 1.6 s 写作耗时仅 10 天 核心宏定义规模 3 个 仅含标题、缩进段落与空行

3个宏与页面触发器:极简背后的手工代价

groff 是 GNU 版本的 troff,大多数程序员只在 Linux 终端翻看手册页(man pages)时见过它,但早年的计算机圣经《C程序设计语言》和《UNIX环境高级编程》全是用这套系统排出来的真书。小说排版不需要复杂的图表、代码高亮或交叉引用,movq 索性连现成的宏包都没用,自己手写了 3个基础宏:.SH 负责章节标题,.PP 负责德语书籍惯用的首行缩进段落,.LP 负责时间线跳跃时的段落空行。

真正暴露 groff 老派底色的是它的分页控制。它默认连页码都没有,直接改 A5 纸张尺寸还会导致页面最后一行文字掉出纸面边界;要加上页眉页脚,必须动用底层的页面位置触发器(traps)。

  • 结论.用 .wh 和 .ch 命令在距离页底特定位置埋下触发器,当文本流淌到该坐标时强制切换环境(Environment),才能在不打断正文的缓冲区状态印出页码。

这种写法极其考验对排版引擎状态机的理解。比如在触发器里换页必须用单引号前缀的 'bp 而不是点号前缀的 .bp,坐标计算稍有偏差就会触发死循环。至于德语复杂的连字符断词,则是直接挂载 groff 内置的 de.tmac 和 den.tmac 词库了事,再配合 Vim 编辑器、专注插件 Goyo 和 Git 做版本控制,整套写作流水线没有任何多余的图形界面。


逐行合成的硬伤:为什么它赢了速度却输给 LaTeX

看着 1.6 秒排完 120 页的数字,很容易让人产生用 groff 替代一切的冲动。但把视线从个人玩具拉回专业出版工业就会发现,快是有代价的,代价就藏在段落合成算法里。

顶尖工程师退回石器时代的工具链,只为逃避现代软件的臃肿机心(示意图)
顶尖工程师退回石器时代的工具链,只为逃避现代软件的臃肿机心(示意图)
算力翻了千倍,我们等待光标响应的时间却没有缩短一毫秒。

以 LuaLaTeX 为代表的现代专业排版系统,继承了高德纳设计的全局段落优化算法,会把整个段落通盘计算后再决定在哪里断行,配合 microtype 插件还能对字距做肉眼难辨的微米级压缩与扩展,版面灰度极其均匀。groff 走的是古老的 逐行合成 路线,读一行排一行,遇到窄版面的小说排版时,很容易出现单词间距忽大忽小的情况,而且缺乏现代小说排版必需的孤行与寡行(widows/orphans)自动控制,后期往往需要作者肉眼校对、手动微调。

三代文本排版工具链的核心取舍 groff(Unix 传统派) 老 PC 编译 120 页仅 1.6 秒,底层触发器完全可控;但逐行合成弱于全局优化,需手动干预断行 LuaLaTeX(学术与出版重器) 全局段落优化 + microtype 字距微调,版面灰度最优;但宏包生态庞大,编译耗时显著增加 Typst(现代响应式流派) 兼顾增量编译速度与现代脚本语法,自动化程度高;适合不想折腾底层寄存器的创作者

这也是我不太买账把 groff 捧成通用写作神器的原因。问题不在工具的新旧,而在创作者把精力花在哪一头。

《庄子·天地》里讲过一个抱瓮丈人的故事,宁可抱着瓦罐一趟趟打水,也不用省力的桔槔,理由是用了机械就会生出机心。顶尖工程师偏爱退回石器时代的工具链写小说,本质上也是在逃避现代软件的机心。今天的商用文字处理软件塞满了云同步、AI 助手和繁琐的样式面板,就像主人在所说的,在现代软件里打字如同在泥浆里跋涉;而用 groff 配合脚本,十天写出四万词的背后,是敲下命令一秒出结果的确定感。

  • 风险.独立作者若盲目跟风这套极简工作流,一旦书稿涉及复杂插图、多栏混排或严苛的印刷字距要求,排查底层寄存器和触发器 Bug 的时间会迅速吞噬掉编译省下的那几秒钟。

对于 Linux 极客来说,movq 给出的是一套可以直接抄作业的极速文本玩具;但对于只想安静写书的普通创作者,新兴的 Typst 在增量编译速度和现代自动化排版之间已经找到了更温和的平衡点。接下来真正值得观察的,不是有多少人会去背诵 groff 那套晦涩的双字母命令,而是当 Markdown 已经成为绝对主流,开源社区会不会基于这些古老的高性能内核,封装出专门针对纯文学写作的零配置宏集。