研究报告 · 约 23,887 字 · 预计推送 3 部分

Markdown 生态与文档工具链:Pandoc、Quarto、MDX 的工程实践 未开始

目录

题记与说明

——纵轴发展脉络 × 横轴横向对比 · 综合报告

数据快照:2026-10-28 / 2026-10-29 | 综合完成:2026-10-29

本文由两份分章研究综合而成:《纵轴报告:Markdown 生态与文档工具链——Pandoc、Quarto、MDX 的工程实践》(发展脉络,2026-10-29)与《Markdown 生态与文档工具链横向对比:Pandoc · Quarto · MDX》(2026-10 时间截面)。综合时统一了两章的数据时点、合并了重复叙述(两章各自给出的"三条管线"建议在此合并为一份)、消除了版本快照差异(详见"数据说明与局限")。全部关键事实保留来源链接;无法核实之处如实标注,不做推测性填充。

数据说明与局限

  1. 版本号、star 数、最近推送时间(pushed_at)均为时点快照:取自 2026-10-28/29 的 GitHub API、npm registry 与官网实抓(两章数据说明),阅读时间越晚,数值越可能漂移。
  2. 两章对 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 口径。
  3. 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)。
  4. 未做端到端实证:两章均未实际搭建三条候选管线逐条计时验证;能力矩阵基于官方文档与 Release 元数据交叉核实(引用见正文),路线评分含基于文档与第三方对比的判断成分,如实声明。
  5. Quarto 许可证以仓库文件为准:GitHub API 显示 "Other/NOASSERTION",以 COPYRIGHT 文件原文(MIT,版权归 Posit Software, PBC)为准(COPYRIGHT)。
  6. 背景性事实标注: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):诞生与"单文件脚本"时代

这一阶段的最小管线是"一条命令":markdown post.md > post.html,或用 pandoc 一次转换。博客可行,报告勉强(LaTeX 路线),幻灯只有 S5 这类小众方案。

1.3 阶段二(2011–2014):方言混战与学术写作入场

意义:R Markdown v2 是第一个"一键三件套"原型——但绑定 R 语言与 RStudio。纯 Python/JS 用户要在 Pandoc 命令行里自己拼 --citeproc、-t beamer 这类参数,管线依旧是手工的。

1.4 阶段三(2015–2018):标准化落地与 JS 生态接管

意义:标准化让 Markdown 在所有平台行为一致,但"转报告/幻灯"仍要靠 Pandoc 或 R Markdown;同时 React 博客(Gatsby 等)开始流行,纯 Markdown 表达不了交互组件,MDX 正是为这个缺口而生。

1.5 阶段四(2019–2021):组件化内容与统一管线前夜

意义:管线三环各自就位——博客(MDX)、报告(Pandoc citeproc)、幻灯(Slidev/Marp/reveal.js)——但互不相通,一个人仍要维护三套工具链。缺的是一个跨语言的统一层。

1.6 阶段五(2022–2023):Quarto 1.0 与"一条命令三件套"定型

意义:这是纵轴的分水岭。Quarto 把博客(website/blog)、报告(PDF/docx/Typst)、幻灯(revealjs/pptx)、引用(citeproc 内置)、代码执行(Jupyter/knitr)收进一个 quarto render。"一个人写博客+报告+幻灯"第一次成为官方支持场景而非民间拼装。

1.7 阶段六(2024–2026 当下):成熟期与新变量

驱动力:工具链进入维护成熟期,竞争焦点从"能不能转"转向"转得多顺滑"(浏览器免安装、增量渲染、发布托管一体化);AI 生成内容爆发使"结构化、可校验的纯文本源"价值不降反升——Markdown 源文件恰是 LLM 时代最可控的中间表示。

1.8 时间线速览

时间事件参与者对单人管线的意义
2004-03Markdown 1.0(Gruber & Swartz)Gruber, Swartz"写"的问题解决
2006-08-03Pandoc 0.1(含 S5 幻灯输出)MacFarlane"转"的问题起步,幻灯埋种子
2008-09Pandoc 1.0MacFarlane格式矩阵扩张
2011reveal.jsHakim El HattabHTML 幻灯标准
2012-01knitr 上 CRAN谢益辉可执行报告
2012Pandoc 1.9:docx + Beamer/DZSlidesMacFarlane报告+幻灯一条链
2014-06-18R Markdown v2("站在 Pandoc 肩上")谢益辉, RStudio一键三件套原型(绑 R)
2014-09CommonMark(Standard Markdown 更名风波)Atwood, MacFarlane, Gruber标准化启动
2017-03-14GFM 正式规范 + cmark-gfmGitHub最大平台接受标准
2017-10-30Pandoc 2.0(Lua filter、PandocMonad)MacFarlane工程化成熟
2018MDX 启动;MacFarlane《Beyond Markdown》Otander 等, MacFarlane组件化内容缺口显形
2019-04-11MDX 1.0 稳定Otander / Wormer博客环就位
2020-10Pandoc 2.11 内置 citeprocMacFarlane引用内建,报告环质变
2021 年中Quarto 公开预览RStudio统一层露头
2022-02-01MDX 2(ESM 重写)Wormer前端管线现代化
2022-07-27/28Posit 更名;Quarto 1.0 官宣Allaire / Posit一条命令三件套定型
2022-08-01Docusaurus 2.0 stableMetaMDX 博客大众化
2022-12-15Slidev 1.0Anthony Fu幻灯环后发成熟
2023-01 / 03-21Pandoc 3.0;Typst 开源MacFarlane / Haug & Mädje轻量排版替代 LaTeX
2023Pandoc 3.1.3 Typst 支持;Quarto 1.3MacFarlane / PositPDF 链路轻量化
2023-10-24MDX 3(RSC 支持)WormerRSC 时代组件内容
2024–2025Quarto 1.4–1.7;Pandoc 3.1.12 djot(2024)、3.6–3.8(2025)Posit / MacFarlane稳定迭代
2026Quarto 1.8/1.9→1.10.19(稳定)/1.11.7(预发布);Pandoc 3.9 WASM→3.10/3.11→3.13Posit / MacFarlane免安装化;LLM 变量入场

