跳转到内容

PDF 生成

Terminal window
# 安装
brew install quarto # macOS
# 生成
quarto render document.qmd # -> document.pdf
# 预览
quarto preview document.qmd # 热重载

技术栈:Quarto(编排)+ Typst(排版)+ Pandoc(Markdown 解析)


用途适合度替代方案
技术文档非常适合
白皮书 / 报告非常适合
API 文档一般OpenAPI + Redoc
幻灯片 / 演示一般Quarto Revealjs
快速笔记不适合纯 Markdown
协作编辑不适合Google Docs、Notion

┌─────────────────────────────────────────────┐
│ 你的 .qmd 文件 │
│ (Markdown + YAML frontmatter) │
└─────────────────────────────────────────────┘
|
v
┌─────────────────────────────────────────────┐
│ Quarto │
│ (文档渲染引擎) │
│ * 处理 YAML 元数据 │
│ * 管理扩展 │
│ * 管理输出格式 │
└─────────────────────────────────────────────┘
|
┌───────────┴───────────┐
v v
┌───────────────────┐ ┌───────────────────┐
│ Pandoc │ │ Typst │
│ (MD -> AST) │ │ (排版/PDF) │
│ * Markdown 解析 │ │ * 现代引擎 │
│ * AST 转换 │ │ * 编译快速 │
│ * 格式桥接 │ │ * 无需 LaTeX │
└───────────────────┘ └───────────────────┘
|
v
┌─────────────────────────────────────────────┐
│ document.pdf │
│ (专业排版输出) │
└─────────────────────────────────────────────┘
组件版本角色
Quarto≥1.4.0编排、扩展、多格式
Typst0.13.0现代排版(替代 LaTeX)
Pandoc3.xMarkdown 解析(Quarto 内置)

Terminal window
brew install quarto

验证安装

Terminal window
quarto --version # 应为 >=1.4.0
project/
├── _extensions/ # Quarto 扩展(模板)
│ └── custom-template/
│ ├── _extension.yml
│ ├── typst-template.typ
│ └── typst-show.typ
├── documents/
│ ├── guide.qmd # 源文件
│ └── guide.pdf # 生成输出
└── assets/
└── logo.png # 共享资源

创建 document.qmd

---
title: "我的文档"
author: "作者姓名"
date: 2026-01-17
format:
typst:
toc: true
lang: zh
---
# 简介
你的内容在这里...
## 第一节
更多内容,支持 **粗体** 和 `代码`。

生成:

Terminal window
quarto render document.qmd # 创建 document.pdf

  1. 用 Markdown 编写内容.qmd 文件)
  2. 添加 YAML frontmatter 配置元数据
  3. 使用热重载预览quarto preview document.qmd
  4. 生成最终 PDFquarto render document.qmd
  5. 版本控制 源文件和 PDF
参数类型描述示例
titlestring主标题"技术指南"
subtitlestring副标题"v2.0 版"
authorstring/array作者"张三"
datedate文档日期2026-01-17
tocboolean目录true
toc-depthnumber目录层级(1-3)2
langstring语言zhen
section-numberingstring编号格式"1.1"

分页符

{{< pagebreak >}}

代码块(带语法高亮):

```typescript
function hello(): string {
return "world";
}
```

图片

![替代文本](path/to/image.png){width=50%}

创建一个关于我们 API 的技术指南作为 Quarto 文档。
使用 Typst 格式并包含目录。
包含章节:认证、端点、错误码。

编辑后使用 PostToolUse hook 自动生成 PDF:

{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"command": "if echo \"$TOOL_INPUT\" | grep -q '.qmd'; then quarto render \"$FILE\"; fi"
}
]
}
}

创建 _extensions/mytemplate/_extension.yml

title: My Template
author: Your Name
version: 1.0.0
contributes:
formats:
typst:
template: typst-template.typ
template-partials:
- typst-show.typ
// 颜色
#let primary = rgb("#0f172a") // 深色文字
#let secondary = rgb("#334155") // 浅色文字
#let accent = rgb("#6366f1") // 高亮
// 排版
#set text(
font: ("Inter", "Helvetica Neue", "Arial"),
size: 11pt,
)
#set par(
leading: 0.75em, // 行高
justify: true,
)
// 代码块
#show raw.where(block: true): it => {
block(
fill: rgb("#f8fafc"),
stroke: (left: 3pt + accent),
inset: 10pt,
radius: 4pt,
it,
)
}

Terminal window
# 验证 Quarto
quarto --version
# 检查扩展是否存在
ls _extensions/*/
# 验证代码块配对(必须为偶数)
grep -c '^```' document.qmd
# 检查编码
file -i document.qmd # 应显示 utf-8
问题症状修复方法
嵌套代码块内容逃逸出代码块外层使用 4+ 个反引号
表格显示为代码灰色背景检查上方未关闭的反引号
扩展缺失”Extension not found”验证 _extensions/ 路径
字体警告”unknown font family”正常,会使用备用字体
特殊字符损坏乱码转换为 UTF-8