LaTex基础(上)
前言
从MS Office 到 Markdown 再到 LaTex,每个不同的编辑软件都对不同的文本排列提供了一种解决方案,可以根据自己的实际需求来合理使用,我尝试记录最基本且简单的语法来说明LaTex的使用语法。
我使用的 LaTex 编辑器为 TexStudio,Tex的宏包直接安装的 Tex Live。
本文内容是我个人学习自 《简单高效LaTex》以及百度和Bilibili相关网站的学习内容整理笔记
认识LaTex
前排提醒:
LaTex对大小写敏感,即区分大小写
命令与环境
LaTex中的命令通常是由一个反斜杠加上命令名称,再加上花括号内的参数构成,例如:
1 | \documentclass{ctexart} |
如果一些选项是有其他可以缺省的参数,一般在花括号前使用[]来指定,例如:
1 | \documentclass[UTF8](ctexart) |
关于LaTex的正文部分,写在一个称为环境的部分,其格式类似于HTML的body,需要将内容写在其间,例如:
1 | \begin{environment} |
保留字符
在LaTex中,有一部分字符被用来作为命令字符,这些字符被称为LaTex的保留字符,例如下表
| 符号 | 意义 |
|---|---|
# |
自定义命令时,用于标明参数序号 |
$ |
用于编写数学公式标识符 |
% |
注释符,可以通过在行末添加该注释符,来注释掉后面的空白符 |
^ |
数学公式中的上标符 |
_ |
数学公司中的下标符 |
& |
表格中的跳列符 |
{} |
在一些命令中填写参数的标识 |
\ |
标识LaTex命令的标识符 |
上述字符,如果在文中需要使用上述保留字符的话(除\反斜杠)需要在前面加上\,即反斜杠来标识,这样就能够使用该字符,例如:
1 | %表示要使用 # 符号 |
如果想要使用 \(反斜杠)的话,需要使用如下示例命令:
1 | %表示使用 \ 符号 |
\texttt是使用 tt 字体环境,用于输出ASCII码对应的字符,\char92指定的是反斜杠字符,同样的可以使用:
1 | \char`\\ |
来输出\反斜杠。
导言区
对于任何一份LaTex文档都应该含有如下结构:
1 | \documentclass[options]{doc-class} |
其中,在\begin{environment}之前的内容被称为导言区。导言区用来对文档进行一些设定,可以通俗理解为调控文档模板的地方。关于上述options和doc-class的参数如下表:
| doc-class参数 | 说明 |
|---|---|
article |
科学期刊,演示文档,短报告,邀请函等 |
proc |
基于article的会议论文集 |
report |
多章节的长报告,博士论文,短篇书 |
book |
书籍 |
slides或beamer |
幻灯片 |
一般来说,对于纯英文的文档,推荐直接使用article,如果是含有中文的文档,则使用ctexart,并且要在前面的缺省参数标明指定的中文编码,例如UTF-8,命令示例:
1 | \documentclass[UTF8]{ctexart} |
文中所有命令都是在,
ctexart格式下进行的,即上述命令示例
| options参数 | 说明 |
|---|---|
默认10pt,可选则11pt和12pt |
字体大小 |
默认portrait(纵向),landscape(横向) |
页面方向 |
默认letterpaper,可选a4paper,b5paper等 |
纸张大小 |
默认onecolumn(单栏),可选twocolumn(两栏) |
分栏 |
article和report默认单面,可选oneside和twoside |
双面打印 |
默认任意页,可选openright和openany,决定在奇数页或者任意页开启新页。需要注意的是, 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:索引日志文件.bib:BIBTEX参考文献数据文件.bbl:生成的参考文献记录.bst:BIBTEX模板.blg:BIBTEX日志.out:hyperref宏包生成的pdf书签记录
例如,我使用的示例tex文档下的文件内容:
有时LaTex编译出现异常时,可以通过删除除了tex文件外的文件再编译。
还需要注意的时,有时候其他程序占用了以上文件也会出现错误。
标点与强调
引号
英文单引号并不是两个'(单引号)符号的组合,而是由左单引号ˋ和右单引号'来实现英文单引号,示例命令:
1 | \documentclass[UTF8]{ctexart} |
【渲染结果】
如果我们直接使用英文两个'单引号,命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染结果】
同样的,使用英文双引号,也需要分开左双引号,即两个ˋˋ,然后两个右双引号''即可。中文符号的引号直接使用中文即可。
短横,省略号与破折号
英文的短横分为三种:
- 连字符:输入一个短横
- - 数字起止符:输入两个短横
-- - 破折号:输入三个短横
---
【渲染效果】
中文的字符都可以正常使用。需要注意的是,英文的省略号需要使用\ldots命令。
强调:粗体与斜体
LaTex中有个命令\emph{text},可以强调文本。对于一般的英文字体来说,这个命令的结果是斜体,而如果输入中文,则不会触发斜体,只是给中文应用了某个细字体,例如:
对于英文来说,是采用斜体的方式进行强调,而不是中文惯用的粗体。
下划线与删除线
LaTex原生提供的下划线命令是\underline,不过原生提供的下划线风评不是很好,可以使用ulem宏包提供的下划线,如下是两个下划线的比较示例:
同样的ulem宏包还提供了一些其他的命令,例如:
1 | \uline{下划线} |
【渲染效果】
如果希望
LaTex开头不自动缩进的话,可以在开头输入\noindent,来表示首行不缩进
需要注意的是ulem宏包对\emph{text}进行了重定义,之前使用\emph命令会产生斜体,使用ulem宏包后,它重定义的效果是产生下划线而不是斜体,如果希望取消这个重定义,则在引入宏包的导言区输入如下命令参数:
1 | \usepackage[normalem]{ulem} |
其他
关于数学公式,化学公式等,如果你使用过Markdown则会更熟悉,需要使用$这里是你的公式内容$来包裹你的公式来表示这里要渲染公式。例如:
1 | % 数学公式 |
【渲染效果】
关于输出Tex家族标志,可以使用原生命令,例如\LaTex,\Tex等
【渲染输出】
格式控制
关于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 | % 页面上文字的总宽度,即页宽减去两侧边距 |
空格,换行与分段
关于空格有多种表示方法,如下表格:
| 说明 | 命令 | 效果 |
|---|---|---|
两个quad宽度 |
\qquad |
$a \qquad b$ |
一个quad宽度 |
\quad |
$a \quad b$ |
| 大空格 | \+空格 |
$a\ b$ |
| 中等空格 | \; |
$a;b$ |
| 小空格 | \, |
$a,b$ |
| 紧贴(即缩进距离) | \! |
$a!b$ |
换行的方法也非常简单,对于一般的长度来说,LaTex会自动换行,而如果希望手动换行,只需要在换行处输入两个回车即可完成分段。命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染效果】
如果希望在两个段之间插入一个空白行,即空白段,则需要先输入两个回车,然后使用命令\mbox{},最后再输入两个回车即可。命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染效果】
同样的,也可以使用\per来生成一个带缩进的新段。
关于强制换行的命令,即\\,这样会有一个缺点,即换行后的新段首行缩进会消失,这个命令一般不用在正文中换行。正常使用两个回车换行即可。
另外,宏包lettrine能够生成首字下沉的效果,命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染效果】
分页
使用\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宏包直接定义了新的中文文档类ctexart,ctexrep与ctexbook,以及ctexbeamer幻灯文档类。
关于中文支持方面的更多问题可以查看
ctex文档说明
颜色
使用xcolor宏包来方便的调用颜色,命令示例:
1 | \textcolor{red}{试测试测试测试} |
【渲染效果】
关于更多的颜色说明可以参考宏包
xcolor说明文档
引用与注释
电子文档最大的优点在于可以使用超链接,跳转标签和目录。这些功能的实现都需要“引用”。
标签和引用
使用\label命令插入标签(在MS Word中称为“题注”),然后在其他地方使用\ref或者\pageref命令进行引用。命令示例:
1 | % 创建标签 |
另外有个宏包amsmath提供了相关引用的命令,可以自行查看。
脚注,边注与尾注
脚注
脚注是一种简单的标注,命令示例:
1 | 这是一段测试文本\footnote{这是一段脚注} |
【渲染效果】
在某些情况下(如表格),脚注无法正常使用,可以通过在需要插入脚注的位置插入命令\footnotemark,然后再在环境外使用\footnotetext来指明脚注内容,命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染结果】
行文中切记过多使用脚注,会分散读者的注意力
边注
LaTex的边注命令\marginpar不会进行编号,命令示例:
1 | % 命令格式 |
【渲染效果】
尾注
尾注用于注释比较长,无法使用脚注的场合,需要使用宏包endnotes。
援引环境
普通的援引环境有quote和quotation两种。前者首行不缩进,后者首行缩进,且支持多段文字。命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染效果】
另外一个诗歌援引环境叫verse,是悬挂缩进的,一般很少用。
摘要
部分文档类环境支持摘要,如果使用摘要,这需要在\maketitle命令之后才可以使用abstract环境来完成摘要。命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染效果】
需要注意的是命令要放在
document环境内
参考文献
参考文献注意使用的命令是\cite。
如果想要将参考文献章节正常编号,并加入到目录中,可以使用tocbibind宏包。
正式排版:封面,大纲与目录
封面
封面的内容在导言区进行定义,一般写在所有宏包,自定义命令之后,命令示例:
1 | \title{文章标题} |
【渲染效果】
然后在document环境内第一行写上\maketitle,这样就形成了一个简易的封面。其中,\title和author是必须定义的。\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 | \documentclass[UTF8]{ctexart} |
【渲染效果】
有序列表命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染效果】
描述列表(自定义列表)命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染效果】
浮动体与图表
浮动体
浮动体将图或者表及其标题定义为整体,可以动态排版,以解决图,表在换页处造成的过长留白问题。
图片的浮动体是figure环境,表格的浮动体是table环境。
如果希望浮动体不要跨过section,可以使用如下命令:
1 | \usepackage[section]{placeins} |
图片
图片的插入需要使用宏包graphicx和\includegraphics命令。命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染效果】
其中,可选参数可以指定其宽高等,类似地,也可以使height(高),scale(图片缩放倍数),angle(图片逆时针旋转角度),origin(图片选中中心)等命令。
前三个命令不建议同时使用,旋转的图片基线会变化,所以一般使用
totalheight代替height
至于{}里的参数的写法,LaTex支持pdf,eps,png与jpg格式,所以可以选择带有图片拓展名的表示方式,也可以不带拓展名,如果不带拓展名,则会按照上述格式顺序搜索图片。
默认图片需要在
.tex文件放在同一个文件夹下
表格
懒得解释了,就看一个简单的命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染效果】
页面设置
纸张,方向和边距
详情参考宏包geometry。
页眉和页脚
详情参考宏包fancyhdr。
抄录与代码环境
如果你希望直接输出相关内容而不经过Tex解释,可以使用\verb命令。命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染效果】
分栏
分栏需要使用multicol宏包,命令示例:
1 | \documentclass[UTF8]{ctexart} |
【渲染效果】





