【Typst源文件】Typst 纸张定义完全指南

AI13小时前发布 beixibaobao
2 0 0

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. 自定义纸张尺寸

如果需要非标准尺寸,可以直接指定 widthheight 参数:

// 创建正方形页面
#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 双面文档装订边距

使用 insideoutside 为双面打印书籍设置内边距(书脊侧)和外边距:

#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")[
  这是信纸的内容,与前面分页
]
© 版权声明

相关文章