语法规则

命令

类似于函数参数,返回值为函数处理参数后的结果

\命令[options参数]{class参数}

\usepackage[T1]{fontenc}
  1. 其中class参数可以有多个,同类型的放在一个花括号里,不同类型的放在多个花括号中
  2. [options]中参数使用','隔开

环境命令

\begin[options]{class}\end[options]{class}:用于指定一个空间,以应用某种格式或排版样式进行统一排版

常见的环境类型:

itemize(无序列表)
enumerate(有序列表)
table(表格)
figure(图像)
quote(引用文本)
equation(数学公式)
\begin{document} \end{document}(文章主体)
\begin{center} \end{center}(文本整体居中)

\begin{itemize} 
\item Item 1 
\item Item 2 
\end{itemize}

计数器命令

计数器用于 LaTeX 中的自动编号功能。例如,章节、图表、公式等都有自己的计数器。

常见的计数器类型:

section{}

变量

全局变量

\变量=数值

\textheight=24cm

声明

作用环境之后的内容,直到遇到另一个排版命令或者环境结束

\声明

\itshape
\centering
\raggedright
\raggedleft

Latex基本结构

源代码基本结构

  1. LATEX 源代码以一个 \documentclass 命令作为开头,它指定了文档使用的文档类。document环境之间的内容是文档正文
  2. \documentclass\begin{document} 之间的位置称为导言区。在导言区中常会使用 \usepackage 命令调用宏包,还会进行文档的全局设置
\documentclass{...} % ... 为某文档类 
% 导言区 
\begin{document} 
% 正文内容 
\end{document} 
% 此后内容会被忽略

项目基本结构

每个宏包和文档类都是带特定扩展名的文件,除此之外也有一些文件出现于LATEX模板中:

  1. .sty 宏包文件。宏包的名称与文件名一致。
  2. .cls 文档类文件。文档类名称与文件名一致。
  3. .bib BIBTEX 参考文献数据库文件。
  4. .bst BIBTEX 用到的参考文献格式模板。

LATEX 在编译过程中除了生成.dvi.pdf格式的文档外,还可能会生成相当多的辅助文件和日志。一些功能如交叉引用、参考文献、目录、索引等,需要先通过编译生成辅助文件,然后再次编译时读入辅助文件得到正确的结果,所以复杂的LATEX源代码可能要编译多次:

  1. .log 排版引擎生成的日志文件,供排查错误使用。
  2. .aux LATEX 生成的主辅助文件,记录交叉引用、目录、参考文献的引用等。
  3. .toc LATEX 生成的目录记录文件。
  4. .lof LATEX 生成的图片目录记录文件。
  5. .lot LATEX 生成的表格目录记录文件。
  6. .bbl BIBTEX 生成的参考文献记录文件。
  7. .blg BIBTEX 生成的日志文件。
  8. .idx LATEX 生成的供 makeindex 处理的索引记录文件。
  9. .ind makeindex 处理.idx生成的用于排版的格式化索引文件。
  10. .ilg makeindex 生成的日志文件。
  11. .out hyperref 宏包生成的PDF书签记录文件。

文件的组织语法

\include{filename}:在源代码里插入文件,并另起一页

  1. filename为文件名(不带 .tex 扩展名),如果和要编译的主文件不在一个目录中,则要加上 相对或绝对路径:
\include{chapters/file} % 相对路径 

\include{/home/Bob/file} % *nix(包含 Linux、macOS)绝对路径 

\include{D:/file} % Windows 绝对路径,用正斜线
  1. 值得注意的是\include在读入 ⟨filename⟩ 之前会另起一页。有的时候我们并不需要这样

\input{filename}:在源代码里插入文件

  1. 当导言区内容较多时,常常将其单独放置在一个.tex文件中,再用\input命令插入。复杂的图、表、代码等也会用类似的手段处理。

\includeonly{⟨filename1⟩,⟨filename2⟩,…}:用于导言区,指定只载入某些文件,正文中不在其列表范围的\include命令不会起效


\documentclass{article}
\includeonly{introduction,results}
\begin{document}

\include{introduction} 
\include{theory} %不起作用
\include{methods} %不起作用
\include{results} 
\include{conclusion} %不起作用

\end{document}

基础语法

文档结构划分

所有标准文档类都提供了一个\appendix命令将正文和附录分开,使用\appendix后,最高一级章节改为使用拉丁字母编号,从A开始。

  1. 标题
  2. 作者
  3. 正文
  4. 附录

