不学前端也能发技术文档:Quarto 1.11 把代码、图表与排版串成一条线
摘要
Quarto 1.11 让作者用 Markdown 把代码、图表与排版串成一条线,一份源文件就能渲染出网页、PDF、Word、幻灯片与电子书,升级还修了证书链风险。
推荐- 软件名称
- Quarto
- 版本
- 1.11
- 收费
- 免费
- 开源
- 开源
- 操作系统
- WindowsmacOSLinux
- 更新时间
- 2026-11-06 23:00
把文字和代码放进同一个文件
写一份带数据的技术文档,常见的流程是这样的:在笔记本里跑出图表,导出成图片,再拖进 Word 里排版,改一次数据就要重来一遍。Quarto 想拆掉的就是这段来回搬运。它由 Posit 维护,站在 Pandoc 之上,定位是一套开源的科学与技术出版系统,作者只需要维护一个后缀为 qmd 的纯文本文件,叙述性文字和可执行代码块写在同一个文件里,渲染的时候代码先跑,图表和数值原地填进文档,最后交给 Pandoc 转成成品。
这件事的价值不在于少点几次鼠标,而在于结果的来源始终可追。文档里的每一个数字、每一张图都对应着文件里的一段代码,数据更新之后重新渲染即可,不会出现正文写着三月的结论、配图还是二月版本的情况。对需要长期维护的报告和技术文档来说,这比排版漂亮更实用。
一份源文件,几种成品
Quarto 的输出格式覆盖得很宽:HTML 网页、PDF、Word 文档、ePub 电子书,以及 revealjs 演示文稿,还能把多篇文档组织成网站、博客和书籍。同一份源文件可以同时指定多个目标格式,不必为投屏版本和打印版本各维护一套稿子。写作时用的是 Pandoc 的 Markdown 方言,数学公式、文献引用、交叉引用、图表面板、标注框和高级页面布局都在语法层面支持,图表编号会随着内容的增删自动重排,长文档里最容易出错的手工编号被省掉了。
代码执行不绑定语言。Python、R、Julia 与 Observable JavaScript 都能直接写进代码块,引擎会在渲染时按需选择,Jupyter 笔记本也可以原样渲染。编辑器方面没有强制要求,VS Code、Positron、RStudio、JupyterLab 都能用,也提供可视化的 Markdown 编辑器,习惯纯文本的人用任意文本编辑器加命令行同样顺畅。
1.11 版本修的是底子
Quarto 1.11 在 2026 年 11 月 2 日发布,这个版本比惯例提前,原因是一个安全更新。它把内置的 Deno 运行时从 2.7.14 提到 2.9.8,新版本会拒收包含已被攻破的 eMudhra 与 emSign 证书链的证书。这件事影响的是发布和拉取环节:quarto publish、quarto add、quarto use template 这些命令,以及 Quarto 运行的 TypeScript 脚本,都要走 HTTPS 请求,旧版本信任这些证书,等于给同一网络里的攻击者留了冒充站点的机会。官方明确这次修复不回移到 1.10 系列,也就是说想拿到修复只能升到 1.11。
代价是系统门槛抬高了一点。内置 Deno 2.9.8 在 macOS 上要求 12 或更高版本,还在更老系统上的机器需要先升级,否则渲染引擎和相关格式可能跑不起来。
无障碍这块补得比较实
1.11 的另一半改动落在无障碍上,而且改的都是真会被用到的位置。使用 Bootstrap 主题的 HTML 文档、网站、书籍和仪表板加入了跳转到正文的链接,用键盘操作时不用再一路 Tab 过整个导航;网站侧边栏的分区改成可以用键盘操作的按钮;可滚动的代码块和输出区域在 Safari 里能获得焦点并滚动;引文、脚注、交叉引用和代码注释的弹层支持 Esc 关闭。视觉上新增了双色键盘焦点环,即使在强制高对比度模式下也能看清焦点落在哪里。
图表和演示文稿也照顾到了。Mermaid 与 Graphviz 生成的图表现在会采用 fig-alt 指定的替代文本,输出到 HTML、revealjs、Word 和 Typst 都生效,替代文本与读者看到的图注保持分离,不会互相顶掉。演示文稿在普通播放视图下把键盘焦点留在当前页,屏幕阅读器不会提前播报还没显示的分步内容,切回浏览器标签页时焦点也不会丢。
Typst 与 Julia 两条线顺手加料
对用 Typst 排版的人来说,这次可以用 lof 和 lot 两个选项生成图表清单,清单标题跟随文档语言,也能通过 crossref 自定义。proof、remark、solution 这三类块从纯文本升级为定理样式,带标签的块支持交叉引用。定义列表的写法也定下来了,用带嵌套项目符号列表的 definition-list 容器,这是下一大版本要沿用的语法。
Julia 引擎增加了 keep-ipynb 选项,执行完的笔记本可以和源文件一起保存下来,同时修了笔记本执行卡住、以及元数据变化没有让缓存单元格结果失效的问题。共享元数据现在会以合并后的值传给 Pandoc 模板和 Lua 过滤器,像 keywords 这种继承来的列表会和文档自身的值合并,而不是被文档里的列表整个替换掉。
适合谁,不适合谁
Quarto 的舒适区很明确:需要把代码、结果和解释写在一起的人。数据分析报告、实验记录、课程讲义、技术手册、需要长期维护的书籍,这些场景里"结果必须能追溯到计算过程"是硬需求,Quarto 的单一源文件模型正好对上。团队已经在用 RStudio 或 Jupyter 的话,迁移成本主要花在熟悉 YAML 选项上,语法本身并不难。
如果只是想要一个干净的文档站,页面里没有任何需要执行的代码,那 Quarto 带来的配置负担会显得多余,更轻的静态站点方案就够了。另外 PDF 这条路径仍然依赖 LaTeX 环境,报错信息对新人不算友好,改用 Typst 格式可以绕开这一层,但 Typst 生态相对年轻。渲染耗时也是要考虑的,计算量大的项目需要配置冻结与缓存,否则每次重建都要重跑一遍。
从 1.11 这次更新看,Quarto 的迭代重心已经从堆功能转向打磨可靠性:证书链、无障碍、跨语言引擎的缓存问题,都是长期使用者才会碰到的痛点。对已经在用的人来说,这次升级的理由是安全修复;对还在观望的人来说,值得先拿一份自己常写的报告试渲染一次,看看这份源文件能不能替代现在那套拼凑的流程。