暑假第三天——Latex学习整理
本文章提纲
- TeXworks的基本使用方法
- 文章组织以及
优雅的中英文混排 - 数学公式排版
TeXworks基本使用方法
为什么用TeXworks
- TeXworks 是 TeX Live 自带的编辑器,而 TeX Live 是 TeX User Group 出品的跨平台发行版,各个操作系统都可以使用;
- 几乎所有 TeX 发行版都带有 TeXworks;
- TeXworks 十分简洁,除了最基本的功能之外,没有其他复杂的东西,能使你将注意力集中在 TeX 的学习上。、
启动
启动 TeXworks 很简单,你可以在 Windows 启动对话框中输入 texworks 按回车。具体步骤是:
- 按下键盘上的 Windows 徽标键,同时按下 R 键 ——
<Win> + R; - 键入
texworks; - 回车。
当然,这样也是有可能打不开的。
那你能需要从开始菜单找到 TeXworks 启动,或者进入 TeX 系统的安装目录找到 TeXworks。
界面
启动之后,TeXworks 的界面,会默认占据屏幕的左半边,右半边留空(待会会考)。(以TexLive2020配置的TexWorks为例):

空白的部分,就是文本的编辑框。
红1——换行模式; 红2——编码模式; 红三——光标所在位置
蓝色——新建、打开、保存、撤消、恢复、剪切、复制、黏贴、查找、替换 从左到右
黄色——编译按钮(右边为排版工具)
其余则是菜单栏
注意:字符(包括英文字符和中文字符)在计算机中,经过编码以二进制的形式存储在计算机中。如果编辑器编码和计算机内部编码不一致,则会导致所谓「乱码」。TeXworks 默认使用 UTF-8 编码,此处示例均不需要更改,对于一些其他的文档可能需要按照要求更改编码。(具体请STFW)
排版工具
TeXworks 预设若干排版工具(pdfTeX, pdfLaTeX, XeTeX, XeLaTeX 等等),但本文使用XeLaTeX。
具体区别(请STFW):XeLatex在字体支持上似乎更好,但是在转换pdf时似乎借助了第三方工具,导致pdf没有用pdfLaTeX好。
文章组织以及优雅的中英文混排
Hello, world!
\documentclass{article}
% 这里是导言区
\begin{document}
Hello, world!
\end{document}
在编辑框中,输入以上内容,并且保存在一个恰当的位置,之后选择XeLaTeX,按下我们标出的绿色按钮,这时你是否仍记得我们之前所说的Texworks打开只会占据你一半的屏幕?是的,剩下的一半屏幕是用来展示编译后的pdf的(毕竟所见即所得)
当然,必须注意,尽管作为中国人,很希望文件名里出现我们熟悉的汉字,但是建议不要,否则报错可能很频繁(确信)
观察左右屏幕,你会发现你输入了五行文字,在最终输出的 pdf 档中只显示了 1 行。事实上,TeX 处理的文档内容,并不会全部输出。
此处的第一行 \documentclass{article} 中包含了一个控制序列(或称命令/标记)。所谓控制序列,是以反斜杠 \ 开头,以第一个空格或非字母的字符结束的一串字母。它们不被输出,但是它们会影响输出文档的效果。部分控制序列还有被方括号 [] 包括的可选参数
这里的控制序列是 documentclass,它后面紧跟着的 {article} 代表这个控制序列有一个必要的参数,该参数的值为 article。这个控制序列的作用,是调用名为 article 的文档类。(所谓文档类,即是 TeX 系统预设的(或是用户自定的)一些格式的集合。不同的文档类在输出效果上会有差别。)
第二行以 % 开头。TeX 以百分号 % 作为注释标记。具体来说,TeX 会忽略从 % 开始到当前行末尾的所有内容。这些内容不会被输出,也不影响最终排版效果,只供人阅读。若要输出 % 字符本身,则需要在 % 之前加上反斜杠 \ 进行转义。例如:

