【工具篇-LaTeX】LaTeX语法

【工具篇-LaTeX】LaTeX语法

文章目录

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 2022}

\begin{document}

\maketitle

\section{Introduction}

\end{document}

下面对该示例进行说明:

文档类型

  • \documentclass{article}设置文档类型为article

导入宏包

  • \usepackage[utf8]{ctex}导入中文字体宏包ctex

其他

  • \title{入门示例}\author{timemiser}\date{May 2022}分别添加文章标题、作者和时间,需要添加后面的\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>:有三种格式:

      1. [opt1][opt2]...

      2. [opt1, opt2, ...]

      3. [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 注释

命令含义说明
%单行注释该字符到行末所有字符被忽略(回车也不引入空格)
\iffalse\fi多行注释分别标识注释的开始和结束

3.3 字符

3.3.1 空白符
命令字符说明
SpaceTab或行末Enter空格1. 连续的空格视为一个空格
2. 行开头的空格忽略不计
\quad空格1中文字符宽度的空格
\qquad空格2中文字符宽度的空格
\ +Space空格1 / 3字符宽度的空格
连续两个及以上Enter分段1. 即源码中空行
2. 多个空行视为一个空行
\par分段写在行末
3.3.2 英文符号
命令字符
`` ’`单引号
`` "`双引号
...省略号
\ldots\dots省略号
fffiflffiffl连字符
3.3.3 转义字符
命令字符
\+##
\+$$
\+%%
\+{{
\+}}
\+^^
\+~~
\+__
\textunderscore_
\textbackslash\

3.4 文字强调

命令含义说明
\underline{content}下划线content为添加下划线的文字内容
\uline下划线1. 需要导入宏包ulem
2. 可以为多个单词和换行添加下划线
\emph斜体嵌套使用\emph则取消斜体

3.5 分页换行

命令含义说明
\\[<offset>]换行1. 写在行末
2. 可以带参数<offset>,设置与下一行的垂直间距
3. 用于表格、公式等位置
\newline换行1. 不可以带参数
2. 用于文本段落中
\newpage分页1. 写在页末
2. 在双栏排版中另起一栏
\clearpage分页写在页末

4 文档元素

4.1 章节目录

4.1.1 章节标题
命令含义说明
\chapter{<title>}1. 只在bookreport文档类中有定义
2. <title>为章标题
\section{<title>}<title>为节标题
\subsection{<title>}一级子节<title>为一级子节标题
\subsubsection{<title>}二级子节<title>为二级子节标题
\paragraph{<title>}段落<title>为段落标题
\subparagraph{<title>}子段落<title>为子段落标题
\part{<title>}部分1. 用来将文档分为大块,但是不影响chaptersection的编号
2. <title>为子段落标题
  • 说明
    • 默认带编号的层级:
      • artical文档类默认为\section\subsectionsubsubsection三级
      • report/book文档类默认为\chapter\sectionsubsection三级
    • 标准文档类没有提供为章节命令定制格式的功能,该功能可由titlesec宏包实现
  • 扩展
    • 带可选参数的变体:\<command>[<short-title>]{<title>}(<command>为章节命令)含义为标题中使用<title>参数,目录和页眉页脚中使用<short-title>参数
    • *的变体:\<command>*{<title>}(<command>为章节命令)含义为标题不带编号,也不生成目录项和页眉页脚
4.1.2 目录
\tableofcontents
  • 说明

    • 正确生成目录项一般需要编译两次源代码
    • 该命令生成的目录默认不包含带*的章节标题,该功能可使用tocbibind等宏包修改设置
  • 扩展

    • 如果使用了带*的章节标题,但是需要生成该章节的目录项,可以在标题命令后使用命令

      \addcontentsline{toc}{<level>}{<title>}
      
4.1.3 文档结构划分
命令含义说明
\appendix附录附录部分使用拉丁字母编号
\frontmatter前言前言部分使用小写拉丁字母编号,其前的\chapter不编号
\mainmatter正文正文部分使用阿拉伯数字编号
\backmatter后记后记部分页码格式不变,继续正常计数,其后的\chapter不编号

4.2 标题页

命令含义说明
\title{<title>}标题(必须)没有标题会报错
\author{<author>}作者(必须)没有作者会警告
\date{<date>}时间\date默认使用当前时间(\today命令自动生成当前时间)
  • 说明

    • 默认成页

      • article文档类的标题默认不单独成页
      • report和book默认单独成页

      可以在\documentclass命令调用文档类时指定 titlepage/notitlepage选项修改是否单独成页

  • 扩展

    • \title\author命令内可以使用\thanks命令生成标题也的脚注,多个人名之间使用\and隔开

4.3 交叉引用

  • 步骤

    1. 在能够被交叉引用的地方(章节、公式、图标、定理等位置)使用\label命令

      \label{<label-name>}
      
    2. 在其他地方使用\ref\pageref命令,分别生成交叉引用的编号和页码

      \ref{<label-name}  % 生成交叉引用的编号
      \pageref{<label-name}  % 生成交叉引用的页码
      
  • 说明

    • 正确生成交叉引用,一般需要多次编译源代码
    • 可以使用的位置有
      • 章节标题命令之后
      • 行内公式的任意位置
      • 多行公式每一行的任意位置
      • 有序列表环境一个\item之后和下一个\item之前
      • 图表标题命令之后
      • 定理环境内部任意位置
    • 使用不带编号的命令时不要使用\label命令,否则会引用编号不正确

4.4 脚注和边注

命令含义说明
\footnote{<note>}脚注在某些情况(表格环境、盒子内)下,使用\footnote不能生成脚注,此时需要使用扩展方法(见扩展)
\marginpar[<left-note>]{<right-note>}边注如果只给定了<right-note>,则奇偶数页边注都使用<right-note>;如果同时给定了<left-note>,则偶数页边注使用<left-note>
  • 扩展
    • \footnote失效时,可以通过一下两个步骤生成脚注:
      1. 使用\footnotemark为脚注计数
      2. 再合适的位置使用\footnotetext生成脚注

4.5 环境

Note:前文提到过通过<env>来确定环境类型

4.5.1 列表
环境关键字含义说明
enumerate有序列表自动对列表项编号
itemize无序列表不对列表项编号
description自定义列表列表项\item后的可选参数必填,以粗体显示
  • 说明

    • 列表可以嵌套使用,最多嵌套四级
    • 列表默认的间距较宽,可通过enumitem宏包定制列表间距
  • 扩展

    • 列表项

      \item[<ch>] ...
      
      • <ch>:自定义符号,可以将有序列表的计数或无序列表的符号替换成自定义的符号
    • 列表符号重定义

      • 无序列表:列表符号由\labelitemi\labelitemiv定义,可通过它们重新定义
      • 有序列表:列表符号由\labelenumi\labelenumiv定义,可通过它们重新定义
4.5.2 对齐
环境关键字含义
flushleft左对齐
center居中
flushright右对齐
  • 扩展

    • 对齐命令

      命令含义
      \raggedleft左对齐
      \centering居中对齐
      \raggedright右对齐
    • 对齐环境和命令的区别

      • 对齐环境会在上下文产生一个额外间距;对齐命令不会在上下文产生额外间距,只改变对齐方式
4.5.3 引用
环境关键字含义说明
quote短引用首行不缩进
quotation长引用首行缩进
verse诗歌引用首行悬挂缩进
  • 说明
    • 和一般文字相比,引用环境一般有额外左右缩进
4.5.4 代码
环境关键字含义说明
verbatim代码空格和回车正常显示
verbatim*代码空格显示成
  • 说明

    • verbatim宏包提供了\verbatiminput命令来直接从文件中生成代码环境;fancyvrb宏包提供了可定制格式的Verbatim环境;listings宏包可生成关键字高亮的代码环境
  • 扩展

    • 代码命令

      \verb<delim><code><delim>
      
      • <delim>:标明代码的分界位置,前后必须一致,除字母、空格或星号外可以任意选择(不与代码冲突)
    • 区别

      • \verb命令一般不能用作其他命令的参数
4.5.5 其他
环境关键字含义说明
abstract摘要
algorithm算法需要调用algorithmalgorithmic宏包

4.6 表格

\begin{tabular}{⟨col-spec⟩}
⟨item1⟩ & ⟨item2⟩ & … \\
\hline
⟨item1⟩ & ⟨item2⟩ & … \\
\end{tabular}
  • 参数
    • <col-spec>:列格式标记,详细介绍见下文
    • <itemN>:单元格内容

其中,&用来分隔单元格;\\用来换行;\hline:绘制行与行之间的横线

  • 说明

    • 直接使用tabular环境会导致表格和周围文字的混排,解决方法为
      1. 使用table浮动体环境(可使用\caption命令添加标题)
      2. tabular环境放置在table环境中
4.6.1 列格式
列格式说明
l / c / r单元格内容左对齐/居中/右对齐,不自动换行
p{}单元格宽度固定为<width>,自动换行
|绘制单元格竖线
@{}自定义内容<string>
  • 说明
    • 表格中每行的单元格数目不能多于列格式里l / c / r / p的总数(可以少于),否则报错
    • @格式可在单元格前后插入任意文本,同时消除单元格前后额外添加的间距。@格式可以适当使用充当竖线。特别的,@{}可直接用来消除单元格前后的间距
  • 扩展
    • 简写格式:*{<n>}{<col-spec>}表示<col-spec>指定的内容重复<n>次
    • array宏包
      • 辅助格式><用于给列格式前后加上修饰命令
      • p格式的mb格式,分别表示垂直方向上顶端对齐、居中和底端对齐
4.6.2 列宽
  • tarbularx宏包提供了X格式,这种格式会自动计算列宽,并且多个X列格式平均分配列宽
4.6.3 横线
命令含义
\hline横线
\cline{<i>-<j>}跨越单元格<i>-<j>的横线
  • 扩展

    • 三线表:booktabs宏包提供

      命令含义
      \toprule顶部横线
      \midrule中部横线
      \bottomrule底部横线
      \cmidrule{<i>-<j>}跨越单元格<i>-<j>的横线
4.6.4 合并单元格

合并列

\multicolumn{<n>}{<col-spec>}{<content>}
  • 参数

    • <n>:要合并的列数

    • <col-spec>:合并后的列格式,只允许出现一个l / c / rp格式。如果合并前的单元格前后带有表格线|,合并后的列格式也要带有表格线|

    • <content>:合并后的内容

合并行

\multirow{<n>}{<width>}{<content>}
  • 参数

    • <n>:要合并的行数

    • <width>:合并后的宽度

    • <content>:合并后的内容

4.6.5 嵌套
  • 在单元格中嵌套一个小表格可以拆分单元格
    • 注意:需要使用\multicolumn命令配合@{}格式可以把单元格的额外边距去掉,使得嵌套的表格线能和外层的表格线正确相连
    • 扩展如果不需要为拆分的单元格画线,并且指在垂直方向上拆分时,可以使用makecell宏包提供的\makecell命令
4.6.6 行距
  • 方式一:修改参数\arraystretch
  • 方式二:给换行命令\\添加可选参数
    • 适用在行间不加横线的表格
    • 下一行的第一个单元格中不能使用[](将[]放在{}内)

4.7 图片

  • 步骤

    1. 设置编译器

      • LaTeX + dvipdfmx:调用宏包时需要指定dvipdfmx选项6
      • pdfLaTeX/XeLaTeX:无需设置
    2. 调用graphicx宏包

    3. 插入图片

      \includegraphics[<options>]{<filename>}
      
      • <options>:选项,常用的参数如下

        参数含义
        width=<width>将图片宽度设置为<width>
        height=<height>将图片高度设置为<height>
        scale=<scale>将图片缩放为<scale>倍
        angle=<angle>将图片逆时针旋转<angle>度
      • <filename>:图片文件名(路径名)

  • 扩展

    • \graphicspath命令用于声明一个或多个图片文件存放的目录,使用这些目录的图片时可以直接写文件名

4.8 盒子

盒子时LaTeX排版的基本元素:每一行是一个盒子,里面的文字从左到右依次排列;每一页也是一个盒子,各行文字从上到下排列

命令含义说明
\mbox{...}水平盒子内容只有一行,不允许分段
\makebox[<width>][<align>]{...}水平盒子1. 内容只有一行,不允许分段
2. <width>:盒子的宽度
3. <align>:内容的对齐方式(可选择l(左对齐)c(居中)r(右对齐)s(分散对齐))
\fbox{...}带边框的水平盒子\mbox
\framebox[<width>][<align]{...}带边框的水平盒子\makebox
\parbox[<align>][<height>][<inner-align>]{<width>}{...}垂直盒子1. <align>:盒子和周围文字的对其情况
2. <height>:盒子的高度
3. <inner-align>:内容的对齐方式(可选择t(顶部对齐)c(居中)b(底部对齐)s(分散对齐))
4. <width>:盒子的宽度
\rule[<raise>]{<width>}{<height>}标尺盒子1.<raise>:相对于基线提高的高度(可正可负)
2. <width>:盒子的宽度
3. <height>:盒子的高度

4.9 浮动体

浮动体的内容可以脱离上下文,放置在合适的位置

\begin{<env>}[<placement>]
...
\end{<env>}
  • 参数

    • <env>:表示浮动体的类型,可以是figuretable
    • <placement>:使用一些符号来表示浮动体允许排版的位置,默认位置为[tbp]
    参数含义
    h当前位置
    t顶部
    b底部
    p单独成页
    !决定位置时忽略限制
  • 说明

    • 排版位置与参数顺序无关,LaTeX总是以h-t-b-p的优先级决定浮动提的位置
    • 限制浮动提的个数(每页不超过3个,其中顶部不超过2个,底部不超过1个)和浮动体占页面的比例(默认顶部不超过70%,底部不超过30%)
    • \clearpage命令会在另起一页前将所有推迟处理的浮动体排版成页,忽略htbp等位置参数
    • float宏包提供的浮动提位置参数H会取消浮动机制(将浮动体视为一般盒子),不能与htbp!混用
  • 扩展

    • 双栏排版环境下,table*figure*环境用来排版跨栏的浮动体,此时<placement>参数只能使用tp两个参数
4.9.1 标题
命令含义说明
\caption{<title>}带编号标题<title>:浮动体标题
\caption*{<title>}不带编号标题<title>:浮动体标题
\caption[<short-title>]{<title>}带短标题的标题1.<title>:浮动体标题
2. <short-title>:目录中浮动体短标题
  • 扩展

    • 交叉引用:\caption后可以跟\label命令标记交叉引用
    • 标题前缀:修改\figurename\tablename的内容可以修改浮动体的标题前缀
    • 生成目录:\listoftables\listoffigures课可以生成浮动体格子的目录

5 公式排版

命令(环境)含义说明
$...$行内公式
equation环境带编号的行间公式1. 可以使用\label\ref生成交叉引用
2. amsmath\eqref命令为引用自动添加圆括号;\tag命令手动修改公式编号;\notag命令取消公式编号(等效于\nonumber
equation*环境不带编号的行间公式
displaymath环境不带编号的行间公式
\[...\]不带编号的行间公式
  • 说明
    • 数学公式排版需要导入amsmath(核心)、amsfontsamssymbamsthm等宏包
    • 行间公式的对齐、编号位置等有文档类选项控制:fleqn选项控制公式左对齐,leqno控制编号放在公式左边
    • 数学模式
      • 输入的空格被忽略。符号间的间距由符号的性质决定
      • 不允许有空行(分段),无法使用\\命令手动换行
      • 所有字母当作数学公式中的变量处理,字母间距与文本模式不一致,也无法生成单词间的空格。如果需要输入整体文本,可以使用\mathrm命令或amsmath\text命令

5.1 数学符号

5.1.1 一般符号
命令符号
\alphaα
\betaβ
\GammaΓ
\DeltaΔ
\infty
\dots\ldots
\cdots
\vdots
\ddots
5.1.2 上下标和导数
命令符号
^上标
_下标
'导数
  • 说明
    • 上下标只作用于其后的一个符号
    • 如果需要将多个符号作为上下标,需要将其放在花括号中
5.1.3 分式和根式
命令符号
\frac{<molecular>}{<denominator>}分式
\sqrt{<base>}算术平方根
\sqrt[<n>]{<base>}平方根
  • 参数
    • <molecular>:分子
    • <denominator>:分母
    • <base>:底数
    • <n>:次数
  • 扩展
    • \dfrac命令表示行内正常大小的分式,\tfrac表示行内非正常大小的分式
5.1.4 常规运算符
命令符号
+、-、*、=+、-、*、=
\times×
\div÷
\cdot·
\pm±
\mp
\div÷
\nabla
\partial
\pmod\bmod求模
  • 扩展

    • 常用函数

      \<func>
      
      • 参数
        • <func>:函数名,包括三角函数、双曲三角函数、指数函数、对数函数、最值、上下界、极限、行列式等
    • 自定义运算符

      \DeclareMathOperator{\argh}{argh}  % 带上下限的运算符
      \DeclareMathOperator*{\nut}{Nut}  % 带上下限的运算符
      
5.1.5 关系运算符
命令符号
>、<>、<
\ge
\le
\ne
\approx
\equiv
\propto
\sim
5.1.6 巨算符
命令符号
\sum
\prod
\int
\oint
  • 说明
    • 巨算符在行内公式和行间公式中的大小和形状不同
    • \limits使得上下标位于上下方,\limits使得上下标位于右上、右下方
  • 扩展
    • \substack命令可以在下限位置书写多行表达式,\subarray可以指定多行表达式的对齐方式
5.1.7 重音和上下括号
命令符号
\dot单点重音
\ddot双点重音
\vec\overrightarrow向量箭头
\hat上尖括号
\overline上划线
\underline下划线
\widehat宽重音
\overbrace上括号
\underbrace下括号
5.1.8 箭头
命令符号
\leftarrow\gets
\rightarrow\to
\xleftarrow可伸展的左箭头
\xrightarrow可伸展的右箭头
5.1.9 括号和定界符
命令符号
()()
[][]
\{\}{}
\langle\rangle⟨⟩
  • 扩展
    • \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 矩阵
环境关键字含义
matrix不带定界符的矩阵
pmatrix带定界符()的矩阵
bmatrix带定界符[]的矩阵
vmatrix带定界符`
Bmatrix带定界符{}的矩阵
Vmatrix带定界符‖‖的矩阵

5.4 公式中的间距

命令含义
\quad1个中文字符宽度的空格
\qquad2个中文字符宽度的空格
\<Space>1 / 3个中文字符宽度的空格
\,1 / 7个中文字符宽度的空格
\:1 / 6个中文字符宽度的空格
\;1 / 3个中文字符宽度的空格
\!- 1/ 6个中文字符宽度的空格

5.5 字体

5.5.1 字体
命令说明
\mathnormal{<content>}
\mathrm{<content>}
\mathit{<content>}
\mathbf{<content>}
\mathsf{<content>}
\mathtt{<content>}
\mathcal{<content>}需调用eucal宏包
\mathscr{<content>}需调用mathrsfs宏包
\mathfrak{<content>}需调用amssymbeufrak宏包
\mathbb{<content>}需调用amssymb宏包
  • 参数
    • <content>:设置字体的内容
5.5.2 尺寸
命令说明
\displaystyle行间公式尺寸
\textstyle行内公式尺寸
\scriptstyle上下标尺寸
\scriptscriptstyle次级上下标尺寸
5.5.3 加粗
环境关键字说明
\boldsymbol需调用amsbsy宏包
\bm需调用bm宏包

5.6 定理

\newtheorem{<theorem-env>}{<title>}[<section-level>]
\newtheorem{<theorem-env>}[<counter>]{<title>}
  • 参数

    • <theorem-env>:定理环境名称
    • <title>:定理环境标题
    • <section-level>:章节级别,定理序号为章节的下一级序号
    • <counter>:自定义的计数器名称
  • 说明

    • 默认的定理环境格式为粗体标签、斜体正文、定理名用小括号包裹
  • 扩展

    • 使用amsthm宏包自定义定理格式

      \theoremstyle{<style>}
      
      • 参数

        • <style>:定理格式,预定义的有三种

          格式说明
          plainLaTeX原始格式
          definition使用粗体标签、正体内容
          remark使用斜体标签、正体内容
      • 扩展

        • \newtheoremstyle命令可以自定义定理格式
    • 使用amsthm宏包的proof环境排版定理的证明过程

      \begin{proof}
      ...
      \end{proof}
      
      • 说明
        • 环境末尾会自动添加证毕符号
        • 如果行末是一个不带编号的公式,符号会另起一行,可使用\qedhere命令将符号放在公式末尾
        • 证毕符号使用\qedsymbol命令定义,可以使用\renewcommand命令(见下文)进行修改

6 排版样式

6.1 字体

6.1.1 字体
全局命令局部命令字体英文字体中文
\rmfamily\textrm{...}roman衬线字体(罗马体)
\sffamily\textsf{...}sans serif无衬线字体
\ttfamily\texttt{...}typewriter等宽字体
\mdseries\textmd{...}medium正常粗细(中等)
\bfseries\textbf{...}bold face粗体
\upshape\textup{...}upright直立体
\itshape\textit{...}italic意大利斜体
\slshape\textsl{...}slanted倾斜体
\scshape\textsc{...}small caps小字母大写
\em\emph{...}emphasized强调,默认斜体
\normalfont\textnormal{...}normal font默认字体
6.1.2 字号
命令10pt选项(默认)11pt选项12pt选项
\tiny5pt6pt6pt
\scriptsize7pt8pt8pt
\footnotesize8pt9pt10pt
\small9pt10pt10.95pt
\normalsize10pt10.95pt12pt
\large12pt12pt14.4pt
\Large14.4pt14.4pt17.28pt
\LARGE17.28pt17.28pt20.74pt
\huge20.74pt20.74pt24.88pt
\Huge24.88pt24.88pt24.88pt
  • 扩展

    • 设置任意大小的字号的命令

      \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 长度单位
单位含义
pt点阵宽度,1 / 72.27in
bp点阵宽度,1 / 72in
in英寸
cm厘米
mm毫米
em当前字号下大写字母M的宽度,常用于水平距离的设定
ex当前字号下小写字母x的宽度,常用于锤子距离的设定
  • 弹性长度:<base> plus <offset1> minus <offset2>表示[<base> - <offset2>, <base> + <offset1>],其中<base>、<offset1>和<offset2>都需要带单位

  • 长度的数值可以用长度变量本身或其倍数来表达

  • 自定义长度变量

    命令含义说明
    \newlength{<length-name>}定义长度变量<length-name>:长度变量名
    \setlength{<length-name>}{<length>}长度变量赋值1. <length-name>:长度变量名
    2. <length>:长度值
    \addtolength增加变量长度1. <length-name>:长度变量名
    2. <length>:长度值
6.2.2 行距
\linespread{<factor>}
  • 参数

    • <factor>:作用于行距。缺省的基础行距是1.2倍字号大小
  • 说明

    • 字号的改变是即时生效的,而行距的改变直到文字分段时才生效
  • 扩展

    • 如果要局部的改变某个段落的行距,需要使用命令\selectfont使\linespread命令立即生效
6.2.3 段落格式
\setlength{<format>}{<length>}
  • 参数:

    • <format>:缩进格式,由以下命令定义
    命令含义
    \leftskip左缩进
    \rightskip右缩进
    \parindent首行缩进
    • <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
      • pdfLaTeXXeLaTeX命令下不需要
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>:页面样式,可选的样式如下
    样式说明
    empty页眉页脚为空
    plain页眉为空,页脚为页码。(articlereport文档类和book文档类第一章默认样式)
    headings页眉为章节标题和页码,页脚为空(book文档类默认)
    myheadings页眉为页码及\markboth\markright命令手动指定的内容,页脚为空
    • 说明
      • 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宏包修改页眉页脚

      • 步骤

        1. 使用样式
        \pagestyle{fancy}
        
        1. 定义页眉页脚
        命令含义
        \fancyhf[<position>]{<content>}定义页眉和页脚
        \fancyhead[<position>]{<content>}定义页眉
        \fancyfoot[<position>]{<content>}定义页脚
        • <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作为扩展名,其内容是若干个文献条目

常用的类型条目有

类型含义必需字段可选字段
article学术论文author, title, journal, yearvolume, number, pages, doi等
book书籍author/editor, title, publisher, yearvolume/number, series, address等
incollection论文集中的一篇author, title, booktitle, publisher, yeareditor, volume/number, chapter, pages, address等
inbook书中的一章author/editor, title, chapter/pages, publisher, yearvolume/number, series, address等
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工具

  1. 导言区调用makeidx宏包,并开启索引的收集

    \usepackage{makeidx}
    \makeindex
    
  2. 在需要索引的地方使用\index命令;需要输出索引的地方使用\printindex命令

7.3 颜色

% 方式一
\color{<color-name>}

% 方式二
\color[<color-mode>]{<code>}
  • 参数
    • <color-name>:已定义的颜色名
    • <color-mode>:颜色模式,color宏包rgb,cmyk和gray等模式,xcolor还支持hsb等
    • <code>:颜色值
  • 说明
    • 需要导入颜色宏包colorxcolor
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 超链接

  1. 配置参数

    \hypersetup{<opt1>, <opt2>=<value>, ...}
    \usepackage[<opt1>, <opt2>=<value>, ...]{hyperref}
    
    • <optN>:配置参数,常用参数如下

      参数默认值含义
      colorlinks=<true/false>false链接文字是否带颜色
      hidelinks取消链接的颜色和边框
      pdfborder={<n>, <n>, <n>}0 0 1超链接边框设置,设置为0 0 0可取消边框
      bookmarks=<true/false> true是否生成书签
      bookmarksopen=<true/false>false是否展开书签
      bookmarksnumbered=<true/false>false书签是否带章节编号
      CJKbookmarks=<true/false>false使用CJK宏包 / GBK编码排版中文时必须要设定的参数,需要将生成的.out文件用工具处理编码,或调用xCJK2uni宏包
      unicode使用CJKutf8宏包 / UTF-8编码排版中文时必须设定的参数
      pdftitle=<string>标题
      pdfauthor=<string>作者
      pdfsubject=<string>主题
      pdfkeywords=<string>关键词
      pdfstartview=<Fit/FitH/FitV>Fit设置PDF页面以适合页面(默认)/适合宽度/适合高度等方式显示
  2. 添加超链接

    \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 编写文档类
  1. 文档类以.cls作为扩展名

  2. 开头使用命令

    \ProvidesClass{<class-name>}
    
    • 参数
      • <class-name>:文档类名,需要与文件名一致
  3. 调用文档类

    \LoadClass[<options>]{<class-name>}
    
    • 参数
      • <options>:文档类选项
      • <class-name>:文档类名
8.3.2 编写宏包
  1. 宏包以.sty作为扩展名

  2. 开头使用命令

    \ProvidesPackage{<pkg-name>}
    
    • 参数
      • <pkg-name>:宏包名,需要与文件名一致
  3. 在宏包中调用其他宏包

    \RequirePackage[<options>]{<pkg-name>}
    
    • 参数
      • <options>:宏包选项
      • <pkg-name>:宏包名

8.4 计数器

命令计数器说明
\chapterchapter有上下级关系
\sectionsection有上下级关系
\partpart独立
\enumerateenumi, enumii, enumiii, enumiv有上下级关系
\tabletablearticle中独立,book/report中以chapter为上级计数器
\figurefigurearticle中独立,book/report中以chapter为上级计数器
\equationequationarticle中独立,book/report中以chapter为上级计数器
\footnotefootnote
页码page
  • 说明
    • 章节编号的深度secnumdepth:如果章节的层级大于该值,那么章节的标题、在页眉页脚的标题都不编号;article文档类中默认为3,bookreport文档类中默认为2;可以通过\setcounter命令设置该值
    • 目录深度tocdepth:如果章节的层级大于该值,那么章节的标题不会写入目录项;article文档类中默认为3,bookreport文档类中默认为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>:计数器格式。常用的格式如下

      命令样式范围
      \arabic阿拉伯数字(默认)
      \alph小写字母0-26
      \Alph大写字母0-26
      \roman小写罗马数字非负整数
      \Roman大写罗马数字非负整数
      \fnsymbol一些列符号,用于\thanks命令生成的脚注0-9
  • 说明

    • 计数器的输出格式还可以利用其他字符,也可以与其他计数器输出格式的组合

8.5 可定制命令和参数

8.5.1 标题名称/前后缀等
命令默认值含义
\partnamePart\part命令生成的标题前缀
\chapternameChapter\chapter命令生成的标题前缀
\appendixnameAppendix\appendix命令生成的附录部分的章标题前缀
\abstractnameAbstractabstract环境生成的标题名称
\contentsnameContents\tableofcontents命令生成的目录标题
\listfigurenameList of Figures\listoffigures命令生成的插图目录标题
\listtablenameList of Tables\listoftables命令生成的表格目录标题
\figurenameFigurefigure浮动体中\caption命令生成的标题前缀
\tablenameTabletable浮动体中\caption命令生成的标题前缀
\refnameReferencesthebibliography环境或\bibliography命令生成的参考文献标题(article文档类)
\bibnameBibliographythebibliography环境或\bibliography命令生成的参考文献标题(book/report文档类)
\indexnameIndex\printindex命令生成的索引标题
  • 说明
    • 以上所有命令可以使用\renewcommand命令来修改
8.5.2 长度
命令默认值含义
\fboxrule0.4pt\fbox\framebox等带框盒子的线宽
\fboxsep3pt\fbox\framebox等带框盒子的内边距
\arraycolsep5ptarray环境的表格项前后的间距
\tabcolsep6pttabular环境的表格项前后的间距
\arrayrulewidth0.4pt表格线宽
\doublerulesep2pt连续两根表格线之间的间距
\abovecaptionskip10pt\caption命令位于表格下方时,与上方图表的间距
\belowcaptionskip0pt\caption命令位于表格上方时,与下方图表的间距
\columnsep10pt双栏排版下两栏的间距
\columnseprule0pt双栏排版下两栏之间竖线的宽度
  • 说明
    • 以上所有命令可以使用\setlength命令来修改

参考资料

  1. LaTeX基础——格式与命令 - FBshark - 博客园 (cnblogs.com)
  2. 一份其实很短的 LaTeX 入门文档 | 始终 (liam.page)
  3. 中文版Latex常用语法大全教程_tianzong2019的博客-CSDN博客_latex语法
  4. LaTeX详细教程+技巧总结_NSJim的博客-CSDN博客_latex使用教程
  5. LaTeX基础使用手册 | Personal Blog (albertyzp.github.io)
  6. LaTeX公式手册(全网最全) - 樱花赞 - 博客园 (cnblogs.com)
  7. LaTeX数学公式-详细教程_NSJim的博客-CSDN博客_latex数学公式
  • 15
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值