Typst-超越LaTeX的文档排版工具

前言

今天学了一天Typst,给我的感觉就是相较于 ,Typst就是神!

我日常做笔记使用的软件是typora,typora的好处是所见即所得,即时渲染你所写的markdown语法。在日常使用中是十分便捷的。但是进行论文撰写的时候,文字排版显得格外重要,最常用的就是word。Word软件排版虽然很强大,但是需要下功夫去操作,与相比就稍微逊色一点。

具有专业的排版输出能力,产生的文档看上去就像“印刷品”一样,具有方便而强大的数学公式排版能力,很容易生成复杂的专业排版元素,如脚注、交叉引用、参考文献、目录等,强大的可扩展性。世界各地的人开发了数以千计的宏包用于补充和扩展 的功 能,能够促使用户写出结构良好的文档——而这也是 存在的初衷[1]。同时,也存在着一些问题,(1) 安装包过大,安装相对较难;(2)相比“所见即所得”的模式有一些不便,为了查看生成文档的效果,用户总要不停地编译,这是最大的鸡肋(虽然也有插件可以即时查看,但是编译的速度过慢)。我之前也参照别人的模板写过一个天津大学的模板[2]

最近,有团队开发了typst[3],宣称“Typst 是一种新的基于标记的文档排版系统,其设计与 一样强大,同时更易于学习和使用”,可以创建和使用更加强大的模板。Typst 是编写任何长篇文本(如论文、文章、科学论文、书籍、报告和家庭作业)的不错选择。此外,Typst 非常适合任何包含数学符号的文档,例如数学、物理和工程领域的论文。最后,由于其强大的样式和自动化功能,它是任何具有共同样式的文档集(例如丛书)的绝佳选择。

作为喜欢吃螃蟹的人,第一时间就尝试了一下,感觉还行,就在此做一下介绍。

安装

Typst提供预编译版和源码供开发者使用,

对于Linux或者macos可以使用如下命令安装:

// 设置页面
#set page(
paper:"a4",
margin: (
top:27.5mm,
bottom:25.4mm,
left:35.7mm,
right:27.7mm
),
numbering:"1",
number-align:center,
)
// 设置正文文字格式
#set text(
font:("Times New Roman","SimSun"),
style:"normal",
weight:"regular",
size: 12pt,
)
// 设置段落
#set par(
leading:20pt,
justify: true,
first-line-indent: 2em,
)
// 设置标题格式
#set heading(numbering: "1.1.1.1")
#show heading: it => locate(loc => {
let levels = counter(heading).at(loc)
let deepest = if levels != () {
levels.last()
} else {
1
}

set text(12pt)
if it.level == 1 [
#if deepest !=1 {
pagebreak()
}
#set par(first-line-indent: 0pt)
#let is-ack = it.body in ([Acknowledgment], [Acknowledgement])
#set align(center)
#set text(if is-ack { 15pt } else { 15pt },font:"SimHei")
#v(36pt, weak: true)
#if it.numbering != none and not is-ack {
numbering("第1章.", deepest)
h(7pt, weak: true)
}
#it.body
#v(36pt, weak: true)
] else if it.level == 2 [
#set par(first-line-indent: 0pt)
#set text(size:14pt,font:"SimHei")
#v(24pt, weak: true)
#if it.numbering != none {
numbering("1.1.",..levels)
h(7pt, weak: true)
}
#it.body
#v(24pt, weak: true)
] else if it.level == 3 [
#set par(first-line-indent: 0pt)
#set text(size:14pt,font:"SimHei")
#v(15pt, weak: true)
#if it.numbering != none {
numbering("1.1.1.",..levels)
h(7pt, weak: true)
}
#it.body
#v(15pt, weak: true)
] else [
#set par(first-line-indent: 0pt)
#set text(size:12pt,font:"SimHei")
#v(12pt, weak: true)
#if it.numbering != none {
numbering("1.1.1.1.",..levels)
h(7pt, weak: true)
}
#it.body
#v(12pt, weak: true)
]
})


= 一级标题

//每页第一行的段落不会被缩进,需要额外设置
// #h(2em)两个字符的空格
#h(2em)#lorem(30)

== 二级标题

chatgpt:阳光明媚的早晨,一只小鸟在树枝上欢快地唱着歌,远处传来了儿童的欢笑声,空气中弥漫着花香和新鲜的草味,这是一个充满生机和活力的日子。突然间,一阵微风吹来,树叶沙沙作响,让人感到一阵舒爽。这个美好的早晨让人心情愉悦,让人感受到大自然的魅力和美妙。
=== 三级标题
== 二级标题
=== 三级标题
#lorem(30)
==== 四级标题
==== 四级标题
#lorem(30)
= 一级标题
== 二级标题
=== 三级标题
==== 四级标题

小结

Typst的文档做得很好,对于列表,可以使用+进行创建,也可以使用函数#enum进行自定义,总体而言,Typst的可玩性很强。本文只是对某些方面进行了简单的介绍,如果感兴趣的话,可以查阅其官方文档[5]

对于像word或者那样分开设置中英文字体以及页眉页脚根据页码设置,可以使用Typst内的函数进行控制,但这有些高阶玩法了,需要自行探索。

本文所述内容对于日常做做笔记啥的来说绰绰有余,相信随着Typst的不断更新,必将有代替的一天。

参考链接

[1] https://zhuanlan.zhihu.com/p/369311806

[2] https://github.com/Zuttergutao/Latex

[3] https://github.com/typst/typst

[4] https://github.com/typst/typst/releases/tag/v23-03-28

[5] https://typst.app/docs/

– END –


未经允许不得转载:论文排版软件 » Typst-超越LaTeX的文档排版工具

评论 抢沙发