Latex
参考书籍:https://mirrors.ustc.edu.cn/CTAN/info/lshort/chinese/lshort-zh-cn.pdf
命令和环境
LaTex中命令以反斜线 \ 开头
Latex命令是对大小写敏感的
字母形式的Latex命令忽略以后其后的所有连续空格,如果要认为引入空格,需要在命令后面加一对花括号阻止其忽略空格 {}
或者使用\ 也就是斜线加空格
一些命令可以接收一些参数,Latex的参数可以分为可选参数和必选参数,可选参数用[]包裹,必选参数用{}包裹
Latex包括环境
\begin{⟨environment name⟩}[⟨optional arguments⟩]{⟨mandatory arguments⟩}
…
\end{⟨environment name⟩}
其中⟨environment name⟩ 为环境名,\begin 和 \end 中填写的环境名应当一致。类似命令,
{⟨mandatory arguments⟩} 和 [⟨optional arguments⟩] 为环境所需的必选和可选参数。LATEX 环境可能需要一个或多个必选/可选参数,也可能完全不需要参数。部分环境允许嵌套使用。
有些命令(如\bfseries)会对其后所有内容产生作用。若要限制其作用范围,则需要使用
分组。LATEX 使用一对花括号 { 和 } 作为分组,在分组中使用的命令被限制在分组内,不会影
响到分组外的内容
上面提及的环境实际上就隐含了一个分组,在环境中的命令被包裹在分组内
LATEX 源代码以一个 \documentclass 命令作为开头,它指定了文档使用的文档类。docu
ment 环境当中的内容是文档正文。
在 \documentclass 和 \begin{document} 之间的位置称为导言区。在导言区中常会使用
\usepackage 命令调用宏包,还会进行文档的全局设置
\documentclass{...} % ... 为某文档类
% 导言区
\begin{document}
% 正文内容
\end{document}
% 此后内容会被忽略
文档类
文档类规定了Latex源代码所要生成的文档的性质,Latex源代码的开头需要用\documentclass来指定文档类
\documentclass[⟨options⟩]{⟨class-name⟩}
其中中⟨class-name⟩ 为文档类的名称,如 LATEX 提供的 article、report、book,在其基础上派生的一些文档类,如支持中文排版的ctexart、ctexrep、ctexbook,或者有其它功能的一些文档类,如moderncv、beamer 等。

可选参数options为文档类指定选项,来全局地规定一些排版的参数
例如:
\documentclass[11pt,twoside,a4paper]{article}
宏包
通过一些扩展来增强或者补充Latex的功能
这些扩展称为宏包
调用宏包的方法类似调用文档类的方法:
\usepackage[⟨options⟩]{⟨package-name⟩}
且\usepackage可以一次性调用多个宏包,在package-name 中用逗号隔开
文件
Latex中可能见到的文件

