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 等。
image
可选参数options为文档类指定选项,来全局地规定一些排版的参数
例如:

\documentclass[11pt,twoside,a4paper]{article}
宏包

通过一些扩展来增强或者补充Latex的功能
这些扩展称为宏包
调用宏包的方法类似调用文档类的方法:

\usepackage[⟨options⟩]{⟨package-name⟩}

且\usepackage可以一次性调用多个宏包,在package-name 中用逗号隔开

文件

Latex中可能见到的文件
image

文件组织方式

因为只有单个源文件时,可能会使得修改、校对变得非常困难,因此可以考虑分割成若干个文件,例如将每章内容单独写在一个文件中
在源代码中插入文件

\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分别表示按表格顶部、底部对齐,其他参数或省略不写(默认)表示居中对齐

列格式

image
例:
image
表格中每行的单元格数目不能多于列格式里l/c/r/p的总数(可以少于这个总数),否则出

图片

latex本身不支持插图功能,需要由graphicx宏包辅助支持
image
在调用了graphicx 宏包以后,就可以使用 \includegraphics 命令加载图片了:

\includegraphics[⟨options⟩]{⟨filename⟩
浮动体

令大块的内容可以脱离上下文,放置在合适的位置
latex预定义了两类浮动体环境figure和table,一般figure里放图片,table里放表格
⟨placement⟩ 参数提供了一些符号用来表示浮动体允许排版的位置,如hbp允许浮动体排版在当前位置、底部或者单独成页。table和figure 浮动体的默认设置为tbp。
image
图表等浮动体提供了 \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}

效果:
image

此时如果要为每个图片单独生成标题就需要借助前文提到的\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}

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

排版数学公式

行内公式和行间公式
行内公式由一对 $ 符号包裹
例如

The Pythagorean theorem is
 $a^2 + b^2 = c^2$.

单独成行的行间公式在LATEX中由eqution环境包裹

equation 环境为公式自动生成一个编号,这个编号可以用\label 和\ref 生成交叉引用,amsmath 的 \eqref 命令甚至为引用自动加上圆括号;还可以用\tag命令手动修改公式的编号,或者用\notag命令取消为公式编号(与之基本等效的命令是\nonumber)
例如:
image
image

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

数学模式

当用户使用$开启行内公式输入,或是使用[命令、equation环境时,LATEX就进入了
数学模式。数学模式相比于文本模式有以下特点:

  • 1.数学模式中输入的空格被忽略。数学符号的间距默认由符号的性质(关系符号、运算符等)决定。需要人为引入间距时,使用\quad和\qquad等命令。
  • 2.不允许有空行(分段)。行间公式中也无法用\命令手动换行。排版多行公式需要用到之前提到的各种环境。
  • 3.所有的字母被当作数学公式中的变量处理,字母间距与文本模式不一致,也无法生成单词之间的空格。如果想在数学公式中输入正体的文本,简单情况下可用4.7.1 小节中提供的\mathrm 命令。或者用 amsmath 提供的 \text 命令
数学符号

一般符号,如希腊字母、省略号

指数、上下标、导数等

分式和根式

关系符、算符

积分号、求和号等巨算符

数学重音和上下括号

箭头

括号和定界符

多行公式
长公式折行

习惯上优先在
等号之前折行,其次在加号、减号之前,再次在乘号、除号之前。其它位置应当避免折行。
amsmath 宏包的 multline 环境提供了书写折行长公式的方便环境。它允许用\折行,将
公式编号放在最后一行。多行公式的首行左对齐,末行右对齐,其余行居中。
image
类似地,multline* 环境排版不带编号的折行长公式

多行公式

align环境将公式用&隔为两部分并对齐。分隔符通常放在等号左边,例如:
image

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

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

如果只需要罗列数个公式,那么可以使用gather
image
同样不带编号的版本只需要加上星号即可

如果是多行公式但是公用一个编号,那么可以考虑使用aligned、gathered等环境,以和equation环境套用
image

数组和矩阵

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

cases环境
image

数学字母字体

允许一部分数学符号切换
image

用\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 自定义的计数器名称,定理序号由这个计数器管理。
例如:
image

amsthm宏包

证明环境和证毕符号

符号表

image

image

image

image

image

image

image

image

image

image

image

排版样式设定

字体和字号

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

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

image

image

表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 命令的改动立即生效
如:
image

字号的改变是即时生效的,而行距的改变直到文字分段时才生效。如果需要改变某一部分文
字的行距,那么不能简单地将文字包含在花括号内

段落的左缩进、右缩进和首行缩进

\setlength{\leftskip}{⟨length⟩}
\setlength{\rightskip}{⟨length⟩}
\setlength{\parindent}{⟨length⟩}

它们和设置行距的命令一样,在分段时生效。

控制段落缩进的命令为:

\indent
\noindent

水平间距

垂直间距

页面和分栏

页边距的控制
image
image
可以用 \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 只影响当页的页眉页脚样式
image

\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⟩]{…}

其中为 L(左)/ C(中)/ R(右)以及与 O(奇数页)/E(偶数页)字母的组合。
\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>}
这里为.bst样式文件的名称,不要带.bst扩展名


使用BIBTEX排版参考文献

首先准备一份BIBTEX数据库,假设数据库文件名为book.bib,和LATEX源代码处于同一个目录下

在源代码中添加必要的命令。假设源代码名为demo.tex
源代码大致格式如下:

  1. 首先需要使用命令\bibliographystyle 设定参考文献的格式
  2. 其次,在正文中引用参考文献。BIBTEX程序在生成参考文献列表的时候,通常只列出用了\cite 命令引用的那些。如果需要列出未被引用的文献,则需要\nocite{⟨citation⟩}命令;而\nocite{*} 则让所有未被引用的文献都列出
  3. 再次,在需要列出参考文献的位置,使用\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等
image
也可以直接使用名称代表颜色,前提是已经定义了颜色名称(没定义的话会报错),例如{\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宏包放在其它宏包之后调用
image
提供了直接书写超链接的命令,用于在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>指定线条首尾的箭头形式
例如:
image

自定义LATEX命令和功能

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

例如想要多次使用某个特定语句,可以将其定义为一个新的命令
image
类似地,如果引入参数,效果如下
image

如果需要修改命令定义,使用\renewcommand命令
\providecommand命令:在命令未定义时,它
相当于\newcommand;在命令已定义时,沿用已有的定义

类似地,可以使用\newenvironment来定义新的环境,语法如下:
\newenvironment{⟨name⟩}[⟨num⟩]{⟨before⟩}{⟨after⟩}
同样地,\newenvironment 命令有一个可选的参数 num。在 ⟨before⟩ 中的内容将在此环境包含
的文本之前处理,而在⟨after⟩ 中的内容将在遇到\end{⟨name⟩} 命令时处理。
例如:
image

通过\newcommand 和 \newenvironment 定义的命令或环境格式比较固定。如果需要定义带
有多个可选参数、或者带星号的命令或环境,可以使用xparse宏包
image
不同输入值在解析后的结果如表所示
image

编写自己的宏包和文档类

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

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

定义计数器

posted @ 2025-06-18 00:33  rdcamelot  阅读(81)  评论(0)    收藏  举报