前言

从MS Office 到 Markdown 再到 LaTex,每个不同的编辑软件都对不同的文本排列提供了一种解决方案,可以根据自己的实际需求来合理使用,我尝试记录最基本且简单的语法来说明LaTex的使用语法。

我使用的 LaTex 编辑器为 TexStudioTex的宏包直接安装的 Tex Live

本文内容是我个人学习自 《简单高效LaTex》以及百度和Bilibili相关网站的学习内容整理笔记

认识LaTex

前排提醒:LaTex对大小写敏感,即区分大小写

命令与环境

LaTex中的命令通常是由一个反斜杠加上命令名称,再加上花括号内的参数构成,例如:

1
\documentclass{ctexart}

如果一些选项是有其他可以缺省的参数,一般在花括号前使用[]来指定,例如:

1
\documentclass[UTF8](ctexart)

关于LaTex的正文部分,写在一个称为环境的部分,其格式类似于HTMLbody需要将内容写在其间,例如:

1
2
3
\begin{environment}
这里是你的内容
\end{environment}

保留字符

LaTex中,有一部分字符被用来作为命令字符,这些字符被称为LaTex的保留字符,例如下表

符号 意义
# 自定义命令时,用于标明参数序号
$ 用于编写数学公式标识符
% 注释符,可以通过在行末添加该注释符,来注释掉后面的空白符
^ 数学公式中的上标符
_ 数学公司中的下标符
& 表格中的跳列符
{} 在一些命令中填写参数的标识
\ 标识LaTex命令的标识符

上述字符,如果在文中需要使用上述保留字符的话(除\反斜杠)需要在前面加上\,即反斜杠来标识,这样就能够使用该字符,例如:

1
2
3
4
5
%表示要使用 # 符号
\#

%表示要使用 & 符号
\&

如果想要使用 \(反斜杠)的话,需要使用如下示例命令:

1
2
%表示使用 \ 符号
\texttt{\char92}

\texttt是使用 tt 字体环境,用于输出ASCII码对应的字符,\char92指定的是反斜杠字符,同样的可以使用:

1
\char`\\

来输出\反斜杠。

导言区

对于任何一份LaTex文档都应该含有如下结构:

1
2
3
4
\documentclass[options]{doc-class}
\begin{environment}
你的内容部分
\end{environment}

其中,\begin{environment}之前的内容被称为导言区。导言区用来对文档进行一些设定,可以通俗理解为调控文档模板的地方。关于上述optionsdoc-class的参数如下表:

doc-class参数 说明
article 科学期刊,演示文档,短报告,邀请函等
proc 基于article的会议论文集
report 多章节的长报告,博士论文,短篇书
book 书籍
slidesbeamer 幻灯片

一般来说,对于纯英文的文档,推荐直接使用article,如果是含有中文的文档,则使用ctexart,并且要在前面的缺省参数标明指定的中文编码,例如UTF-8命令示例:

1
\documentclass[UTF8]{ctexart}

文中所有命令都是在,ctexart格式下进行的,即上述命令示例

options参数 说明
默认10pt,可选则11pt12pt 字体大小
默认portrait(纵向),landscape(横向) 页面方向
默认letterpaper,可选a4paperb5paper 纸张大小
默认onecolumn(单栏),可选twocolumn(两栏) 分栏
articlereport默认单面,可选onesidetwoside 双面打印
默认任意页,可选openrightopenany,决定在奇数页或者任意页开启新页。
需要注意的是,article是没有chapter(章)命令的。
章节分页
默认居中,可选fleqn(左对齐)
默认编号居右,可选leqno(左对齐)
公式对齐
默认final,可选draft(使行溢出部分显示为黑块) 草稿选项

**在导言区最常见的是宏包的加载工作,命令形如\usepackage{package}**。关于什么是宏包,通俗来说就是提前封装好的一些功能格式,对于一些非原生LaTex的功能格式,可以通过借用第三方宏包的方式来使用,提高效率。

关于宏包文档的查看,可以通过打开Windows系统的CMD,然后输出texdoc+宏包名称 就可以查看对应宏包的说明文档,部分文档是汉化的,所以可以任意阅读

文件输出

一般情况下,推荐输出pdf格式,由LaTex直接生成的dvi格式并不推荐。

你或许会在tex文档的文件夹下看到如下格式类型的文件:

  • .sty:宏包文件
  • .cls:文档类文件
  • .aux:用于存储交叉引用信息的文件,因此,在更新交叉引用(公式编号,大纲级别)后,需要编译两次才能正常显示。
  • .log:日志,记录上次的编译信息。
  • .toc:目录文件。
  • .lof:图形目录
  • .lot:表格目录
  • .idx:如果文档中包含索引,该文件用于存储索引信息
  • .ind:索引记录文件
  • .ilg:索引日志文件
  • .bibBIBTEX参考文献数据文件
  • .bbl:生成的参考文献记录
  • .bstBIBTEX模板
  • .blgBIBTEX日志
  • .outhyperref宏包生成的pdf书签记录

例如,我使用的示例tex文档下的文件内容:

image-20220306204837996

有时LaTex编译出现异常时,可以通过删除除了tex文件外的文件再编译

还需要注意的时,有时候其他程序占用了以上文件也会出现错误。

标点与强调

引号

英文单引号并不是两个'(单引号)符号的组合,而是由左单引号ˋ和右单引号'来实现英文单引号,示例命令:

1
2
3
4
\documentclass[UTF8]{ctexart}
\begin{document}
这是两个单引号`'
\end{document}