第三行出现了控制序列 begin。这个控制序列总是与 end 成对出现。这两个控制序列以及他们中间的内容被称为「环境」;它们之后的第一个必要参数总是一致的,被称为环境名。
只有在 document 环境中的内容,才会被正常输出到文档中去或是作为控制序列对文档产生影响。也就是说,在 \end{document} 之后插入任何内容都是无效的。
从 \documentclass{article} 开始到 \begin{document} 之前的部分被称为导言区。你可以将导言区理解为是对整篇文档格式进行设置的区域——在导言区出现的控制序列,往往会影响整篇文档的格式。(比如:页面大小、页眉页脚样式、章节标题样式等等)
实现中英文混排
关于 LaTeX 的中文支持,首先要说的是:在现在,一切教你使用
CJK宏包的模板、人、网页、书,都是糟糕的、有害的、恼人的、邪恶的和应该摒弃的。(引用自我学习的教程)
以我观点,初学者若直接使用CJK,可能会沉溺进去,而忽略更重要的东西
成功编译输出第一个文档之后,中国 TeX 用户面临的第二个普遍问题大概就是「实现中英文混排」了。
众所周知,在 TeX 开发当初并没有考虑到亚洲文字的问题。因此早期的 TeX 系统并不能直接支持中文,必须要用其他工具先处理一下(或者是一些宏包之类的)。但是现在,XeTeX 原生支持 Unicode,并且可以方便地调用系统字体。可以说解决了困扰中国 TeX 使用者多年的大问题。至此,我们只需要使用几个简单的宏包,就能完成中文支持了。
所谓宏包,就是一系列控制序列的合集。这些控制序列太常用,以至于人们会觉得每次将他们写在导言区太过繁琐,于是将他们打包放在同一个文件中,成为所谓的宏包(台湾方面称之为「巨集套件」)。
\usepackage{}可以用来调用宏包。
中文支持,中文的版式处理和标点由CTeX宏集一次性解决了。
新版
CTeX宏集的默认能够自动检测用户的操作系统,并为之配置合适的字库。对于 Windows 用户、Mac OS X 用户和 Linux 用户,都无需做任何配置,就能使用CTeX宏集来排版中文。
在 TeXworks中输入以下内容,以 UTF-8 编码保存,使用 XeLaTeX 编译:
\documentclass[UTF8]{ctexart}
\begin{document}
你好,world!
\end{document}

结果如上。
当然,你也可以直接使用xeCJK来支持,但不建议。(如果好奇心太大,请STFW)
文章组织
作者、标题、日期
保存并用 XeLaTeX 编译如下文档,查看效果:
\documentclass[UTF8]{ctexart}
\title{你好,world!}
\author{KingSley}
\date{\today}
\begin{document}
\maketitle
你好,world!
\end{document}
导言区和之前的文档主要的区别只有一处:定义了标题、作者、日期。
控制序列 maketitle。这个控制序列能将在导言区中定义的标题、作者、日期按照预定的格式展现出来。
使用
titling宏包可以修改上述默认格式。参考TeXdoc
章节和段落
保存并用 XeLaTeX 编译如下文档,查看效果:
\documentclass[UTF8]{ctexart}
\title{你好,world!}
\author{KingSley}
\date{\today}
\begin{document}
\maketitle
\section{NJU}
NJU在南京.
\subsection{鼓楼一年}
NJU大一新生在鼓楼.
\subsubsection{再见,鼓楼}
\paragraph{Canteens in Gulou}
are the worst canteens among all universities.
\subparagraph{MacDonald}
is 神!
\subsection{Hello 仙林}
\paragraph{仙林校区} is located on the outskirts of 南京。
\end{document}

效果大致如上
注意,在文档类 article/ctexart 中,定义了五个控制序列来调整行文组织结构。他们分别是
- \section{·}
- \subsection{·}
- \subsubsection{·}
- \paragraph{·}
- \subparagraph{·}
目录
在上一节的文档中,找到 \maketitle,在它的下面插入控制序列 \tableofcontents,保存并用 XeLaTeX 编译两次
试试交换
\maketitle和\tableofcontents的顺序,看看会发生什么,想想为什么
数学公式排版
这部分的演示中,为了节省篇幅,将取消导言区中中文支持的部分。在实际使用中,你只需要将导言区中的相关部分加上,就可以同时使用中文和编写数学公式了。
为了使用 AMS-LaTeX 提供的数学功能,我们需要在导言区加载 amsmath 宏包:
\usepackage{amsmath}
数学公式模式
LaTeX 的数学模式有两种:行内模式 (inline) 和行间模式 (display)。前者在正文的行文中,插入数学公式;后者独立排列单独成行,并自动居中。
在行文中,使用 $ ... $ 可以插入行内公式,使用 \[ ... \] 可以插入行间公式,如果需要对行间公式进行编号,则可以使用 equation 环境:
\begin{equation}
...
\end{equation}
行内公式也可以使用 \(...\) 或者 \begin{math} ... \end{math} 来插入,但略显麻烦。
无编号的行间公式也可以使用 \begin{displaymath} ... \end{displaymath} 或者 \begin{equation*} ... \end{equation*} 来插入,但略显麻烦。(equation* 中的 * 表示环境不编号)
也有 plainTeX 风格的 $$ ... $$ 来插入不编号的行间公式。但是在 LaTeX 中这样做会改变行文的默认行间距,不推荐。请参考教程来源者的回答。
关于公式标点使用的规范。行内公式和行间公式对标点的要求是不同的:行内公式的标点,应该放在数学模式的限定符之外,而行间公式则应该放在数学模式限定符之内。
下为示例:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Einstein's $E=mc^2$.
\[ E=mc^2. \]
\begin{equation}
E=mc^2.
\end{equation}
\end{document}
在数学模式中,需要表示上标,可以使用 ^ 来实现(下标则是 _)。它默认只作用于之后的一个字符,如果想对连续的几个字符起作用,请将这些字符用花括号 {} 括起来,例如:
\[ z = r\cdot e^{2\pi i}. \]
运算符
小的运算符可以在数学模式下直接输入;另一些需要用控制序列生成。
Latex数学符号对应表
根式用 \sqrt{·} 来表示,分式用 \frac{·}{·} 来表示(第一个参数为分子,第二个为分母)
而且,在行间和行内公式中,输出效果有差异:
- 如果要强制行内模式的分式显示为行间模式的大小,可以使用
\dfrac, 反之可以使用\tfrac。 - 连加、连乘、极限、积分等大型运算符的上下标在行内公式中被压缩,以适应行高。我们可以用
\limits和\nolimits来强制显式地指定是否压缩这些上下标 - 多重积分可以使用
\iint,\iiint,\iiiint,\idotsint等命令输入。
定界符
各种括号用 (), [], \{\}, \langle\rangle 等命令表示;注意花括号通常用来输入命令和环境的参数,所以在数学公式中它们前面要加 \。因为 LaTeX 中 | 和 \| 的应用过于随意,amsmath 宏包推荐用 \lvert\rvert 和 \lVert\rVert 取而代之。
为了调整这些定界符的大小,amsmath 宏包推荐使用 \big, \Big, \bigg, \Bigg 等一系列命令放在上述括号前面调整大小。
如果提供的定界符放大命令不太够用,先考虑简化公式,若还不行,则参考这篇博文。
\[ \Biggl(\biggl(\Bigl(\bigl((x)\bigr)\Bigr)\biggr)\Biggr) \]
\[ \Biggl[\biggl[\Bigl[\bigl[[x]\bigr]\Bigr]\biggr]\Biggr] \]
\[ \Biggl \{\biggl \{\Bigl \{\bigl \{\{x\}\bigr \}\Bigr \}\biggr \}\Biggr\} \]
\[ \Biggl\langle\biggl\langle\Bigl\langle\bigl\langle\langle x
\rangle\bigr\rangle\Bigr\rangle\biggr\rangle\Biggr\rangle \]
\[ \Biggl\lvert\biggl\lvert\Bigl\lvert\bigl\lvert\lvert x
\rvert\bigr\rvert\Bigr\rvert\biggr\rvert\Biggr\rvert \]
\[ \Biggl\lVert\biggl\lVert\Bigl\lVert\bigl\lVert\lVert x
\rVert\bigr\rVert\Bigr\rVert\biggr\rVert\Biggr\rVert \]

