【Typst源文件】Typst 纸张定义完全指南
Typst 通过 page 函数来定义纸张的尺寸、边距、方向等属性。通常使用 #set page() 规则在文档开头进行全局设置。
1. 基础纸张设置
1.1 使用标准纸张尺寸
Typst 支持丰富的标准纸张尺寸,只需传入纸张名称字符串即可:
// 设置为 A4 纸张(默认)
#set page("a4")
// 设置为美国信纸
#set page("us-letter")
// 设置为法律文件用纸
#set page("us-legal")
1.2 常用标准纸张尺寸
| 纸张名称 | 尺寸 | 用途场景 |
|---|---|---|
"a4" |
210mm × 297mm | 国际标准文档(默认) |
"a5" |
148mm × 210mm | 笔记本、手册 |
"us-letter" |
216mm × 279mm | 美国标准文档 |
"us-legal" |
216mm × 356mm | 法律文件 |
"iso-b5" |
176mm × 250mm | 书籍、小册子 |
"a0" ~ "a11"
|
ISO 216 系列 | 工程图纸、海报 |
1.3 Typst 支持的全部纸张类型
Typst 内置了丰富的纸张规格,涵盖国际标准、美制、日制、法式、英式等多种标准:
ISO A 系列:"a0", "a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11"
ISO B/C 系列:"iso-b1" ~ "iso-b8", "iso-c3" ~ "iso-c8"
美制纸张:"ansi-a", "ansi-b", "ansi-c", "ansi-d", "ansi-e", "arch-a" ~ "arch-e", "us-letter", "us-legal", "us-tabloid", "us-executive"
日制纸张:"jis-b0" ~ "jis-b11", "jp-shiroku-ban-4" ~ "jp-shiroku-ban-6", "jp-kiku-4", "jp-kiku-5"
名片规格:"jp-business-card", "cn-business-card", "eu-business-card"
演示文稿:"presentation-16-9", "presentation-4-3"
报纸规格:"newspaper-compact", "newspaper-berliner", "newspaper-broadsheet"
2. 自定义纸张尺寸
如果需要非标准尺寸,可以直接指定 width 和 height 参数:
// 创建正方形页面
#set page(width: 12cm, height: 12cm)
// 创建自定义矩形页面
#set page(width: 200mm, height: 280mm)
2.1 横向页面
使用 flipped 参数将页面旋转为横向:
// 方式一:使用 flipped 参数
#set page("a4", flipped: true)
// 方式二:交换宽高
#set page(width: 297mm, height: 210mm)
2.2 动态页面高度
设置 height: auto 可以使页面高度根据内容自动增长:
#set page(height: auto)
// 页面会动态扩展以适应内容,分页需手动插入 #pagebreak()
3. 页边距设置
3.1 统一边距
// 所有边距相同
#set page(margin: 2cm)
3.2 分别设置各边边距
#set page(margin: (
top: 3cm,
bottom: 2cm,
left: 2.5cm,
right: 2.5cm
))
3.3 使用快捷方式
// x 控制左右边距,y 控制上下边距
#set page(margin: (x: 2.5cm, y: 2cm))
3.4 自动边距
// 自动边距:A4 纸张下约为 2.5cm
#set page(margin: auto)
3.5 双面文档装订边距
使用 inside 和 outside 为双面打印书籍设置内边距(书脊侧)和外边距:
#set page(margin: (
inside: 2.5cm, // 内侧边距(书脊侧)
outside: 2cm, // 外侧边距(页边侧)
y: 1.75cm // 上下边距
))
// 设置装订方向(默认 left,适合左翻页书籍)
#set page(binding: right) // 右翻页书籍(如日文漫画)
3.6 使用 rest 设置默认边距
// 左边距 1.5 英寸,其他边距统一为 1 英寸
#set page(margin: (left: 1.5in, rest: 1in))
4. 完整页面配置示例
4.1 基础学术论文配置
#set page(
paper: "a4",
margin: (top: 3cm, bottom: 2cm, x: 2.5cm),
numbering: "1",
number-align: center
)
= 论文标题
#lorem(200)
4.2 书籍双面排版配置
#set page(
paper: "iso-b5",
margin: (inside: 2.5cm, outside: 2cm, y: 2cm),
binding: left,
numbering: "1",
number-align: center + bottom
)
4.3 演示文稿配置
#set page(
paper: "presentation-16-9",
margin: 1cm,
fill: rgb("#f5f5f5")
)
= 标题页
欢迎使用 Typst
4.4 带页眉页脚的完整配置
#set page(
paper: "a4",
margin: (top: 3cm, bottom: 2.5cm, x: 2.5cm),
header: context {
if counter(page).get().first() > 1 [
_文档标题_
#h(1fr)
第 #counter(page).display() 页
]
},
footer: [
#line(length: 100%, stroke: 0.5pt)
#v(4pt)
#align(center)[版权所有 © 2026]
],
numbering: "1"
)
5. 纸张参数完整参考
#set page() 支持的所有主要参数:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
paper |
string | "a4" |
标准纸张尺寸 |
width |
length | 595.28pt |
页面宽度 |
height |
length | 841.89pt |
页面高度 |
flipped |
boolean | false |
是否横向 |
margin |
auto/length/dict | auto |
页边距 |
binding |
auto/left/right | auto |
装订侧 |
columns |
integer | 1 |
分栏数 |
fill |
color | auto |
页面背景色 |
numbering |
string/none | none |
页码格式 |
number-align |
alignment | center + bottom |
页码对齐 |
header |
content/auto/none | none |
页眉内容 |
footer |
content/auto/none | none |
页脚内容 |
6. 常见问题
6.1 如何获取当前页码?
#context counter(page).get()
6.2 如何重置页码?
#counter(page).update(1)
6.3 如何创建横向单页而不影响全局?
#page(flipped: true)[
= 横向页面内容
此页面为横向,不影响后续页面
]
6.4 如何为不同部分设置不同纸张?
使用 #page() 函数包裹特定内容区域即可临时覆盖纸张设置:
#page("a4")[
这是 A4 纸张的内容
]
#page("us-letter")[
这是信纸的内容,与前面分页
]