【渲染结果】

image-20220306211513687

如果我们直接使用英文两个'单引号,命令示例:

1
2
3
4
\documentclass[UTF8]{ctexart}
\begin{document}
这是两个单引号''
\end{document}

【渲染结果】

image-20220306212022453

同样的,使用英文双引号,也需要分开左双引号,即两个ˋˋ,然后两个右双引号''即可。中文符号的引号直接使用中文即可

短横,省略号与破折号

英文的短横分为三种:

  • 连字符:输入一个短横-
  • 数字起止符:输入两个短横--
  • 破折号:输入三个短横---

【渲染效果】image-20220306213543194

中文的字符都可以正常使用。需要注意的是,英文的省略号需要使用\ldots命令

强调:粗体与斜体

LaTex中有个命令\emph{text},可以强调文本。对于一般的英文字体来说,这个命令的结果是斜体,而如果输入中文,则不会触发斜体,只是给中文应用了某个细字体,例如:

image-20220306214147619

对于英文来说,是采用斜体的方式进行强调,而不是中文惯用的粗体

下划线与删除线

LaTex原生提供的下划线命令是\underline,不过原生提供的下划线风评不是很好,可以使用ulem宏包提供的下划线,如下是两个下划线的比较示例:

image-20220306215057754

同样的ulem宏包还提供了一些其他的命令,例如:

1
2
3
4
5
6
7
\uline{下划线}
\uuline{双下划线}
\uwave{下波浪线}
\sout{删除线}
\xout{删除封禁线}
\dashuline{下虚划线}
\dotuline{下点线}

【渲染效果】

image-20220307083136655

如果希望LaTex开头不自动缩进的话,可以在开头输入\noindent,来表示首行不缩进

需要注意的是ulem宏包对\emph{text}进行了重定义,之前使用\emph命令会产生斜体,使用ulem宏包后,它重定义的效果是产生下划线而不是斜体,如果希望取消这个重定义,则在引入宏包的导言区输入如下命令参数

1
\usepackage[normalem]{ulem}

其他

关于数学公式,化学公式等,如果你使用过Markdown则会更熟悉,需要使用$这里是你的公式内容$来包裹你的公式来表示这里要渲染公式。例如:

1
2
3
4
5
% 数学公式
$\frac{x^2-2}{x^3}+3=y$

% 化学苯环
$\chemfig{*6(-=-=-=)}$

【渲染效果】

image-20220307084339540

关于输出Tex家族标志,可以使用原生命令,例如\LaTex\Tex

【渲染输出】

image-20220307085001047

格式控制

关于LaTex的长度单位:

  • **pt(point)**:磅
  • **pc(pica)**:1pc=12pt,四号字
  • **in(inch)**:英寸,1 in=72.27 pt
  • **bp(bigpoint)**:大点,1 bp = $\frac{1}{72}$ in
  • **cm(centimeter)**:厘米,1 cm = $\frac{1}{2.54}$ in
  • **mm(millimeter)**:毫米,1 mm = $\frac{1}{10}$ cm
  • **sp(scaled point)**:Tex的基本长度单位,1 sp=$\frac{1}{65536}$ pt
  • em:当前字号下,大写字母 M 的宽度
  • ex:当前字号下,小写字母 x 的高度

如下是两个常用的长度宏,关于其他的长度宏后面的表格,分栏部分会做详细说明。