矩阵
amsmath 的 pmatrix, bmatrix, Bmatrix, vmatrix, Vmatrix 等环境可以在矩阵两边加上各种分隔符。
使用 smallmatrix 环境,可以生成行内公式的小矩阵。
\[ \begin{pmatrix} a&b\\c&d \end{pmatrix} \quad
\begin{bmatrix} a&b\\c&d \end{bmatrix} \quad
\begin{Bmatrix} a&b\\c&d \end{Bmatrix} \quad
\begin{vmatrix} a&b\\c&d \end{vmatrix} \quad
\begin{Vmatrix} a&b\\c&d \end{Vmatrix} \]
Marry has a little matrix $ ( \begin{smallmatrix} a&b\\c&d \end{smallmatrix} ) $.

多行公式
长公式
不对齐
可以直接使用multline 环境
\begin{multline}
x = a+b+c+{} \\
d+e+f+g
\end{multline}

如果不需要编号,可以使用 multline* 环境代替
对齐
可以使用 aligned 次环境来实现。它必须包含在数学环境之内
\[\begin{aligned}
x ={}& a+b+c+{} \\
&d+e+f+g
\end{aligned}\]

公式组
无需对齐的公式组可以使用 gather 环境,需要对齐的公式组可以使用 align 环境。他们都带有编号,如果不需要编号可以使用带星号的版本。
\begin{gather}
a = b+c+d \\
x = y+z
\end{gather}
\begin{align}
a &= b+c+d \\
x &= y+z
\end{align}
\begin{gather*}
a = b+c+d \\
x = y+z
\end{gather*}
\begin{align*}
a &= b+c+d \\
x &= y+z
\end{align*}

请不要使用 eqnarray 环境。原因可以参考:
分段函数
分段函数可以用cases次环境来实现,它必须包含在数学环境之内。
\[ y= \begin{cases}
-x,\quad x\leq 0 \\
x,\quad x>0
\end{cases} \]

辅助工具
尽量避免,但对于初学者,可以适当使用
注意:不要形成依赖
以下是一些关于数学公式的辅助工具:
- https://mathpix.com/ 能够通过热键呼出截屏,而后将截屏中的公式转换成 LaTeX 数学公式的代码。
- http://detexify.kirelabs.org/classify.html 允许用户用鼠标在输入区绘制单个数学符号的样式,系统会根据样式返回对应的 LaTeX 代码(和所需的宏包)。这在查询不熟悉的数学符号时特别有用
特别致谢(转载但有部分修改):
- 原文作者: Liam Huang
- 原文链接: https://liam.page/2014/09/08/latex-introduction/
- 版权声明: 采用 BY-NC-SA 许可协议。转载请注明出处及原作出处!

浙公网安备 33010602011771号