Quarkdown 评测:用 Markdown 写论文、幻灯片和知识库的 Kotlin 排版系统
具有超能力的 Markdown:从想法到论文、演示文稿、网站、书籍和知识库。
秒懂
- 它是什么?
- Quarkdown 是一个基于 Markdown 的排版系统,能把同一份源文件编译成书籍、论文、幻灯片和知识库。它用函数扩展语法,内置权限系统,但 GPL-3.0 许可和较新的项目状态需要你仔细权衡。
- 适合谁用?
- Quarkdown 适合那些已经熟悉 Markdown、需要从单一源生成多种文档类型、并且愿意接受 GPL-3.0 许可约束的个人作者或小团队。它不适合需要严格排版控制或依赖成熟生态的企业用户,也不适合对许可证敏感的项目。
- 能商用吗?
- 可以,但有条件。GPL-3.0 是 copyleft 许可证:如果你分发包含它的软件,就必须以同一许可证公开该软件的源代码。只在内部运行、不对外分发,则不会触发这项义务。
- 还在维护吗?
- 在维护。仓库最近一次提交在 1 天前。
- 用什么语言写的?
- 主要是 Kotlin(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。
开源项目深度解析
它解决什么问题
Markdown 擅长写简单文档,但一到论文、书籍或演示文稿就力不从心。传统做法是换工具:LaTeX 处理学术排版,reveal.js 做幻灯片,Wiki 引擎管知识库。每个工具都有自己的一套语法和构建流程,同一份内容往往要维护多个版本。Quarkdown 试图用一个 Markdown 超集覆盖所有这些场景。你写一份源文件,调用 .doctype 函数指定目标类型,就能编译成 HTML、PDF、Markdown 或纯文本。目标受众是那些不想学 LaTeX 但又需要正式排版的人,以及想用统一语法维护网站和文档的技术作者。它不是一个所见即所得的编辑器,而是一个命令行排版系统,定位和 Typst 类似。
函数语法是核心机制
Quarkdown 不是普通的 Markdown 方言。它把函数调用引入语法,形式是点号加函数名,后面跟花括号参数,缩进内容作为主体参数。README 里有个例子:定义函数 .greet,接受 to 和 from 两个参数,然后在文档里调用。这种设计让 Markdown 具备了编程能力。标准库提供了布局构建器、I/O、数学、条件语句和循环。也就是说,你可以在文档里写 if 和 for,根据条件生成内容。这比 MDX 的组件导入更接近脚本语言,也比 Typst 的 set 和 show 规则更显式。函数可以嵌套,也可以自己定义新函数,甚至发布成库。这种机制让重复内容变成一行调用,对于维护大型文档库很有价值。
多目标编译的架构
Quarkdown 的编译目标分为 HTML 的四种变体:plain、paged、slides 和 docs。plain 模式类似 Notion 或 Obsidian 的连续流式布局,适合静态网站;paged 模式通过 paged.js 实现分页,面向论文和书籍;slides 模式基于 reveal.js;docs 模式用于技术文档和知识库。PDF 导出支持所有 HTML 支持的文档类型。这个设计的关键在于,文档类型是在源文件内部通过 .doctype 函数指定的,而不是编译时的命令行参数。这意味着同一份源文件可以针对不同输出调整部分内容,但整体结构保持一致。编译流程是:解析 Quarkdown 语法,执行函数,生成中间表示,再渲染成目标格式。README 提到官方 wiki 有 100 多个子文档,编译耗时约 2 秒,说明编译性能是设计目标之一。
安装与快速上手
README 提供了安装和快速开始的指引,但具体的安装命令没有在给出的材料里完整列出。从仓库布局看,这是一个 Kotlin 项目,发布在 GitHub Releases 上,有 stable 和 development 两个渠道。你可以从 releases 页面下载对应平台的二进制文件。创建项目后,在源文件里写 Markdown 内容,用 .doctype 指定文档类型,然后运行编译命令。官方文档网站 quarkdown.com 有 wiki 和 docs,还有 VS Code 扩展和 IntelliJ IDEA 插件(后者是社区维护的)。GitHub Actions 的示例工作流表明,部署到静态托管服务是受支持的使用方式,官方声称设置 CD 流程不到 3 分钟。如果你习惯在编辑器里写 Markdown,Quarkdown 的学习曲线应该很平缓,但如果你需要自定义函数库,就需要理解它的函数作用域和参数传递规则。
权限系统与安全边界
Quarkdown 把安全设计为默认特性。README 明确提到一个限制性的权限系统,用于限制对系统资源的访问。这意味着函数库中的 I/O 操作不是无限制的,而是需要显式授权。这是一个务实的决定,因为 Quarkdown 允许在文档中执行任意代码,如果权限不设防,打开一个恶意文档就可能读取本地文件或执行命令。具体有哪些权限类别、如何授予,README 没有展开,需要查阅 wiki。这种设计让 Quarkdown 比 LaTeX 更安全,LaTeX 的宏包机制历史上出过多次安全漏洞。但权限系统也增加了使用复杂度,你需要在文档中声明需要的权限,否则某些函数会失败。对于只写纯文本内容的用户,这可能是多余的障碍,但对于处理不可信来源文档的场景,这是必要的防护。
对比 LaTeX、Typst 和 MDX
README 里的对比表展示了 Quarkdown 与 LaTeX、Typst、AsciiDoc、MDX 的差异。Quarkdown 在语法简洁性和可读性上胜过 LaTeX,在文档控制力上胜过 AsciiDoc 和 MDX。与 Typst 相比,两者都提供脚本能力,但 Typst 的语法是专门设计的排版语言,Quarkdown 则完全基于 Markdown。这意味着如果你已经熟悉 Markdown,Quarkdown 的入门成本更低;但 Typst 的排版引擎更专注于精确的版面控制,而 Quarkdown 依赖 paged.js 和 reveal.js 这些 Web 技术,在复杂排版上可能有限制。MDX 适合 React 生态,你可以导入组件,但 MDX 本身不解决书籍或幻灯片的问题。Quarkdown 的定位是全能选手,但全能往往意味着在单一领域不如专精工具。如果你的核心需求是高质量学术论文,LaTeX 或 Typst 可能更合适。
维护成本与许可风险
Quarkdown 采用 GPL-3.0 许可。这意味着如果你把它嵌入到自己的工具链中,你的项目可能也需要以 GPL 兼容的方式发布。对于开源项目这通常没问题,但如果你在商业闭源产品中使用,需要谨慎评估。项目最近一次推送是 2025 年 5 月,发布了 v2.5.1 和 v2.5.0,说明还在活跃维护。但版本号到 2.x 并不代表稳定,README 里同时提供 latest(开发构建)和 stable 两个渠道,你需要明确自己用的是哪个。升级成本方面,由于语法扩展和标准库都在演进,升级到新版本可能需要调整函数调用。另外,项目依赖 paged.js、reveal.js 这些第三方库,它们的更新也可能影响输出效果。总体来看,维护成本取决于你对新版本的依赖程度,以及你自定义了多少函数。
编辑结论
Quarkdown 适合那些已经熟悉 Markdown、需要从单一源生成多种文档类型、并且愿意接受 GPL-3.0 许可约束的个人作者或小团队。它不适合需要严格排版控制或依赖成熟生态的企业用户,也不适合对许可证敏感的项目。在采用前,你应该验证两件事:一是你的文档中是否包含无法用函数表达的复杂布局,二是编译速度是否满足你的迭代需求。官方声称 wiki 在约 2 秒内编译,但这是针对特定硬件和文档规模的说法,你需要用真实项目实测。如果这些条件都满足,Quarkdown 值得作为 LaTeX 或 Typst 的替代方案。
社区笔记