Featured image of post Typst Tutorial

Typst Tutorial

Typst tutorial

Typst介绍

Typst是新的基于标记的科学排版语言其目标是作为LaTex的替代,因为Typst底层采用Rust编写,所以在编译效率上比LaTex高了非常多,基本上可以做到实时预览并且语法相当友好。

LaTex由于其诞生于上世纪80s时间过早,并且经过几十年的发展技术包袱过重。笔者本科用LaTex排版论文经常苦于语法晦涩,一旦环境嵌套过深代码几乎失去可读性,并且一旦插入图片过多以及加入bibtex那么编译时间会极大拉长,只能将LaTex分章节编译。

如果你也苦于LaTex的以上问题,那么Typst绝对值得尝试,Typst于2023年开源开始release,Typst社区非常活跃,笔者在2023年下半年开始使用,半年时间nvimvscode的全套工具链就已经可用tinymisttypstyletypst-preview

Typst 语法介绍

Typst语法上相对LaTex简洁很多,不需要像LaTex那样进行\bengin \end环境嵌套。

Typst添加标题

1
2
3
4
5
= Introduction ##一级标题

== subsection ##二级标题

=== subsubsection ##三级标题

Typst有序和无序列表

1
2
3
4
5
+ The climate
  - Temperature
  - Precipitation
+ The topography
+ The geology

Typst插入图表与引用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Glaciers as the one shown in
@glaciers will cease to exist if
we don't take action soon!

#figure(
  image("glacier.jpg", width: 70%),
  caption: [
    _Glaciers_ form an important part
    of the earth's climate system.
  ],
) <glaciers>

Typst数学公式

Typst数学公式语法并没有学习LaTex而是添加了一些OOP的语法,并且简化了特殊符号的输入增强了公式的可读性。

1
$Q = rho A v + C$  ##typst中如果是内联公式就不需要在`$`后空格,反之则是单独一行

上式就相当于LaTex中的$Q=\rho A v + C$,如果是复杂一点的公式则可能会更清晰一点比较两者之间的区别。

1
$ 7.32 beta +sum_(i=0)^nabla (Q_i (a_i - epsilon)) / 2 $
1
7.32 \beta + \sum_{i=0}^{\nabla} \frac{Q_i (a_i - epsilon)}{2}

$$ 7.32 \beta + \sum_{i=0}^{\nabla} \frac{Q_i (a_i - \epsilon)}{2} $$

如果是一些特殊符号Typst则添加了一些OOP的元素比如

1
$ a arrow.squiggly b $

LaTex用户快速上手对照表

typst官方也贴心的为LaTex用户提供了快速的语法对照表可以查看

Element LaTeX Typst See
Strong emphasis \textbf{strong} *strong* strong
Emphasis \emph{emphasis} _emphasis_ emph
Monospace / code \texttt{print(1)} `print(1)` raw
Link \url{https://typst.app} https://typst.app/ link
Label \label{intro} <intro> label
Reference \ref{intro} @intro ref
Citation \cite{humphrey97} @humphrey97 cite
Bullet list itemize environment - List list
Numbered list enumerate environment + List enum
Term list description environment / Term: List terms
Figure figure environment figure function figure
Table table environment table function table
Equation $x$, align / equation environments $x$, $ x = y $` equation

Typst制作Slides

Typst目前制作Slides的体验比LaTex制作Beamer好了很多,我们以tongji-slides-typst为例简单展示一下TypstSlides

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#matrix-slide[
== EXAMPLE
#align(
  top + left, [== DMI效应产生原因
  #v(1em)
  - DMI是由于反演对称性破缺和`Spin-Orbit Couple`(SOC)引起的反对称交换作用

  - 在具有非对称晶体结构的材料中,由于原子排列的不均匀性,电子在原子间运动时会经历不均匀的电场。这个不均匀的电场改变了自旋-轨道耦合的性质,导致电子的自旋倾向于以特定的方式与其轨道运动相耦合。这种耦合产生了一个优先的方向,使得磁矩倾向于非对易地排列。

  #figure(image("pic/DMI_1.png", height: 40%), caption: [
    DzyaloshinskiiMoriya interaction
  ])

  ],
)

][
#v(1em)
#align(
  top + left, [
  - DMI效应最早发现于$alpha-"Fe"_2"O"_3$反铁磁材料中,实验上发现了弱铁磁性。

  - Dzyaloshinskii给出了唯象的解释$H_("DM")=D dot [S_i times S_j]$,即DMI相互作用使相邻磁矩趋于垂直

  - Moriya结合超交换理论提出这种效应可以看作是磁绝缘体中SOC以及对称性破缺所引起的附加项

  - 在相互交换作用和DMI的共同作用下,磁矩会趋于形成一定夹角,因此会形成`SKyrmions`结构。

  #figure(image("pic/SKyrmion.png", height: 39%), caption: [`SKyrmions`结构])

  ],
)
]

这里是通过模板封装好了#matrix-slide只需要通过import调用调用即可。如果是设置封面则只需要调用封装好的函数修改其暴露的接口即可。

1
2
3
#title-slide(
  authors: ("李狗蛋", "蛋狗李"), title: "Tongji slides typst", subtitle: "Template", date: "Date", institution-name: "Tongji University",
)

Typst的制作Slides的体验与代码可读性比LaTex的环境嵌套要好很多。如果要使用这里推荐touying这是国人编写的一个Slides包体验相对较好。

Typst当前发展

Typst目前已经开放了Universe提供了各种模板可选,在Typst社区活跃度较高国人也相对较多,已经有很多优秀的package是国人编写的。国内高校也有了一些优秀的开源模板项目,比如同济的tongji-undergrad-thesis-typst

package这里推荐miTex,如果你实在不习惯用Typst的公式语法第三方也提供了使用LaTex的公式接口。 同时Typst也支持cetz绘制矢量图。

总之Typst社区还在快速发展中,作为LaTex的老用户笔者也同时希望在Typst的竞争下能够更好。

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy