#set par(
  justify: true,
  leading: 0.52em,
)

= 格式化
=
到目前为止，您已经编写了一份包含一些文本、一些方程和图像的报告。不过，看起来还是很朴素。您的助教还不知道您正在使用新的排版系统，并且您希望您的报告与其他学生提交的内容相符。在本章中，我们将了解如何使用 Typst 的样式系统格式化您的报告。

== 设定规则

正如我们在前一章中所看到的，Typst 具有插入内容的函数（例如image函数）和其他操作它们作为参数接收的内容的函数（例如函数align）。例如，当您想要证明报告的合理性时，您的第一个冲动可能是寻找一个可以执行此操作并将完整文档包含在其中的函数。

#image("1.png")

等等，函数的所有参数不都应该在括号内指定吗？为什么括号后面还有第二组方括号，里面有内容？答案是，由于在 Typst 中将内容传递给函数是很常见的事情，因此它有特殊的语法：您可以将内容直接写在正常的方括号中，而不是将内容放在参数列表中。参数，节省标点符号。

如上所示，这是有效的。该par函数会证明其中所有段落的合理性。然而，将文档包装在无数的函数中并有选择地就地应用样式很快就会变得很麻烦。

幸运的是，Typst 有一个更优雅的解决方案。通过设置规则，您可以将样式属性应用于某种内容的所有出现位置。您可以通过输入set关键字、后跟要设置其属性的函数名称以及括号中的参数列表来编写设置规则。

#image("2.png")

#image("3.png")

== 自动完成面板
如果您继续操作并在应用程序中尝试了一些操作，您可能会注意到，在输入字符后（井号字符），总是会弹出一个面板，向您显示可用的功能，以及参数列表中的可用参数。那是自动完成面板。在您编写文档时，它非常有用：您可以通过按 Return 键应用其建议，或使用箭头键导航至所需的完成位置。可以通过按 Escape 键关闭该面板，并通过键入（井号）或按Ctrl+再次打开该面板Space。使用自动完成面板来发现函数的正确参数。大多数建议都附有对其用途的简短描述。

#image("4.png")
=

== 设置页面
返回设置规则：编写规则时，您可以根据要设置样式的元素类型来选择功能。以下列出了设置规则中常用的一些函数：

-- text设置文本的字体系列、大小、颜色和其他属性
-- page设置页面大小、边距、页眉、启用列和页脚
-- par调整段落、设置行距等
-- heading设置标题的外观并启用编号
-- document设置 PDF 输出中包含的元数据，例如标题和作者

并非所有功能参数都可以设置。一般来说，只能设置告诉函数如何做某事的参数，而不是告诉函数要做什么的参数。功能参考页指示哪些参数是可设置的。

让我们向文档添加更多样式。我们想要更大的边距和衬线字体。出于示例的目的，我们还将设置另一个页面大小。

#image("5.png", width: 78%)

#image("6.png", width: 80%)

这里有一些值得注意的事情。

首先是page设定的规则。它接收两个参数：页面大小和页面边距。页面大小是一个字符串。 Typst 接受许多标准页面尺寸，但您也可以指定自定义页面尺寸。边距被指定为字典。字典是键值对的集合。在本例中，键是x和y，值分别是水平和垂直边距。我们还可以通过传递带有键left、right、top和 的字典来为每一侧指定单独的边距bottom。

接下来是设置text规则。在这里，我们将字体大小设置为10pt并将字体系列设置为"New Computer Modern"。 Typst 应用程序附带了许多字体，您可以在文档中尝试使用它们。当您位于文本函数的参数列表中时，您可以在自动完成面板中找到可用的字体。

我们还设置了行间距（又名行距）：它被指定为长度值，我们使用em单位来指定相对于字体大小的行距：1em相当于当前字体大小（默认为11pt） 。

最后，我们通过在中心对齐中添加垂直对齐来底部对齐图像。垂直和水平对齐可以与运算符结合起来+生成 2D 对齐。

== 一丝精致
为了更清晰地构建我们的文档，我们现在想要对标题进行编号。我们可以通过设置函数numbering的参数来做到这一点heading。

#image("7.png")

我们指定字符串"1."作为编号参数。这告诉 Typst 用阿拉伯数字对标题进行编号，并在每个级别的数字之间加一个点。我们还可以使用字母、罗马数字和符号作为标题：

#image("8.png")

此示例还使用该lorem函数生成一些占位符文本。该函数接受一个数字作为参数，并生成Lorem Ipsum文本的多个单词。

#image("9.png")

== 显示规则
您已经对结果感到非常满意了。但最后一件事需要解决：您正在编写的报告是针对较大的项目的，并且该项目的名称应始终带有徽标，即使是在散文中也是如此。

你考虑一下你的选择。您可以使用搜索和替换在徽标的每个实例之前添加调用。这听起来非常乏味。相反，您可以定义一个始终生成徽标及其图像的自定义函数。然而，还有一种更简单的方法：
井号image("logo.svg")

通过显示规则，您可以重新定义 Typst 显示某些元素的方式。您可以指定 Typst 应该以不同方式显示哪些元素以及它们的外观。显示规则可以应用于文本实例、许多函数，甚至整个文档。

#image("10.png")

此示例中有很多新语法：我们编写关键字show，后跟我们想要以不同方式显示的文本字符串和冒号。然后，我们编写一个函数，将要显示的内容作为参数。在这里，我们称之为论证name。现在，我们可以使用name函数主体中的变量来打印 ArtosFlow 名称。我们的显示规则将徽标图像添加到名称前面，并将结果放入框中，以防止徽标和名称之间发生换行。该图像也被放置在一个框内，这样它就不会出现在自己的段落中。

对第一个框函数和图像函数的调用不需要前导，（井号）因为它们没有直接嵌入到标记中。当 Typst 需要代码而不是标记时，（井号）不需要前导来访问函数、关键字和变量。这可以在参数列表、函数定义和代码块中观察到。

== 审查
您现在知道如何将基本格式应用于 Typst 文档。您学习了如何设置字体、调整段落、更改页面尺寸以及使用设定规则向标题添加编号。您还学习了如何使用基本显示规则来更改文本在整个文档中的显示方式。

您已提交报告。您的主管对此非常满意，他们想将其改编成会议论文！在下一节中，我们将学习如何使用更高级的显示规则和函数将文档格式化为论文。

=

#image("11.png")