跳到主要内容

30分钟内学会 LaTeX

本教程并不假定您对 LaTeX 有任何经验,但希望在您完成本教程时,您不仅能写出您的第一个 LaTeX 文档,而且还能获得足够的知识和信心,为熟练掌握 LaTeX 迈出下一步。

什么是 LaTeX?

LaTeX(发音为 "LAY-tek "或 "LAH-tek")是一种用于排版专业外观文档的工具。然而,LaTeX 的操作模式与你可能使用过的许多其他文档制作应用程序,如Microsoft Word或LibreOffice Writer,有很大的不同:这些 "所见即所得 "的工具为用户提供了一个交互式页面,他们在其中输入和编辑他们的文本,并应用各种形式的样式。LaTeX 的工作方式非常不同:相反,你的文档是一个纯文本文件,其中穿插着用来表达所需(排版)结果的 LaTeX 命令。为了产生一个可见的、经过排版的文件,你的 LaTeX 文件被一个叫做 TeX 引擎的软件处理,它使用嵌入在你的文本文件中的命令来指导和控制排版过程,将 LaTeX 命令和文件文本转换为一个专业的排版的PDF 文件。这意味着你只需要关注你的文件内容,而计算机将通过 LaTeX 命令和 TeX 引擎来处理视觉外观(格式化)。

为什么要学习LATEX?

对于学习使用LATEX而不是其他文档编写软件,我们可以提出各种论据,但最终还是要根据个人的喜好、亲和力和文档要求来选择。

支持 LATEX 的论点包括

  • 支持物理科学中极其复杂的数学、表格和技术内容的排版。
  • 支持脚注、交叉引用和书目管理。
  • 易于制作复杂或繁琐的文件元素,如索引、词汇表、目录、数字列表。
  • 由于其内在的可编程性和通过数千个免费附加包的可扩展性,对于定制的文件制作具有高度的可定制性。

总的来说,LaTeX 为用户提供了大量的控制权,可以按照极高的标准来排版制作文件。当然,有些类型的文件或出版物在 LaTeX 中并不出彩,包括许多典型的杂志类出版物中的 "自由形式 "页面设计。

LaTeX 的一个重要优点是将文档内容与文档风格分开:一旦你写好了文档的内容,它的外观就可以轻松地改变。同样,你可以创建一个 LaTeX 文件,定义特定文档类型的布局/风格,该文件可以作为一个模板,用于规范该类型的其他文档的作者/制作;例如,这允许科学出版商在 LaTeX 中创建文章模板,作者可以用它来写论文,提交给期刊社。 LoongTeX 有一个包含数千个模板的画廊,涵盖了大量的文件类型--从科学文章、报告和书籍到简历和演示文稿,无所不包。由于这些模板定义了文档的布局和风格,作者只需在 LoongTeX 中打开它们--创建一个新的项目,然后开始写作,添加内容。

编写你的第一个LATEX作品

第一步是创建一个新的 LaTeX 项目。你可以在自己的电脑上通过创建一个新的 .tex 文件来完成这个工作;或者,你也可以在 LoongTeX 中启动一个新的项目。

让我们从最简单的工作实例开始,它可以直接在 LoongTeX 中打开。

home/new.tex
\documentclass{article}

\begin{document}
First document. This is a simple example, with no
extra parameters or packages included.
\end{document}

你的第一个LATEX作品

你可以看到LATEX已经自动缩进了该段的第一行,为你处理了这个格式。让我们仔细看看我们的代码的每一部分是做什么的。

第一行代码 \documentclass{article},声明了被称为类的文档类型,它控制着文档的整体外观。不同类型的文档需要不同的类;例如,一份简历需要一个不同的类,而一篇科学论文可能使用标准的LATEX文章类。其他类型的文件可能需要不同的类,如书籍或报告。要想了解 LaTeX 的多种类型,请访问 CTAN (Comprehensive TeX Archive Network) 的相关页面。

设置好文档类别后,我们的内容,也就是文档的主体,就写在了\begin{document}end{document} 标签之间。打开上面的例子后,你可以对文本进行修改,完成后可以通过重新编译文档来查看排版后的PDF。要在 LoongTeX 中这样做,只需点击重新编译,正如这个简短的视频片段所演示的:

todo:这里是一个视频

任何 LoongTeX 项目都可以被配置为在每次编辑时自动重新编译:点击 重新编译 按钮旁边的小箭头,将 自动编译 设置为 True,如下面的截屏所示。

todo: 这里是一张图片

看过了如何向我们的文件添加内容,下一步就是给它一个标题。要做到这一点,我们必须简单地谈谈序言。

文档的序言