1
2
3
4
% 页面上文字的总宽度,即页宽减去两侧边距
\textwidth
% 当前行允许的行宽
\linewidth

空格,换行与分段

关于空格有多种表示方法,如下表格:

说明 命令 效果
两个quad宽度 \qquad $a \qquad b$
一个quad宽度 \quad $a \quad b$
大空格 \+空格 $a\ b$
中等空格 \; $a;b$
小空格 \, $a,b$
紧贴(即缩进距离) \! $a!b$

换行的方法也非常简单,对于一般的长度来说,LaTex会自动换行,而如果希望手动换行,只需要在换行处输入两个回车即可完成分段。命令示例:

1
2
3
4
5
6
7
8
9
10
\documentclass[UTF8]{ctexart}

\begin{document}
\noindent %该命令表示开头无缩进
测试测试测试测试测试测试测试


测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试
\TeX
\end{document}

【渲染效果】

image-20220308211214804

如果希望在两个段之间插入一个空白行,即空白段,则需要先输入两个回车,然后使用命令\mbox{},最后再输入两个回车即可。命令示例:

1
2
3
4
5
6
7
8
9
10
11
12
\documentclass[UTF8]{ctexart}

\begin{document}
\noindent
测试测试测试测试测试测试测试

\mbox{}


测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试
\TeX
\end{document}

【渲染效果】

image-20220308211433101

同样的,也可以使用\per来生成一个带缩进的新段

关于强制换行的命令,即\\,这样会有一个缺点,即换行后的新段首行缩进会消失,这个命令一般不用在正文中换行。正常使用两个回车换行即可。

另外,宏包lettrine能够生成首字下沉的效果,命令示例:

1
2
3
4
5
6
7
8
9
\documentclass[UTF8]{ctexart}

\usepackage{lettrine}

\begin{document}
\noindent
\lettrine{测} 试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试
\TeX
\end{document}

【渲染效果】

image-20220308212304346

分页

使用\newpage开始新的一页

使用\clearpage命令清空浮动体队列,并开始新的一页。

关于什么事浮动体队列,详情看后面

使用\cleardoublepage情况浮动体队列,并在偶数页开始新的一页。

需要注意的是,上述命令是基于vfill的,所以如果需要连续新开两页,需要在中间加上一个空的箱子,命令示例:

1
\newpage \mbox{} \newpage

缩进,对齐与行距

关于首行缩进问题,在部分教程和书籍中表示LaTex对中文首行默认不缩进,需要借助宏包indentfirst来完成缩进,我测试过,在我的环境下,即 Win10,Tex Live 2022,Tex Studio 的情况下,已经支持中文默认缩进。关于取消首行缩进可以通过前面提到过的\noindent来实现

关于其他更复杂的部分详细看后面。

字体与颜色

这部分只说明文中的字体使用,关于数学公式字体的使用详细看后面。

字族,字系与字形

宋体,黑体,楷体属于字族;对应到外文就是罗马体,等宽体等。加粗,加斜属于字系和字形,五号,小四号属于字号。这三者并称为字体。

中西文“斜体”

首先需要明确一点:汉字没有加斜体。平常看到的斜体汉字是通过几何变换得到的结果,对于排版来说,这种斜体是非常粗糙的,真正的字形是需要精细设计的。

西文中一般设有加斜,但与“斜体”并不是一回事。加斜是指某种字族的 Italy 字系;而斜体,是指Slant字族。

原生字体命令

LaTex提供了基本的字体命令,如下表

字体 命令 说明
字族 \rmfamily 设置字体为Roman罗马字族
\sffamily 把字体设置为Sans Serif无衬线字族
\ttfamily 把字体设置为Typewriter等宽字族
字系 \bfseries 粗体BoldSeries字系属性
\mdseries 中粗体MiddleSeries字系属性
字形 \upshape 竖直Upright字形
\slshape 斜体Slant字形
\itshape 强调体Italic字形
\scshape 小号大写体SCAP字形

然后就是关于字号的命令,LaTex给出了一系列“相对字号命令”,如下表所示,当然你也可以使用宏包ctex的相关字号命令来控制字号,详细文档说明可以使用控制台命令texdoc ctex即可查看。

符号 命令 符号 命令
超超小 $\tiny$ 其次小 $\scriptsize$
小一点 $\small$ 默认大小 $\normalsize$
大一点 $\large$ 大两点 $\Large$
大三点 $\LARGR$ 巨大 $\huge$
巨巨大 $\Huge$