引入宏包

usepackage[options]{class}:引入宏包

文章类型

\documentclass[options]{class}:指明文档的类型及格式

 \documentclass[11pt,twoside,a4paper]{article}
 
 %[]中参数使用','隔开
 %11pt文章主体字体大小,默认10pt
 %twoside双边编排,奇偶页左右边距相反
 %a4paper文档长宽同A4纸
 %{}中指出文章类型,article为论文格式

class参数

class 参数文章类型
article论文类型
book书籍类型
letter信件类型
slides幻灯片
IEEEtranIEEE Transactions格式的文章
proc诉讼、议程
minimal主要调试用
report较长的报告
memoir可更改文档的输出类型,基于book
beamer自我介绍、业务陈述

option参数

option 参数含义
10pt, 11pt, 12pt正文字体大小,默认10pt
a4paper, letterpaper…纸张大小
fleqn公式左对齐
leqno公式编号置于公式左
titlepage, notitlepage指定文章标题后是否启用新页面
onecolumn, twocolumn指定此文件要以单列或双列进行排版
twoside, oneside单、双边编排,奇偶页左右边距相同、相反。
landscape横向打印
openright, openany仅在右侧页或下一页开始新章节
draft草稿模式

标题页

标题页设置

\title{title} 
\author{author} 
\date{date}
  1. 其中前两个命令是必须的(不用\title会报错;不用\author会警告),\date命令可选。
  2. 提供了一个\today自动生成当前日期,\date 默认使用 \today
  3. \title\author 等命令内可以使用\thanks命令生成标题页的脚注,用\and隔开多个人名。
  4. 需要先设置标题的各项信息,才能生成标题页面
\title{Test title} 
\author{ Mary\thanks{E-mail:*****@***.com} 
	\and Ted\thanks{Corresponding author} 
	\and Louis} 
\date{\today}

生成标题页

\maketitle:生成一个简单的标题页

  1. article 文档类的标题默认不单独成页,而report和book 默认单独成页。
  2. 可在\documentclass命令调用文档类时指定titlepage 或 notitlepage 选项以修改 默认的行为。

\begin{titlepage} \end{titlepage}:生成一个标题页环境

  1. 提供了一个简单的titlepage环境,生成不带页眉页脚的一页。

目录

\tableofcontents:生成目录

添加在导言区,即可显示目录。目录要编译两遍以上才正常:第一遍在.aux 辅助文件中记录位置,第二遍根据辅助文件的内容输出目录。如果目录本身会影响后续内容的页码,那么还要编译第三遍。(因此将配置时的 "latex-workshop.latex.autoClean.run": "onBuilt", 注释掉)

  1. \tableofcontents 生成的章节默认不写入目录(\section* \chapter*),
  2. 正确生成目录项,一般需要编译两次源代码

\addcontentsline{toc}{level}{title}:手动生成目录的某一章节的目录项

  1. level为章节层次 chapter 或 section 等
  2. title为出现于目录项的章节标题

章节-计数器

\setion{字符串}:生成章节,并进行一次section计数

它不仅可以直接控制字体变化、纵向间距……,还可以让整个文章的格式统一

\section{Title of the first section}
Text of material in the first section
Second paragraph.
\subsection{Subsection of the first section}
Text of material in the subsection.
\subsection{Subsection of the first section}

//使用标准的 article 配置时,LaTeX 会对节与小节进行编号,并把标题加粗。

