Typst 是一种新的基于标记的排版系统,其设计与 LaTeX 一样强大,同时更易于学习和使用。打字员有:
该存储库包含 Typst 编译器及其 CLI,这是您在本地编译 Typst 文档所需的一切。为了获得最佳的写作体验,请考虑免费注册我们的协作在线编辑器。
我们的文档中提供了对 Typst 的简单介绍。但是,如果您想了解 Typst 封装在一张图片中的强大功能,这里是:
让我们剖析一下发生了什么:
我们使用设置规则来配置元素属性,例如页面大小或标题编号。通过将页面高度设置为auto
,它会缩放以适应内容。设置规则适应最常见的配置。如果您需要完全控制,还可以使用显示规则来完全重新定义元素的外观。
我们使用= Heading
语法插入一个标题。一个等号创建顶级标题,两个等号创建副标题,依此类推。 Typst 有类似这样的更轻量级标记,请参阅语法参考以获取完整列表。
数学方程用美元符号括起来。通过在方程内容周围添加额外的空格,我们可以将其放入单独的块中。多字母标识符被解释为 Typst 定义和函数,除非放入引号中。这样,我们不需要反斜杠来表示诸如floor
和sqrt
之类的东西。 phi.alt
将alt
修饰符应用于phi
以选择特定的符号变体。
现在,我们开始编写一些脚本。要将代码输入到 Typst 文档中,我们可以编写一个哈希值,后跟一个表达式。我们定义两个变量和一个递归函数来计算第 n 个斐波那契数。然后,我们将结果显示在居中对齐的表格中。表函数逐行获取单元格。因此,我们首先将公式$F_1$
传递到$F_8$
,然后传递计算出的斐波那契数。我们对两者应用扩展运算符 ( ..
),因为它们是数组,并且我们希望将数组的项作为单独的参数传递。
#set page ( width : 10cm , height : auto )
#set heading ( numbering : " 1. " )
= Fibonacci sequence
The Fibonacci sequence is defined through the
recurrence relation $ F_n = F_(n-1) + F_(n-2) $ .
It can also be expressed in _closed form:_
$ F_n = round(1 / sqrt(5) phi.alt^n), quad
phi.alt = (1 + sqrt(5)) / 2 $
#let count = 8
#let nums = range ( 1 , count + 1 )
#let fib ( n ) = (
if n <= 2 { 1 }
else { fib ( n - 1 ) + fib ( n - 2 ) }
)
The first #count numbers of the sequence are:
#align (center, table(
columns: count,
..nums.map(n => $ F_#n $ ),
..nums.map(n => str(fib(n))),
))
Typst 的 CLI 可从不同的来源获得:
您可以从发布页面获取最新版本的 Typst 的源代码和预构建的二进制文件。下载适合您平台的存档并将其放置在PATH
中的目录中。要及时了解未来版本,您只需运行typst update
即可。
您可以通过不同的包管理器安装 Typst。请注意,包管理器中的版本可能落后于最新版本。
brew install typst
winget install --id Typst.Typst
如果您安装了 Rust 工具链,则可以安装
cargo install --locked typst-cli
cargo install --git https://github.com/typst/typst --locked typst-cli
开发版本Nix 用户可以
typst
包与nix-shell -p typst
一起使用nix run github:typst/typst -- --version
构建并运行开发版本。 Docker 用户可以使用docker run ghcr.io/typst/typst:latest --help
运行预构建的映像。
安装 Typst 后,您可以像这样使用它:
# Creates `file.pdf` in working directory.
typst compile file.typ
# Creates PDF file at the desired path.
typst compile path/to/source.typ path/to/output.pdf
您还可以查看源文件并根据更改自动重新编译。这比每次从头开始编译要快,因为 Typst 具有增量编译。
# Watches source files and recompiles on changes.
typst watch file.typ
Typst 还允许您为项目添加自定义字体路径并列出它发现的所有字体:
# Adds additional directories to search for fonts.
typst compile --font-path path/to/fonts file.typ
# Lists all of the discovered fonts in the system and the given directory.
typst fonts --font-path path/to/fonts
# Or via environment variable (Linux syntax).
TYPST_FONT_PATHS=path/to/fonts typst fonts
对于其他 CLI 子命令和选项,请参见下文:
# Prints available subcommands and options.
typst help
# Prints detailed usage of a subcommand.
typst help watch
如果您更喜欢具有自动完成和即时预览功能的集成 IDE 体验,您还可以查看 Typst 的免费 Web 应用程序。
社区聚集的主要场所是我们的 Discord 服务器。请随意加入其中,提出问题、帮助他人、分享您使用 Typst 创建的精彩内容,或者只是聊天。
除此之外,您还可以在几个地方找到社区构建的东西:
如果您在我们的社区中遇到了不愉快的经历,请联系我们。
我们希望看到社区的贡献。如果您遇到错误,请随时提出问题。如果您想实现新功能或错误修复,请按照贡献指南中概述的步骤操作。
要自己构建 Typst,首先确保您安装了最新的稳定版 Rust。然后,克隆此存储库并使用以下命令构建 CLI:
git clone https://github.com/typst/typst
cd typst
cargo build --release
优化后的二进制文件将存储在target/release/
中。
另一个好的贡献方式是与社区共享包。
国际音标:/taɪpst/。 “Ty”如Ty pesetting 中的“Ty”,“pst”如 Hi pst er 中的“pst”。当写到 Typst 时,将它的名字大写作为专有名词,大写“T”。
Typst 的所有设计都考虑了三个关键目标:强大、简单和性能。我们认为现在是时候建立一个与 LaTeX 的功能相匹配、易于学习和使用、同时足够快以实现即时预览的系统了。为了实现这些目标,我们遵循三个核心设计原则:
通过一致性实现简单性:如果您知道如何在 Typst 中做一件事,您应该能够将该知识转移到其他事情上。如果有多种方法可以完成同一件事,那么其中一种方法应该与另一种方法处于不同的抽象级别。例如, = Introduction
和#heading[Introduction]
做同样的事情是可以的,因为前者只是后者的语法糖。
通过可组合性发挥力量:有两种方法可以使某些东西变得灵活:用一个旋钮来处理所有事情,或者用几个可以多种方式组合的旋钮。 Typst 的设计考虑了第二种方式。我们提供的系统您可以用我们从未想过的方式来构建。 TeX 也属于第二类,但它的级别有点低,因此人们使用 LaTeX 代替。但在那里,我们确实没有那么多的可组合性。相反,所有东西都有一个包( usepackage{knob}
)。
通过增量实现性能:所有 Typst 语言功能都必须适应增量编译。幸运的是,我们有comemo
,一个增量编译系统,它在后台完成大部分艰苦的工作。