1.9 参与者与驱动力总览


二、横轴:横向对比(2026-10 时间截面)

2.1 四层结构:替代品不在同一平面

Markdown 工具链的"替代品"并不都在同一平面上。把 2026-10 时点的主要玩家按抽象层级分四层,才能看清 Pandoc / Quarto / MDX 各自的竞争面:

层级定位本课题主角同层替代品互补品(输出环节)
L1 通用转换器"格式之间自由转换"的瑞士军刀PandocAsciidoctor(AsciiDoc)—
L2 一体化出版系统在 Pandoc 之上封装项目、执行、模板、发布QuartoR Markdown(前身)、Jupyter Book 2 / MyST、LaTeX、Typst—
L3 组件化内容Markdown 内嵌代码组件、深度绑定 JS 框架MDXMarkdoc、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 实抓数据)

维度PandocQuartoMDX
一句话定位通用文档转换器("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)
实现语言HaskellTypeScript/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.13Quarto 1.10MDX 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),货币成本均为零。真正的成本结构差异在:

2.5 生态:三种社区形态

实抓 star 数看绝对规模:Pandoc 46,736 ★、MDX 19,837 ★、Quarto 6,134 ★(GitHub API,2026-10-28 实抓)。但 star 的含义完全不同:

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,此处不再重复:


三、交叉洞察:两轴结合说明了什么

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)+ 可选 Typst1–2博客✅ 报告✅ 幻灯✅中博客主题天花板、学术气质过重
B. Pandoc DIYPandoc + Make/Just + LaTeX/Typst3–4全部✅(自建)中(取决于模板功夫)一切工程化问题自担
C. JS 组合拳Astro/Next.js + MDX(博客)+ Slidev(幻灯)+ Pandoc/Typst(报告兜底)4+博客✅✅ 幻灯✅ 报告🟡高依赖树膨胀、MDX 源不可移植、三套构建体系

下一步:上手与迁移

选定路线 A 之后,读者接下来自然会问的三件事:


参考来源

一手公告与官方文档

版本与数据实抓(2026-10-28/29)

社区与第三方分析

背景资料(未逐一核实)

思考题(读完后想一想,参考答案可展开)

  1. 报告认为 Markdown 生态 22 年的主线是什么?Markdown、Pandoc、MDX、Quarto 各自回答了什么问题?
    参考答案

    主线是“单人发布管线”成本持续下降:一个人用纯文本写作,如何用最少命令把同一批稿子变成博客、报告和幻灯。Markdown(2004)解决“写”;Pandoc(2006)解决“转”,生成真正的 AST 而非正则替换;MDX(2018)解决“组件化”,在 Markdown 里直接写 JSX;Quarto(2022,Posit)一条命令打通三件套,“博客+报告+幻灯”第一次成为官方支持场景。

  2. Pandoc、Quarto、MDX 三者在 2026 年截面上是什么竞争关系?“一源三出”能力矩阵的结论是什么?
    参考答案

    三者不同层:Pandoc 是通用转换器;Quarto 是一体化出版系统,底层直接调用 Pandoc,两者是上下游而非对手;MDX 是组件化内容载体,与前两者是“世界观之争”。矩阵结论:Quarto 是唯一在博客、报告、幻灯三类交付物上全部原生支持的单工具;Pandoc 全部可达成但无“项目”概念,工程化自担;MDX 不产出 docx/PPTX/PDF,报告这条腿缺席,这是设计边界而非缺陷。

  3. 报告给出的三条候选管线各有什么风险与局限?关于“LLM 是否会取代格式转换器”,报告的判断是什么?
    参考答案

    路线 A(Quarto):博客主题天花板、学术气质重;路线 B(Pandoc DIY):工程化全自担;路线 C(JS 组合拳):依赖树膨胀、MDX 混入 JSX 后丧失可移植性,“最小管线”名存实亡。LLM 判断:MacFarlane 认为 Pandoc 更确定、可靠、“生态上更便宜”;“转换”要求确定性输出,是生成式模型最弱项,“Markdown 写源、确定性工具转换”的分工大概率继续成立。

  4. 要同时维护博客、报告、幻灯的个人开发者应如何选型?出现什么信号时需要重估结论?
    参考答案

    默认选 Quarto:三类交付物全为一等公民,quarto publish 一键免费发布到 GitHub Pages 等;Pandoc 留作底层兜底转换器;仅当博客即产品、且你是 React/Astro 开发者时才升级 MDX 路线,并接受报告环节需第二个工具。重估信号:Quarto 不再捆绑 Pandoc,或 MDX 获得独立 docx/PDF 输出——截至 2026-10-29 均未发生。

← 资料库今日播报 →