Skip to content

Typst

约 1875 个字 16 行代码 预计阅读时间 6 分钟

简单标记

=用来添加一级标题

==表示二级标题

===表示三级标题

====表示四级标题,总之=的多少决定了标题的嵌套级别

_用来添加斜体

添加新段落,在两端文本之间添加一个空行

有序列表使用+表示,Typt会自动添加序号.无序列表使用-表示

如果要嵌套列表,就用tab键缩进.

图片与链接

Typst支持PNG,JPEF,GIF,SVG,JPG格式的图像

Typst 只为最常见的内容保留标记符号。 其他所有内容都将通过函数来插入

插入图像的时候,使用Typst的image函数

Typst
#image("图片路径")

默认情况下,图像现在在页面左侧对齐,默认宽度为页面宽度

要在标记模式中调用函数,首先要使用#字符,之后紧跟函数的名称.

image函数接受一个参数:图像文件的路径.

更改宽度

插入width参数,单位为px.#image("图片路径",width=500),也可以使用百分比#image("图片路径",width="50%"),还可以设定绝对值如cm

增加说明

让我们使用 figure 函数来解决这个问题.该函数将图表的内容作为位置参数,将可选的说明(caption)作为命名参数.

Typst
#figure(image("图片路径",width=500),caption:[说明文字],)
  1. 注意之间使用逗号
  2. figure函数的参数列表中,Typst已经处于代码状态,这意味着可以在image函数调用的前面删除#号,#号只有在标记模式时才用得到(用来消除函数调用中的文本歧义,类似latex里面的\转义字符)
  3. caption参数用:[]连接,里面随便写写就好了,最后还要用,结尾

引用图表

首先要在图表上贴上标签,标签用来唯一识别文档中的元素,只需要在尖括号上将标签名称括起来,并在图表后面插入即可.在文本中用@来插入图表

例如

Typst
#figure(image("图片路径",width=500),caption:[说明文字],)<标签>

在文本中插入

Typst
@标签

在方括号中的是内容块,里面可以包含文本,也可以包含其他类型的标记和函数调用等等.

添加参考文献

您可以使用 bibliography 函数向文档添加参考文献.此函数需要参考文献文件的路径

首先需要完成文献调查并形成.bib文件,然后我们可以直接使用该文件

Typst
#bibliography("works.bib")

数学

$括号包住数学符号,让Typst知道这是数学表达式,并且每一个变量之间都要用空格分开

Typst
$x + y = z$

公式默认是内联排版的,也就是和周围的文本在同一行,如果想要放在新行上,需要在开头和结尾插入一个空格

Typst
$ x + y = z $

如果你想要一个由多个字母组成的变量,你可以用引号括起来

基本公式

  1. 要向符号或变量添加下标,输入_字符,然后输入下标.同样,为上标使用^字符.如果下标或上标由多个内容部分组成,则必须将它们括在圆括号中

  2. 分式使用/字符,注意使用括号表示优先级

  3. 并非所有数学结构都有特殊的语法.作为替代,我们会使用函数 使用vec函数表示向量,函数调用不需要使用#号,因为这已经在数学模式下了 $v=vec(x_1,x_2,x_3)$表示向量v由三个分量x1,x2,x3组成.

  4. 某些函数仅在数学模式下可用
  5. 许多符号(如箭头)有很多变体,可以通过在符号名称后附加点和修饰符名称来选择这些变体(这种记号在标记模式下也可以使用,但符号名称前面必须带有#sym)

格式

SET规则

Set规则可以概念化为,为将来该函数的所有使用的某些参数设置默认值

因为将内容块传递给Typst函数非常常见,因此具有特殊的语法:无需将内容块放在参数列表中,而是可以直接将其卸载方括号中,并且放在普通参数之后从而节省标点符号

这其实是一个语法糖,任何fn(...)[XXX][YYY][ZZZ],都会被自动转成fn(..., [XXX], [YYY], [ZZZ]),这可以对任何一个函数使用,包括自定义的函数,只要在转换后的结果符合函数入参要求就可以

Typst有一个更优雅的解决方案.使用 Set 规则,您可以将样式属性应用于某类内容块的所有实例

Typst
#set par(justify: true)

这将使得所有段落都居中排列.

  • text:用于设置文本的字体、大小、颜色和其他属性
  • page:用于设置页面大小、边距、页眉、启用栏和页脚
  • par:用于对齐段落、设置行距等
  • heading:用于设置标题的外观与启用编号
  • document:用于设置 PDF 输出中包含的元数据,例如标题和作者

类似于css.

page的set规则只就收两个参数,页面大小和页面边距.

其中页面大小为字符串,接受许多标准页面大小(包括常见的A4,A3,A2等),也可以制定自定义页面大小.

边距是一个字典,字典是键值对的几何,可以是xy轴上的距离,也可以是top, bottom, left, right四个方向上的距离.

text的set规则可以设置字体,Typst App 带有许多字体,可以在文档自主尝试.在输入 text 函数的 font 参数时,可以在自动补全面板中发现所有可用的字体.

设置了行间距(又名行距):它被指定为length值,我们使用em单位来指定相对于字体大小的行距:1em相当于当前字体大小(默认为 11pt)

自动补全

可以输入#或者CTRL+S来打开自动补全面板

自定义编号

我们现在要对标题进行编号.我们可以通过设置heading函数的numbering参数来做到这一点.

Typst
#heading(numbering: "1.")

这将使得所有标题都以数字1.开始用阿拉伯数字对标题进行编号.

lorem函数可以身材站位文本,使用一个数字作为参数,生成许多lorem lpsum文本.

Typst 每次在你写 = Conclusion 时都会在内部调用 heading 函数.实际上,函数调用 #heading[Conclusion] 等效于上面的标题标记.其他标记元素的工作方式类似,它们仅仅是相应的函数调用的语法糖

SHOW规则

SHOW规则可以重新定义Typst某些元素的方式,可以制定Typst应该一不同的方式显示哪些元素和外观

show规则可以应用于文本实例,函数,甚至整个文档

Typst
1
2
3
4
5
6
7
#show "ArtosFlow": name => box[
  #box(image(
    "logo.svg",
    height: 0.7em,
  ))
  #name
]

我们的 Show 规则在名称前面添加 Logo 图像,并将结果放入 box 中,以防止 Logo 和名称之间出现换行符.图像也放在一个 box 中,这样它就不会出现在自己的段落中

这样,当我们在文档中使用 #ArtosFlow 时,它将显示一个带有标题和图像的盒子,标题是 name 变量的值.

对第一个 box 函数和 image 函数的调用不需要前导 #,因为没有直接嵌入到bidden中.此时处于代码模式而不是标记模式,不需要前导#.

高级样式

3

Comments