中文支持与CJK字体

中文方面,ctex宏包直接定义了新的中文文档类ctexartctexrepctexbook,以及ctexbeamer幻灯文档类。

关于中文支持方面的更多问题可以查看ctex文档说明

颜色

使用xcolor宏包来方便的调用颜色,命令示例:

1
\textcolor{red}{试测试测试测试}

【渲染效果】

image-20220309162354001

关于更多的颜色说明可以参考宏包xcolor说明文档

引用与注释

电子文档最大的优点在于可以使用超链接,跳转标签和目录。这些功能的实现都需要“引用”。

标签和引用

使用\label命令插入标签(在MS Word中称为“题注”),然后在其他地方使用\ref或者\pageref命令进行引用。命令示例:

1
2
3
4
% 创建标签
\label{123}
% 引用标签
\ref{123}

另外有个宏包amsmath提供了相关引用的命令,可以自行查看。

脚注,边注与尾注

脚注

脚注是一种简单的标注,命令示例:

1
这是一段测试文本\footnote{这是一段脚注}

【渲染效果】

image-20220309164253562

在某些情况下(如表格),脚注无法正常使用,可以通过在需要插入脚注的位置插入命令\footnotemark,然后再在环境外使用\footnotetext来指明脚注内容,命令示例:

1
2
3
4
5
6
7
8
9
\documentclass[UTF8]{ctexart}

\begin{document}
这是一段测试文本\footnotemark


\footnotetext{这是一段脚注内容}
\end{document}

【渲染结果】

image-20220309165118369

行文中切记过多使用脚注,会分散读者的注意力

边注

LaTex的边注命令\marginpar不会进行编号,命令示例:

1
2
3
4
5
6
7
8
9
% 命令格式
\marginpar{右侧注释内容}

% 命令示例
\documentclass[UTF8]{ctexart}

\begin{document}
这是一段测试文本\marginpar{这是右侧边注}
\end{document}

【渲染效果】

image-20220309165633332

尾注

尾注用于注释比较长,无法使用脚注的场合,需要使用宏包endnotes

援引环境

普通的援引环境有quotequotation两种。前者首行不缩进,后者首行缩进,且支持多段文字。命令示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
\documentclass[UTF8]{ctexart}

\begin{document}
\noindent 这是原文内容
\begin{quote}
这是一段援引内容
\end{quote}
这是后面的内容
\begin{quotation}
这也是一段援引内容
\end{quotation}
这也是后面的内容
\end{document}

【渲染效果】

image-20220309170310170

另外一个诗歌援引环境叫verse,是悬挂缩进的,一般很少用。

摘要

部分文档类环境支持摘要,如果使用摘要,这需要在\maketitle命令之后才可以使用abstract环境来完成摘要。命令示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
\documentclass[UTF8]{ctexart}

\title{这是文章标题}

\begin{document}
\maketitle

\begin{abstract}
这部分是摘要。这部分是摘要。这部分是摘要。这部分是摘要。这部分是摘要。这部分是摘要。这部分是摘要。这部分是摘要。
\end{abstract}

这是正文内容
\end{document}

【渲染效果】

image-20220309172432967

需要注意的是命令要放在document环境内

参考文献

参考文献注意使用的命令是\cite

如果想要将参考文献章节正常编号,并加入到目录中,可以使用tocbibind宏包。

正式排版:封面,大纲与目录

封面

封面的内容在导言区进行定义,一般写在所有宏包,自定义命令之后,命令示例:

1
2
3
\title{文章标题}
\author{作者名字}
\date{\today} %\today命令表示获取当前时间

【渲染效果】

image-20220309180826184

然后在document环境内第一行写上\maketitle,这样就形成了一个简易的封面。其中,\titleauthor是必须定义的\date省略会自动编译当天的日期为准。**如果不想显示日期,这使用\data{}**即可。

标题页的脚注用\thanks命令完成。

大纲与章节

LaTex中,文档分为若干大纲级别,分别包括如下内容:

  • \part:部分,这个大纲不会打段chapter的编号
  • \chapter:章,article的文档类不包含该大纲级别
  • \section:节。
  • \subsection:次节。
  • \subsubsection:次节。
  • \paragraph:段,很少使用
  • \subparagraph:段,很少使用

book文档类还提供了以下命令:

  • \frontmatter:前言。页码为小写罗马字母,其后章节不编号,但是生成页眉页脚和目录项
  • \mainmatter:正文。页码为阿拉伯数字,其后章节编号,页眉页脚和目录项正常生成
  • \backmatter:后记。页码格式不变,章节不编号,但生成页眉页脚和目录项

