文档类
本课解释了什么是文档类以及它如何影响文档布局和设计。它列出了在 TeX 发行版中可以找到的主要文档类。
你可能已经注意到,到目前为止我们创建的所有 LaTeX 文档都以\documentclass
行开始,而且 \documentclass{article}
是最常见的选择。(我们在上一课中需要 \documentclass{report}
来尝试\chapter
命令。)这行是所有 LaTeX 文档都必需的,而且几乎总是应该是文档中的第一个命令。
注意:在本课程中,我们将使用ctexart
类来创建包含中文的文档,这是一个中文文档类,可以自动处理中文的排版问题。
文档类的作用
文档类设置文档的整体布局,例如:
- 设计:页边距、字体、间距等
- 是否可以使用章节
- 标题是否应该在单独的页面上
文档类也可以更普遍地添加新命令;这在特殊情况下尤其如此,比如创建演示幻灯片。
文档类行也可以设置_全局选项_:应用于整个文档的内容。这些选项在方括号中给出: \documentclass[<选项>]{<名称>}
。这种语法,即在方括号中首先给出可选信息,在许多 LaTeX 命令中都使用。
基础文档类
LaTeX 自带一组标准文档类,它们的外观相似但有一些变化:
article
没有章节的短文档report
有章节的较长文档,单面打印book
有章节的较长文档,双面打印,带前言和后记(例如索引)letter
没有分节的信件slides
用于演示(请参见下文)beamer
用于制作幻灯片
这些类都有自己的选项,可以用来调整布局和功能。article
、report
和book
类有非常相似的可用命令,正如我们已经看到的。
与之相对,CTex包提供了一些中文文档类:
ctexart
适用于中文文章的文档类ctexrep
适用于中文报告的文档类ctexbook
适用于中文书籍的文档类ctexbeamer
适用于中文幻灯片的文档类
如果某种标准文档类未发现对应的ctex
版本,可以在文档类定义后添加ctex
包来调用中文文档类。引用格式为:
\documentclass{<标准文档类名>}\usepackage{ctex}
选择不同的文档类,可能会有一些可用命令与环境的细微差别。例如,当写信时,可用的命令有点不同:
% !TEX program=lualatex\documentclass{letter}\usepackage{ctex}\begin{document}\begin{letter}{某某地址\\某某街道\\某某城市}\opening{亲爱的先生或女士,}信件正文在这里\closing{此致,}\end{letter}\end{document}
看看如何使用\\
来分隔地址的行;我们将在稍后讨论换行。另外请注意letter
类如何为每封信创建一个新的环境并有专门的命令。
标准的article
、report
和book
类接受10pt
、11pt
和12pt
选项来改变字体大小,以及twocolumn
选项来使文档成为双栏。
功能丰富的类
核心类非常稳定,但这也意味着它们在设计和可用命令范围方面都相当保守。随着时间的推移,一些更强大的类被编写出来,让你无需手动操作就可以改变设计(我们将在稍后提到)。
美国数学学会提供标准类的变体(amsart
、amsbook
),设计风格更传统,更接近数学期刊出版物中使用的风格。
两个最大和最流行的”扩展”类是KOMA-Script包和memoir类。KOMA-Script提供了一组与标准类”平行”的类:scrartcl
、scrreprt
、scrbook
和scrlttr2
,而memoir类则是一个单一的类,最像是book
的扩展。
这些扩展类有很多定制钩子,我们将在练习中探索一些。你可能想知道我们如何了解它们提供的钩子;我们将在后面的课程中介绍这一点,但你总是可以提前了解!
演示文稿
slides
类是为制作20世纪80年代中期的物理幻灯片而开发的,因此没有任何功能来创建基于PDF的交互式演示文稿。有现代的类可以做到这一点:它们相对于一般的 LaTeX 文档来说比较特殊,所以我们在补充信息中介绍了它们。
练习
探索如何在标准类、KOMA包和memoir
之间更改文档类如何影响文档的外观。
% !TEX program=lualatex\documentclass{ctexart}\begin{document}\section{简介}这是一个示例文档,带有一些虚拟文本\footnote{和一个脚注}。这段文字相当长,因为我们可能想看看让文档成为双栏的效果。\end{document}
添加类选项twocolumn
,看看布局如何变化。
将\section
改为\chapter
,找出使用scrreprt
类时以下类选项有什么效果:
chapterprefix
headings=small
headings=big
numbers=enddot