LaTeX/基础
本教程旨在让您熟悉 LaTeX 的基本知识。
在开始之前,请确保您的计算机上已安装 LaTeX(有关您需要的说明,请参阅 安装)。
- 我们首先将了解 LaTeX 语法。
- 我们将创建我们的第一个 LaTeX 文档。
- 然后,我们将带您了解如何将此文件通过 LaTeX 系统来生成高质量输出,例如 PostScript 或 PDF。
- 最后,我们将了解文件名和文件类型。
使用 LaTeX 时,您编写一个 纯文本 文件,该文件描述文档的结构和呈现方式。LaTeX 将此源文本(与标记相结合)转换为 排版 文档。为了便于类比,网页的工作方式类似: HTML 用于描述文档,然后由您的浏览器将其呈现为屏幕输出 - 具有不同的颜色、字体、大小等。
您可以使用任何文本编辑器为 LaTeX 创建输入文件。一个最小的示例如下所示(命令将在稍后解释)
\documentclass{article}
\begin{document}
Hello world!
\end{document}
|
LaTeX 会在其输入文件中规范化空格,因此空白字符(如空格或制表符)将统一视为空格。连续的几个空格将被视为一个空格,行首的空格通常会被忽略,单个换行符也会产生空格。多个换行符(空行)定义段落的结束。下面展示了应用这些规则的示例:左侧显示用户输入(.tex),而右侧则显示渲染后的输出(.dvi, .pdf, .ps).
It does not matter whether you
enter one or several spaces
after a word.
An empty line starts a new
paragraph.
|
您在单词后输入一个空格或多个空格,结果是一样的。 空行开始一个新的段落。 |
以下符号是保留字符,它们在 LaTeX 中具有特殊含义或在所有字体中不可用。如果在文本中直接输入它们,通常不会打印,而是让 LaTeX 执行您未预期的操作。
# $ % ^ & _ { } ~ \
正如您将看到的,这些字符可以在您的文档中使用,方法是在前面添加反斜杠前缀
\# \$ \% \^{} \& \_ \{ \} \~{} \textbackslash{}
|
在某些情况下,方括号字符 [ ]
也可以被认为是保留字符,因为它们用于为某些命令提供可选参数。如果您想在某些命令后直接打印它们,例如在这种情况下: \command [text]
它会失败,因为 [text] 将被视为提供给 \command
的选项。您可以通过这种方式实现正确的输出: \command {} [text]
。
反斜杠字符 \
不能通过在前面添加另一个反斜杠来输入,就像这样 \\
; 此序列用于换行。要在数学模式下引入反斜杠,您可以使用 \backslash
代替。
命令 \~
和 \^
分别产生波浪号和帽子,它们被放在下一个字母的上方。例如 \~n
产生 ñ。这就是为什么您需要大括号来指定没有字母作为参数的原因。您也可以使用 \textasciitilde
和 \textasciicircum
来输入这些字符;或 其他命令。
如果您要插入可能包含多个特定符号(如 URI)的文本,可以考虑使用 \verb
命令,该命令将在后面关于 格式化 的部分中讨论。有关源代码,请参阅 源代码列表
小于号 <
和大于号 >
字符是唯一无法正确打印的可见 ASCII 字符(未保留)。请参阅 特殊字符 了解解释和解决方法。
非 ASCII 字符(例如重音符号、变音符号)在大多数情况下可以直接输入。但是,您必须相应地配置文档。其他符号和更多符号可以使用特殊命令打印,例如在数学公式中或作为重音符号。我们将在 特殊字符 中解决这个问题。
有时,某些状态应该保持局部,换句话说,其范围应该有限。这可以通过将要局部更改的部分括在大括号中来实现。在某些情况下,使用大括号将不可行。LaTeX 提供 \bgroup
和 \egroup
来分别开始和结束一个组。
\documentclass{article}
\begin{document}
normal text {\itshape walzing \bfseries Wombat} more normal text
normal text \bgroup\itshape walzing \bfseries Wombat\egroup{} more normal text
\end{document}
|
环境形成一个隐式组。
环境 在 LaTeX 中的作用与命令非常类似,但它们通常对文档的更大部分产生影响。它们的语法是
\begin{environmentname}
text to be influenced
\end{environmentname}
|
在 \
和 \end
之间,您可以放置其他命令和嵌套环境。环境的内部机制定义了一个组,这使得它的使用安全(不会影响文档的其他部分)。通常,环境也可以接受参数,但此功能并不常用,因此将在文档的更高级部分进行讨论。
LaTeX 中的所有内容都可以用命令和环境来表达。
LaTeX 命令区分大小写,并采用以下两种格式之一
- 它们以反斜杠
\
开头,然后有一个仅包含字母的名称。- 命令名称以空格、数字或任何其他非字母字符结束。
- 它们由反斜杠
\
和正好一个非字母字符组成。- 命令名称在该非字母字符之后结束。
一些命令需要一个参数,该参数必须在命令名称后的花括号 { }
之间给出。一些命令支持可选参数,这些参数在命令名称后的方括号 [ ]
中添加。一般语法为
\commandname[option1,option2,...]{argument1}{argument2}...
|
许多 LaTeX 格式化命令成对出现。
- 一个 参数形式命令,其中一个参数是要格式化的文本。
- 一个 范围形式命令,其中格式化将应用于命令后的所有文本,直到当前范围的结束。也就是说,直到当前组或环境的结束。此形式也可能称为开关命令。范围形式命令可能仍然具有参数,但要格式化的文本不是参数。此形式几乎永远不应该在任何范围之外调用,否则它将应用于文档的其余部分。
将参数形式命令与其相应的范围形式命令混淆是一个非常常见的错误! |
参数形式命令将比其相应的范围形式命令多一个参数,额外的参数是命令影响的文本。
示例
强调文本: \emph
是一个参数形式命令,带有一个参数,即要强调的文本。 \em
是相应的范围形式命令,没有参数。
\emph{emphasized text}, this part is normal % Correct.
{\em emphasized text}, this part is normal % Correct.
\emph emphasized text, this part is normal % Incorrect: command without argument.
\em{emphasized text}, this part is normal % Incorrect: switch with argument.
\em emphasized text, this part is normal % Dangerous: switch outside of any environment.
|
为文本着色:此示例需要您 \usepackage{xcolor}
。 \textcolor
是一个参数形式命令,带有两个参数,颜色和要着色的文本。 \color
是相应的范围形式命令,只有一个参数,颜色。
By default, this text is black. \textcolor{red}{This is red text.} Back to black.
By default, this text is black. {\color{red}This is red text.} Back to black.
|
当 LaTeX 在处理输入文件时遇到 %
字符时,它会忽略当前行的其余部分、换行符以及下一行开头的所有空格。
这可用于在输入文件中写下注释,这些注释不会出现在印刷版本中。
This is an % stupid
% Better: instructive <----
example: Supercal%
ifragilist%
icexpialidocious
|
这是一个例子:Supercalifragilisticexpialidocious |
请注意,%
字符可用于拆分不允许空格或换行的长输入行,如上面的 Supercalifragilisticexpialidocious。
核心 LaTeX 语言没有为注释跨越多行的区域预定义语法。有关简单解决方法,请参阅 多行注释。
现在我们可以创建我们的第一个文档。我们将生成获得一些输出所需的绝对最小值;著名的Hello World! 方法在这里将适用。
% hello.tex - Our first LaTeX example!
\documentclass{article}
\begin{document}
Hello World!
\end{document}
|
- 将您的文件保存为hello.tex.
在为文件选择名称时,请确保它带有.tex扩展名。
% hello.tex - 我们的第一个 LaTeX 示例!
|
第一行是注释。这是因为它以百分号 (%) 开头;当 LaTeX 看到这一点时,它只是忽略了该行的其余部分。注释对于人们对源文件的部分进行注释很有用。例如,您可以放置有关作者和日期的信息,或任何您想要的信息。 |
\documentclass{article}
|
此行是一个命令,它告诉 LaTeX 使用 article 文档类。文档类文件定义要遵循的格式标准,在本例中是通用的文章格式。期刊、大学部门等可以提供这些文件,以确保出版标准得到满足。在许多情况下,相同的内容可以简单地通过替换所需的文档类文件来重新格式化为不同的出版商。如果未提供,可以选择许多通用的文档类。 |
\{document}
|
此行是名为 document 的环境的开始;它提醒 LaTeX 文档内容即将开始。此命令之前的任何内容通常都属于前言。 |
Hello World!
|
这是唯一包含实际内容的实际行 - 我们希望在页面上显示的文本。 |
\end{document}
|
这里结束了 document 环境。它告诉 LaTeX 文档源已完成,此行之后的任何内容都将被忽略。 |
正如我们之前所说,每个 LaTeX 命令都以反斜杠 (\
) 开头。这是 LaTeX 的方式,让它知道每当它看到反斜杠时,都应该期望一些命令。注释不属于命令,因为它们只告诉 LaTeX 忽略该行。只要百分号之前没有空格,注释就不会影响文档的输出。
然后我们将输入文件输入 LaTeX 引擎,一个生成最终文档的程序。
现代使用中有多个 LaTeX 引擎lualatex, xelatex和pdflatex。三者之间存在重要的区别,但我们将在其他地方讨论这些区别 - 任何一个都可以用于构建我们的第一个文档。
LaTeX 本身没有 GUI,尽管一些 LaTeX 安装具有图形前端,您可以在其中单击 LaTeX 来编译您的输入文件。假设您没有使用其中之一
- 打开 终端 并导航到包含您.tex文件的目录。
- 键入命令:
xelatex hello.tex
(The.tex扩展名不是必需的,虽然您也可以在需要时包含它。) - 关于 LaTeX 及其进度的各种信息将显示。如果一切顺利,控制台中显示的最后两行将是
Output written on hello.pdf (1 page). Transcript written on hello.log.
这意味着您的源文件已处理,生成的文档称为hello.pdf。您可以使用系统上安装的任何 PDF 查看器查看它。
在这种情况下,由于文件很简单,您只需要运行 LaTeX 命令一次。但是,如果您开始创建复杂的文档,包括参考书目和交叉引用等,则需要多次执行 LaTeX 来解析这些引用。当它出现时,我们将在未来讨论这一点。
一旦您开始处理更复杂的文档,编译就会变得非常棘手。存在许多程序可以自动读取 LaTeX 文档并运行适当数量的适当编译器。例如,latexmk可以简单地从大多数 LaTeX 文件生成 PDF
$ latexmk -pdf file.tex
请注意,大多数 编辑器 会为您处理。
LaTeX 和 TeX 都是在可移植文档格式 (PDF) 出现之前的很多年前创建的,因此普通的 LaTeX 引擎,latex,输出 DVI 格式,该格式由 Donald Knuth 设计,用于设备无关的 TeX 输出。此格式已不再普遍使用,但可以使用 LaTeX 发行版中的程序将其转换为更常见的输出格式。
- dvips将.dvi文件转换为.ps(PostScript)。
- dvipdf将.dvi文件转换为.pdf (dvipdfm是改进版。
您还可以找到 Ghostscript,一个用于处理 PostScript 的免费开源工具集。它ps2pdf将.ps文件转换为.pdf和pdf2ps执行相反的操作。
下图显示了 LaTeX 源代码与其可创建的格式之间的关系。
红色框中的文本表示文件格式,箭头上的蓝色文本表示必须使用的命令,框下的小绿色文本表示支持的图像格式。每次通过箭头时都会丢失一些信息,这可能会降低文档的功能。因此,您应该选择最短的路径来达到目标格式。这可能是获得所需格式输出的最便捷方式。从 LaTeX 源代码开始,最便捷的方式是只使用latex用于 DVI 输出,或只使用pdflatex用于 PDF 输出,仅在需要打印文档时才转换为 PostScript。
请注意,使用latex生成 DVI 输出会阻止您使用仅 PDF 功能,例如超链接和嵌入字体。
第 导出到其他格式 章讨论了有关将 LaTeX 源代码导出到其他文件格式的更多内容。
切勿使用包含空格的目录(文件夹)或文件名。虽然您的操作系统可能支持它们,但有些操作系统不支持,它们只会给 TeX 带来痛苦和眼泪。文件名可以随意短或长,但要严格避免空格。坚持使用无重音的小写字母a-z,数字0-9,连字符(-),以及只有一个句点或句号(.)来分隔文件扩展名(有点类似于良好 Web URL 的约定):这将使您更容易在 Web 上引用 TeX 文件,并使您的文件更具可移植性。一些操作系统不区分大小写字母,而其他操作系统则区分。因此,最好不要混用大小写字母。
TeX 编译器是单遍过程。这意味着编译器无法跳转到文档周围,这对于目录和参考文献很有用。实际上,编译器无法猜测特定部分将打印在哪个页面,因此,当目录在即将到来的部分之前打印时,它无法设置页码。
为了解决此问题,许多需要跳转的 LaTeX 命令使用辅助文件,这些文件通常与当前文档具有相同的文件名,但扩展名不同。它将临时数据存储到这些文件中,并在下次编译时使用它们。因此,为了获得最新的目录,您需要编译文档两次。如果没有部分移动,则无需重新编译。
例如,目录数据临时文件是filename.toc.
这些文件中都不包含不可恢复的信息。这意味着您可以安全地删除它们,编译会自动重新生成它们。
唯一重要的文件类型是.tex, .cls和.sty, .bib和.bst对于 BibTeX,这些不是临时的,不应删除。 |
当您使用 LaTeX 的各种功能(索引、术语表、参考文献等)时,您会很快发现自己身处一个包含各种扩展名的文件迷宫中,而且可能毫无头绪。以下列表解释了使用 TeX 时可能遇到的最常见的文件类型。
.aux | 一个将信息从一次编译运行传递到下次编译运行的文件。除其他事项外,.aux文件用于存储与交叉引用相关的的信息。 |
.bbl | BiBTeX 输出的参考文献文件,由 LaTeX 使用 |
.bib | 参考文献数据库文件。(您可以在其中存储完整的参考文献列表) |
.blg | BiBTeX 日志文件。(错误记录在此处) |
.bst | BiBTeX 样式文件。 |
.cls | 类文件定义文档的外观。它们使用 \documentclass 命令进行选择。 |
.dtx | 文档 TeX。这是 LaTeX 样式文件的主要分发格式。如果您处理一个.dtx文件,您将获得包含在.dtx文件的目录。 |
.ins | 中 LaTeX 包的文档化宏代码.dtx文件中包含的文件的安装程序。如果您从网络下载 LaTeX 包,通常会得到一个.dtx和一个.ins文件。在.ins文件上运行 LaTeX 以解压缩.dtx文件的目录。 |
.fd | 字体描述文件,告诉 LaTeX 新字体。 |
.dvi | 设备独立文件。这是使用latex进行的 LaTeX 编译运行的主要结果。您可以使用 DVI 预览程序查看其内容,也可以使用 dvips 或类似应用程序将其发送到打印机。 |
便携式文档格式。这是使用pdflatex进行的 LaTeX 编译运行的主要结果。您可以使用任何 PDF 查看器查看其内容或打印它。 | |
.log | 详细记录上次编译运行期间发生的情况。 |
.toc | 存储所有部分标题。它将在下次编译运行时读取,并用于生成目录。 |
.lof | 类似于.toc,但用于插图列表。 |
.lot | 同样,用于表格列表。 |
.idx | 如果您的文档包含索引。LaTeX 将所有进入索引的单词存储在此文件中。使用 makeindex 处理此文件。 |
.ind | 已处理的 .idx 文件,准备在下一次编译周期中包含到您的文档中。 |
.ilg | 日志文件,说明 makeindex 进行了哪些操作。 |
.sty | LaTeX 宏包。这是一个您可以使用 \usepackage 命令加载到 LaTeX 文档中的文件。 |
.tex | LaTeX 或 TeX 输入文件。可以使用latex. |
.out | hyperref 包文件,主文件只有一个。 |
请参阅 文档结构 和常见元素部分,了解属于每种文档类型的所有常见功能。
LaTeX 拥有一些适用于世界上大多数语言的出色功能。您可以告诉 LaTeX 遵循目标语言的排版规则,简化特殊字符输入等等。请参阅 特殊字符 和 国际化。
请参阅 模块化文档,了解有关将大型项目组织成多个文件的良好建议。
如果您遇到有关基本功能的问题,或者想阅读重要建议,我们强烈建议您阅读 常见问题解答。对于更具体的问题和疑难解答,请参阅 技巧和窍门 页面。
LaTeX 的全部功能在于宏。它们使您的文档变得非常动态和灵活。请参阅 专用部分。
参见第协同编写 LaTeX 文档章。