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} |
【渲染效果】