文档类
本课解释了什么是文档类以及它如何影响文档布局和设计。它列出了在 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类时以下类选项有什么效果:
chapterprefixheadings=smallheadings=bignumbers=enddot