上面的截屏显示 LoongTeX 将一个 LaTeX 文档存储为一个名为 main.tex 的文件:按照惯例,.tex 文件的扩展名是用来命名包含文档 LaTeX 代码的文件的。

前面的例子显示了文档内容是如何在 \begin{document} 命令之后输入的;然而,在这之前出现在 .tex 文件中的所有内容都被称为序言,它是文档的 "设置 "部分。在序言中,你定义了文档的类别(类型),以及一些具体的细节,如编写文档时要使用的语言;你想使用的加载包(后面会详细介绍),这也是你应用其他类型配置的地方。

一个最小的文档序言可能看起来像这样:

home/new.tex
\documentclass[12pt, letterpaper]{article}
\usepackage{graphicx}

其中 \documentclass[12pt, letterpaper]{article} 定义了文件的整体类别(类型)。额外的参数,必须用逗号隔开,包含在方括号中([...]),用来配置文章类的这个实例;也就是说,我们希望对这个基于文章类的特定文档进行设置。

在这个例子中,这两个参数的作用如下。

  • 12pt: 设置字体大小;
  • Letterpaper: 设置纸张大小; 当然,也可以使用其他的字体大小,9pt、11pt、12pt,但如果没有指定,默认大小是10pt。至于纸张大小,其他可能的值是a4paper和legalpaper。更多信息见关于页面大小和页边距的文章

序言行:

home/new.tex
\usepackage{graphicx}

是一个加载外部包(这里是graphicx)来扩展LATEX功能的例子,使其能够导入外部图形文件。关于LATEX包的讨论,请参见寻找和使用LATEX包一节

包括标题、作者和日期信息