目录

目录在大纲的基础上生成,使用命令\tableofcontents既可插入目录。

在加入宏包hyperref,目录可以实现点击跳转。关于更多高级目录自定义需要借助titletoc宏包。

计数器与列表

计数器

LaTex中的自动编号都借助内部的计数器来完成,计数器包括如下几种:

  • 章节:part,chapter,section,subsection,subsubsection,paragraph,subparagraph
  • 编号列表:enumi,enumii,enumiii和enumiv
  • 公式和图表:equation,figure 与 table
  • 其他:page,footnote 与 mpfootnote

可以通过\the接上计数器的名称来调用计数器,例如:\thepart

列表

**LaTex支持的预定义列表有三种,分别是无须列表itemize,自动编号列表enumerate,以及描述列表description**。

无须列表命令示例:

1
2
3
4
5
6
7
8
9
\documentclass[UTF8]{ctexart}

\begin{document}
\begin{itemize}
\item 第一项
\item[-] 第二项
\item[*] 第三项
\end{itemize}
\end{document}

【渲染效果】

image-20220309185733983

有序列表命令示例:

1
2
3
4
5
6
7
8
9
\documentclass[UTF8]{ctexart}

\begin{document}
\begin{enumerate}
\item 第一项
\item 第二项
\item 第三项
\end{enumerate}
\end{document}

【渲染效果】

image-20220309185946504

描述列表(自定义列表)命令示例:

1
2
3
4
5
6
7
8
9
\documentclass[UTF8]{ctexart}

\begin{document}
\begin{description}
\item[LaTex] 第一项
\item[Tex] 第二项
\item[MarkDown] 第三项
\end{description}
\end{document}

【渲染效果】

image-20220309190154869

浮动体与图表

浮动体

浮动体将图或者表及其标题定义为整体,可以动态排版,以解决图,表在换页处造成的过长留白问题。

图片的浮动体是figure环境,表格的浮动体是table环境。

如果希望浮动体不要跨过section,可以使用如下命令:

1
\usepackage[section]{placeins}

图片

图片的插入需要使用宏包graphicx\includegraphics命令。命令示例:

1
2
3
4
5
6
7
8
9
10
\documentclass[UTF8]{ctexart}

\usepackage{graphicx}

\begin{document}
这是正文内容,我是长长的内容,我真的很长并且有很多内容,我企图扩展到第二行,甚至第三行。
\begin{center}
\includegraphics[width=0.8\linewidth]{1.jpg}
\end{center}
\end{document}

【渲染效果】

image-20220309192047201

其中,可选参数可以指定其宽高等,类似地,也可以使height(高),scale(图片缩放倍数),angle(图片逆时针旋转角度),origin(图片选中中心)等命令。

前三个命令不建议同时使用,旋转的图片基线会变化,所以一般使用totalheight代替height

至于{}里的参数的写法,LaTex支持pdf,eps,pngjpg格式,所以可以选择带有图片拓展名的表示方式,也可以不带拓展名,如果不带拓展名,则会按照上述格式顺序搜索图片。

默认图片需要在.tex文件放在同一个文件夹下

表格

懒得解释了,就看一个简单的命令示例:

1
2
3
4
5
6
7
8
9
10
\documentclass[UTF8]{ctexart}

\begin{document}
\begin{tabular}{|c|c|c|}
\hline 2&9&4\\
\hline 7&5&3\\
\hline 6&1&8\\
\hline
\end{tabular}
\end{document}

【渲染效果】

image-20220309194713871

页面设置

纸张,方向和边距

详情参考宏包geometry

页眉和页脚

详情参考宏包fancyhdr

抄录与代码环境

如果你希望直接输出相关内容而不经过Tex解释,可以使用\verb命令。命令示例:

1
2
3
4
5
6
7
8
\documentclass[UTF8]{ctexart}

\usepackage{color}

\begin{document}
\textcolor{red}{text}
\verb*|\textcolor{red}{text}|
\end{document}

【渲染效果】

image-20220309195249437

分栏

分栏需要使用multicol宏包,命令示例:

1
2
3
4
5
6
7
8
9
\documentclass[UTF8]{ctexart}

\usepackage{multicol}

\begin{document}
\begin{multicols}{2}
测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试
\end{multicols}
\end{document}

【渲染效果】

image-20220309195831024