章节层次

  • \chapter (启用它需要 \documentclass{book} 或者 \documentclass{report}
  • \section
  • \subsection
  • \subsubsection
  • \paragraph
  1. article 文档类带编号的层级为 \section\subsection\subsubsection 三级

  2. report 和 book 文档类带编号的层级为 \chapter\section\subsection 三级

章节标题

\section[short title]{title}:生成编号的章节标题

\section*{title}:生成不带编号的章节标题

交叉引用

生成引用

\label{label-name}:生成章节、公式、图表、定理的引用

\label命令可用于记录各种类型的交叉引用,使用位置分别为:

  1. 章节标题 在章节标题命令\section等之后紧接着使用。
  2. 行间公式 单行公式在公式内任意位置使用;多行公式在每一行公式的任意位置使用。
  3. 有序列表 在enumerate 环境的每个\item 命令之后、下一个\item 命令之前任意位置使用。
  4. 图表标题 在图表标题命令\caption之后紧接着使用。
  5. 定理环境 在定理环境内部任意位置使用。

使用引用

\ref{label-name}:生成引用的编号

\pageref{label-name}:生成引用的页码

A reference to this subsection \label{sec:this}
looks like:
``see section~\ref{sec:this} on page~\pageref{sec:this}.''
  1. 为了生成正确的交叉引用,一般也需要多次编译源代码。

盒子

盒子是LATEX 排版的基础单元,虽然解释略有抽象:每一行是一个盒子,里面的文字从左到右依次排列;每一页也是一个盒子,各行文字从上到下依次排布⋯⋯颇有一些活字印刷术的味道。

水平盒子

\mbox{文本}:生成一个基本的水平盒子

  1. 内容只有一行,不允许分段(除非嵌套其它盒子,比如后文的垂直盒子)。外表看上去,\mbox 的内容与正常的文本无二,不过断行时文字不会从盒子里断开。

\makebox[width][align]{文本}:生成可以控制的水平盒子

  1. 可选参数用于控制盒子的宽度width
  2. 内容的对齐方式 align,可选居中 c(默认值)、左对齐 l、右对齐 r 、分散对齐s

带框的水平盒子

\fbox{文本}:生成一个带框的水平盒子

  1. 基础语法与 \mbox 保持一致

\framebox[width][align]{文本}:生成可以控制的带框水平盒子

  1. 基础语法与 \framebox 保持一致
  2. 可以通过\setlength 命令(见5.3.1小节)调节边框的宽度\fboxrule和内边距\fboxsep
\framebox[10em][r]{Test box}\\[1ex] 
 \setlength{\fboxrule}{1.6pt} 
 \setlength{\fboxsep}{1em}
\framebox[10em][r]{Test box}

垂直盒子

\parbox[align][height][inner-align]{width}{文本}:生成一个垂直的盒子

  1. 其中align为盒子和周围文字的对齐情况(类似tabular环境)
  2. ⟨height⟩ 和 ⟨inner-align⟩设置盒子的高度和内容的对齐方式,类似水平盒子\makebox的设置,⟨inner-align⟩接受的参数是顶部t、底部b、居中c和分散对齐s。
\parbox[t]{3em}{文本内容}

\begin{minipage}[align][height][inner-align]{width}:生成一个垂直盒子的环境

  1. 用法与\parbox 几乎一致
\begin{minipage}[b][8ex][t]{4em} 
天地玄黄 宇宙洪荒 
\end{minipage}

零散知识点

定义新命令

\newcommand\命令名[参数个数]{ #x}:生成新命令

\newcommand{\kw}[2]{\textbf{\itshape #1} #2}

在定义中,[1] 表示参数个数(这里只有一个),#1 表示提供的第一个参数(在这个例子中,指的是 applesoranges)。你最多可以设置 9 个参数,但一般情况下最好只有一个参数,有时甚至不需要设置任何参数。

改变旧命令

\renewcommand[旧命令]{定义内容}

注释

%,以 % 开头的注释的后续内容为注释

换行

  1. \\进行换行

其中,\\不仅可以对文本进行换行,也可以对表格环境进行换行,其次是,\\可以带可选参数⟨length⟩,

  1. \newline进行换行

分页

1.\newpage:起到另起一页的作用

其中,在双栏排版模式中\newpage起到另起一栏的作用

2.\clearpage:起到另起一页的作用

其中,在双栏排版模式中\clearpage则能够另起一页

二者涉及浮动体的排版上有一些不同

强制换行/分页

\linebreak[n]

\nolinebreak[n]

\pagebreak[n]

\nopagebreak[n]

  1. 用数字 ⟨n⟩ 代表适合/不适合的程度,取值范围为 0–4,不 带可选参数时,缺省为 4。
  2. \linebreak 或者 \linebreak[4] 意味着此处需要强行断行;

分段

  1. 直接用一行空行 or 连续两个换行符(不可以连续换两行)
\begin{document}
% 这是一个注释
This is a simple document\footnote{with a footnote}.

This is a new paragraph!
\end{document}
  1. 使用\par进行分段
\begin{document}
% 这是一个注释
This is a simple document\footnote{With a footnote}.\par

This is a new paragraph!
\end{document}

空格

  1. 空格 or tab
  2. 行末的换行符
  3. ~ (不跨行的「硬」空格)
    //多个空格 or tab被当作一个空格处理

特殊符号的转义

\

\ 起始是 LaTeX 指令:一个「命令」

{ }

大括号字符 {} 用于显示强制性参数(mandatory arguments):命令需要的信息。

符号短命令 (数学和文本模式)长命令 (文本模式)
{ \{ \textbraceleft
}\}\textbraceright
$\$\textdollar
%\%
&\&
#\#
_\_\textunderscore
\\textbackslash
^\textasciicircum
~ \textasciitilde

//大多数特殊符号都是用\进行转义

标点符号

单引号

`This is a new paragraph!'

双引号

``This is a new paragraph!''

连字号和破折号

单个-:用于连接英文呢
两个-:用于连接数字
三个-:用于当破折号使用

daughter-in-law, X-rated\par
pages 13--67\par
yes---or no?

省略号

LATEX 提供了 \ldots 命令表示省略号,相对于直接输入三个点的方式更为合理。\dots\ldots 命令等效。

//和...打出来的省略号不同,请使用\ldots

one, two, three, \ldots{} one hundred.

斜体

\emph{字符串}:将字符串变为斜体

  1. 使参数的字符串变为斜体
  2. 可以嵌套使用来取消斜体,第二次嵌套后的文字不会是斜体

\textit{字符串}:将字符串变为斜体

  1. 使参数的字符串变为斜体
  2. 单纯的变为斜体
Some text with \emph{emphasis and \emph{nested} content}.

  

Some text in \textit{italic and \textit{nested} content}.

\itshape:切换文章为粗体

  1. 这是一个字体切换声明,用于将字体设置为斜体。
  2. 它会影响其后的文本,直到另一个字体切换命令出现。
  3. \itshape 通常用于较长的文本段落,需要整体以斜体显示。

粗体

\textbf{字符串}:将字符串变为粗体

Some text in \textbf{\textit{italic and \textit{nested} content}.}

常见宏包及概括

文字、公式和符号

PackageDescription
amsmathAMS 数学公式扩展。
mathtools数学公式扩展宏包,提供了公式编号定制和更多的符号、矩阵等。
amsfontsAMS 扩展符号的基础字体支持。
amssymb在amsfonts基础上将AMS扩展符号定义成命令。
bm提供将数学符号加粗的命令\bm
unicode-math使用Unicode数学字体。
nicematrix排版复杂矩阵。
siunitx以国际单位规范排版物理量的单位。
mhchem排版化学式和方程式。
tipa排版国际音标。

排版元素

PackageDescription
ulem提供排版可断行下划线的命令\uline以及其它装饰文字的命令。
endnote排版尾注。
marginnote改善的边注排版功能。
multicol提供将内容自由分栏的multicols环境。
multitoc生成多栏排版的目录。
minitoc为章节生成独立的小目录。
glossaries生成词汇表。
verbatim对原始的verbatim环境的改善。提供了命令\verbatiminput调用源文件。
fancyvrb提供了代码排版环境Verbatim以及对版式的自定义。
listings提供了排版关键字高亮的代码环境lstlisting以及对版式的自定义。类似宏包有minted等。
algorithmic一个简单的实现算法排版的宏包。如果要生成浮动体的话,需要搭配algorithm宏包使用。
algorithm2e较为复杂的、可定制的算法排版宏包。类似宏包有algorithmicx等。
amsthm定制定理环境。类似宏包包括theoremntheoremthmtools等。
mdframed排版可自动断页的带边框文字段落,提供边框样式的定制功能。
tcolorbox以TikZ为基础提供排版样式丰富的彩色盒子的功能。

图表和浮动体

PackageDescription
array对表格列格式的扩展。
booktabs排版三线表。
tabularx提供tabularx环境排版定宽表格,支持自动计算宽度的X列格式。
arydshln支持排版虚线表格线。
colortbl支持修改表格的行、列、单元格的颜色。
multirow支持合并多行单元格。
makecell支持在单元格里排版多行内容(嵌套一个单列的小表格)。
diagbox排版斜线表头。
longtable提供排版跨页长表格的longtable环境。
ltxtable为跨页长表格提供tabularx的X列格式。
tabularray排版复杂表格(基于LATEX3实现)。
graphicx支持插图。
bmpsizelatex + dvipdfmx命令下支持BMP/JPG/PNG等格式的位图。
epstopdfpdflatex命令下支持EPS格式的矢量图。
wrapfig支持简单的文字在图片周围的绕排。
caption控制浮动体标题的格式。类似宏包有keyfloat等。
subcaption提供子图表和子标题的排版。类似宏包有subfigure和subfig等。
bicaption生成双语浮动体标题。
float为浮动体提供不浮动的H模式;提供自定义浮动体结构的功能。

修改文章排版

PackageDescription
geometry修改页面尺寸、页边距、页眉页脚等参数。
fancyhdr修改页眉页脚格式,令页眉页脚可以左对齐、居中、右对齐。
titlesec修改章节标题\chapter\section等的格式。
titletoc修改目录中各条目的格式。类似宏包有tocloft等。
tocbibind支持将目录、参考文献、索引本身写入目录项。
footmisc修改脚注\footnote的格式。
indentfirst令章节标题后的第一段首行缩进。
enumerate提供简单的自定义标签格式的enumerate环境。
enumitem修改列表环境enumerateitemize等的格式。
lettrine生成段落首字母大写的效果。

特殊环境

列表环境

LaTeX 主要内置两种常见的列表类型。

有序列表

\begin{enumerate} \item{}:生成有序列表

\begin{enumerate}

\item An entry

\item Another One

\item Wow! Three entries

\end{enumerate}

无序列表

\begin{itemize} \item{}:生成无序列表

\begin{itemize}

 \item An entry

 \item Another One

 \item Wow! Three entries

\end{itemize}

表格环境

\begin{tabular}{l l l} 
Animal & Food & Size \\ 
\hline
dog & meat & medium \\ 
horse & hay & large \\ 
frog & flies & small \\ 
\end{tabular}

列格式

\begin{tabular}[align]{列参数}\end{tabular}

为了排版 tabular 表格,我们需要告诉 LaTeX 总共有多少列,以及应当怎样对齐。

  1. align参数可以为b,t分别表示按表格顶部、底部对齐。
  2. 这通常通过一个额外的参数table preamble——来指定 tabular 列数。
  3. 每列通常通过单个字母来指定格式,可选的列格式如下:
类型描述
l列左对齐
c列居中对齐
r列右对齐
``
p{width}固定列宽;文字会被自动折行并两端对齐
m{width}和 p 类似,但垂直居中对齐
b{width}和 p 类似,但垂直底部对齐
w{align}{width}固定列宽,如果太长会稍稍出界。你可以选择水平对齐(align)选项 l, c 或 r
W{align}{width}和 w 类似,但是如果出界的话会收到警告

搭配使用的导言符:

类型描述
*{num}{string}在表格导言中重复 string 引导符 num 次。你可以通过这种方式定义相同的列
>{decl}在当前列的每个单元格前都添加 decl(很有用,比如需要对整列设定一个不同的字体时
<{decl}会在前一列的每个单元格后添加 decl
@{decl}将两列之间的空隙替换为 decl
!{decl}在两列之间的空隙中央添加 decl
  1. 表格主体中,列都是通过 & 和号来分隔的,行是通过 \\ 来另起的
  2. 如果某一列的文字内容太多,就无法仅靠l c r完成排版,需要设定宽度使用p类型。如下面代码所示:
\begin{tabular}{c p{9cm}} 

Animal & Description \\ 

dog & The dog is a member of the genus Canis, which forms part of the wolf-like canids, and is the most widely abundant terrestrial carnivore. \\ 

cat & The cat is a domestic species of small carnivorous mammal. It is the only domesticated species in the family Felidae and is often referred to as the domestic cat to distinguish it from the wild members of the family. \\

\end{tabular}
  1. 有太多列是同样的类型,重复写入大量描述符就太麻烦了,使用*{num}{string}
\begin{tabular}{*{3}{l}}
  Animal & Food  & Size   \\
  dog    & meat  & medium \\
  horse  & hay   & large  \\
  frog   & flies & small  \\
\end{tabular}
  1. 统一添加字体
\begin{tabular}{>{\itshape}r<{*}l} 
	\hline 
	italic & normal \\ 
	column & column \\ 
	\hline 
\end{tabular}

7.列宽固定下的每一列居中对齐

\begin{tabular}
 {*{4}{>{\centering\arraybackslash}p{2em}}}
 \hline
 A & B & C & D \\ \hline
 a & b & c & d \\ \hline
\end{tabular}

表格宽度一定的列对齐

在控制列宽方面,LATEX 表格有着明显的不足:

  1. l/c/r格式的列宽是由文字内容的自然宽度决定的,而p格式给定了列宽却不好控制对齐(可用array宏包的辅助格式)
  2. 列与列之间通常还有间距,生成给定总宽度的表格很不容易

自带的定宽表格

\begin{tabular*}{width}{columns}:生成一个指定总宽度的表格

  1. width参数为表格的总宽度,该宽度包括:列宽+列与列之间的距离
  2. 除了额外的width参数,其他用法与上述普通表格用法一致
\begin{tabular*}{8em}
 {|*{4}{>{\centering\arraybackslash}c|}}
 \hline
 A & B & C & D \\ \hline
 a & b & c & d \\ \hline
\end{tabular*}

基于tabularx宏包的定宽表格

\begin{tabularx}{width}[col-sep]{X}:生成一个指定总宽度的表格,自动调整某些列的宽度以适应指定的表格总宽度

  1. width:表格的总宽度,可以是任何有效的 LaTeX 长度单位。
  2. col-sep:(可选)列与列之间的间距,默认为 \tabcolsep
  3. X:可伸缩宽度列的声明,X 列可以有多个,并且可以与其他固定宽度列(如 lcr)混合使用
 \begin{tabularx}{8em}
 {|*{4}{>{\centering\arraybackslash}X|}}
 \hline
 A & B & C & D \\ \hline
 a & b & c & d \\ \hline
 \end{tabularx}

添加分割线-声明

事实上,在专业表格中,你不应当使用任何标准分割线;取而代之的,你应该熟练使用 booktabs 宏包里提供的工具

常用的分割线

\toprule, \midrule, \bottomrule:顾名思义,上线、中线、下线
注意:这三种类型分割线的使用位置

  1. \toprule 在表格的第一行数据之前,后面通常会跟一个 \midrule,用于分隔表头和表格的第一行数据。
  2. \midrule 可以用来分隔表头中的不同部分,或者用于表格主体中不同组数据之间的分隔。
  3. \bottomrule 通常放在表格的最后一行数据之后,或者在表格注脚之前。
\begin{tabular}{lll} 
	\toprule
	Animal & Food & Size \\ 
	\midrule 
	dog & meat & medium \\ 
	horse & hay & large \\ 
	frog & flies & small \\ 
	\bottomrule 
\end{tabular}

\hline:使用方法与\midrule一致

  1. \hline 添加的表格分割线的间隔较小,不推荐使用

隐式分割线

\addlinespace:会插入一个小的间隙,以代替分割线分割的效果

\begin{tabular}{cp{9cm}}
  \toprule
  Animal & Description \\
  \midrule
  dog    & The dog is a member of the genus Canis, which forms part of the
           wolf-like canids, and is the most widely abundant terrestrial
           carnivore. \\
  \addlinespace
  cat    & The cat is a domestic species of small carnivorous mammal. It is the
           only domesticated species in the family Felidae and is often referred
           to as the domestic cat to distinguish it from the wild members of the
           family. \\
  \bottomrule
\end{tabular}

部分列分割线

\cmidrule(参数){列号-列号}:可用来绘制出仅占用指定列范围、而不占满整行的分割线。

  1. 列范围被表示为一个数字范围:{列号-列号}。即使你只需要对一列画分割线,也要指定一个范围。
  2. rl 的意思是分别缩短分割线右(right)端和左(left)端。
\begin{tabular}{lll}
  \toprule
  Animal & Food  & Size   \\
  \midrule
  dog    & meat  & medium \\
  \cmidrule{1-2}
  horse  & hay   & large  \\
  \cmidrule(r){1-1}
  \cmidrule(rl){2-2}
  \cmidrule(l){3-3}
  frog   & flies & small  \\
  \bottomrule
\end{tabular}

\cline:使用方法与\cmidrule一致

  1. \cline 添加的表格分割线的间隔较小,不推荐使用

合并单元格

横向合并单元格

\multicolumn{n}{column-spec}{表格内容}:合并某一行的若干个单元格

  1. n为要合并的列数,
  2. column-spec合并单元格后的列格式,只允许出现一个l/c/r或 p格式
  3. 可以用来修改某一个单元格的列格式
\begin{tabular}{|c|c|c|} 
	\hline 
	1 & 2 & Center\\ \hline 
	\multicolumn{2}{|c|}{3} & 
	\multicolumn{1}{r|}{Right}\\ \hline
	4 & \multicolumn{2}{c|}{C}\\ \hline
\end{tabular}

纵向合并单元格

纵向合并单元格需要用到multirow宏包

\multirow{n}{width}{表格内容}:合并某一列的若干个单元格

  1. width为合并后单元格的宽度,可以填 * 以使用自然宽度
\usepackage{multirow} 
\begin{tabular}{ccc} 
	\hline 
	\multirow{2}{*}{Item}& 
		\multicolumn{2}{c}{Value}\\
	\cline{2-3} 
		&First &Second\\ \hline 
	A & 1 &2\\ \hline
\end{tabular}

表格嵌套

感觉不太会用到,这里不展开了

表格行距控制

修改默认行距

生成的表格看起来通常比较紧凑。修改参数\arraystretch可以得到行距更加宽松的表格

\renewcommand\arraystretch{1.8}
\begin{tabular}{|c|} 
	\hline 
	Really loose\\ \hline 
	tabular rows.\\ \hline 
\end{tabular}

设置行距

另一种增加间距的办法是给换行命令\\添加可选参数,在这一行下面加额外的间距,适合 用于在行间不加横线的表格:

\begin{tabular}{c} 
	\hline 
	Head lines \\ [6pt] 
	tabular lines \\ 
	tabular lines \\ \hline 
\end{tabular}

强调环境

\begin{description} \item[强调内容]:生成一个强调的环境

\begin{description}

 \item[Enumerate]Numberedlist.

 \item[Itemize]Non-numberedlist.

\end{description}

对齐环境

使用环境进行对齐

center、flushleft 和 flushright 环境分别用于生成居中、左对齐和右对齐的文本环境。

\begin{center} … \end{center} 
\begin{flushleft} … \end{flushleft} 
\begin{flushright} … \end{flushright}

使用声明进行对齐

\centering 
\raggedright 
\raggedleft
  1. 一般用在比如在浮动体环境table 或figure 内实现表格的整体居中对齐
\begin{table}
 \centering
 \begin{tabular}{lcr p{6em}}
 \end{tabular} 
\end{table}
  1. 改变表格设置p列格式(固定列宽)的对齐方式,需要添加 \arraybackslash 以免出错
\usepackage{array} 
\begin{tabular}
 {*{4}{|>{\centering\arraybackslash}p{2em}}|}
 \hline
 A & B & C & D \\ \hline
 a & b & c & d \\ \hline
\end{tabular}

引用环境

\begin{quote}:用于引用较短的文字,首行不缩进

\begin{quotation}:用于 引用若干段文字,首行缩进

  1. 引用环境较一般文字有额外的左右缩进

摘要环境

\begin{abstract}:生成摘要环境

  1. 一般用于紧跟\maketitle命令之后
  2. 如果文档类指定了titlepage选项,则单独成页;
  3. 反之,单栏排版时相当于一个居中的小标题加一个quotation环境,双栏排版时相当于\section*定义的一节。

代码环境

\begin{verbatim}:生成代码环境

\begin{verbatim} 
#include <iostream>
int main() 
{ 

std::cout<<"Hello,world!";

return 0

};
\end{verbatim}

图片环境

插图

\includegraphics[options]{url}:调整图片大小和形状、裁切图片提供了许多选项

  1. options可以调整图像的宽度和高度,常用的方式有:

\includegraphics[height=0.5\textheight],其中\textheight为变量
\includegraphics[height=0.5\linewidth],其中\linewidth为变量
前者为一整页的文本宽度,后者为当前行的宽度。当启用文档类中的 twocolumn 选项时这种差别会非常明显)

scale 缩放图片:将图片相对于原尺寸缩放 scale
angle 旋转图片:将图片逆时针旋转 angle

  1. url是图像相对于tex文件的路径
\begin{center}
 \includegraphics[height=2cm]{img/icon.png}
\end{center}

\graphicspath{{url1}{url2}}:于声明一个或多个图片文件存放的目录,使用这些目录里的图片时可不用写路径
注意,这里的url需要花括号包住

\graphicspath{{figures/}{logo/}}
% 假设主要的图片放在 figures 子目录下,标志放在 logo 子目录下

浮动体

内容丰富的文章或者书籍往往包含许多图片和表格等内容。这些内容的尺寸往往太大,导致分页困难。LATEX 为此引入了浮动体的机制,令大块的内容可以脱离上下文,放置在合适的位置。

常用的两种浮动体

\begin{table}[⟨placement⟩] … \end{table}:生成一个table浮动体
\begin{figure}[⟨placement⟩] … \end{figure}:生成一个figure浮动体

  1. 习惯上,table浮动体内里放表格,figure浮动体内里放图片。
  2. placement参数提供了一些符号用来表示浮动体允许排版的位置,如 hbp :允许浮动体排版在当前位置、底部或者单独成页。table和figure 浮动体的默认设置为tbp,具体参数表见表格。
参数含义
h当前位置(代码所处的上下文)
t顶部
b底部
p单独成页
!在决定位置时忽视限制
  1. 排版位置的选取与参数里符号的顺序无关,LATEX 总是以h-t-b-p 的优先级顺序决定浮动体位置。 也就是说[!htp][ph!t] 没有区别。
  2. 限制包括浮动体个数(除单独成页外,默认每页不超过3个浮动体,其中顶部不超过2个,底部不 超过1个)以及浮动体空间占页面的百分比(默认顶部不超过70%,底部不超过30%)。
  3. 如果某个浮动体由于参数限制、空间限制等原因在当前页无法放置,就要推迟到之后处理,并使得之后的同类浮动体一并推迟。
  4. \clearpage命令会在另起一页之前,先将所有推迟处理的浮动体排版成页,此时htbp等位置限制被完全忽略
  5. float 宏包为浮动体提供了H位置参数,不与htbp及! 混用。使用H位置参数时,会取消浮 动机制,将浮动体视为一般的盒子插入当前位置。这在一些特殊情况下很有用(如使用multicol 宏包排版分栏内容的时候),但尺寸过大的浮动体可能使得分页比较困难。

浮动体-双栏排版

\begin{table*}[⟨placement⟩] … \end{table*}:生成一个table浮动体
\begin{figure*}[⟨placement⟩] … \end{figure*}:生成一个figure浮动体

  1. 双栏排版环境下,LATEX提供了 table*figure* 环境用来排版跨栏的浮动体。它们的用法与table 和 figure 一样,不同之处为双栏的 placement 参数只能用 tp 两个位置

浮动体-标题

\caption[短标题]{标题内容}:给图标等浮动添加标题,并自动编号

  1. \caption 的用法非常类似于 \section 等命令,可以用带星号的命令\caption* 生成不带编号的标题。
  2. \caption 命令之后还可以紧跟 \label 命令标记交叉引用。
  3. \caption 生成的标题形如“Figure 1: …”(figure 环境)或“Table 1: …”(table 环境)。 可通过修改 \figurename\tablename 的内容来修改标题的前缀。

\listoftables:生成表格目录
\listoffigures:生成图像目录

浮动体内的并排

我们时常有在一个浮动体里面放置多张图的用法。
最简单的用法就是直接并排放置,也可以通过分段或者换行命令\\排版多行多列的图片

\begin{figure}[htbp] 
	\centering 
	\includegraphics[width=...]{...} 
	\qquad 
	\includegraphics[width=...]{...} \\[...pt] 
	\includegraphics[width=...]{...} 
	\caption{...} 
\end{figure}

// \qquad:用于生成一个四分之一行高的空白水平空间

并排环境下的标题生成

由于标题是横跨一行的,用\caption命令为每个图片单独生成标题就需要借助前文提到的 \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}

生成两个并排图的大标题和各自的abc小标题

\begin{figure}[htbp]
	\centering 
	\begin{subfigure}{...} 
		\centering 
		\includegraphics[width=...]{...} 
		\caption{...} 
	\end{subfigure} 
	\qquad
	\begin{subfigure}{...} 
		\centering 
		\includegraphics[width=...]{...} 
		\caption{...} 
	\end{subfigure} 
\end{figure}
  1. 上述的\begin{subfigure}{}中, 使用了subcaption宏包的功能

数学公式排版

to be continued

宏包

lipsun包

生成段落

\lipsum[options]:生成填充文本段落

  1. \lipsum:如果没有指定数字,它默认生成一个段落
  2. \lipsum[1]:生成编号为1的段落。
  3. \lipsum[1, 3, 5]:生成编号为1、3和5的段落

graphicx包

syntonly包

只编译不生成文件-声明

\syntaxonly:只编译,用于排查错误

\usepackage{syntonly} 
\syntaxonly