命令、源代码的结构与文档的组织方式
命令和环境
命令用在排版公式、划分文档结构、控制样式等。
命令的结构
- 反斜线和后面的一串字母,如
\LaTeX
。它们以任意非字母符号(空格、数字、标点等)为界限。 - 反斜线和后面的单个非字母符号,如
\$
。
要注意LATEX命令是对大小写敏感的,比如输入\LaTeX
命令可以生成错落有致的LATEX字母组合,但输入\Latex
或者\LaTex
什么都得不到,还会报错;它们与\LaTeX
是不同的命令。
字母形式的LATEX命令忽略其后的所有连续空格。如果要人为引入空格,需要在命令后面加一对花括号阻止其忽略空格,或者在命令后紧跟一个反斜线+ ⊔ \sqcup ⊔。
命令的参数
参数分为可选参数和必选参数。可选参数以方括号[]包裹;必选参数一般以花括号{}包裹。还有些命令可以带一个星号*,带星号和不带星号的命令效果有一定差异。
环境
环境用以令一些效果在局部生效或是生成特殊的文档元素。
\begin{⟨environmentname⟩}[⟨optionalarguments⟩]{⟨mandatoryarguments⟩}
…
\end{⟨environmentname⟩}
- 环境的用法:用一对命令
\begin
和\end
包括。 - 其中
⟨environmentname⟩
为环境名,\begin
和\end
中填写的环境名应当一致。 {⟨mandatoryarguments⟩}
和[⟨optionalarguments⟩]
为环境所需的必选和可选参数。LATEX环境可能需要一个或多个必选/可选参数,也可能完全不需要参数。部分环境允许嵌套使用。
分组
使用一对花括号{}作为分组,在分组中使用的命令被限制在分组内,不会影响到分组外的内容(有些命令会对其后所有内容产生作用),个别命令在分组内仍然会产生全局作用。环境也可以看作一个分组。
源代码结构
\documentclass{...}%...为某文档类
%导言区
\begin{document}
%正文内容
\end{document}
%此后内容会被忽略
- LATEX源代码以一个
\documentclass
命令作为开头,它指定了文档使用的文档类。 document
环境当中的内容是文档正文。- 在
\documentclass
和\begin{document}
之间的位置称为导言区。在导言区中常会使用\usepackage
命令调用宏包,还会进行文档的全局设置。
宏包与文档类
文档类
文档类规定了LATEX源代码所要生成的文档的性质——普通文章、书籍、演示文稿、个人简历等等。
\documentclass[⟨options⟩]{⟨class-name⟩}
其中⟨class-name⟩
为文档类的名称,如LATEX提供的article、report、book,在其基础上派生的一些文档类,如支持中文排版的ctexart、ctexrep、ctexbook,或者有其它功能的一些文档类,如moderncv、beamer等。
article | 文章格式的文档类,广泛用于科技论文、报告、说明文档等。 |
---|---|
report | 长篇报告格式的文档类,具有章节结构,用于综述、长篇论文、简单 长篇报告格式的文档类,具有章节结构,用于综述、长篇论文、简单 |
book | 书籍文档类,包含章节结构和前言、正文、后记等结构。 |
proc | 基于article文档类的一个简单的学术文档模板。 |
slides | 幻灯格式的文档类,使用无衬线字体。 |
minimal | 一个极其精简的文档类,只设定了纸张大小和基本字号,用作代码测 试的最小工作示例 |
其中前三个习惯上称为“标准文档类”。
可选参数⟨options⟩
为文档类指定选项,以全局地规定一些排版的参数,如字号、纸张大小、单双面等等。比如调用article文档类排版文章,指定纸张为A4大小,基本字号为11pt,双面排版:
\documentclass[11pt,twoside,a4paper]{article}
宏包
在使用LATEX时,时常需要依赖一些扩展来增强或补充LATEX的功能,比如排版复杂的表格、插入图片、增加颜色甚至超链接等等。这些扩展称为宏包。调用宏包的方法非常类似调用文档类的方法:
\usepackage[⟨options⟩]{⟨package-name⟩}
\usepackage
可以一次性调用多个宏包,在⟨package-name⟩
中用逗号隔开。这种用法一般不要指定选项:
%一次性调用三个排版表格常用的宏包
\usepackage{tabularx,makecell,multirow}
在使用宏包和文档类之前,一定要首先确认它们是否安装在你的计算机中,否则\usepackage
等命令会报错误。终端下输入命令texdoc⟨pkg-name⟩
可查阅相应文档。
工具宏包syntonly:加载这个宏包后,在导言区使用\syntaxonly
命令,可令LATEX编译后不生成DVI或者PDF文档,只排查错误,编译速度会快不少:
\usepackage{syntonly}
\syntaxonly
如果想生成文档,则用%注释掉\syntaxonly
命令即可。
文件的组织方式
当编写长篇文档时,例如当编写书籍、毕业论文时,单个源文件会使修改、校对变得十分困难。将源文件分割成若干个文件,例如将每章内容单独写在一个文件中,会大大简化修改和校对的工作。
LATEX提供了命令\include
用来在源代码里插入文件:\include{⟨filename⟩}
⟨filename⟩为文件名(可以不带.tex扩展名),如果和要编译的主文件不在一个目录中,则要加上相对或绝对路径,例如:
\include{chapters/file}%相对路径
\include{/home/Bob/file}%*nix(包含Linux、macOS)绝对路径
\include{D:/file}%Windows绝对路径,用正斜线
值得注意的是\include
在读入⟨filename⟩
之前会另起一页。有的时候我们并不需要这样,而是用\input
命令,它纯粹是把文件里的内容插入:\input{⟨filename⟩}
。
LTEX还提供了一个\includeonly
命令来组织文件,用于导言区,指定只载入某些文件。导言区使用了\includeonly
后,正文中不在其列表范围的\include
命令不会起效:
\includeonly{⟨filename1⟩,⟨filename2⟩,…}
需要注意的是,使用\include
和\input
命令载入的文件名最好不要加空格和特殊字符,也尽量避免使用中文名,否则很可能会出错。
相关术语和概念
- 引擎:全称为排版引擎,是编译源代码并生成文档的程序,如pdfTEX、XƎTEX等。有时也称为编译器。
- 格式:是定义了一组命令的代码集。LATEX就是最广泛应用的一个格式。
- 编译命令:是实际调用的、结合了引擎和格式的命令。
文档格式 | plainTEX格式 | LATEX格式 | |
---|---|---|---|
TEX引擎 | DIV | tex | N/A |
pdfTEX引擎 | DIV | etex | latex |
pdftex | pdflatex | ||
XƎTEX引擎 | xetex | xelatex | |
LuaTEX引擎 | luatex | lualatex |
latex:虽然名为latex命令,底层调用的引擎其实是pdfTEX。该命令生成dvi(DeviceIndependent)格式的文档,用dvipdfmx命令可以将其转为pdf。
pdflatex:底层调用的引擎也是pdfTEX,可以直接生成pdf格式的文档。
xelatex:底层调用的引擎是XƎTEX,支持UTF-8编码和对TrueType/OpenType字体的调用。当前较为方便的中文排版解决方案基于xelatex。
mx命令可以将其转为pdf。
pdflatex:底层调用的引擎也是pdfTEX,可以直接生成pdf格式的文档。
xelatex:底层调用的引擎是XƎTEX,支持UTF-8编码和对TrueType/OpenType字体的调用。当前较为方便的中文排版解决方案基于xelatex。
lualatex:底层调用的引擎是LuaTEX,这个引擎在pdfTEX引擎基础上发展而来,除了支持UTF-8编码和对TrueType/OpenType字体的调用外,还支持通过Lua语言扩展TEX的功能。lualatex编译命令下的中文排版支持需要借助luatexja宏包。