题记与说明
——纵轴发展脉络 × 横轴横向对比 · 综合报告
数据快照:2026-10-28 / 2026-10-29 | 综合完成:2026-10-29
本文由两份分章研究综合而成:《纵轴报告:Markdown 生态与文档工具链——Pandoc、Quarto、MDX 的工程实践》(发展脉络,2026-10-29)与《Markdown 生态与文档工具链横向对比:Pandoc · Quarto · MDX》(2026-10 时间截面)。综合时统一了两章的数据时点、合并了重复叙述(两章各自给出的"三条管线"建议在此合并为一份)、消除了版本快照差异(详见"数据说明与局限")。全部关键事实保留来源链接;无法核实之处如实标注,不做推测性填充。
数据说明与局限
- 版本号、star 数、最近推送时间(pushed_at)均为时点快照:取自 2026-10-28/29 的 GitHub API、npm registry 与官网实抓(两章数据说明),阅读时间越晚,数值越可能漂移。
- 两章对 Quarto 当前版本的记载已统一,统一以 Releases API 为准:横轴的 GitHub Releases API 实抓显示稳定版 v1.10.19(2026-10-06)、预发布 v1.11.7(2026-10-27)(quarto-cli/releases);纵轴曾引 quarto.org 下载页,称其"1.10 功能预告、1.11 预发布提示"。修订时(2026-10-29)复核该下载页:页面当日数据源(
_download.json/_prerelease.json)展示的即稳定版 v1.10.19 与预发布 v1.11.7,与 Releases API 一致;纵轴当时抓到的页面文案已无法复核——两章抓取时点相同,"时点不同"的解释不成立,如实标注。正文所有 Quarto 版本号一律采用 Releases API 口径。 - MDX 大版本表述已统一:纵轴对 MDX 2 与 MDX 3 均提及 ESM,综合后按官方博客口径区分——MDX 2(2022-02)为 ESM 重写、更小更快;MDX 3(2023-10)为 React Server Components 支持与类型改进(mdxjs.com/blog、mdxjs.com/blog/v3)。
- 未做端到端实证:两章均未实际搭建三条候选管线逐条计时验证;能力矩阵基于官方文档与 Release 元数据交叉核实(引用见正文),路线评分含基于文档与第三方对比的判断成分,如实声明。
- Quarto 许可证以仓库文件为准:GitHub API 显示 "Other/NOASSERTION",以 COPYRIGHT 文件原文(MIT,版权归 Posit Software, PBC)为准(COPYRIGHT)。
- 背景性事实标注:Jekyll/Hugo 创立年份、GFM 2009 年起源等未逐一核实,正文以"背景"标注(Wikipedia: Markdown)。
TL;DR
Markdown 生态 22 年的主线是"单人发布管线"成本持续下降:Markdown(2004)解决"写",Pandoc(2006)解决"转",MDX(2018)解决"组件化",Quarto(2022)一条命令打通博客、报告、幻灯。2026-10 截面三者不同层:Pandoc 是转换底座,Quarto 是内置 Pandoc 的封装层,MDX 是 JS 组件载体、不产出 docx/PDF;Quarto 三件套全一等公民。对"单人三件套":默认选 Quarto,Pandoc 留作兜底引擎,博客即产品且身为 React/Astro 开发者才升级 MDX。LLM 是最大新变量,但难替代确定性转换。
一、纵轴:发展脉络(2004–2026)
1.1 问题主线:一根轴上的多次回答
本课题的纵轴不是三条独立工具线的并列年表,而是同一根问题主线的数次回答:一个人用纯文本写作,如何用最少的命令把同一批稿子变成博客、报告和幻灯。Markdown 在 2004 年回答了"写"的问题;Pandoc(2006)回答了"转"的问题;MDX(2018)回答了"博客内容能不能像组件一样工程化"的问题;Quarto(2021–2022)则第一次把博客、报告、幻灯、引用、可执行代码收进一条命令。追这条纵轴,本质上是看"单人发布管线"的最小成本如何一路下降。
1.2 阶段一(2004–2010):诞生与"单文件脚本"时代
- 2004-03-19:John Gruber 在 Daring Fireball 发布 Markdown 1.0,公告把 Aaron Swartz 列为共同创造者(Swartz 参与语法设计打磨,Perl 实现 Markdown.pl 由 Gruber 编写)。当年年底迭代到 1.0.1 后,核心实现长期近乎停滞(Markdown 项目页)。
- 2006-08-03:John MacFarlane(UC Berkeley 哲学教授)上传 Pandoc 0.1——约 3000 行 Haskell,用 parser combinator 生成真正的抽象语法树(AST),而非正则替换;支持 Markdown/reStructuredText/HTML/LaTeX 互转,外加 RTF 与 S5 幻灯输出(Twenty Years of Pandoc,2026-08-02)。值得注意的是:单人管线的"幻灯"能力在 Pandoc 第一个版本里就埋下了种子。
- 2008-09:Pandoc 1.0,新增 MediaWiki、Texinfo、ODT 等 writer,引入围栏代码块与语法高亮(Twenty Years of Pandoc)。
- 同期背景:2008 年 Tom Preston-Werner 开源 Jekyll、GitHub Pages 上线(约),"程序员用静态站点写博客"成为默认姿势;2009 年 GitHub 推出 GFM(GitHub Flavored Markdown)方言(约,背景,见 Wikipedia: Markdown)。
这一阶段的最小管线是"一条命令":markdown post.md > post.html,或用 pandoc 一次转换。博客可行,报告勉强(LaTeX 路线),幻灯只有 S5 这类小众方案。
1.3 阶段二(2011–2014):方言混战与学术写作入场
- 2011:Hakim El Hattab 开源 reveal.js,HTML 幻灯从此有了事实标准(背景:Pandoc 后来为其提供 Markdown→reveal.js 转换)。
- 2012-01:谢益辉(Yihui Xie)的 knitr 上 CRAN,把文学式编程(literate programming)带进 R 社区,作为 Sweave 的继任者(github.com/yihui/knitr)。
- 2012:Pandoc 1.9 加入 docx 输出与 Beamer/DZSlides 幻灯输出——纯 Markdown 同时产出报告(docx/PDF)和幻灯在此成型(Twenty Years of Pandoc)。
- 2013:Hugo 静态站点生成器发布(约,背景),博客端速度竞赛开始。
- 2014-06-18:RStudio 发布 R Markdown v2(rmarkdown 包,谢益辉执笔),公告第一句就是 "Standing on the shoulders of Pandoc",并吐槽 Pandoc "great power comes with a lot of command line options (more than 70)"——rmarkdown 用好默认值把它包装成 Knit 一键出 HTML/PDF/Word/Beamer/HTML5 幻灯(公告原文)。
- 2014-09-02–04:方言混战高潮。Jeff Atwood(Stack Overflow 联合创始人)联合 John MacFarlane 等人宣布 "Standard Markdown",意在终结各平台方言互不兼容;Gruber 强烈反弹,项目 48 小时内两度更名,最终定名 CommonMark(Standard Flavored Markdown、更名公告、InfoQ 报道)。
意义:R Markdown v2 是第一个"一键三件套"原型——但绑定 R 语言与 RStudio。纯 Python/JS 用户要在 Pandoc 命令行里自己拼 --citeproc、-t beamer 这类参数,管线依旧是手工的。
1.4 阶段三(2015–2018):标准化落地与 JS 生态接管
- 2015:Pandoc 1.14 增加 commonmark 支持(Twenty Years of Pandoc);同期 Titus Wormer(wooorm)构建的 unified/remark 生态把"AST 驱动的 Markdown 处理"确立为 JS 社区范式(unifiedjs.com,背景)。
- 2017-03-14:GitHub 发布 GFM 正式规范——基于 CommonMark 的严格超集,并开源 cmark-gfm 作为参考实现;至此最大的 Markdown 平台站到了标准一边(GitHub Blog)。
- 2017-10-30:Pandoc 2.0 架构大改:PandocMonad 抽象(为后来的
--sandbox铺路)、内置 Lua 解释器的--lua-filter(比 JSON filter 快得多)、GFM 支持(pandoc.org/releases.html)。 - 2018:MDX 项目(mdx-js/mdx)启动,口号 "Markdown for the component era"——在 Markdown 里直接写 JSX 组件(github.com/mdx-js/mdx)。同年 MacFarlane 发表《Beyond Markdown》,系统批评 Markdown 的语法歧义,为其后来另起 djot 埋下伏笔(见 Twenty Years of Pandoc)。
意义:标准化让 Markdown 在所有平台行为一致,但"转报告/幻灯"仍要靠 Pandoc 或 R Markdown;同时 React 博客(Gatsby 等)开始流行,纯 Markdown 表达不了交互组件,MDX 正是为这个缺口而生。
1.5 阶段四(2019–2021):组件化内容与统一管线前夜
- 2019-04-11:官方博客《MDX goes stable》宣布 MDX 1.0(作者 John Otander),彼时已开发约一年半(mdxjs.com/blog)。Next.js、Docusaurus(2.0 beta,2021-05)等相继内置 MDX。
- 2019:Marp 完成 Marp Next 重写(Marpit + Marp Core + Marp CLI,可输出 HTML/PDF/PPTX)(The story of Marp Next)。
- 2020-10:Pandoc 2.11 把引用处理 citeproc 重写为原生库内置——不再需要外部 pandoc-citeproc filter,CSL 参考文献从此是 Pandoc 一等公民(Twenty Years of Pandoc)。对"报告"这一环是质变:单人也能像 LaTeX 一样管引用,而不用学 BibTeX 链条。
- 2021 年中:RStudio 低调放出 Quarto 公开预览,quarto.org 上线(社区解读示例;RStudio 起初刻意低调)。
- 2021:Anthony Fu 发布 Slidev——基于 Vite + Vue 的开发者幻灯工具(2021-06 前后走红,sli.dev)。幻灯赛道在"Markdown 优先"方向上彻底成熟。
意义:管线三环各自就位——博客(MDX)、报告(Pandoc citeproc)、幻灯(Slidev/Marp/reveal.js)——但互不相通,一个人仍要维护三套工具链。缺的是一个跨语言的统一层。
1.6 阶段五(2022–2023):Quarto 1.0 与"一条命令三件套"定型
- 2022-02-01:MDX 2 发布(Titus Wormer),ESM 重写、更小更快、工具链现代化(mdxjs.com/blog)。
- 2022-07-27:RStudio 公司更名为 Posit, PBC,宣示从 R 语言公司转型为"R & Python 双主场"公司(posit.co/blog)。
- 2022-07-28:JJ Allaire 发表《Announcing Quarto, a new scientific and technical publishing system》,明确 Quarto 是 "the next generation of R Markdown",并写明 "we recently released version 1.0, our first stable release after nearly two years of development"(公告原文)。计算引擎内置 Knitr / Jupyter / Observable,语言覆盖 R、Python、Julia、JavaScript,输出格式覆盖 HTML、PDF、MS Word、ePub 及幻灯。
- 2022-08-01:Docusaurus 2.0 稳定版发布(Meta 开源),默认 MDX 内容引擎(发布推文)。
- 2022-12-15:Slidev 1.0(slidev releases)。
- 2023-01:Pandoc 3.0 发布,拆分为 pandoc / pandoc-cli / pandoc-lua-engine / pandoc-server 四包(Twenty Years of Pandoc)。
- 2023-03-21:Typst 开源(Apache 2.0),以"比 LaTeX 易学几个量级"的姿态切入排版(github.com/typst/typst)。
- 2023:Pandoc 3.1.3 加入 Typst reader/writer——Markdown→Typst→PDF 的轻量排版链路打通;8 月 Quarto 1.3(quarto.org/docs/download)。Quarto 自 1.4 版起把 Typst 纳为与 LaTeX 并列的 PDF 引擎(输出格式文档)。
- 2023-10-24:MDX 3 发布(React Server Components 支持、类型改进),与 Docusaurus v3 搭档落地(mdxjs.com/blog/v3;Docusaurus discussion #9053)。
意义:这是纵轴的分水岭。Quarto 把博客(website/blog)、报告(PDF/docx/Typst)、幻灯(revealjs/pptx)、引用(citeproc 内置)、代码执行(Jupyter/knitr)收进一个 quarto render。"一个人写博客+报告+幻灯"第一次成为官方支持场景而非民间拼装。
1.7 阶段六(2024–2026 当下):成熟期与新变量
- 2024:Pandoc 3.1.12 支持轻量标记语言 djot 的输入输出——MacFarlane 对自己 2018 年《Beyond Markdown》的亲身回答(Twenty Years of Pandoc);Quarto 1.4、1.5 相继发布(本报告 Quarto 小版本日期沿用 quarto.org 下载页口径,即该系列最后一次稳定构建的日期:1.4 系列补丁更新至 2024-06-27(v1.4.557)、1.5 系列至 2024-08-29(v1.5.57),quarto.org/docs/download,下同)。
- 2025:Quarto 1.6(2025-04-04)、1.7(2025-08-29)相继发布——2024–2025 保持每年两个小版本的节奏(2026 年加快为三个,见下条);Pandoc 走 3.6–3.8 线迭代(2025 年内从 3.6.2 到 3.8.3,jgm/pandoc/releases)。
- 2026:Quarto 1.8(2026-01-16)、1.9(2026-05-25)相继发布;截至 2026-10-29,GitHub Releases 显示稳定版 v1.10.19(2026-10-06)、预发布 v1.11.7(2026-10-27)(quarto-cli/releases)。Pandoc 3.9(2026-02-04)实现 WASM 编译、可在浏览器直接运行(发布说明原文:"Starting with this release, pandoc can be compiled to WASM, making it possible to use pandoc in the browser"),随后 3.10(2026-06-04)、3.11(2026-08-29)、3.12(2026-09-29)相继发布,3.13(2026-10-26)为当前 Latest(jgm/pandoc/releases)。
- 2026-08-02:MacFarlane 发表《Twenty Years of Pandoc》收官:Pandoc 装机数以百万计、被 Quarto 与 Jupyter 集成、600+ 贡献者;他同时提出新问题——LLM 是否会取代格式转换器,但他认为 Pandoc 目前更确定性、更可靠、"生态上更便宜"(原文)。
驱动力:工具链进入维护成熟期,竞争焦点从"能不能转"转向"转得多顺滑"(浏览器免安装、增量渲染、发布托管一体化);AI 生成内容爆发使"结构化、可校验的纯文本源"价值不降反升——Markdown 源文件恰是 LLM 时代最可控的中间表示。
1.8 时间线速览
| 时间 | 事件 | 参与者 | 对单人管线的意义 |
|---|---|---|---|
| 2004-03 | Markdown 1.0(Gruber & Swartz) | Gruber, Swartz | "写"的问题解决 |
| 2006-08-03 | Pandoc 0.1(含 S5 幻灯输出) | MacFarlane | "转"的问题起步,幻灯埋种子 |
| 2008-09 | Pandoc 1.0 | MacFarlane | 格式矩阵扩张 |
| 2011 | reveal.js | Hakim El Hattab | HTML 幻灯标准 |
| 2012-01 | knitr 上 CRAN | 谢益辉 | 可执行报告 |
| 2012 | Pandoc 1.9:docx + Beamer/DZSlides | MacFarlane | 报告+幻灯一条链 |
| 2014-06-18 | R Markdown v2("站在 Pandoc 肩上") | 谢益辉, RStudio | 一键三件套原型(绑 R) |
| 2014-09 | CommonMark(Standard Markdown 更名风波) | Atwood, MacFarlane, Gruber | 标准化启动 |
| 2017-03-14 | GFM 正式规范 + cmark-gfm | GitHub | 最大平台接受标准 |
| 2017-10-30 | Pandoc 2.0(Lua filter、PandocMonad) | MacFarlane | 工程化成熟 |
| 2018 | MDX 启动;MacFarlane《Beyond Markdown》 | Otander 等, MacFarlane | 组件化内容缺口显形 |
| 2019-04-11 | MDX 1.0 稳定 | Otander / Wormer | 博客环就位 |
| 2020-10 | Pandoc 2.11 内置 citeproc | MacFarlane | 引用内建,报告环质变 |
| 2021 年中 | Quarto 公开预览 | RStudio | 统一层露头 |
| 2022-02-01 | MDX 2(ESM 重写) | Wormer | 前端管线现代化 |
| 2022-07-27/28 | Posit 更名;Quarto 1.0 官宣 | Allaire / Posit | 一条命令三件套定型 |
| 2022-08-01 | Docusaurus 2.0 stable | Meta | MDX 博客大众化 |
| 2022-12-15 | Slidev 1.0 | Anthony Fu | 幻灯环后发成熟 |
| 2023-01 / 03-21 | Pandoc 3.0;Typst 开源 | MacFarlane / Haug & Mädje | 轻量排版替代 LaTeX |
| 2023 | Pandoc 3.1.3 Typst 支持;Quarto 1.3 | MacFarlane / Posit | PDF 链路轻量化 |
| 2023-10-24 | MDX 3(RSC 支持) | Wormer | RSC 时代组件内容 |
| 2024–2025 | Quarto 1.4–1.7;Pandoc 3.1.12 djot(2024)、3.6–3.8(2025) | Posit / MacFarlane | 稳定迭代 |
| 2026 | Quarto 1.8/1.9→1.10.19(稳定)/1.11.7(预发布);Pandoc 3.9 WASM→3.10/3.11→3.13 | Posit / MacFarlane | 免安装化;LLM 变量入场 |
1.9 参与者与驱动力总览
- 个人英雄线:Gruber/Swartz(定义格式)→ MacFarlane(22 年持续维护 Pandoc、参与 CommonMark 规范、2022 年另起 djot)→ 谢益辉(knitr/rmarkdown,学术写作范式)→ JJ Allaire(RStudio→Posit→Quarto 的产品化押注)→ Titus Wormer(unified/MDX 的 JS 侧正统)。
- 机构线:Daring Fireball(个人博客起家)→ RStudio/Posit(从 R 公司到多语言发布系统公司,2022-07-27 更名)→ GitHub(2009 GFM、2017 正式规范,最大平台背书)→ Meta(Docusaurus)→ Typst 公司(排版新势力)。
- 驱动力演化:程序员文化(2004–2010)→ 可复现学术(2011–2014)→ 标准化与组件化工程(2015–2018)→ 内容工程化与跨语言统一(2019–2023)→ 免安装化与 AI 变量(2024–)。
二、横轴:横向对比(2026-10 时间截面)
2.1 四层结构:替代品不在同一平面
Markdown 工具链的"替代品"并不都在同一平面上。把 2026-10 时点的主要玩家按抽象层级分四层,才能看清 Pandoc / Quarto / MDX 各自的竞争面:
| 层级 | 定位 | 本课题主角 | 同层替代品 | 互补品(输出环节) |
|---|---|---|---|---|
| L1 通用转换器 | "格式之间自由转换"的瑞士军刀 | Pandoc | Asciidoctor(AsciiDoc) | — |
| L2 一体化出版系统 | 在 Pandoc 之上封装项目、执行、模板、发布 | Quarto | R Markdown(前身)、Jupyter Book 2 / MyST、LaTeX、Typst | — |
| L3 组件化内容 | Markdown 内嵌代码组件、深度绑定 JS 框架 | MDX | Markdoc、Vue 生态 markdown 方案 | Astro / Next.js / Docusaurus(宿主) |
| L4 输出专用工具 | 单一交付物做到极致 | —(不直接竞争) | — | 幻灯:Marp、Slidev、reveal.js;博客:Hugo、Astro |
关键洞察:Pandoc 与 Quarto 是"上下游"而非对手(Quarto 底层直接调用 Pandoc);MDX 与前两者是"世界观之争"——前两者把 Markdown 当作"可转换的文档源",MDX 把 Markdown 当作"可编程的组件载体"。L4 工具则在最小管线的"幻灯"和"博客"环节构成路线选项。
2.2 三大主角主对比表(2026-10 实抓数据)
| 维度 | Pandoc | Quarto | MDX |
|---|---|---|---|
| 一句话定位 | 通用文档转换器("swiss-army knife",pandoc.org) | 开源科学与技术出版系统,"R Markdown 的多语言下一代版本"(quarto.org) | "Markdown for the component era",Markdown + JSX(mdxjs.com) |
| 当前版本 | 3.13(2026-10-26,Releases API) | 稳定版 v1.10.19(2026-10-06),预发布 v1.11.7(2026-10-27)(releases) | @mdx-js/mdx 3.1.1(npm 实抓,registry.npmjs.org) |
| 许可证 / 货币成本 | GPL-2.0,免费 | MIT(COPYRIGHT,版权归 Posit Software, PBC),免费 | MIT,免费 |
| GitHub star(实抓时点) | 46,736(API) | 6,134(API) | 19,837(API) |
| 实现语言 | Haskell | TypeScript/JavaScript(底层捆绑 Pandoc) | JavaScript(TypeScript 编写) |
| 维护活跃度(pushed_at) | 2026-10-28,持续 20 年(©2006–2025 John MacFarlane,pandoc.org) | 2026-10-28,Posit 商业公司支持 | 2026-10-26,unified/remark 社区(维护者 Titus Wormer) |
| 依赖栈 | 单二进制(Haskell 静态编译);PDF 需另装 LaTeX/Typst 引擎 | 需安装 Quarto(捆绑 Pandoc);执行代码需 Python/R/Jupyter;PDF 需 LaTeX 或 Typst 引擎 | Node.js + 宿主框架(Next.js/Astro/Docusaurus 等) |
| 世界观 | Markdown 是可转换的文档源 | Markdown 是可执行、可发布的工程源 | Markdown 是可编程的组件载体 |
| 典型短板 | 裸用无项目管理/主题/热更新,DIY 成本自担 | 生态心智仍偏学术圈,JS 组件嵌入不如 MDX 原生 | 不产出 docx/PPTX,离开 JS 框架无产出物 |
2.3 核心能力矩阵:一源三出(一个人管线的胜负手)
围绕"一份 Markdown 源 → 三类交付物"逐格打分(✅ 原生支持;🟡 需组合/配置;❌ 不在其设计目标内):
| 交付物 | Pandoc 3.13 | Quarto 1.10 | MDX 3.1 |
|---|---|---|---|
| 博客/网站 | 🟡 单页 HTML 直出;成站需自接 Hugo/Jekyll(Pandoc 可作后端) | ✅ 内置 Website + Blog 系统(导航、归档、订阅、搜索,官方输出格式页) | ✅ 宿主框架最强项:Next.js、Astro(官方 MDX 集成)、Docusaurus |
| 报告(Word/docx) | ✅ 一条命令直出 docx,参考文档样式可控(pandoc.org) | ✅ 直出 docx,另有交叉引用、参考文献(CSL/BibTeX)、模板体系 | ❌ 无文档转换目标 |
| 报告(PDF) | ✅ 经 pdflatex/xelatex/lualatex/weasyprint 等引擎;亦输出 Typst | ✅ PDF 引擎 LaTeX 与 Typst 双支持(官方输出格式页) | ❌ |
| 幻灯(HTML) | ✅ 直出 reveal.js / Slidy / S5 / Slideous / DZSlides | ✅ revealjs 一等公民格式 | 🟡 需转投 Slidev(Slidev 吃 .md 而非 MDX) |
| 幻灯(PPTX) | ✅ 直出 PowerPoint(pandoc.org) | ✅ 直出 pptx | ❌ |
| 可执行计算文档 | 🟡 经 filter 机制(R/Python 需自行接线) | ✅ 内置 knitr 与 Jupyter 双引擎(quarto.org) | 🟡 需自建 MDX 组件包裹 |
| 交互式组件 | ❌ 纯转换,无组件概念 | 🟡 有 shortcode 与 Observable JS(OJS) | ✅ JSX 原生嵌入,"import 你的图表组件然后写进正文"(mdxjs.com) |
| 一键发布托管 | ❌ 自理 | ✅ quarto publish 直达 Quarto Pub(免费)、Posit Connect Cloud(免费)、GitHub Pages、Netlify、Confluence、Hugging Face Spaces(官方发布文档) | 🟡 宿主框架决定(Vercel/Netlify/Cloudflare) |
矩阵直接给出结论雏形:Quarto 是唯一在三类交付物上全部 ✅ 的单工具;Pandoc 全部 ✅/🟡 但没有"项目"概念,工程化要自己搭;MDX 在"报告"这条腿上是缺席的——MDX 的全部产出物都是网页,没有 docx、没有 PPTX、没有 PDF 管线,这不是缺陷而是设计边界(所有编译发生在构建阶段、无运行时,mdxjs.com)。
2.4 成本:货币成本全为零,差异在学习与维护
三者全部开源免费(GPL-2.0 / MIT / MIT),货币成本均为零。真正的成本结构差异在:
- 学习成本:Pandoc 单命令上手最快,但组合成管线(Makefile、filter、模板、参考文档)需要真实的工程功夫;Quarto 一条
quarto render打通三类交付物,学习曲线集中在 front-matter 约定与执行引擎配置;MDX 要求先掌握 Node 生态与一个宿主框架(Next.js/Astro/Docusaurus),对不写前端的人是三者中最陡的。 - 环境依赖成本:Pandoc 单二进制最干净;Quarto 需要额外装 Pandoc 之外的计算引擎(Python/R)与 PDF 引擎(LaTeX 或 Typst);MDX 锚定整个 npm 依赖树,框架升级带来的维护成本长期最高——这是所有 JS 生态的通病。
- 切换/迁移成本:纯 Markdown 源(Pandoc/Quarto)可在两者间近乎无损迁移;MDX 源文件混入 JSX 后丧失可移植性,被锁进 React 系框架(Vue 有对应方案但语法不通用)。
2.5 生态:三种社区形态
实抓 star 数看绝对规模:Pandoc 46,736 ★、MDX 19,837 ★、Quarto 6,134 ★(GitHub API,2026-10-28 实抓)。但 star 的含义完全不同:
- Pandoc 的生态是"底层设施"型——被 Quarto、无数 CI 流程、Zotero、编辑器默默依赖,社区以邮件列表与 Issue 为中心,维护者 John MacFarlane 一个人主导了二十年。
- Quarto 的生态是"机构支持"型——背后是 Posit(原 RStudio)商业公司持续投入,star 不高但学术/数据圈渗透率极高,且通过
quarto publish与 GitHub Pages/Netlify/Confluence/Hugging Face Spaces 等托管端形成分发网络(官方发布文档)。 - MDX 的生态是"宿主框架"型——官网明列 Docusaurus、Next.js、Vite、Rollup、esbuild、webpack 集成(mdxjs.com),加上 Astro 官方
@astrojs/mdx(Astro 文档)。它的社区规模实际上是"整个 React 内容站点生态"的交集,宿主框架(Next.js 143,186 ★、Docusaurus 66,598 ★、Astro 63,558 ★,均为 2026-10 实抓)反过来为它输送用户。Hugo 虽有 90,272 ★(2026-10 实抓),但它不内置 MDX、不属 MDX 宿主(见 2.1 表 L4 行),只是同属 Markdown 内容生态的兄弟项目,不计入此处对比。
2.6 成熟度:全部活跃,节奏与背书不同
2026-10-28/29 实抓的 pushed_at 显示三个项目主仓库都在最近两天内有提交,无一停滞:Pandoc(2026-10-28)、Quarto(2026-10-28)、MDX(2026-10-26)。成熟度差异在"背书与节奏":Pandoc 由单人核心维护者主导但已稳定运行二十年,版本号进入 3.13;Quarto 由商业公司背书,稳定版 v1.10.19 与预发布 v1.11.7 双轨并行(Releases),是三者中发布节奏最工程化的;MDX 处于 v3 稳定期(3.1.1),unified/remark 插件体系是其长期护城河。
同层竞品的成熟度也值得记录:Typst v0.15.1(2026-07-17,Releases)仍处 0.x 快速演进期;MyST/mystmd 仅 530 ★(API),Jupyter Book 2 自 2024-11 alpha 起基于 MyST 引擎重建(2i2c 博客),学术社区采用中但体量远小于 Quarto;Asciidoctor 5,227 ★、活跃维护(API),有第三方对比文给出"约 90% 文档项目选 Markdown,书级技术文档才考虑 AsciiDoc"的估计(对比文;Asciidoctor 官方另有对比页(官方对比页)可交叉参考)——"90%"仅此一处来源,按有出处观点而非公认数据采用。
2.7 适用场景速断
按工具一句话速断,完整路线表、边界条件与理由收敛到 §3.5,此处不再重复:
- Pandoc:交付物异构且以"转换"为主(如每周要交 docx 周报 + 偶尔出 PDF)、愿意自己搭管线、不想被框架绑定时的选择,也是任何管线里最可靠的"兜底层"(→ §3.5 路线 B)。
- Quarto:一个人要同时维护博客、报告、幻灯且希望一份源文件风格统一时的默认选择(→ §3.5 路线 A)。
- MDX:仅当博客即产品且身为 React/Astro 开发者时才升级(→ §3.5 路线 C)。
三、交叉洞察:两轴结合说明了什么
3.1 横轴的"四层结构"是纵轴的历史沉积
横轴看到的 L1–L4 分层不是谁设计出来的架构图,而是纵轴 22 年逐层沉积的地层:L1(通用转换器)对应 2006–2012 年 Pandoc 的格式矩阵扩张期;L2(一体化出版系统)对应 2012–2022 年 knitr → R Markdown → Quarto 的学术发布线;L3(组件化内容)对应 2015–2023 年 unified/remark → MDX → Docusaurus 的 JS 工程线;L4(输出专用工具)对应每个交付物环节的独立演化(reveal.js 2011、Marp Next 2019、Slidev 2021)。因此"谁替代谁"在多数情况下是伪问题:不同层的工具回答的是纵轴不同阶段的问题——Quarto 不取代 Pandoc(它调用它),MDX 不取代 Quarto(它连 docx 都不产出)。
3.2 "站在 Pandoc 肩上"发生了两次,这条模式大概率继续
2014 年 R Markdown v2 的公告第一句是 "Standing on the shoulders of Pandoc"(公告);2022 年 Quarto 1.0 重复了同一架构决策——定位 "the next generation of R Markdown"(公告),底层仍捆绑 Pandoc(横轴实抓:Quarto 依赖栈注明"需安装 Quarto(捆绑 Pandoc)")。"封装层换血、转换底座不动"是纵轴最稳定的结构,也解释了横轴的一组数据:Pandoc star 数(46,736)约为 Quarto(6,134)的 7.6 倍——底座慢而稳,封装层迭代快且跟着场景走。对用户的推论:押注封装层之前,先确认底座;只要 Pandoc 的格式矩阵还在,封装层即使更换,纯 Markdown 源在 Pandoc/Quarto 之间也近乎无损迁移(见 2.4)。
3.3 三种世界观是纵轴三次回应的投影,且长期共存而非收敛
纵轴上"Markdown 表达力不足"被回应了两次:MacFarlane《Beyond Markdown》(2018)走"新语法"路线(djot,2024 年进 Pandoc 3.1.12);MDX(2018)走"嵌入宿主语言"路线(JSX)。到 2026-10 截面,两条路线都没有成为主流——djot 仍是 Pandoc 的一个格式而非独立生态(见 1.7),MDX 19,837 ★ 远低于其宿主生态(Next.js 143,186 ★、Docusaurus 66,598 ★、Astro 63,558 ★,见 2.5),而 2014–2017 年的 CommonMark/GFM 标准化路线反而赢下了平台层(见 1.4)。这说明:Markdown 的"够用 + 外挂"策略在竞争中胜出——表达力缺口由 Quarto 的 shortcode/OJS 与 MDX 的组件两个"外挂"来补,而不是替换语法本身。三种世界观(可转换的文档源 / 可执行可发布的工程源 / 可编程的组件载体)因此各管一段、长期共存。
3.4 纵轴尽头的开放问题:LLM 与免安装化
纵轴 2026 年的两个最新事实构成开放问题。其一,MacFarlane 在《Twenty Years of Pandoc》里问"LLM 是否会取代格式转换器",并自答 Pandoc 目前更确定性、更可靠、"生态上更便宜"(原文);其二,Pandoc 3.9 实现 WASM、可在浏览器直接运行(2026-02),工具链走向免安装(见 1.7)。两轴结合的判断是:LLM 时代"结构化、可校验的纯文本源"价值不降反升(见 1.7 驱动力),而"转换"这一步恰恰要求确定性输出,是生成式模型的最弱项——"源文件用 Markdown 写、转换交给确定性工具"的分工大概率继续成立。风险端:Typst 仍处 0.x 快速演进、MyST 代表科研社区第二路线(见 2.6),说明 PDF 与学术出版两个生态位仍在洗牌,选型应保留迁移余地。
3.5 对用户的判断与建议
判定原则:"最小"的度量应该是工具数与心智负担,而不是单点能力上限。
三条路线(两章各自的"三条管线"建议在此合并):
| 路线 | 工具清单 | 工具数 | 一源三出 | 视觉/交互上限 | 主要风险 |
|---|---|---|---|---|---|
| A. Quarto 单工具(默认推荐) | Quarto(内含 Pandoc)+ 可选 Typst | 1–2 | 博客✅ 报告✅ 幻灯✅ | 中 | 博客主题天花板、学术气质过重 |
| B. Pandoc DIY | Pandoc + Make/Just + LaTeX/Typst | 3–4 | 全部✅(自建) | 中(取决于模板功夫) | 一切工程化问题自担 |
| C. JS 组合拳 | Astro/Next.js + MDX(博客)+ Slidev(幻灯)+ Pandoc/Typst(报告兜底) | 4+ | 博客✅✅ 幻灯✅ 报告🟡 | 高 | 依赖树膨胀、MDX 源不可移植、三套构建体系 |
- 路线 A 是 2026-10 时点的默认答案:Quarto 是唯一单工具覆盖三类交付物、且每条腿都是一等公民(而非兼容层)的方案。一个 Git 仓库,
_quarto.yml声明 website 项目,博客、报告(.qmd,PDF 引擎可选 Typst)、幻灯(revealjs/pptx 格式)都是同一种方言;quarto render一次出全部产物,quarto publish直发 GitHub Pages / Quarto Pub / Netlify 等(发布文档);引用、交叉引用、代码执行全部内建。代价是接受它偏学术的默认审美。 - 路线 B 是工程师的浪漫与陷阱:完全可控、永不被弃养,但主题、导航、归档这些 Quarto 开箱即有的东西全部自己写,隐性成本最高。典型命令:博客交给任意 SSG,报告
pandoc report.md --citeproc -o report.pdf(或-t typst),幻灯pandoc slides.md -t revealjs -s -o slides.html(pandoc.org/MANUAL.html)。 - 路线 C 只在"博客即产品"时值得:交互上限确实最高(Slidev 49,263 ★、MIT、2026-10-23 仍有提交,API),但报告这条腿最终还得回头装 Pandoc 或 Typst,"最小管线"名存实亡,变成四个工具三套约定;MDX 源混入 JSX 后丧失可移植性(见 2.4),升级前想清楚迁移成本。
- 幻灯单点替换:嫌 revealjs 朴素,可在路线 A/B 中局部换 Marp(12,699 ★、MIT、CLI + VS Code 工作流,marp.app;注意其核心仓库 2026-07-29 后暂无新提交,API)。有社区讨论将分野概括为"内容向选 Marp、交互向选 Slidev"(Slidev 讨论 #86)——此说仅此一处来源,供参考而非公认定论。
- 边界条件:书级技术文档看 AsciiDoc(Asciidoctor 5,227 ★、活跃维护;约 90% 文档项目仍选 Markdown,对比文、官方对比页);期刊/会议投稿仍被 LaTeX 模板垄断,有第三方选型文主张"自控格式用 Typst,投稿用 LaTeX"(Typst vs LaTeX 2026);科研计算社区另有 MyST/Jupyter Book 2 路线(2i2c 博客)。这些不构成对主结论的颠覆,而是边界条件的标注。
- 一句话版本:默认选 Quarto(单工具、三类交付物全一等公民、免费托管一条命令);把 Pandoc 留作管线里最底层的兜底转换器(它本来也是 Quarto 的引擎);只有当博客本身是产品、且你是 React/Astro 开发者时,才升级 MDX 路线,并接受报告环节需要第二个工具的事实。
下一步:上手与迁移
选定路线 A 之后,读者接下来自然会问的三件事:
- 第一步怎么走:从 quarto.org/docs/get-started 下载平台安装包(Quarto 自含 Pandoc,无需另装);
quarto create-project myblog --type website生成站点骨架,按官方博客教程把首页配成文章 listing;日常循环三条命令——quarto preview(本地热更新)、quarto render(出全站产物)、quarto publish gh-pages(发布,亦支持netlify、quarto-pub,见发布文档)。 - 存量 .md 与既有 Hugo/Jekyll 博客如何迁移:纯 Markdown 文件可直接放进站点目录按页渲染——这就是 2.4 所称"近乎无损迁移"的实义;真正要动手的只有三处:把 Hugo/Jekyll front-matter 的键名换成 Quarto 的 YAML 约定(
title、date等大体同名),把原主题承担的导航/归档/订阅改用_quarto.yml与 listing 配置实现,把 Hugo shortcode 与原模板样式按 Quarto 的 shortcode/callout 体系重写。若原站是 Astro/Next.js + MDX(路线 C 回迁),混有 JSX 的文件需先剥离 JSX(见 2.4)。 - "博客主题天花板/学术气质过重"的参照物:Quarto 网站主题体系构建在 Bootstrap 之上(网站主题文档),官方形态是"导航栏 + 卡片式 listing + 学术排版正文";Hugo/Astro 主题市场里常见的杂志式首页、营销式 hero 区块、组件化页脚等效果没有现成模板,需要自己写 CSS/HTML 改造——这就是路线表里路线 A"视觉/交互上限:中"的具体含义。若这类效果对你是硬需求,路线 C 的优先级应上调。
- 结论何时需要重估:Quarto 1.11 转正属于既有路线内的例行升级,不改变"单工具覆盖三类交付物"的判断;Typst 若出 1.0,只会让路线 A/B 的 PDF 引擎更稳,同样不动摇结论。真正动摇结论的信号是两个:"Quarto 不再捆绑 Pandoc"(违背 §3.2 的底座规律)或"MDX 获得独立的 docx/PDF 输出能力"——截至 2026-10-29 两者均未发生。
参考来源
一手公告与官方文档
- Twenty Years of Pandoc(John MacFarlane, 2026-08-02)——Pandoc 全版本时间线的一手来源
- Pandoc 官网(定位与输出格式清单)| Pandoc MANUAL | pandoc.org/releases.html
- Daring Fireball: Markdown 项目页
- R Markdown v2 公告(2014-06-18)
- Standard Flavored Markdown(Atwood, 2014-09) | Standard Markdown is now Common Markdown | InfoQ 报道
- A formal spec for GitHub Flavored Markdown(GitHub Blog, 2017-03-14)
- Announcing Quarto(JJ Allaire, 2022-07-28) | posit.co/blog
- Quarto 官网 | 输出格式总览 | 发布文档 | 下载页(版本线日期)
- MDX 官方博客(v1 2019-04-11、v2 2022-02-01、v3 2023-10-24) | MDX 官网 | mdx-js/mdx 仓库
- Docusaurus 2.0 发布推文(2022-08-01) | MDX 3 / Docusaurus v3 讨论 #9053
- knitr 仓库 | reveal.js 仓库 | revealjs.com
- Slidev 官网 | Slidev Releases | Marp: The story of Marp Next | Marp 官网
- Typst 仓库 | Typst Releases | unified 生态
- Astro MDX 集成官方文档
- AsciiDoc 官方对比页
- Quarto 公开预览期社区解读示例(Hello Quarto)
版本与数据实抓(2026-10-28/29)
- Pandoc:api.github.com/repos/jgm/pandoc | releases/latest | GitHub Releases(3.13 Latest, 2026-10-26) | newreleases.io 镜像(3.12)
- Quarto:api.github.com/repos/quarto-dev/quarto-cli | GitHub Releases(v1.10.19 / v1.11.7) | COPYRIGHT 文件 | 下载页数据源 _download.json(修订时 2026-10-29 复核)
- MDX:api.github.com/repos/mdx-js/mdx | npm registry(@mdx-js/mdx 3.1.1)
- 同层与生态竞品:MyST/mystmd | Asciidoctor | Marp | Slidev | reveal.js | Hugo | Astro | Docusaurus | Next.js
社区与第三方分析
- Typst vs LaTeX 2026 选型
- AsciiDoc vs Markdown 2026 选型
- Jupyter Book 2 / MyST(2i2c 博客) | Project Pythia: mystification
- Slidev vs Marp 社区讨论 #86
背景资料(未逐一核实)
- Wikipedia: Markdown(GFM 2009 起源);Jekyll/Hugo/Obsidian 年份为背景知识