【工具篇-LaTeX】LaTeX语法
文章目录
【工具篇-LaTeX】LaTeX语法1 快速入门1.1 简介1.2 入门示例1.2.1 导言和正文1.2.2 环境 2 基础知识2.1 命令2.2 文档类2.3 宏包2.4 文件组织2.4.1 载入文件2.4.2 插入文件 2.5 LaTeX工程中的文件 3 文字排版3.1 语言支持3.1.1 编码3.1.2 中文支持 3.2 注释3.3 字符3.3.1 空白符3.3.2 英文符号3.3.3 转义字符 3.4 文字强调3.5 分页换行 4 文档元素4.1 章节目录4.1.1 章节标题4.1.2 目录4.1.3 文档结构划分 4.2 标题页4.3 交叉引用4.4 脚注和边注4.5 环境4.5.1 列表4.5.2 对齐4.5.3 引用4.5.4 代码4.5.5 其他 4.6 表格4.6.1 列格式4.6.2 列宽4.6.3 横线4.6.4 合并单元格4.6.5 嵌套4.6.6 行距 4.7 图片4.8 盒子4.9 浮动体4.9.1 标题 5 公式排版5.1 数学符号5.1.1 一般符号5.1.2 上下标和导数5.1.3 分式和根式5.1.4 常规运算符5.1.5 关系运算符5.1.6 巨算符5.1.7 重音和上下括号5.1.8 箭头5.1.9 括号和定界符 5.2 多行公式5.2.1 长公式换行5.2.2 多行公式 5.3 数组和矩阵5.3.1 二维数组5.3.2 矩阵 5.4 公式中的间距5.5 字体5.5.1 字体5.5.2 尺寸5.5.3 加粗 5.6 定理 6 排版样式6.1 字体6.1.1 字体6.1.2 字号 6.2 段落6.2.1 长度单位6.2.2 行距6.2.3 段落格式6.2.4 水平间距6.2.5 垂直间距 6.3 页面6.3.1 页面参数6.3.2 内容垂直对齐6.3.3 分栏6.3.4 页眉页脚 7 特色工具7.1 参考文献:BIBTEX工具7.1.1 BiBTeX数据库7.1.2 BiBTeX样式 7.2 索引:makeindex工具7.3 颜色7.3.1 自定义颜色7.3.2 带颜色文本7.3.3 带颜色盒子 7.4 超链接7.5 PDF7.5.1 书签7.5.2 文档属性 8 自定义8.1 命令8.1.1 定义新命令8.1.2 重定义命令 8.2 环境8.2.1 定义新环境8.2.2 重定义环境 8.3 宏包和文档类8.3.1 编写文档类8.3.2 编写宏包 8.4 计数器8.4.1 定义计数器8.4.2 修改计数器8.4.3 修改输出格式 8.5 可定制命令和参数8.5.1 标题名称/前后缀等8.5.2 长度 参考资料1 快速入门
1.1 简介
TeX的源代码是扩展名为
.tex
的纯文本文件,可以使用任意文本编辑器打开、编辑器
LaTeX排版格式(对应引擎)有:LaTeX(TeX)
、pdfLaTeX(pdfTeX)
、XeLaTeX(XeTeX)
和LuaLaTeX(LuaTeX)
,其中只有XeLaTeX(XeTeX)
支持中文
1.2 入门示例
\documentclass{article}\usepackage[utf8]{ctex}\title{入门示例}\author{timemiser}\date{May }\begin{document}\maketitle\section{Introduction}\end{document}
下面对该示例进行说明:
文档类型
\documentclass{article}
设置文档类型为article
导入宏包
\usepackage[utf8]{ctex}
导入中文字体宏包ctex
其他
\title{入门示例}
、\author{timemiser}
、\date{May }
分别添加文章标题、作者和时间,需要添加后面的\maketitle
才能显示\section{Introduction}
用于添加正文中的节
1.2.1 导言和正文
导言:从\documentclass
开始到\begin{document}
之前的命令语句称为导言正文:从\begin{document}
开始到\end{document}
之间的命令语句称为正文1.2.2 环境
环境用以令效果在局部生效,或者生成特殊的文档元素
\begin{<env>}...\end{<env>}
参数 <env>:环境类型
2 基础知识
2.1 命令
LaTeX中命令以反斜线
\
开头,并忽略其后的所有连续空格
\<command>[<options>]{<params>}
说明
<command>:命令名
<options>:有三种格式:
[opt1][opt2]...
[opt1, opt2, ...]
[opt1=item1, opt2=item2, ...]
其中,第一种格式的选项顺序不可互换,后两种格式的选项顺序可以互换
<params>:顺序不可任意交换
2.2 文档类
\documentclass[<options>]{<className>}
参数
<options>:文档类的选项,可以全局地规定一些排版参数,如如字号、纸张大小、单双面、单双栏等<className>:文档类的名称
常用的文档类(对应的中文文档类)有以下几种:
article(ctexart):小篇幅的文章report(ctexrep):中篇幅的报告book(ctexbook):长篇幅的书籍
中文文类也可以通过导入ctex
(中文字体)宏包、ctexcap
(中文标题)宏包实现(宏包见下文)
2.3 宏包
\usepackage[<options>]{<pkgName>}
参数 <options>:宏包的选项<pkgName>:宏包的名称;可以同时调用多个宏包,使用逗号隔开
2.4 文件组织
2.4.1 载入文件
\includeonly{<filename1>, <filename1>, ...}
参数
<filenameN>:文件名(相对或绝对路径),可以不带扩展名(默认为.tex
)
说明:
该命令用于在导言区中只载入某些文件,如果文件不在列表内,正文中的插入文件命令不生效
2.4.2 插入文件
\include{<filename>} % 另起一页插入文件内容\input{<filename>} % 当前位置插入文件内容
参数 <filename>:文件名(相对或绝对路径),可以不带扩展名(默认为.tex
)
2.5 LaTeX工程中的文件
基本
.sty
:宏包文件。宏包的名称与文件名一致.cls
:文档类文件。文档类的名称与文件名一致.bib
:BIBTEX参考文献数据库文件.bst
:BIBTEX用到的参考文献格式模板
辅助
.log
:排版引擎生成的日志文件,供排查错误使用.aux
:LATEX生成的主辅助文件,记录交叉引用、目录、参考文献的引用等.toc
:LATEX生成的目录记录文件.lof
:LATEX生成的图片目录记录文件.lot
:LATEX生成的表格目录记录文件.bbl
:BIBTEX生成的参考文献记录文件.blg
:BIBTEX生成的日志文件.idx
:LATEX生成的供makeindex处理的索引记录文件.ind
:makeindex处理.idx
生成的用于排版的格式化索引文件.ilg
:makeindex生成的日志文件.out
:hyperref宏包生成的PDF书签记录文件
3 文字排版
3.1 语言支持
3.1.1 编码
latex和pdflatex下可以使用
inputenc
设置编码为UTF-8
\usepackage[utf8]{inputenc}
3.1.2 中文支持
方式一:使用xeCJK
宏包,命令为
\usepackage{xeCJK}
方式二:使用ctex
宏包,命令为
\usepackage{ctex}
方式三:使用中文文档类,命令为
\documentclass{ctexart}
3.2 注释
3.3 字符
3.3.1 空白符
3.3.2 英文符号
3.3.3 转义字符
3.4 文字强调
3.5 分页换行
4 文档元素
4.1 章节目录
4.1.1 章节标题
说明 默认带编号的层级: artical文档类默认为\section
、\subsection
和subsubsection
三级report/book文档类默认为\chapter
、\section
和subsection
三级 标准文档类没有提供为章节命令定制格式的功能,该功能可由titlesec
宏包实现 扩展 带可选参数的变体:\<command>[<short-title>]{<title>}
(<command>为章节命令)含义为标题中使用<title>参数,目录和页眉页脚中使用<short-title>参数带*
的变体:\<command>*{<title>}
(<command>为章节命令)含义为标题不带编号,也不生成目录项和页眉页脚4.1.2 目录
\tableofcontents
说明
正确生成目录项一般需要编译两次源代码该命令生成的目录默认不包含带*
的章节标题,该功能可使用tocbibind
等宏包修改设置
扩展
如果使用了带*
的章节标题,但是需要生成该章节的目录项,可以在标题命令后使用命令
\addcontentsline{toc}{<level>}{<title>}
4.1.3 文档结构划分
4.2 标题页
说明
默认成页
article文档类的标题默认不单独成页report和book默认单独成页
可以在\documentclass
命令调用文档类时指定titlepage
/notitlepage
选项修改是否单独成页
扩展
\title
和\author
命令内可以使用\thanks
命令生成标题也的脚注,多个人名之间使用\and
隔开
4.3 交叉引用
步骤
在能够被交叉引用的地方(章节、公式、图标、定理等位置)使用\label
命令
\label{<label-name>}
在其他地方使用\ref
或\pageref
命令,分别生成交叉引用的编号和页码
\ref{<label-name} % 生成交叉引用的编号\pageref{<label-name} % 生成交叉引用的页码
说明
正确生成交叉引用,一般需要多次编译源代码可以使用的位置有 章节标题命令之后行内公式的任意位置多行公式每一行的任意位置有序列表环境一个\item
之后和下一个\item
之前图表标题命令之后定理环境内部任意位置 使用不带编号的命令时不要使用\label
命令,否则会引用编号不正确
4.4 脚注和边注
扩展 当\footnote
失效时,可以通过一下两个步骤生成脚注: 使用\footnotemark
为脚注计数再合适的位置使用\footnotetext
生成脚注4.5 环境
Note:前文提到过通过<env>来确定环境类型
4.5.1 列表
说明
列表可以嵌套使用,最多嵌套四级列表默认的间距较宽,可通过enumitem
宏包定制列表间距
扩展
列表项
\item[<ch>] ...
<ch>:自定义符号,可以将有序列表的计数或无序列表的符号替换成自定义的符号
列表符号重定义
无序列表:列表符号由\labelitemi
和\labelitemiv
定义,可通过它们重新定义有序列表:列表符号由\labelenumi
和\labelenumiv
定义,可通过它们重新定义
4.5.2 对齐
扩展
对齐命令
对齐环境和命令的区别
对齐环境会在上下文产生一个额外间距;对齐命令不会在上下文产生额外间距,只改变对齐方式
4.5.3 引用
说明 和一般文字相比,引用环境一般有额外左右缩进4.5.4 代码
说明
verbatim
宏包提供了\verbatiminput
命令来直接从文件中生成代码环境;fancyvrb
宏包提供了可定制格式的Verbatim
环境;listings
宏包可生成关键字高亮的代码环境
扩展
代码命令
\verb<delim><code><delim>
<delim>:标明代码的分界位置,前后必须一致,除字母、空格或星号外可以任意选择(不与代码冲突)
区别
\verb
命令一般不能用作其他命令的参数
4.5.5 其他
4.6 表格
\begin{tabular}{⟨col-spec⟩}⟨item1⟩ & ⟨item2⟩ & … \\\hline⟨item1⟩ & ⟨item2⟩ & … \\\end{tabular}
参数 <col-spec>:列格式标记,详细介绍见下文<itemN>:单元格内容
其中,&
用来分隔单元格;\\
用来换行;\hline
:绘制行与行之间的横线
说明
直接使用tabular
环境会导致表格和周围文字的混排,解决方法为 使用table
浮动体环境(可使用\caption
命令添加标题)将tabular
环境放置在table
环境中
4.6.1 列格式
说明 表格中每行的单元格数目不能多于列格式里l / c / r / p的总数(可以少于),否则报错@格式可在单元格前后插入任意文本,同时消除单元格前后额外添加的间距。@格式可以适当使用充当竖线。特别的,@{}
可直接用来消除单元格前后的间距 扩展 简写格式:*{<n>}{<col-spec>}
表示<col-spec>指定的内容重复<n>次array
宏包 辅助格式>
和<
用于给列格式前后加上修饰命令p
格式的m
和b
格式,分别表示垂直方向上顶端对齐、居中和底端对齐4.6.2 列宽
tarbularx
宏包提供了X
格式,这种格式会自动计算列宽,并且多个X列格式平均分配列宽4.6.3 横线
扩展
三线表:booktabs
宏包提供
4.6.4 合并单元格
合并列
\multicolumn{<n>}{<col-spec>}{<content>}
参数
<n>:要合并的列数
<col-spec>:合并后的列格式,只允许出现一个l / c / r
或p
格式。如果合并前的单元格前后带有表格线|
,合并后的列格式也要带有表格线|
<content>:合并后的内容
合并行
\multirow{<n>}{<width>}{<content>}
参数
<n>:要合并的行数
<width>:合并后的宽度
<content>:合并后的内容
4.6.5 嵌套
在单元格中嵌套一个小表格可以拆分单元格 注意:需要使用\multicolumn
命令配合@{}
格式可以把单元格的额外边距去掉,使得嵌套的表格线能和外层的表格线正确相连扩展如果不需要为拆分的单元格画线,并且指在垂直方向上拆分时,可以使用makecell
宏包提供的\makecell
命令4.6.6 行距
方式一:修改参数\arraystretch
方式二:给换行命令\\
添加可选参数 适用在行间不加横线的表格下一行的第一个单元格中不能使用[]
(将[]
放在{}
内)4.7 图片
步骤
设置编译器
LaTeX
+dvipdfmx
:调用宏包时需要指定dvipdfmx
选项6pdfLaTeX/XeLaTeX
:无需设置
调用graphicx
宏包
插入图片
\includegraphics[<options>]{<filename>}
<options>:选项,常用的参数如下
<filename>:图片文件名(路径名)
扩展
\graphicspath
命令用于声明一个或多个图片文件存放的目录,使用这些目录的图片时可以直接写文件名
4.8 盒子
盒子时LaTeX排版的基本元素:每一行是一个盒子,里面的文字从左到右依次排列;每一页也是一个盒子,各行文字从上到下排列
4.9 浮动体
浮动体的内容可以脱离上下文,放置在合适的位置
\begin{<env>}[<placement>]...\end{<env>}
参数
<env>:表示浮动体的类型,可以是figure
或table
<placement>:使用一些符号来表示浮动体允许排版的位置,默认位置为[tbp]
说明
排版位置与参数顺序无关,LaTeX
总是以h-t-b-p
的优先级决定浮动提的位置限制浮动提的个数(每页不超过3个,其中顶部不超过2个,底部不超过1个)和浮动体占页面的比例(默认顶部不超过70%,底部不超过30%)\clearpage
命令会在另起一页前将所有推迟处理的浮动体排版成页,忽略htbp
等位置参数float
宏包提供的浮动提位置参数H
会取消浮动机制(将浮动体视为一般盒子),不能与htbp!
混用
扩展
双栏排版环境下,table*
和figure*
环境用来排版跨栏的浮动体,此时<placement>参数只能使用tp
两个参数
4.9.1 标题
扩展
交叉引用:\caption
后可以跟\label
命令标记交叉引用标题前缀:修改\figurename
和\tablename
的内容可以修改浮动体的标题前缀生成目录:\listoftables
和\listoffigures
课可以生成浮动体格子的目录
5 公式排版
说明 数学公式排版需要导入amsmath
(核心)、amsfonts
、amssymb
和amsthm
等宏包行间公式的对齐、编号位置等有文档类选项控制:fleqn
选项控制公式左对齐,leqno
控制编号放在公式左边数学模式 输入的空格被忽略。符号间的间距由符号的性质决定不允许有空行(分段),无法使用\\
命令手动换行所有字母当作数学公式中的变量处理,字母间距与文本模式不一致,也无法生成单词间的空格。如果需要输入整体文本,可以使用\mathrm
命令或amsmath
的\text
命令5.1 数学符号
5.1.1 一般符号
5.1.2 上下标和导数
说明 上下标只作用于其后的一个符号如果需要将多个符号作为上下标,需要将其放在花括号中5.1.3 分式和根式
参数 <molecular>:分子<denominator>:分母<base>:底数<n>:次数 扩展\dfrac
命令表示行内正常大小的分式,\tfrac
表示行内非正常大小的分式5.1.4 常规运算符
扩展
常用函数
\<func>
参数 <func>:函数名,包括三角函数、双曲三角函数、指数函数、对数函数、最值、上下界、极限、行列式等
自定义运算符
\DeclareMathOperator{\argh}{argh} % 带上下限的运算符\DeclareMathOperator*{\nut}{Nut} % 带上下限的运算符
5.1.5 关系运算符
5.1.6 巨算符
说明 巨算符在行内公式和行间公式中的大小和形状不同\limits
使得上下标位于上下方,\limits
使得上下标位于右上、右下方 扩展\substack
命令可以在下限位置书写多行表达式,\subarray
可以指定多行表达式的对齐方式5.1.7 重音和上下括号
5.1.8 箭头
5.1.9 括号和定界符
扩展\left
和\right
命令可以改变定界符的大小;两者必须成对使用,包含的公式不可以换行;如果要分开使用,另一个要写成\left.
和\right.
\big
、\Big
、\bigg
、\Bigg
等命令可以生成固定大小的定界符。更常用的形式为\bigl
、\Bigl
、\biggl
、\Biggl
和\bigr
、\Bigr
、\biggr
、\Biggr
等,且不要求成对出现,包含的公式可以换行5.2 多行公式
5.2.1 长公式换行
\begin{multiline}... \\...\end{multiline}
说明 公式中使用\\
命令换行公式的编号放在最后一行公式的首行左对齐、末行右对齐,其余居中 扩展multiline*
环境排版不带编号的换行长公式换行原则 优先在等号之前换行其次在加减号之前换行再次在乘除号之前换行其他位置避免换行
5.2.2 多行公式
\begin{align}...\end{align}
说明 公式使用&
分隔为两部分并对齐,分隔符通常放在等号左边该环境中每个公式都会编号(可以使用\notag
取消某行的编号)为了让加号对齐,需要把分隔符放在等号右边,此时需要在等号后添加一对括号{}
以产生正常的间距一行有多组公式时,公式间用&
分隔 扩展 如果公式不需要等号对齐,只需罗列,可以使用gather
环境
5.3 数组和矩阵
5.3.1 二维数组
\begin{array}...\end{array}
说明 类似于tabular
环境,需要定义列格式使用\\
命令换行 扩展 也可以使用cases
环境实现
5.3.2 矩阵
5.4 公式中的间距
5.5 字体
5.5.1 字体
参数 <content>:设置字体的内容5.5.2 尺寸
5.5.3 加粗
5.6 定理
\newtheorem{<theorem-env>}{<title>}[<section-level>]\newtheorem{<theorem-env>}[<counter>]{<title>}
参数
<theorem-env>:定理环境名称<title>:定理环境标题<section-level>:章节级别,定理序号为章节的下一级序号<counter>:自定义的计数器名称
说明
默认的定理环境格式为粗体标签、斜体正文、定理名用小括号包裹
扩展
使用amsthm
宏包自定义定理格式
\theoremstyle{<style>}
参数
<style>:定理格式,预定义的有三种
扩展
\newtheoremstyle
命令可以自定义定理格式
使用amsthm
宏包的proof
环境排版定理的证明过程
\begin{proof}...\end{proof}
说明 环境末尾会自动添加证毕符号如果行末是一个不带编号的公式,符号会另起一行,可使用\qedhere
命令将符号放在公式末尾证毕符号使用\qedsymbol
命令定义,可以使用\renewcommand
命令(见下文)进行修改
6 排版样式
6.1 字体
6.1.1 字体
6.1.2 字号
扩展
设置任意大小的字号的命令
\fontsize{<size>}{<base line-skip>}
如果需要作用于局部,需要使用花括号分组
更改字体
% 西文字体\setmainfont[<font-features>]{<font-name>}\setsansfont[<font-features>]{<font-name>}\setmonofont[<font-features>]{<font-name>}% 中文字体(需要导入xeCJK宏包)\setCJKmainfont[<font-features>]{<font-name>}\setCJKsansfont[<font-features>]{<font-name>}\setCJKmonofont[<font-features>]{<font-name>}
<font-features>:手动配置对应的粗体和斜体的选项<font-name>:字体的文件名(带扩展名)或字体的英文名称
6.2 段落
6.2.1 长度单位
弹性长度:<base> plus <offset1> minus <offset2>
表示[<base> - <offset2>, <base> + <offset1>],其中<base>、<offset1>和<offset2>都需要带单位
长度的数值可以用长度变量本身或其倍数来表达
自定义长度变量
6.2.2 行距
\linespread{<factor>}
参数
<factor>:作用于行距。缺省的基础行距是1.2倍字号大小
说明
字号的改变是即时生效的,而行距的改变直到文字分段时才生效
扩展
如果要局部的改变某个段落的行距,需要使用命令\selectfont
使\linespread
命令立即生效
6.2.3 段落格式
\setlength{<format>}{<length>}
参数:
<format>:缩进格式,由以下命令定义<length>:缩进的距离
说明
和行距一样,在分段时生效默认情况下,章节标题命令后的第一段不缩进,但是可以调用indextfirst
宏包进行修改
扩展
局部不缩进命令
\noindent
局部缩进命令
\indent
多个\indent
命令可以累加缩进量
6.2.4 水平间距
\hspace{<length>}
参数
<length>:间距长度
说明
如果该命令位于一行的开头或者结尾,可能会因为换行而不显示\quad
和\qquad
命令分别相当于\hspace{1em}
和\hspace{2em}
扩展
使用\hspace*
命令生成的间距不会应为换行而不显示
弹性长度命令:基础长度为0pt,可以无限延伸直至占满可用空间(可用于水平长度和垂直长度)
\stretch{<n>}
<n>:权重参数。如果一行内出现多个\stretch{<n>}
,则这一行的所有可用空间按照权重进行分配
6.2.5 垂直间距
\vspace{<length>}
参数
<length>:间距长度
说明
如果该命令位于一页的顶端或者底端,可能会因为分页而不显示预定义的垂直间距:\bigskip
、\medskip
和\smallskip
该命令之引入垂直间距而不会换行,而\\
命令在引入垂直间距的同时还会换行
扩展
使用\vspace*
命令生成的间距不会因为分页而不显示
6.3 页面
6.3.1 页面参数
% 方式一\usepackage{geometry}\geometry{<geometry-settings>}% 方式二\usepackage[<geometry-settings>]{geometry}
参数
<geometry-settings>:页面参数,包括上下(垂直)左右(水平)间距等,多以键值对的形式给出
说明
geometry
宏包调用时需要注意:LaTeX
+dvipdfmx
命令下需要指定选项dvipdfm
pdfLaTeX
和XeLaTeX
命令下不需要
6.3.2 内容垂直对齐
\raggedbottom\flushbottom
6.3.3 分栏
% 一栏\oneclumn% 两栏\twocolumn[<one-column top material>]
参数
<one-column top material>:双栏模式下排版一部分单栏内容
说明
切换单/双栏排版时会另起一页双栏模式下\newpage
命令换栏,\clearpage
命令换页双栏排版下每一栏的宽度为\columnwidth
,即\textwidth
减去\columnsep
的差除以2两栏之间有一道竖线,宽度为\columnseprule
(默认为零)
扩展
利用multicol
宏包的环境multicols
分栏
\begin{multicols}{<n>}...\end{multicols}
<n>:要分成的栏数
说明
multicol
宏包能够在一页中切换单栏/多栏,也能跨页分栏且栏高分布平衡multicols
环境中浮动体失效,只能使用跨栏的浮动体或者float
宏包提供的H
参数固定浮动体的位置
6.3.4 页眉页脚
% 全局样式\pagestyle{<page-style>}% 当前页样式\thispagestyle{<page-style>}
参数
<page-style>:页面样式,可选的样式如下说明article
文档类:twoside 选项偶数页为页码和节标题,奇数页为小节标题和页码;oneside 选项页眉为节标题和页码book/report
文档类:twoside 选项偶数页为页码和章标题,奇数页为节标题和页码;oneside 选项页眉为章标题和页码
说明:
默认页眉的内容全部转为大写字母,可以通过以下命令修改book/report
文档类:\chaptermark
和\sectionmark
article
文档类:\sectionmark
和\subsectionmark
扩展
改变页码样式命令:每次修改后页码充值为1
\pagenumbering{<style>}
<style>:页码样式,默认为arabic(阿拉伯数字),可修改为roman(小写罗马数字)、Roman(大写罗马数字)等
修改页眉页脚内容命令
\markright{<right-mark>}\markboth{<left-mark>}{<right-mark>}
<left-mark>:左页(偶数页)的内容<right-mark>:右页(奇数页)的内容
fancyhdr
宏包修改页眉页脚
步骤
使用样式
\pagestyle{fancy}
定义页眉页脚<positon>:可以是L(左) / C(中) /R(右)
与O(奇数页) / E(偶数页)
的字母组合<content>:为显示的内容
扩展
使用\fancypagestyle
命令自定义页眉页脚样式
% 自定义页眉页脚样式mystyle\fancypagestyle{mystyle}{ %\fancyhf{}\fancyhead{...}\fancyfoot{...}}% 使用样式\pagestyle{mystyle}
7 特色工具
7.1 参考文献:BIBTEX工具
%基本的使用\cite{<citation>}\begin{thebibliography}{<widest-label>}\bibitem[<item-no>]{<citation>} ...\end{thebibliography}
参数 <citation>:引文的参考文献的标签<item-no>:自定义参考文献的编号。如果省略,则使用自然排序给定的序号<widest-label>:参考文献序号的最大宽度,如99意味着不超过两位数 扩展\cite
命令可带一个可选参数,为引用的编号后加上额外的内容
7.1.1 BiBTeX数据库
BiBTeX数据库以
.bib
作为扩展名,其内容是若干个文献条目
常用的类型条目有
7.1.2 BiBTeX样式
\bibliographystyle{<bst-name>}
参数
<bst-name>:.bst
样式文件名,不带扩展名
扩展
列出未被引用的文献
\nocite{<citation>}\nocite{*} % 列出所有未被引用的文献
参数 <citation>:引文的参考文献的标签
列出参考文献
\bibliography{<bib-name>}
参数 <bib-name>:BiBTeX数据库的文件名,不带扩展名.bst
natbib
宏包
使用人名-年份引用文献
\citep{<citation>}\citet{<citation>}
参数 <citation>:引文的参考文献的标签
数字引用(支持序号压缩)
\usepackage[numbers,sort&compress]{natbib}
7.2 索引:makeindex工具
导言区调用makeidx
宏包,并开启索引的收集
\usepackage{makeidx}\makeindex
在需要索引的地方使用\index
命令;需要输出索引的地方使用\printindex
命令
7.3 颜色
% 方式一\color{<color-name>}% 方式二\color[<color-mode>]{<code>}
参数 <color-name>:已定义的颜色名<color-mode>:颜色模式,color
宏包rgb,cmyk和gray等模式,xcolor
还支持hsb等<code>:颜色值 说明 需要导入颜色宏包color
或xcolor
7.3.1 自定义颜色
\definecolor{<color-name>}{<color-mode>}{<code>}
参数
<color-name>:颜色名
<color-mode>:颜色模式
<code>:颜色值
7.3.2 带颜色文本
% 方式一\textcolor{<color-name>}{<content>}% 方式二\textcolor[<color-mode>]{<code>}{<content>}
参数
<color-name>:颜色名
<content>:文本内容
<color-mode>:颜色模式
<code>:颜色值
7.3.3 带颜色盒子
% 方式一\colorbox{<color-name>}{<content>}\fcolorbox{<fcolor-name>}{<color-name>}{<content>}% 方式二\colorbox[<color-mode>]{<code>}{<content>}\fcolorbox[<color-mode>]{<fcode>}{<code>}{<content>}
参数
<color-name>:填充颜色名
<fcolor-name>:边框颜色名
<content>:文本内容
<color-mode>:颜色模式
<code>:填充颜色值
<fcode>:边框颜色值
7.4 超链接
配置参数
\hypersetup{<opt1>, <opt2>=<value>, ...}\usepackage[<opt1>, <opt2>=<value>, ...]{hyperref}
<optN>:配置参数,常用参数如下
添加超链接
\url{<url>} % 带颜色的超链接\nolinkurl{<url>} % 不带颜色的超链接\href{<url>}{<text>} % 自定义文字的超链接
参数
<url>:超链接地址<text>:超链接显示的内容
说明
默认的超链接文字外有一个带颜色的边框(打印PDF是不打印该边框),可以指定colorlinks
参数或修改pdfborder
参数去掉边框
扩展
标签超链接
\hyperref{<label>}{<text>}
参数 <label>:超链接的标签<text>:超链接显示的内容
7.5 PDF
7.5.1 书签
\pdfbookmark[<level>]{<bookmark>}{<anchor>}
参数 <level>:书签的层级,默认为0<bookmark>:书签名称<anchor>:书签项使用的锚点
7.5.2 文档属性
见上表
8 自定义
8.1 命令
8.1.1 定义新命令
\newcommand{<name>}[<num>]{<definition>}
参数 <name>:命令名,包括反斜线<num>:参数个数(最大为9)。如果缺省,默认为0<definition>:命令的定义 说明 不能定义与现有命令重名的命令 扩展\providecommand
命令:在命令不存在时,定义新命令;否则,仍沿用命令原来的定义
8.1.2 重定义命令
\renewcommand{<name>}[<num>]{<definition>}
参数 <name>:命令名,包括反斜线<num>:参数个数(最大为9)。如果缺省,默认为0<definition>:命令的定义,定义中使用#n
指定第n个参数,起到占位的作用
8.2 环境
8.2.1 定义新环境
\newenvironment{<name>}[<num>]{<before>}{<after>}
参数 <name>:环境名<num>:参数个数(最大为9)。如果缺省,默认为0<before>:内容在环境包含的文本之前处理<after>:内容遇到\end{<name>}
命令时处理
8.2.2 重定义环境
\renewenvironment{<name>}[<num>]{<before>}{<after>}
参数 <name>:环境名<num>:参数个数(最大为9)。如果缺省,默认为0<before>:内容在环境包含的文本之前处理<after>:内容遇到\end{<name>}
命令时处理
8.3 宏包和文档类
8.3.1 编写文档类
文档类以.cls
作为扩展名
开头使用命令
\ProvidesClass{<class-name>}
参数 <class-name>:文档类名,需要与文件名一致
调用文档类
\LoadClass[<options>]{<class-name>}
参数 <options>:文档类选项<class-name>:文档类名
8.3.2 编写宏包
宏包以.sty
作为扩展名
开头使用命令
\ProvidesPackage{<pkg-name>}
参数 <pkg-name>:宏包名,需要与文件名一致
在宏包中调用其他宏包
\RequirePackage[<options>]{<pkg-name>}
参数 <options>:宏包选项<pkg-name>:宏包名
8.4 计数器
说明 章节编号的深度secnumdepth
:如果章节的层级大于该值,那么章节的标题、在页眉页脚的标题都不编号;article
文档类中默认为3,book
和report
文档类中默认为2;可以通过\setcounter
命令设置该值目录深度tocdepth
:如果章节的层级大于该值,那么章节的标题不会写入目录项;article
文档类中默认为3,book
和report
文档类中默认为2;可以通过\setcounter
命令设置该值8.4.1 定义计数器
\newcounter{<counter-name>}[<parent-counter-name>]
参数 <counter-name>:计数器名<parent-counter-name>:父计数器名
8.4.2 修改计数器
\setcounter{<counter-name>}{<number>} % 将计数器<counter-name>的值设置为<number>\addtocounter{<counter-name>}{<number>} % 将计数器<counter-name>的值增加<number>\stepcounter{<counter-name>⟩} % 将计数器<counter-name>的值加1,并将下级计数器置0
参数 <counter-name>:计数器名<number>:数值
8.4.3 修改输出格式
\renewcommand\the<counter>{<format>}
参数
\the<counter>:计数器的输出格式定义,如\thechapter
、\thesection
等
<format>:计数器格式。常用的格式如下
说明
计数器的输出格式还可以利用其他字符,也可以与其他计数器输出格式的组合
8.5 可定制命令和参数
8.5.1 标题名称/前后缀等
说明 以上所有命令可以使用\renewcommand
命令来修改8.5.2 长度
说明 以上所有命令可以使用\setlength
命令来修改