暑假第三天——Latex学习整理

本文章提纲

  1. TeXworks的基本使用方法
  2. 文章组织以及优雅的中英文混排
  3. 数学公式排版

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为例):
image

空白的部分,就是文本的编辑框。
红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 会忽略从 % 开始到当前行末尾的所有内容。这些内容不会被输出,也不影响最终排版效果,只供人阅读。若要输出 % 字符本身,则需要在 % 之前加上反斜杠 \ 进行转义。例如:
image

第三行出现了控制序列 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}

image

结果如上。
当然,你也可以直接使用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}

image

效果大致如上
注意,在文档类 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{·}{·} 来表示(第一个参数为分子,第二个为分母)
而且,在行间和行内公式中,输出效果有差异:

  1. 如果要强制行内模式的分式显示为行间模式的大小,可以使用 \dfrac, 反之可以使用 \tfrac
  2. 连加、连乘、极限、积分等大型运算符的上下标在行内公式中被压缩,以适应行高。我们可以用 \limits 和 \nolimits 来强制显式地指定是否压缩这些上下标
  3. 多重积分可以使用 \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 \]

image

矩阵

amsmath 的 pmatrixbmatrixBmatrixvmatrixVmatrix 等环境可以在矩阵两边加上各种分隔符。
使用 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} ) $.

image

多行公式

长公式

不对齐

可以直接使用multline 环境

\begin{multline}
x = a+b+c+{} \\
d+e+f+g
\end{multline}

image

如果不需要编号,可以使用 multline* 环境代替

对齐

可以使用 aligned 次环境来实现。它必须包含在数学环境之内

\[\begin{aligned}
x ={}& a+b+c+{} \\
&d+e+f+g
\end{aligned}\]

image

公式组

无需对齐的公式组可以使用 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*}

image

请不要使用 eqnarray 环境。原因可以参考:

分段函数

分段函数可以用cases次环境来实现,它必须包含在数学环境之内。

\[ y= \begin{cases}
-x,\quad x\leq 0 \\
x,\quad x>0
\end{cases} \]

image

辅助工具

尽量避免,但对于初学者,可以适当使用
注意:不要形成依赖
以下是一些关于数学公式的辅助工具:

  • https://mathpix.com/ 能够通过热键呼出截屏,而后将截屏中的公式转换成 LaTeX 数学公式的代码。
  • http://detexify.kirelabs.org/classify.html 允许用户用鼠标在输入区绘制单个数学符号的样式,系统会根据样式返回对应的 LaTeX 代码(和所需的宏包)。这在查询不熟悉的数学符号时特别有用

特别致谢(转载但有部分修改):

posted @ 2023-08-06 19:52  cekl  阅读(348)  评论(0)    收藏  举报