Quarkdown:把 Markdown 做成图灵完备的排版系统
阅读时间: 大约 9 分钟
Quarkdown:把 Markdown 做成图灵完备的排版系统

Markdown 长期面临一个尴尬:写短文够用,一旦要出书、排论文、做幻灯片,就得跳到 LaTeX、Typst、Pandoc 那套学习成本高的工具链。Quarkdown(GitHub 仓库 iamgio/quarkdown,GPL-3.0)给出的答案是:不换工具,而是给 Markdown 加上图灵完备的扩展语法——函数、变量、循环、条件,再配一个编译器,让同一份 .qmd 源码一键输出成印刷级书籍、学术论文、交互式演示或知识库站点。
一、是什么:CommonMark 之上的”超能力方言”
Quarkdown 从 CommonMark 与 GFM 出发,扩展出一套自己的 Flavor。最核心的新语法是函数调用:
.somefunction {arg1} {arg2}
Body argument用户还能自定义函数与变量,例如:
.function {greet}
to from:
**Hello, .to** from .from!
.greet {world} from:{iamgio}渲染结果为 “Hello, world from iamgio!”。官方称标准库内置了布局构建器、I/O、数学运算、条件语句与循环——这意味着 Markdown 不再只是静态标记,而是一门可以做动态文档的小语言。

二、多目标输出:一份源码,多种成品
官方把”versatile”作为核心卖点,目标输出(Targets)覆盖四类:
| 输出类型 | 实现方式 | 适用场景 |
|---|---|---|
| HTML 流式 | 连续排版,类似 Notion/Obsidian | 静态站点、知识管理 |
| HTML 分页 | 基于 paged.js | 论文、文章、书籍 |
| HTML 幻灯片 | 基于 reveal.js | 交互式演示 |
| HTML 文档站 | Docs 模式 | Wiki、技术文档、大型知识库 |
| 上述 HTML 能力均可导出 PDF | 印刷 | |
| Markdown / 纯文本 | GFM 导出、纯文本导出 | 回流到其他工具 |
目标类型甚至可以在源文件里用 .doctype {paged} / .doctype {slides} / .doctype {docs} 直接声明。仓库 README 的分页演示直接复刻了经典论文《Attention Is All You Need》的版式——这是它展示”印刷级质量”的方式。
三、与同类工具的对比口径
README 自己放了一张与 LaTeX、Typst、AsciiDoc、MDX 的对比表,值得逐条审视(官方口径,需保留其立场):
- 简洁可读:Quarkdown 打勾,LaTeX 打叉——这是 Markdown 系的天然优势;
- 完整文档控制:Quarkdown、LaTeX、Typst 打勾,AsciiDoc/MDX 打叉;
- 脚本能力:Quarkdown 完全打勾,LaTeX 仅”Partial”,MDX 打勾;
- 静态站点导出:Quarkdown 打勾,Typst 标”Experimental”;
- 学习曲线:Quarkdown 标绿色(低),LaTeX 红色(高),Typst 橙色。
需要注意这是作者自评表:LaTeX 在学术排版生态(引用、公式、模板)上的积累远非一年新项目可比,Quarkdown 打的是”低学习曲线 + 多目标 + Markdown 熟悉感”的差异化,而不是在排版精细度上正面取代 LaTeX。
这个”代码即图表”的机制值得展开:左侧源文件里 .let {.csv {sales.csv}} 把外部 CSV 读成数据绑定,.var {columns} 取列名,.xychart xtags:{列名} y:{Sales} bars:{yes} 一行声明图表类型与映射,右侧就自动渲染出带数据表格的组合柱线图。传统做法是在 Markdown 里手画表格、再把 CSV 扔进 Excel 截图贴回来;Quarkdown 把”数据→表→图”这条链收进了同一份可版本化的源文件,改一次 CSV,图和表同时更新。这正是”函数 + 标准库”在文档场景里最实际的红利。
四、工程与安全设计
从仓库结构(Gradle 多模块:quarkdown-cli、quarkdown-core、build-logic)看,它是一个 Kotlin 编写的编译器工程。官方强调几个工程特性:
- 快:官方称 100+ 子文档的 wiki 全量编译约 2 秒,配合低延迟 live preview;
- 安全默认:限制性权限系统限制脚本对系统资源的访问——这点对一门能 I/O、能跑脚本的”Markdown 方言”很重要,否则任意
.qmd都能读你硬盘; - Agent-friendly:自带一个给编码代理读的 skill,让 AI 能地道地写 Quarkdown;
- 编辑器支持:官方 VS Code 扩展 + 非官方 IntelliJ 插件;
- 易部署:官方称 3 分钟内配好 CD 工作流。
五、客观分析:优势与局限
优势:
- 一份源码多端输出,避免在 Markdown、PPT、LaTeX 之间重复维护;
- 函数/变量/标准库让”重复内容改一处”成为可能,文档复用度高;
- 分页(paged.js)+ 幻灯片(reveal.js)+ 文档站都站在成熟开源组件上,不是重造轮子;
- 权限沙箱 + Kotlin 静态实现,比纯 MDX 脚本多一层资源边界。
局限(口径偏差):
- GPL-3.0 协议:这是Copyleft,把 Quarkdown 作为库嵌入闭源产品会有约束,用于个人写论文出书没问题,做商业 SaaS 集成前要法务确认;
- 项目较新(open issues 18 个、仍在快速迭代),标准库与排版细节的成熟度不及 LaTeX 数十年积累;
- “图灵完备的 Markdown”是双刃剑——一旦文档里写了复杂脚本,可读性会迅速退化,和任何模板语言一样需要纪律;
- 复杂数学公式与学术引用生态(BibTeX 级别的 bibliography)仍需对照 Typst/LaTeX 实测,官方并未给出兼容性承诺;
- 多目标输出意味着每个目标都有自己的样式系统,跨目标保持一致观感需要额外调样式。
六、谁该关注
- 一个人要同时维护”论文 + 幻灯片 + 个人站点”的研究者/作者;
- 受够 LaTeX 语法但又需要印刷级分页排版的写作者;
- 想给文档站加动态能力(读取 CSV 自动出表出图)的技术团队。
如果你只写 GitHub README 或公众号短文,Quarkdown 是杀鸡用牛刀;它的价值在”一份长内容要反复变成多种成品”时才兑现。