用 Kotlin 写就的 Quarkdown:在 Markdown 简单性和 LaTeX 排版能力之间取交集
Quarkdown 是一个基于 Kotlin 开发的开源排版系统,设计目标是融合 Markdown 的简洁语法与 LaTeX 的专业排版能力,面向技术写作、学术论文、图书出版等对排版有较高要求的场景。
功能特性
Quarkdown 以 CommonMark/GFM 规范为基础,通过引入「函数调用」机制扩展语法。例如,可以在 Markdown 源文件中这样写:
## Quarkdown函数演示以下函数演示了自定义函数:.function {greet} to from: **你好, .to** 我是 .from!.greet {世界} from:{Quarkdown}
Quarkdown 会将其渲染为对应的格式化输出。
标准代码库提供页面布局、数学计算、条件语句和循环等函数能力,降低专业排版的学习门槛。官方示例覆盖了常见的排版需求,例如:
- 文章版式排布:
- 读取 CSV 数据并绘制图表:
- 读取 Mermaid 文件绘制图形:
- 运行动态脚本,以表格形式计算并展示斐波那契数列:
Quarkdown 支持快速编译和实时预览,以配合写作过程中的即时反馈。
支持多种输出格式:
- HTML
- HTML 动态演示文稿(reveal.js 风格)
- HTML 印刷级文稿(图书、文章)
- PDF(基于 Node.js 工具链)
产品比较
Quarkdown 与相关排版/标记方案的功能对比如下:
| 维度 | Quarkdown | Markdown | LaTeX | Typst | AsciiDoc | MDX |
|---|---|---|---|---|---|---|
| 简洁易读 | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ |
| 完全文档控制 | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ |
| 动态脚本 | ✅ | ❌ | 部分 | ✅ | ❌ | ✅ |
| 印刷级文稿 | ✅ | ❌ | ✅ | ✅ | ✅ | 第三方 |
| 演示文稿 | ✅ | ❌ | ✅ | ✅ | ✅ | 第三方 |
| 学习曲线 | 🟢(平缓) | 🟢 | 🔴(陡峭) | 🟠(中等) | 🟢 | 🟢 |
| 输出格式 | HTML、PDF | HTML | PDF、PostScript | HTML、PDF、ePub | HTML |
以 LaTeX 与 Quarkdown 的语法对比示例来看,Quarkdown 源码的简洁性和可读性都优于 LaTeX 写法。
在线演示
在线演示地址:
https://iamgio.eu/quarkdown/demo/
下载安装
前置依赖:Java 17 或更高版本。
从以下地址下载最新的 quarkdown.zip:
https://github.com/iamgio/quarkdown/releases/latest
解压后,bin 目录中包含可执行脚本 quarkdown.bat(Windows)或 quarkdown(Unix-like)。
初始化一个项目:
quarkdown.bat create [directory]
该命令以交互式提示创建新项目,并生成一个示例 .qmd 文件。
编译源文件(默认输出到 ./output 目录):
quarkdown.bat c file.qmd