文件组织方式
因为只有单个源文件时,可能会使得修改、校对变得非常困难,因此可以考虑分割成若干个文件,例如将每章内容单独写在一个文件中
在源代码中插入文件
\include{⟨filename⟩}
其中filename是文件名,如果和要编译的主文件不在同一个目录中,则要加上相对或者绝对路径
当使用\include在读入 filename 之前会另起一页,如果不需要这样,则使用\input,它纯粹是把文件里的内容插入
\input{⟨filename⟩}
latex还提供了一个 \includeonly 命令来组织文件,用于导言区,指定只载入某些文件。
导言区使用了\includeonly 后,正文中不在其列表范围的\include 命令不会起效
特别地,使用这些方法导入的文件名最好不要加空格和特殊字符,也尽量避免中文名
工具宏包 syntonly,加载这个宏包后,在导言区使用 \syntaxonly 命令,可令LATEX 编译后不生成DVI或者PDF文档,只排查错误,编译速度会快不少
\usepackage{syntonly}
\syntaxonly
如果想要生成文档,则用 % 注释掉 \syntaxonly命令即可
排版文字
UTF-8编码
UTF-8 是 Unicode的一套编码方案,一个字符由一个到四个字节编码,其中单字节字符的编码与ASCII编码兼容。
现行版本的LATEX 使用UTF-8 作为默认编码。将使用拉丁字母的文档保存为UTF-8编码后,可以用pdflatex 直接编译
\documentclass{article}
\begin{document}
Français Português Español Føroyskt
\end{document}
排版中文
ctex宏包和文档类进一步封装了 CJK、xeCJK、luatexja 等宏包,使得用户在排版中文时
不用再考虑排版引擎等细节。
\documentclass{ctexart}
\begin{document}
在\LaTeX{}中排版中文。
汉字和English单词混排,通常不需要在中英文之间添加额外的空格。
当然,为了代码的可读性,加上汉字和 English 之间的空格也无妨。
汉字换行时不会引入多余的空格。
\end{document}
latex中的字符
空格和分段
latex源代码中,空格键和Tab键输入的空白字符视为“空格”。连续的若干个空白字符视为一个空格。一行开头的空格忽略不计。
行末的换行符视为一个空格;但连续两个换行符,也就是空行,会将文字分段。多个空行被视为一个空行。也可以在行末使用\par命令分段
注释
LATEX 用 % 字符作为注释。在这个字符之后直到行末,所有的字符都被忽略,行末的换行符也不引入空格。
特殊字符
% 表示注释,$、^、 _等用于排版数学公式,&用于排版表格,等等。直接输入这些字符得不到对应的符号,还往往会出错
# $ % & { } _ ^ ~ \
如果想要输入以上符号,需要使用以下带反斜线的形式输入,类似编程语言里的“转义”符号
此外,\\ 被直接定义成了手动换行的命令,输入反斜线就需要用\textbackslash
引号
LATEX 中单引号 ‘ 和 ’ 分别用 ` 和 ' 输入;双引号“和”分别用 `` 和 '' 输入(" 可以输入后双引号,但没有直接输入前双引号的字符,习惯上用 '' 输入以和 `` 更好地对应)
中文的引号‘’和“”与西文的引号实际上是同一组符号,但由于中西文通常用不同的字体显示,它们的具体形状和宽度可能有所不同。在使用ctex宏包或文档类的情况下,中文引号可以通过输入法直接输入
连字号和破折号
LATEX 中有三种长度的“横线”可用:连字号(hyphen)、短破折号(en-dash)和长破折号(em-dash)。它们分别有不同的用途:连字号- 用来组成复合词;短破折号–用来连接数字表示范围;长破折号—用来连接单词,语义上类似中文的破折号。
daughter-in-law, X-rated\\
pages 13--67\\
yes---or no
手动断行和断页
断行命令
\\[⟨length⟩] \\*[⟨length⟩]
\newline
它们有两点区别:一是\可以带可选参⟨length⟩,用于在断行处向下增加垂直间距(见5.3.5 小节),而 \newline 不带可选参数;二是\也在表格、公式等地方用于换行,而\newline只用于文本段落中。带星号的\表示禁止在断行处分页。
断页命令
\newpage
\clearpage
区别在于:第一,在双栏排版模式中\newpage
起到另起一栏的作用,\clearpage则能够另起一页;第二,在涉及浮动体的排版上行为不同
文档元素
章节标题
可以通过不同命令划分为章、节、小节等
\chapter{⟨title⟩} \section{⟨title⟩} \subsection{⟨title⟩}
\subsubsection{⟨title⟩} \paragraph{⟨title⟩} \subparagraph{⟨title⟩}
这些命令也有变体,用于向目录中添加条目,并影响页眉页脚的内容
- 带可选参数的变体:\section[⟨short title⟩]{⟨title⟩}
标题使用⟨title⟩ 参数,在目录和页眉页脚中使用⟨short title⟩ 参数; - 带星号的变体:\section*{⟨title⟩}
标题不带编号,也不生成目录项和页眉页脚。
较低层次如\paragraph 和 \subparagraph 即使不用带星号的变体,生成的标题默认也不
带编号
- article 文档类带编号的层级为 \section、\subsection、\subsubsection 三级
- report 和 book 文档类带编号的层级为 \chapter、\section、\subsection 三级
目录
在latex中生成目录非常容易,只需要在合适的地方使用命令:
\tableofcontents
有时我们使用了\chapter* 或 \section* 这样不生成目录项的章节标题命令,而又想手动生成该章节的目录项,可以在标题命令后面使用:
\addcontentsline{toc}{⟨level⟩}{⟨title⟩}
其中⟨level⟩ 为章节层次 chapter 或 section 等,⟨title⟩ 为出现于目录项的章节标题
文档结构的划分
所有标准文档类都提供了一个\appendix命令将正文和附录分开,使用\appendix后,最高一级章节改为使用拉丁字母编号,从A开始。
book 文档类还提供了前言、正文、后记结构的划分命令:
\frontmatter 前言部分,页码使用小写罗马数字;其后的 \chapter 不编号。
\mainmatter 正文部分,页码使用阿拉伯数字,从 1 开始计数;其后的章节编号正常。
\backmatter 后记部分,页码格式不变,继续正常计数;其后的\chapter 不编号。
以上三个命令还可和\appendix 命令结合,生成有前言、正文、附录、后记四部分的文档。
标题页
给定标题和作者等信息
\title{⟨title⟩} \author{⟨author⟩} \date{⟨date⟩}
其中前两个命令是必须的(不用\title会报错;不用\author会警告),\date命令可选。LATEX
还提供了一个\today 命令自动生成当前日期,\date 默认使用 \today。在 \title、\author
等命令内可以使用\thanks 命令生成标题页的脚注,用\and隔开多个人名
可在\documentclass 命令调用文档类时指定titlepage 或 notitlepage 选项以修改默认的行为,即标题等是否要单独成页
文档结构示例:
\documentclass{book}
% 导言区,加载宏包和各项设置,包括参考文献、索引等
\usepackage{makeidx} % 调用 makeidx 宏包,用来处理索引
\makeindex % 开启索引的收集
\bibliographystyle{plain} % 指定参考文献样式为 plain
\begin{document}
\frontmatter % 前言部分
\maketitle % 标题页
\include{preface} % 前言章节 preface.tex
\tableofcontents
\mainmatter % 正文部分
\include{chapter1} % 第一章 chapter1.tex
\include{chapter2} % 第二章 chapter2.tex
...
\appendix % 附录
\include{appendixA} % 附录 A appendixA.tex
...
\backmatter % 后记部分
\include{epilogue} % 后记 epilogue.tex
\bibliography{books} % 利用 BibTeX 工具从数据库文件 books.bib 生成参考文献
\printindex % 利用 makeindex 工具生成索引
\end{document}
交叉引用
交叉引用是LATEX强大的自动排版功能的体现之一。在能够被交叉引用的地方,如章节、公式、图表、定理等位置使用\label命令:
\label{⟨label-name⟩}
之后可以在别处使用\ref或\pageref 命令,分别生成交叉引用的编号和页码
\ref{⟨label-name⟩} \pageref{⟨label-name⟩}
为了生成正确的交叉引用,一般也需要多次编译源代码
脚注和边注
使用\footnote 命令可以在页面底部生成一个脚注:
\footnote{⟨footnote⟩}
有些情况下(比如在表格环境、各种盒子内)使用\footnote 并不能正确生成脚注。我们可以分两步进行,先使用\footnotemark 为脚注计数,再在合适的位置用\footnotetext 生成脚注。比如:
\begin{tabular}{l}
\hline
“天地玄黄,宇宙洪荒。日月盈昃,辰宿列张。”\footnotemark \\
\hline
\end{tabular}
\footnotetext{表格里的名句出自《千字文》。}
如果只给定了⟨right-margin⟩,那么边注在奇偶数页文字相同;如果同时给定了⟨left-margin⟩,则偶数页使用⟨left-margin⟩ 的文字。
列表
有序列表环境:enumerate
无序列表环境:itemize
两者用法类似,都用\item标明每个列表项
enumerate 环境会自动对列表项编号
\begin{enumerate}
\item …
\end{enumerate}
其中 \item 可带一个可选参数,将有序列表的计数或者无序列表的符号替换成自定义的符号。列表可以嵌套使用,最多嵌套四层
例如:
\begin{enumerate}
\item An item.
\begin{enumerate}
\item A nested item.\label{itref}
\item[*] A starred item.
\end{enumerate}
\item Reference(\ref{itref}).
\end{enumerate}
关键字环境description的用法与以上两者类似,不同的是\item后的可选参数用来写关键字,以粗体显示,一般是必填的,如:
\begin{description}
\item[⟨itemtitle⟩]…
\end{description}
对齐环境
center、flushleft 和 flushright 环境分别用于生成居中、左对齐和右对齐的文本环境。
引用环境
LATEX 提供了两种引用的环境:quote 用于引用较短的文字,首行不缩进;quotation 用于引用若干段文字,首行缩进。引用环境较一般文字有额外的左右缩进。
如:
Francis Bacon says:
\begin{quote}
Knowledge is power.
\end{quote}
摘要环境
摘要环境abstract默认只在标准文档类中的article和report文档类可用,一般用于紧跟\maketitle命令之后介绍文档的摘要。如果文档类指定了titlepage选项,则单独成页;反之,
单栏排版时相当于一个居中的小标题加一个quotation环境,双栏排版时相当于\section*定
义的一节。
代码环境
代码环境verbatim,它以等宽字体排版代码,回车和空格也分别起到换行和空位的作用
例如:
\begin{verbatim}
#include<iostream>
int main()
{
std::cout<<"Hello,world!<<std::endl;
return0;
}
\end{verbatim}
表格
排版表格最基本的tabular 环境用法为:
\begin{tabular}[⟨align⟩]{⟨column-spec⟩}
⟨item1⟩ & ⟨item2⟩ & … \\
\hline
⟨item1⟩ & ⟨item2⟩ & … \\
\end{tabular}
&用来分隔单元格,\用来换行,\hline 用来在行与行之间绘制横线。
可选参数⟨align⟩控制垂直对齐:t和b分别表示按表格顶部、底部对齐,其他参数或省略不写(默认)表示居中对齐
列格式

例:

表格中每行的单元格数目不能多于列格式里l/c/r/p的总数(可以少于这个总数),否则出
错
图片
latex本身不支持插图功能,需要由graphicx宏包辅助支持

在调用了graphicx 宏包以后,就可以使用 \includegraphics 命令加载图片了:
\includegraphics[⟨options⟩]{⟨filename⟩
浮动体
令大块的内容可以脱离上下文,放置在合适的位置
latex预定义了两类浮动体环境figure和table,一般figure里放图片,table里放表格
⟨placement⟩ 参数提供了一些符号用来表示浮动体允许排版的位置,如hbp允许浮动体排版在当前位置、底部或者单独成页。table和figure 浮动体的默认设置为tbp。

图表等浮动体提供了 \caption 命令加标题,并且自动给浮动体编号
\caption 的用法非常类似于\section等命令,可以用带星号的命令\caption* 生成不带编号
的标题,也可以使用带可选参数的形式\caption[…]{…},使得在目录里使用短标题。\caption 命令之后还可以紧跟\label 命令标记交叉引用。
table和figure两种浮动体分别有各自的生成目录 的命令
\listoftables
\listoffigures
并排和子图表
浮动体中可能存在放置多张图的用法,可以并排放置,也可以通过分段或者换行命令\ \排版多行多列的图片
例如:
\begin{figure}[htbp]
\centering
\includegraphics[width=...]{...}
\qquad
\includegraphics[width=...]{...} \\[...pt]
\includegraphics[width=...]{...}
\caption{...}
\end{figure}
效果:

此时如果要为每个图片单独生成标题就需要借助前文提到的\parbox或者minipage环境,将标题限制在盒子内,例如
\begin{figure}[htbp]
\centering
\begin{minipage}{...}
\centering
\includegraphics[width=...]{...}
\caption{...}
\end{minipage}
\qquad
\begin{minipage}{...}
\centering
\includegraphics[width=...]{...}
\caption{...}
\end{minipage}
\end{figure}
效果:

如果要给每个图片定义小标题,则使用subcaption

排版数学公式
行内公式和行间公式
行内公式由一对 $ 符号包裹
例如
The Pythagorean theorem is
$a^2 + b^2 = c^2$.
单独成行的行间公式在LATEX中由eqution环境包裹
equation 环境为公式自动生成一个编号,这个编号可以用\label 和\ref 生成交叉引用,amsmath 的 \eqref 命令甚至为引用自动加上圆括号;还可以用\tag命令手动修改公式的编号,或者用\notag命令取消为公式编号(与之基本等效的命令是\nonumber)
例如:


如果需要直接使用不带编号的行间公式,则可以将公式用命令[和]进行包裹,与之等效的是displaymath环境或者equation*
例如:

数学模式
当用户使用$开启行内公式输入,或是使用[命令、equation环境时,LATEX就进入了
数学模式。数学模式相比于文本模式有以下特点:
- 1.数学模式中输入的空格被忽略。数学符号的间距默认由符号的性质(关系符号、运算符等)决定。需要人为引入间距时,使用\quad和\qquad等命令。
- 2.不允许有空行(分段)。行间公式中也无法用\命令手动换行。排版多行公式需要用到之前提到的各种环境。
- 3.所有的字母被当作数学公式中的变量处理,字母间距与文本模式不一致,也无法生成单词之间的空格。如果想在数学公式中输入正体的文本,简单情况下可用4.7.1 小节中提供的\mathrm 命令。或者用 amsmath 提供的 \text 命令
数学符号
一般符号,如希腊字母、省略号
指数、上下标、导数等
分式和根式
关系符、算符
积分号、求和号等巨算符
数学重音和上下括号
箭头
括号和定界符
多行公式
长公式折行
习惯上优先在
等号之前折行,其次在加号、减号之前,再次在乘号、除号之前。其它位置应当避免折行。
amsmath 宏包的 multline 环境提供了书写折行长公式的方便环境。它允许用\折行,将
公式编号放在最后一行。多行公式的首行左对齐,末行右对齐,其余行居中。

类似地,multline* 环境排版不带编号的折行长公式
多行公式
align环境将公式用&隔为两部分并对齐。分隔符通常放在等号左边,例如:

align环境会给每行公式都编号,但仍然可以用\notag去掉某行的编号

也能用于对齐多组公式,除了等号前的&,公式之间也使用&来分隔

如果只需要罗列数个公式,那么可以使用gather

同样不带编号的版本只需要加上星号即可
如果是多行公式但是公用一个编号,那么可以考虑使用aligned、gathered等环境,以和equation环境套用

数组和矩阵
用array环境来排版二维数组,用法和tabular环境类似,也需要定义列格式,并用\换行,并且数组可以作为一个公式块,在外套用\left,\right等定界符

cases环境

数学字母字体
允许一部分数学符号切换

用\bm可以实现粗斜体
$\bm{\mu}$ \(\bm{\mu}\)
定理环境
提供了 \newtheorem 提供定理环境的定义:
\newtheorem{<theorem environment>}{<title>}[<section-level>]
\newtheorem{</theorem environment>}[<counter>]{<title>}
⟨theorem environment⟩ 为定理环境的名称。原始的 LATEX 里没有现成的定理环境,不加定
义而直接使用很可能会出错。⟨title⟩ 是定理环境的标题(“定理”,“公理”等)。
定理的序号由两个可选参数之一决定,它们不能同时使用:
• ⟨section level⟩ 为章节级别,如 chapter、section 等,定理序号成为章节的下一级序号;
• ⟨counter⟩ 为用 \newcounter 自定义的计数器名称,定理序号由这个计数器管理。
例如:

amsthm宏包
证明环境和证毕符号
符号表











排版样式设定
字体和字号
LATEX根据文档的逻辑结构来选择默认的字体样式以及字号
例如:

常见的字体字号相关的命令表



表5.1中有两组修改字体的命令
其中诸如\bfseries 形式的命令将会影响之
后所有的字符,如果想要让它在局部生效,需要用花括号分组,也就是写成{\bfseries ⟨some
text⟩} 这样的形式;对应的 \textbf 形式带一个参数,只改变参数内部的字体,更为常用。
字号命令实际大小依赖于所使用的文档类及其选项,绝对大小的单位为pt
在使用字号命令的时候,通常也需要花括号来进行分组
也可以使用基础的命令 \fontsize 来设定任意大小的字号
\fontsize 用到两个参数,⟨size⟩ 为字号,⟨base line-skip⟩ 为基础行距。如果不是在导言区,\fontsize的设定需要\selectfont 命令才能立即生效,而表 5.2 的字号设定都是立即生效的。
\fontsize{<size>}{<base line-skip>}
文字强调和装饰
Latex定义了\underline命令用来为文字添加下划线,用法如 \underline{underlined}
\underline 命令生成下划线的样式不够灵活,不同的单词可能生成高低各异的下划线,并
且无法换行。ulem 宏包提供了更灵活的解决方案,它提供的 \uline 命令能够轻松生成自动换
行的下划线
段落格式和间距
对行距最常用的方式是在导言区使用\linespread命令,\linespread{⟨factor⟩}
其中⟨factor⟩ 作用于基础行距而不是字号。缺省的基础行距是1.2倍字号大小(参考\fontsize 命令),因此使用 \linespread{1.5} 意味着最终行距为 1.8 倍的字号大小
正如前面提到的
如果不是在导言区全局修改,而想要局部地改变某个段落的行距,需要用\selectfont 命令使\linespread 命令的改动立即生效
如:

字号的改变是即时生效的,而行距的改变直到文字分段时才生效。如果需要改变某一部分文
字的行距,那么不能简单地将文字包含在花括号内
段落的左缩进、右缩进和首行缩进
\setlength{\leftskip}{⟨length⟩}
\setlength{\rightskip}{⟨length⟩}
\setlength{\parindent}{⟨length⟩}
它们和设置行距的命令一样,在分段时生效。
控制段落缩进的命令为:
\indent
\noindent
水平间距
垂直间距
页面和分栏
页边距的控制


可以用 \setlength 命令修改这些长度变量,以达到调节页面尺寸和边距的作用;反之也可以利用这些长度变量来决定排版内容的尺寸,如在tabularx 环境或\includegraphics 命令的参数里,设置图片或表格的宽度为0.8\textwidth
利用geometry宏包可以较为便捷地设置页面参数
\usepackage{geometry}
\geometry{⟨geometry-settings⟩}
例如页面设定是 A4 纸张,上下边距1英寸,左右边距1.25英寸,于是我们可以通过如下两种等效的方式之一设定页边距
\geometry{a4paper,left=1.25in,right=1.25in,top=1in,bottom=1in}
% or like this:
\geometry{a4paper,hmargin=1.25in,vmargin=1in}
页面内容的垂直对齐,在垂直方向向顶部对齐/分散对齐:
\raggedbottom
\flushbottom
切换单栏/双栏排版的命令:
\onecolumn
\twocolumn[⟨one-column top material⟩
切换单/双栏排版时总是会另起一页(\clearpage)。在双栏模式下使用\newpage会换栏而不是换页;\clearpage 则能够换页。
一个比较好用的分栏解决方案是multicol,它提供了简单的multicols环境自动产生分栏,如以下环境将内容分为3栏
\begin{multicols}{3}
...
\end{multicols}
页眉页脚
\pagestyle{⟨page-style⟩}能用于修改页眉页脚的样式
而\thispagestyle 只影响当页的页眉页脚样式

\pagenumbering命令能改变页眉页脚中的页码样式
\pagenumbering{⟨style⟩}
⟨style⟩ 为页码样式,默认为 arabic(阿拉伯数字),还可修改为 roman(小写罗马数字)、
Roman(大写罗马数字)等。注意使用\pagenumbering 命令后会将页码重置为 1。book 文档类的\frontmatter 和 \mainmatter 内部就使用了 \pagenumbering 命令切换页码样式。
手动更改页眉页脚的内容
\markright{⟨right-mark⟩}
\markboth{⟨left-mark⟩}{⟨right-mark⟩}
fancyhdr宏包改善了页眉页脚的定义方式,允许将内容自由安置在页眉和页脚的左、中、右三个位置,还为页眉和页脚各加了一条横线
\fancyhf[⟨position⟩]{…}
\fancyhead[⟨position⟩]{…}
\fancyfoot[⟨position⟩]{…}
其中
\fancyhf 用于同时定义页眉和页脚,习惯上使用\fancyhf{} 来清空页眉页脚的设置
一般相关代码都放置在导言区
特色工具和功能
参考文献和BIBTEX工具
LATEX 提供的参考文献和引用方式比较原始,需要用户自行书写参考文献列表(包括格式),
因此较难直接使用
BIBTEX是较为流行的参考文献数据组织格式之一,BIBTEX数据库以.bib作为扩展名,内容是若干个文献条目,每个条目的格式为
@⟨type⟩{⟨citation⟩,
⟨key1⟩ = {⟨value1⟩},
⟨key2⟩ = {⟨value2⟩},
…
}
其中<type>为文献的类别,如 article 为学术论文,book 为书籍,incollection 为论文
集中的某一篇,等等。⟨citation⟩ 为 \cite 命令使用的文献标签。在 ⟨citation⟩ 之后为条目里的各个字段,以⟨key⟩ = {⟨value⟩} 的形式组织
例如article类别的参考文献数据条目写法如下:
@article{Alice13,
title = {Demostration of bibliography items},
author = {Alice Axford and Bob Birkin and Charlie Copper and Danny Dannford},
year = {2013},
month = {Mar},
journal = {Journal of \TeX perts},
volume = {36},
number = {7},
pages = {114-120}}
BIBTEX用样式(style)来管理参考文献的写法。BIBTEX提供了几个预定义的样式,如plain,unsrt, alpha 等。如果使用期刊模板的话,可能会提供自用的样式。样式文件以.bst 为扩展名。
使用样式文件的方法是在源代码内(一般在导言区)使用\bibliograpuhystyle命令:
bibliographystyle{<bst-name>}
这里
使用BIBTEX排版参考文献
首先准备一份BIBTEX数据库,假设数据库文件名为book.bib,和LATEX源代码处于同一个目录下
在源代码中添加必要的命令。假设源代码名为demo.tex
源代码大致格式如下:
- 首先需要使用命令\bibliographystyle 设定参考文献的格式
- 其次,在正文中引用参考文献。BIBTEX程序在生成参考文献列表的时候,通常只列出用了\cite 命令引用的那些。如果需要列出未被引用的文献,则需要\nocite{⟨citation⟩}命令;而\nocite{*} 则让所有未被引用的文献都列出
- 再次,在需要列出参考文献的位置,使用\bibliograpghy命令代替thebibliography环境:
\bibliography{⟨bib-name⟩},其中是BIBTEX数据库的文件名,不要带.bib扩展名
![image]()
natbib宏包
用于形成类似于人民——年份的引用方式,形如,(Axfordetal.,2013)。
除了\cite之外,其在正文中支持两种引用方式
\citep{⟨citation⟩}
\citet{⟨citation⟩}
这两种形式分别会形成形如(Axford et al., 2013) 和 Axford et al. (2013) 的人名——年份引用
natbib宏包同样支持数字应用,并且支持将引用的序号压缩,例如:
\usepackage[numbers,sort&compress]{natbib}
调用natbib宏包时指定以上选项时,连续引用多篇文献时,会形成形如(3-7)的引用而不是(3, 4, 5, 6, 7)
其他可使用的宏包还有如biblatex宏包
索引和makeindex工具
如果想要使用索引,可以使用如makeindex工具,此时添加索引项的命令为 \index{<index entry>}
颜色
使用color或者xcolor宏包后,可以用如下命令切换颜色:
\color[⟨color-mode⟩]{⟨code⟩}
\color{⟨color-name⟩}
颜色的表达方式有两种,其一是使用色彩模型和色彩代码,代码用0~1的数字代表成分的比例,color宏包支持rgb、smyk和gray模型,xcolor支持更多的模型如hsb等

也可以直接使用名称代表颜色,前提是已经定义了颜色名称(没定义的话会报错),例如{\color{red}}
原始的 \color命令类似于字体命令 \bfeserires,会使之后排版的内容全部变成指定的颜色,所以直接使用时通常要加花括号分组
输入带颜色的文本可以用类似\textbg的命令,即:
\colorbox[⟨color-mode⟩]{⟨code⟩}{⟨material⟩}
\colorbox{⟨color-name⟩}{⟨material⟩}
以下命令构造一个带背景色和有色边框的盒子,⟨fcode⟩ 或 ⟨fcolor-name⟩ 用于设置边框颜
色:
\fcolorbox[⟨color-mode⟩]{⟨fcode⟩}{⟨code⟩}{⟨material⟩}
\fcolorbox{⟨fcolor-name⟩}{⟨color-name⟩}{⟨material⟩}
超链接
实现该功能通常使用hyperref宏包
习惯上将hyperref宏包放在其它宏包之后调用

提供了直接书写超链接的命令,用于在PDF中生成url
\url{⟨url⟩}
\nolinkurl{⟨url⟩}
\url 和 \nolinkurl 都像抄录命令 \verb 一样输出一个 URL,区别是前者还为URL加上了超链接,后者没有。在\url等命令的参数⟨url⟩里,可直接输入如 %、& 这样的特殊符号。
我们也可以像HTML中的超链接一样,把一段文字作为超链接:href{<url>}{<text>}
例如:
\url{https://wikipedia.org} \\
\nolinkurl{https://wikipedia.org} \\
\href{https://wikipedia.org}{Wiki}
PDF书签
PDF文档属性
绘图功能
主要介绍TikZ
在导言区调用tikz宏包,就可以使用下列命令和环境来使用TikZ的绘图功能
\tikz[...] ⟨tikz code⟩;
\tikz[...] {⟨tikz code 1⟩; ⟨tikz code 2⟩; ...}
\begin{tikzpicture}[...]
⟨tikz code 1⟩;
⟨tikz code 2⟩;
...
\end{tikzpicture}
<arow> -> <arow>指定线条首尾的箭头形式
例如:

自定义LATEX命令和功能
可以使用如下命令自定义命令
\newcommand{\⟨name⟩}[⟨num⟩]{⟨definition⟩}
\newcommand 的基本用法需要两个必选参数,第一个参数⟨name⟩是要定义的命令名称(带反斜线),第二个参数⟨definition⟩ 是命令的具体定义。方括号里的参数 ⟨num⟩ 是可选的,用于指定新命令所需的参数数目(最多9个)。如果缺省可选参数,默认就是0,也就是新定义的命令不带任何参数。
例如想要多次使用某个特定语句,可以将其定义为一个新的命令

类似地,如果引入参数,效果如下

如果需要修改命令定义,使用\renewcommand命令
\providecommand命令:在命令未定义时,它
相当于\newcommand;在命令已定义时,沿用已有的定义
类似地,可以使用\newenvironment来定义新的环境,语法如下:
\newenvironment{⟨name⟩}[⟨num⟩]{⟨before⟩}{⟨after⟩}
同样地,\newenvironment 命令有一个可选的参数 num。在 ⟨before⟩ 中的内容将在此环境包含
的文本之前处理,而在⟨after⟩ 中的内容将在遇到\end{⟨name⟩} 命令时处理。
例如:

通过\newcommand 和 \newenvironment 定义的命令或环境格式比较固定。如果需要定义带
有多个可选参数、或者带星号的命令或环境,可以使用xparse宏包

不同输入值在解析后的结果如表所示

编写自己的宏包和文档类
可以建立一个新的LATEX宏包来存放所有自定义的命令和环境,然后在文档中使用 \usepackage命令来调用自定义的宏包
首先要将原本放在导言区中的内容拷贝到另一个文件中去,这个文件需要以.sty作扩展名,同时还需要加入一个宏包专用的命令:
\ProvidesPackage{<package name>}
例如:

LATEX也允许在自己编写的宏包中调用其他宏包,命令为\RequirePackage,用法和\usepackage一致
定义计数器


浙公网安备 33010602011771号