> 技术文档 > 【前端:Typst】--Typst入门基础(一小时完成)

【前端:Typst】--Typst入门基础(一小时完成)


摘要

Typst是一种用于排版文档的标记语言,可以用于排版各种精美的论文、文章、书籍、报告和作业等。它是LaTex的精神续作,但是运行环境和编译速度都要更简单、更快捷。

它设计了一种脚本结合简单的标记语法实现复杂的排版效果。并且支持模板创建、文件包含等,可以很好的组织大型著作如书籍的排版。学习曲线相比LaTex要小一些。

如果你有一些编程语言或脚本编程的基础,Typst的脚本语法基本可以很容易上手。

特点​​ ​​Typst 的表现​​ ​​语法设计​​ 轻量级标记 + 脚本语言(类似 Python/Markdown),代码与排版混合编写 ​​学习成本​​ 低,适合有编程基础的用户,1 小时内可上手基础排版 ​​编译速度​​ 极快(秒级编译),支持实时预览 ​​动态内容​​ 原生支持脚本(循环/条件/函数),可直接生成表格、列表等 ​​数学公式​​ 语法简洁($x^2$),支持多行公式和编号 ​​模板系统​​ 模块化设计(#import),官方提供模板库,支持自定义样式复用 ​​协作方式​​ 内置在线编辑器(Typst.app)支持多人实时协作 ​​输出质量​​ 专业级 PDF 输出,支持矢量图(SVG)和代码高亮
  • 官方在线编辑器(Typst.app)无需安装,支持协作。
  • 命令行工具支持本地编译(typst compile input.typ)。

在线工具: Typst: Compose papers faster

 

目录

摘要

1.Typst--本地编辑

2.Typst--字体

3.Typst--段落

3.1.换行

3.2.对齐方式​

3.3.段落缩进​

3.4.列表​

3.5.行距和段距​

3.6.字间距和词间距​

3.7.水平方向或竖直方向的空白​

4.Typst--标题

4.1.标题编号​

5.Typst--非文本元素

5.1.表格​

5.2.图片​

5.3.数学公式​

5.4.代码​

5.5.图形​

5.6.链接​

5.7.参考文献、脚注与引用​

5.7.1. ​​创建参考文献数据库

5.7.2.引用

6.Typst--页面

6.1.大小、方向与页边距​

6.2.页眉、页脚与页码​

6.3.分栏​

6.4.背景​

6.5.空白页与分页​

 7.Typst--导入模块


1.Typst--本地编辑

在VSCode中,首先需要安装Typst的核心插件,也就“Typst perview”或者Tinymist Typst

安装成功后,就可以在项目文件夹中,创建.pyt格式的文件,来编写Typst文档。

VSCode提供强大的语法提示和简便的文档预览。

参考资料

  • Typst 中文社区导航
  • The Raindrop-Blue Book (Typst中文教程)

补充的知识:

set 语法​

在本文中,你会多次见到形如 #set A() 的语句。这里的 # 是 Typst 由默认的内容模式进入脚本模式的标志,而 set 允许你设置在这之后 A 元素默认的参数值,它的作用范围从 #set 开始到文档结束。相对应的,直接使用 #A() 并传入一些参数可以构造一个使用这些参数的 A 元素对象,这样就不会影响其他元素的参数值,作用范围是局部的。

与之对应还有 show 语法,在本文中没有怎么出现但实际使用中同样很重要,详见小蓝书的「show」语法部分 和 「set」语法部分。

package​

package 就是「包」,在小蓝书中翻译为「库」,是一些由 Typst 社区提供的功能扩展。在 Typst 中,你可以通过 #import 命令引入包,然后使用包中的功能。

2.Typst--字体

在输入一段中文文本后,你可能会发现这样的问题:

为什么中文字体这么奇怪

由于 Typst 并非由国人设计,它的默认字体并不适合中文排版。因此,我们需要对 Typst 的字体进行一些设置。在文章的开头,我们可以使用 #set text(font: \"Noto Sans CJK SC\", lang: \"zh\", region: \"cn\") 来设置文章正文的字体为「思源黑体」、语言为「中文」、地区为「中国」。这样,我们就可以保证中文的排版效果。如果你需要使用其他字体,可以参考为什么中文字体这么奇怪。

要调整正文字体的大小,可以使用 #set text(size: 12pt) 来设置字体大小为 12 磅。

#set text(font: \"Noto Sans CJK SC\", lang: \"zh\", region: \"cn\", size: 12pt)
size 长度单位 设置基础字号 12pt14px1.2em leading 长度/比率 控制行间距(默认 1.2em1.5em20pt150% weight 数字/关键字 设置字重(粗细) 400(常规), 700(加粗), \"bold\"\"light\" style 关键字 设置字体样式 \"italic\"\"normal\" fill 颜色 定义文字颜色 blackrgb(\"#ff0000\")luma(80%) hyphenate 布尔值 是否启用自动断字(对中文无效) truefalse kerning 布尔值 是否启用字距调整 true(默认), false smallcaps 布尔值 是否将小写字母转为小型大写字母 truefalse alternates 布尔值 是否启用字体替代字形(如连字) true(默认), false

为了与 Word 中的字号相对应,你也可以使用 pointless-size 包,如以下代码所示:

#import \"@preview/pointless-size:0.1.1\": zh, zihao#set text(size: zh(5),fill:red) // 五号(10.5pt)hello, world!你好,

在这里,我们引入了 pointless-size 包,并使用了其中的 zh 函数来设置字号。pointless 包中更多的字号与命令的对应请参考下图:

3.Typst--段落

和MarkDown类似,紧邻的两行内容将会被显示为一行。而且中间用一个空格连接:

这是一个段落这是第二个段落

 

3.1.换行

通过在文本行之间添加空行,两行内容就可以分别被识别为单独的段落。 

这是一个段落这是第二个段落

换行2:强制换行
通过在行末加\\,可以插入一个强制换行:

这里是新的段落 \\ 这里是强制换行。

与空行法相比,强制换行只是把内容换行了,但是并不产生新的段落,所以可以看到行间距比较小。

3.2.对齐方式​

在 Typst 中,如果需要设置局部的对齐方式,可以使用 #align(left)[左对齐]#align(right)[右对齐]#align(center)[居中]

文字默认是左对齐的。#align(center)[但我想临时居中!]而不影响其他文字。

Typst compiled image

使用 #set align(left)#set align(right)#set align(center) 来设置之后所有文本的对齐方式。

#set align(left)这行字左对齐#set align(right)这行字右对齐#set align(center)这行字居中

Typst compiled image

在 Word 的工具栏中,还有两种对齐方式,分别是两端对齐分散对齐。在 Typst 中,两端对齐由段落的 justify 参数控制。由于断行算法不一样,同样的字体设置下,在 Word 和 Typst 的断行位置不一定一致,可能会影响论文模板精确复现。

#set par(justify: false)This is a 中英文混排段落,如果 not 使用 `justify` 参数,将会默认为左对齐。而这 maybe 会很 ugly。#set par(justify: true)This is a 中英文混排段落,如果 not 使用 `justify` 参数,将会默认为左对齐。而这 maybe 会很 ugly。

但是现在的工具适应性好,基本不使用也可以 

Typst compiled image

而分散对齐请参考:如何实现分散对齐?

3.3.段落缩进​

段落的缩进可分为首行缩进和整段缩进。首行缩进是指段落的第一行缩进,而整段缩进是指段落的所有行都缩进。在 Typst 中,分别由 par 的 first-line-indent 和 hanging-indent 参数控制。

#set par(first-line-indent: 2em)//首行缩进2em#lorem(50) // 生成50字示例文本

3.4.列表​

在 Typst 中,列表分为有序列表和无序列表。无序列表使用 - 开头,用缩进表示层级关系。有序列表使用显式的编号 1. 或 + 开头,用缩进表示层级关系。

+ 一级列表项 1 - 二级列表项 1.1 + 三级列表项 1.1.1 - 二级列表项 1.2+ 一级列表项 2 - 二级列表项 2.1列表间插入一段描述,列表项 3 被吃掉了。4. 列表项 4+ 列表项 5+ 列表项 6

Typst compiled image

Typst compiled image

默认列表使用紧凑模式。而列表各行之间可以插入空行,这样列表就会变得没那么紧凑。

3.5.行距和段距​

在 Typst 中,行距和段距分别由 par 的 leading 和 spacing 参数控制。行距是指行与行之间的距离,段距是指段与段之间的距离。如图所示。

#let marker(body, height, paint: red) = box(place(box(height: height, width: 2pt, stroke: (rest: 1pt + paint, left: none), place(dx: 4pt, text(8pt, paint, body)))))#set par(leading: 0.6em, spacing: 1em)  #context marker([par.leading], par.leading)是日也,天朗气清,惠风和畅。仰观宇宙之大,俯察品类之盛,所以游目骋怀,足以极视听之娱,#context marker([par.spacing], par.spacing, paint: blue)信可乐也。  夫人之相与,俯仰一世,或取诸怀抱,悟言一室之#context marker([par.leading], par.leading)内;或因寄所托,放浪形骸之外。虽趣舍万殊,静躁不同,当其欣于所遇,暂得于己,快然自足,不知老之将至。及其所之既倦,情随事迁,感慨系之矣。

Typst compiled image

“行”的定义牵涉文字外框,可通过 text 的 top-edgebottom-edge 调整。

#set par(leading: 0.6em, spacing: 1em)#set box(fill: aqua)= 西文习惯(默认)#set text(top-edge: \"cap-height\", bottom-edge: \"baseline\") #box[Typst 国王] \\#box[Typst 国王]= 中文习惯#set text(top-edge: \"ascender\", bottom-edge: \"descender\") #box[Typst 国王] \\#box[Typst 国王]

Typst compiled image

有关长度单位的介绍请参考小蓝书的度量与布局。你可以简单理解成 em 就是当前上下文中一个字的长度,历史上曾定义 M 的宽度为 1em,但实际情况下并不一定完全相等。当然以下例子中的行距和段距也可以使用绝对单位,如 12pt1cm 等。

3.6.字间距和词间距​

使用 text 的 tracking 参数可以设置字符间距,spacing 参数设置词间空格宽度。

#text(spacing: 20pt)[#lorem(5) 设置文本的 spacing 属性对中文无效。]#text(tracking: 2pt)[#lorem(5) 而设置 tracking 属性对中文有效。]

Typst compiled image

3.7.水平方向或竖直方向的空白​

使用 #h(e.g., #h(1em))可以插入水平方向的空白,而使用 #v(e.g., #v(1em))可以插入竖直方向的空白(会导致强制换行)。

这里有一些空白:#h(1em)这里有一些空白。这里有一些空白:#v(1em)这里有一些空白。

Typst compiled image

借助这个特性,我们可以实现一些行内的等分排列:

左 #h(1fr) 右#v(1fr)左 #h(1fr) 中 #h(1fr) 右

Typst compiled image

这里的 fr 表示比例,它也是一个相对单位,在同一个部分的 fr 会按照不同的比例平分剩余的空间,因此同样的系数平分的空间是相等的。有关相对长度可见小蓝书的解释。

4.Typst--标题​

使用一个或多个连续的等于号=)开启一个标题。不同数量的等于号划分了标题的层级、对应其在 Word 大纲中的级别。

如果你使用过 Markdown,可能会发现 Markdown 中通常将一级标题视为文档属性的标题(在最开头且唯一),而 Typst 中的一级标题可以有多个,可表示语义上的“章节”。

对于全文的标题,使用 #set document(title: \"文档标题\") 来设置文档属性。开头的大标题可以用 #heading(outlined: false)[文档标题] 实现。

= 一级标题我走了。== 二级标题我来了。=== 三级标题我走了又来了。

Typst compiled image

要设置标题的样式,需要使用 show 或者 set 命令。

4.1.标题编号​

Typst 的标题编号是自动的,可以通过修改 heading 的 numbering 参数来设置编号的格式。numbering 传入一个字符串,它会解析其中的各级编号和分隔符。

#set heading(numbering: \"1.1.1\")= 一级标题我走了。== 二级标题我来了。== 二级标题我来了吗?=== 三级标题我走了又来了。= 我是

 但这里官方的编号实现会有一些问题,例如当传入 \"chapter\" 时,它可能会将其中的 a 解析为编号造成一些难绷的结果。此外,它对于全角符号的支持并不好,比如:

#set heading(numbering: \"一、1.a.i\")= 一级标题我顿号没了。== 二级标题我也没了。

Typst compiled image

况且,如果需要不同级别的标题分别使用不同的编号,官方的实现也无法简单实现。因此,推荐使用群友科技 numbly 包来解决这个问题。

#import \"@preview/numbly:0.1.0\": numbly#set heading(numbering: numbly(//就是按照顺序来编号,不管层级 \"{1:一}、\", \"{2:1}.\", \"{3:a}.\", \"{4:i}.\",))= 一级标题我走了。== 二级标题我来了。== 二级标题我来了吗?=== 三级标题我走了又来了。==== 四级标题哈哈哈

 仍存在的问题是,顿号后有一个代码中写死的一小段空格(长度为 0.3em),请参考如何去掉标题的编号后面的空格?。

5.Typst--非文本元素

5.1.表格​

在 Typst 中插入表格基本的语法是:

#table( columns: 3, // 列数 table.header([表头 1], [表头 2], [表头 3]), // 表头 [一段很长的内容 1], [内容 2], [内容 3], // 第一行 [内容 4], [内容 5], [内容 6], // 第二行)

其中 columns 参数是必须的,它可以传入一个数字,表示表格的列数,也可以传入一系列的长度,表示每一列的宽度。比如下面这个例子实现了各列宽度相等的三列表格:

#table( columns: (1fr, 1fr, 1fr), table.header([表头 1], [表头 2], [表头 3]), [一段很长的内容 1], [内容 2], [内容 3], [内容 4], [内容 5], [内容 6],)

类似的,也可以传入 rows 参数,表示表格的行数和行高,但是这个参数并不是必须的,因为 Typst 会自动根据内容的多少来自动向下延伸表格。

table.header() 表示表头的内容,当一个表格跨页的时候,它会在每一页的表格上方显示。

#table( columns: 3, table.header([表头 1], [表头 2], [表头 3]), ..for i in range(1, 19) { ([#i],) })

Typst compiled image

Typst compiled image

三线表:

使用 stroke: none 隐藏默认边框,然后使用 table.hline() 画线即可。

#table( columns: 3, stroke: none, table.hline(), table.header([a], [b], [c]), table.hline(stroke: 0.5pt), [d], [e], [f], [g], [h], [i], table.hline(),)

5.2.图片​

使用 #image 命令插入图片:

#image(\"这里填路径\", width: 100pt, height: 100pt)
#align(center, image(\"./image/头像.jpg\", width: 100pt, height: 100pt))

 

width 和 height 参数可以设置图片的宽度和高度。如果只设置其中一个,另一个会按照图片的比例自动调整。这两个参数都不是必须的,如果不设置,图片会按照原始大小或最大页面宽度自动调整。

5.3.数学公式​

Typst 的数学公式用一对 $ 包裹。当 $ 内侧有空白(空格或换行符)时为行间公式(e.g.,$ a $),否则为行内公式。

行内公式:$(a+b)^2 = a^2 + 2 a b + b^2$公式块://自动居中$ (a+b)^2 = a^2 + 2 a b + b^2 $$(a+b)^2 = a^2 + 2 a b + b^2$

关于 Typst 的数学公式语法,与 LaTeX 相比,可以试试以下步骤:

  1. 将 LaTeX 公式中的 \\frac 改为 /,如 \\frac12 改为 1/2。在 Typst 中,/ 通常会显示成水平的分数线,如果需要写成斜杠,可以使用 \\/ 进行转义或者使用群友科技 slashion 包。
  2. 将 LaTeX 公式中的不同元素用空格分隔,如 2ab 在 Typst 中应该写为 2 a b
  3. 许多在 LaTeX 中需要反斜杠才能引出的符号在 Typst 中可以直接输入,参见小蓝书的常用数学符号。

这一部分建议还是多看看官方文档的 math 部分,三言两语不太容易说清。

如果已经习惯了 LaTeX 写法无心改变,可以尝试使用 mitex 包来写入 LaTeX 公式。或者使用 detypstify 或群友科技 typress 识别公式、输出 Typst 代码。

5.4.代码​

和 Markdown 类似,使用反引号(`)包裹代码:

`print(\"Hello, world!\")`

Typst compiled image

如果需要插入代码块,可以使用三个反引号:

```typst#text(fill: red)[红色文本]```

Typst compiled image

自定义代码块的样式(比如行号)需要使用 show 或者 set 命令。或者,你也可以使用社区提供的代码美化包,比如:

  • 代码美化豪华包 codly
  • 群友科技 zebraw
#import \"@preview/zebraw:0.3.0\": *#show: zebraw#zebraw( highlight-lines: ( (3, [to avoid negative numbers]), (6, [0 is not a right argument to fibonacci_reccursive()!]), ), header: \"fibonacci_reccursive()\", ```rust pub fn fibonacci_reccursive(n: i32) -> u64 { if n  panic!(\"zero is not a right argument to fibonacci_reccursive()!\"), 1 | 2 => 1, 3 => 2, /* 50 => 12586269025, */ _ => fibonacci_reccursive(n - 1) + fibonacci_reccursive(n - 2), } } ```,)

Typst compiled image

5.5.图形​

可以通过 figure 函数为图像或任意内容设置标题:

#set text(lang: \"zh\", region: \"cn\") // 用于将默认的 supplement 改为中文#figure( image(\"./image/头像.jpg\", width: 10em, height: 10em), caption: [用于加载香風とうふ店送外卖的宝贵影像的代码] //自动识别标题类型(图片、表格....))#figure( table( columns: 2, [A], [B], ), caption: \"一个简单的表格\",)

5.6.链接​

Typst 会自动识别文中的 HTTPS 和 HTTP 链接文本并创建链接。手动使用 #link[链接文本] 可以创建一个链接。

#show link: set text(fill: blue) // 设置链接的颜色为蓝色https://zh.wikipedia.org#link(\"https://zh.wikipedia.org\")[维基百科]

Typst compiled image

在 Typst 中,可以通过创建标签标记任意内容。要引用该标签,可以使用 @ 或者 #link()

#show link: set text(fill: blue) // 设置链接的颜色为蓝色#show ref: set text(fill: red) // 设置引用的颜色为红色#figure( table( columns: 2, [A], [B], ), caption: \"一个简单的表格\",)== 一个神秘标题 @table1 后面讲述了#link()[一个神秘标题]。

Typst compiled image

Typst compiled image

5.7.参考文献、脚注与引用​

Typst 使用 #bibliography 命令来插入参考文献。在文中引用参考文献时,使用 #cite 命令。

例子暂无。

5.7.1. ​​创建参考文献数据库

refs.bib 文件

@book{knuth1984tex, title={The TeXbook}, author={Knuth, Donald E.}, year={1984}, publisher={Addison-Wesley}}@article{lamport1986latex, title={LaTeX: A Document Preparation System}, author={Lamport, Leslie}, journal={Addison-Wesley}, year={1986}}

5.7.2.引用

#set page(width: 10in, height: auto)#set bibliography(title: none)= 参考文献示例Typst 是一个现代化的排版系统,由knuth1984tex @knuth1984tex 和lamport1986latex @lamport1986latex 奠定了理论基础。== 参考文献#bibliography(\"refs.bib\")

 

使用 #footnote 命令来插入脚注。

在任意地方使用 ```typ #footnote``` 来插入一个脚注。比如这里#footnote[这个地方就是一个脚注]就是一个脚注。脚注会#footnote[自动编号]自动编号。

6.Typst--页面

Typst 的页面默认是 A4 纸,纵向排列,页边距为 2.5cm。如果需要设置页面的大小、方向、页边距,可以使用 #set page 命令。

每次 #set page 都会产生一个新页。

下面例子中的灰色框是版心轮廓。

#set page(paper: \"a4\")#rect(width: 100%, height: 100%, stroke: gray)

Typst compiled image

6.1.大小、方向与页边距​

使用预设的各种 paper 传入 paper 参数,可以设置页面的大小。flipped 参数可以让页面横向。

#page(paper: \"a5\", flipped: true)[#rect(width: 100%, height: 100%, stroke: gray)[= A5]]#page(paper: \"a4\")[#rect(width: 100%, height: 100%, stroke: gray)[= A4]]

Typst compiled image

Typst compiled image

可以使用 width 和 height 参数来设置页面的宽度和高度。如果没有指定纸张类型,则会在预设的 \"a4\" 基础上修改参数。设置为 auto 时,页面的宽度或高度会自动调整,不会自动分页。

滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。// v.s.#set page(height: auto)滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。

 同理,可以使用 margin 参数来设置页边距。这个参数传入的值比较多样:

  • 当传入一个长度值时表示四边的页边距都是这个值。

    #set page(paper: \"a5\", margin: 1cm)#rect(width: 100%, height: 100%, stroke: gray)[= margin: 1cm]

    Typst compiled image

  • 传入一个字典,指定上下左右方向的页边距。当然也是传什么才修改什么,不传的话就不会修改(默认是 2.5cm)。

    #set page(paper: \"a5\", margin: (top: 1cm, bottom: 2cm, right: 4cm))#rect(width: 100%, height: 100%, stroke: gray)[= margin: (top: 1cm, bottom: 2cm, right: 4cm)]

    Typst compiled image

  • 传入一个字典,指定页面内侧和外侧的页边距。内侧和外侧即相对装订而言,装订线的一侧是内侧,另一侧是外侧。奇数页的内侧是左侧,偶数页的内侧是右侧。

  • typst
    #set page(paper: \"a5\", margin: (inside: 1cm, outside: 2cm))#rect(width: 100%, height: 100%, stroke: gray)[= margin: (inside: 1cm, outside: 2cm)]#rect(width: 100%, height: 100%, stroke: gray)[= margin: (inside: 1cm, outside: 2cm)]

    Typst compiled image

    Typst compiled image

6.2.页眉、页脚与页码​

通过传入 header 和 footer 参数可以设置页眉和页脚。页眉和页脚的内容可以是任意的 Typst 内容。

如果指定了 page 的 numbering 参数,页码会自动显示在页脚中。使用 #counter(page).update(1) 可以手动更新页码。

#set page(numbering: \"1\")#rect(width: 100%, height: 100%, stroke: gray)[#lorem(10)]#rect(width: 100%, height: 100%, stroke: gray)[#lorem(10)]#counter(page).update(1)#rect(width: 100%, height: 100%, stroke: gray)[#lorem(10)]

Typst compiled image

Typst compiled image

Typst compiled image

也可以手动操控页码在页脚的显示方式:

#set page( height: 5cm, width: 10cm, header: [A Tutorial #h(1fr) for Word Users], footer: context [ #set align(right) #set text(8pt) #counter(page).display( \"1 of 1\", // 类似 numbering 的写法 both: true, // 既显示当前页数,也显示总页数 ) ],)#rect(width: 100%, height: 100%, stroke: gray)[#lorem(40)]#rect(width: 100%, height: 100%, stroke: gray)[#lorem(40)]

Typst compiled image

Typst compiled image

6.3.分栏​

使用 columns 参数可以将页面分为多栏。

现在论文格式要求两列页面,记住这个方法

#set page(columns: 2)滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。

Typst compiled image

6.4.背景​

使用 background 参数可以设置页面的背景,传入的是任意的内容。使用 fill 参数可以设置页面的背景颜色。

#set page( fill: black, background: rotate( 24deg, text(18pt, fill: rgb(\"FFCBC4\"))[ *I AM WATCHING U* ], ),)#set text(white)孩子们好久不见!

Typst compiled image

6.5.空白页与分页​

一个空白页其实就是调用 #page[] 函数传入一个空白内容。

滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。#page[]滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。

Typst compiled image

Typst compiled image

当然,像前面的例子所示,这个页面也可以有各种各样的内容。

滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。#page( fill: black, background: rotate( 24deg, text(18pt, fill: rgb(\"FFCBC4\"))[ *I AM WATCHING U* ], ),)[#set text(white) 孩子们好久不见!]滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。

Typst compiled image

Typst compiled image

Typst compiled image

通常要分页而不是插入一个页面的时候,只需调用 #pagebreak() 函数即可。

滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。#pagebreak()滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中。

Typst compiled image

Typst compiled image

 7.Typst--导入模块