在我们的文件中添加标题、作者和日期,需要在序言部分(而不是文件的主体部分)增加三行。这些行是:

  • \title{My first LaTeX document}` :文件标题。
  • \author{Hubert Farnsworth} :在这里写上作者的名字,也可以选择在大括号内写上 \thanks 命令。
    • \thanks{Funded by the Overleaf team.} :可以加在作者的名字后面,在作者命令的大括号内。它将为大括号内的文字添加一个上标和一个脚注。如果你需要在你的文章中感谢某个机构,这很有用。
  • \date{August 2022} :你可以手动输入日期,或使用命令 \today 在每次编译文件时都排入当前日期。

加上这几行,你的序言应该是这样的:

home/new.tex
\documentclass[12pt, letterpaper]{article}
\title{My first LaTeX document}
\author{Hubert Farnsworth\thanks{Funded by the Overleaf team.}}
\date{August 2022}

要排版标题、作者和日期,请在文件正文中使用 \maketitle 命令。

home/new.tex
\begin{document}
\maketitle
We have now added a title, author and date to our first \LaTeX{} document!
\end{document}

现在可以将序言和正文合并,产生一个完整的文件,可以在 LoongTeX 中打开:

home/new.tex
\documentclass[12pt, letterpaper]{article}
\title{My first LaTeX document}
\author{Hubert Farnsworth\thanks{Funded by the LoongTeX team.}}
\date{August 2022}
\begin{document}
\maketitle
We have now added a title, author and date to our first \LaTeX{} document!
\end{document}

这个例子的输出结果如下:

配图

添加注释

LaTeX 是一种 "程序代码",但它是专门用于文档排版的;因此,就像用其他编程语言编写的代码一样,在文档中加入注释是非常有用的。LATEX 注释是一段不会被排版或以任何方式影响文档的文字--通常用于添加 "待办 "事项;包括解释性说明;在调试时对棘手的宏或 LaTeX 代码的注释行/段提供内行解释。

在LATEX中做注释,只需在行首写上%符号即可,如下面使用上述例子的代码所示:

home/new.tex
\documentclass[12pt, letterpaper]{article}
\title{My first LaTeX document}
\author{Hubert Farnsworth\thanks{Funded by the Overleaf team.}}
\date{August 2022}
\begin{document}
\maketitle
We have now added a title, author and date to our first \LaTeX{} document!

% This line here is a comment. It will not be typeset in the document.
\end{document}

这个例子产生的输出与之前不包含注释的LaTeX代码完全相同。

粗体字、斜体字和下划线

接下来,我们现在来看看一些文本格式化的命令。

  • 粗体:LaTeX中的粗体文本是用 \textbf{...} 命令排版的。
  • 斜体:斜体文字是用 \textit{...} 命令来制作的。
  • /下划线/ :使用 \underline{...} 命令对文本进行下划线。

下面的例子演示了这些命令:

home/new.tex
Some of the \textbf{greatest}
discoveries in \underline{science}
were made by \textbf{\textit{accident}}.

这个例子的输出结果如下:

配图

另一个非常有用的命令是 \emph{argument},它对其参数的影响取决于上下文。在普通文本中,被强调的文本是斜体的,但如果在斜体文本中使用,这一行为就会被颠覆--见下一个例子:

home/new.tex
Some of the greatest \emph{discoveries} in science 
were made by accident.

\textit{Some of the greatest \emph{discoveries}
in science were made by accident.}

\textbf{Some of the greatest \emph{discoveries}
in science were made by accident.}

这个例子的输出结果如下。

配图

注意:一些软件包,如 Beamer,改变了 \emph 命令的行为。

添加图片

在本节中,我们将探讨如何在 LaTeX 文档中添加图片--注意,你需要将图片上传到 LoongTeX 项目中。

下面的例子演示了如何加入一张图片。

home/new.tex
\documentclass{article}
\usepackage{graphicx} % 用于导入图形的LaTeX软件包
\graphicspath{{images/}} % 配置Graphicx软件包

\begin{document}
The universe is immense and it seems to be homogeneous,
on a large scale, everywhere we look.

% The \includegraphcs command is
% provided (implemented) by the
% graphicx package
\includegraphics{universe}

There's a picture of a galaxy above.
\end{document}

这个例子的输出结果如下:

todo:这里是一个配图

将图形导入 LaTeX 文档需要一个附加包,它提供了包含外部图形文件所需的命令和功能。上面的例子加载了 graphicx 软件包,除了其他许多命令外,它还提供了 \includegraphics{...} 来导入图形和 \graphicspath{...} 来告知 LaTeX 图形的位置。

要使用 graphicx 包,请在您的 LoongTeX 文件序言中加入以下一行。

home/new.tex
\usepackage{graphicx}

在我们的例子中,命令 \graphicspath{{images/}} 通知 LaTeX 图像被保存在当前目录下一个名为 images 的文件夹中。

配图

\includegraphics{universe} 命令完成了将图像插入文档的实际工作。这里,universe 是图像文件的名称,但没有扩展名。

注意。

  • 尽管在 \includegraphics 命令中允许使用完整的文件名,包括其扩展名,但省略文件扩展名被认为是最好的做法,因为这将促使 LaTeX 搜索所有支持的格式。
  • 一般来说,图形的文件名不应包含空白或多个点;在向 LoongTeX 上传图像文件时,也建议使用小写字母作为文件扩展名。

关于 LaTeX 包的更多信息可以在本教程末尾的寻找和使用 LaTeX 包一节中找到。

标题、标签和参考文献

图片可以通过图表环境进行说明、标注和参考,如下图所示:

home/new.tex
\documentclass{article}
\usepackage{graphicx}
\graphicspath{{images/}}

\begin{document}

\begin{figure}[h]
\centering
\includegraphics[width=0.75\textwidth]{mesh}
\caption{A nice plot.}
\label{fig:mesh1}
\end{figure}

As you can see in figure \ref{fig:mesh1}, the function grows near the origin. This example is on page \pageref{fig:mesh1}.

\end{document}

这个例子的输出结果如下:

配图

在这个例子中,有几个值得注意的命令:

  • \includegraphics[width=0.75\textwidth]{mesh}: 这种形式的 \includegraphics 指示LATEX将图形的宽度设置为文本宽度的75%,而文本宽度的值保存在 \textwidth 命令中。
  • \caption{A nice plot.}: 顾名思义,这条命令是设置图的标题,可以放在图的上方或下方。如果您创建了一个数字列表,这个标题将在该列表中使用。
  • \label{fig:mesh1}: 为了在您的文档中引用这个图片,您可以使用 \label 命令给它一个标签。该标签用于为图像生成一个编号,并与下一条命令相结合,使您能够引用它。
  • \ref{fig:mesh1}: 这个代码将被对应于参考图的数字所取代。

在LATEX文档中包含的图像应该放在一个图形环境中,或者类似的环境中,这样LATEX就可以自动将图像放置在文档中的合适位置。

更多的指导见于以下Overleaf帮助文章。

在LATEX中创建列表

您可以使用环境来创建不同类型的列表,环境是用来封装实现特定排版功能所需的LATEX代码。一个环境以 \begin{environment-name} 开始,以 \end{environment-name} 结束,其中 environment-name 可能是数字、表格或其中一种列表类型: itemize 用于无序列表,enumerate 用于有序列表。

无序列表

无序列表是由 itemize 环境产生的。每个列表条目前必须有 \item 命令,如下所示:

home/new.tex
\documentclass{article}
\begin{document}
\begin{itemize}
\item The individual entries are indicated with a black dot, a so-called bullet.
\item The text in the entries may be of any length.
\end{itemize}
\end{document}

这个例子的输出结果如下:

配图

你也可以打开这个更大的 LoongTeX 项目,它展示了各种类型的LATEX列表。

有序列表

有序列表使用与无序列表相同的语法,但使用 enumerate 环境创建:

home/new.tex
\documentclass{article}
\begin{document}
\begin{enumerate}
\item This is the first entry in our list.
\item The list numbers increase with each entry we add.
\end{enumerate}
\end{document}

这个例子的输出结果如下:

配图

与无序列表一样,每个条目前都必须有 \item 命令,在这里,它自动生成数字的有序列表标签值,从1开始。

要了解更多信息,您可以打开这个更大的 LoongTeX 项目,它演示了各种类型的 LaTeX 列表,或者访问我们关于 LaTeX 列表的专门帮助文章,它提供了更多的例子并展示了如何创建自定义列表。

为 LaTeX 添加数学运算

LaTeX 的主要优点之一是可以很容易地编写数学表达式。LaTeX 为数学排版提供了两种书写模式。

  • 内联数学模式:用于编写作为段落一部分的公式

  • 显示数学模式:用于编写不属于文本或段落的表达式,并在单独的行中排版。

内联数学模式

让我们看看内联数学模式的一个例子:

home/new.tex
\documentclass[12pt, letterpaper]{article}
\begin{document}
In physics, the mass-energy equivalence is stated
by the equation $E=mc^2$, discovered in 1905 by Albert Einstein.
\end{document}

这个例子的输出结果如下:

配图

要对内联数学进行排版,你可以使用这些分隔符对中的一个:\(...\), $ ... $\begin{math} ... \end{math},如下面的例子所示:

home/new.tex
\documentclass[12pt, letterpaper]{article}
\begin{document}
\begin{math}
E=mc^2
\end{math} is typeset in a paragraph using inline math mode---as is $E=mc^2$, and so too is \(E=mc^2\).
\end{document}

这个例子的输出结果如下:

配图

显示数学模式

在显示模式下排版的方程可以编号或不编号,如下图所示:

home/new.tex
\documentclass[12pt, letterpaper]{article}
\begin{document}
The mass-energy equivalence is described by the famous equation
\[ E=mc^2 \] discovered in 1905 by Albert Einstein.

In natural units ($c = 1$), the formula expresses the identity
\begin{equation}
E=m
\end{equation}
\end{document}

这个例子的输出结果如下:

配图

为了排版显示模式的数学,你可以使用这些分隔符对中的一个:\[ ... \], \begin{displaymath} ... \end{displaymath}\begin{equation} ... \end{equation}。历史上,排版显示模式的数学需要使用 $$ 字符定界符,如 $$ ...... 这里显示数学 ......$$ ,但这种方法不再被推荐:使用LaTeX的定界符 \[ ... \] 代替。

更完整的例子

下面的例子展示了一系列使用LaTeX排版的数学内容:

home/new.tex
\documentclass{article}
\begin{document}
Subscripts in math mode are written as $a_b$ and superscripts are written as $a^b$. These can be combined and nested to write expressions such as

\[ T^{i_1 i_2 \dots i_p}_{j_1 j_2 \dots j_q} = T(x^{i_1},\dots,x^{i_p},e_{j_1},\dots,e_{j_q}) \]

We write integrals using $\int$ and fractions using $\frac{a}{b}$. Limits are placed on integrals using superscripts and subscripts:

\[ \int_0^1 \frac{dx}{e^x} = \frac{e-1}{e} \]

Lower case Greek letters are written as $\omega$ $\delta$ etc. while upper case Greek letters are written as $\Omega$ $\Delta$.

Mathematical operators are prefixed with a backslash as $\sin(\beta)$, $\cos(\alpha)$, $\log(x)$ etc.
\end{document}

这个例子的输出结果如下:

配图

下一个例子使用了由 amsmath 包提供的 equation* 环境,因此我们需要在我们的文档序言中添加以下一行:

home/new.tex
\usepackage{amsmath}% For the equation* environment

关于使用amsmath的进一步信息,请看我们的帮助文章:

home/new.tex
\documentclass{article}
\usepackage{amsmath}% For the equation* environment
\begin{document}
\section{First example}

The well-known Pythagorean theorem \(x^2 + y^2 = z^2\) was proved to be invalid for other exponents, meaning the next equation has no integer solutions for \(n>2\):

\[ x^n + y^n = z^n \]

\section{Second example}

This is a simple math expression \(\sqrt{x^2+1}\) inside text.
And this is also the same:
\begin{math}
\sqrt{x^2+1}
\end{math}
but by using another command.

This is a simple math expression without numbering
\[\sqrt{x^2+1}\]
separated from text.

This is also the same:
\begin{displaymath}
\sqrt{x^2+1}
\end{displaymath}

\ldots and this:
\begin{equation*}
\sqrt{x^2+1}
\end{equation*}
\end{document}