LaTeX 列表样式笔记
整理一下 LaTeX 关于列表样式的自定义配置。
基本使用
无序列表 itemize,默认使用黑点 1
2
3
4\begin{itemize}
\item First item
\item Second item
\end{itemize}
有序列表 enumerate,默认使用 1. 编号
1
2
3
4\begin{enumerate}
\item First item
\item Second item
\end{enumerate}
\item
命令可以提供一个可选参数,用于将有序列表的编号或者无序列表的符号替换成自定义内容。
1
2
3
4\begin{enumerate}
\item A nested item.\label{itref}
\item[*] A starred item.
\end{enumerate}
两种列表支持嵌套,也可以互相嵌套 1
2
3
4
5
6
7
8\begin{enumerate}
\item First
\begin{itemize}
\item Subitem 1
\item Subitem 2
\end{itemize}
\item Second
\end{enumerate}
在各级列表中,对应的符号和编号样式也有所不同:
- 无序列表:依次为黑色圆点,
-,*,.; - 有序列表:依次为
1.,(a),i.,A;

1 | \begin{multicols}{2} |
补充:
- 各级无序列表的符号由命令
\labelitemi到\labelitemiv定义,可以简单地重新定义它们; - 各级有序列表的符号由命令
\labelenumi到\labelenumiv定义,重新定义这些命令需要用到计数器。
除此之外,还有一个类似的关键字列表,此时 \item[]
的可选参数一般是必选的,并且会被加粗。 1
2
3
4\begin{description}
\item[Enumerate] Numbered list.
\item[Itemize] Non-numbered list.
\end{description}
itemize、enumerate和description环境都是基于广义列表环境list实现的。
修改样式
LaTeX 本身并未提供方便的列表样式定制功能,通常使用
enumitem 宏包定制。 1
\usepackage{enumitem}
修改列表编号和符号
通过 label=... 可以修改列表编号和符号。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29\begin{enumerate}[label=\arabic*.] % 1.
\item Item 1
\item Item 2
\end{enumerate}
\begin{enumerate}[label=\alph*.] % a.
\item Item 1
\item Item 2
\end{enumerate}
\begin{enumerate}[label=\roman*.] % i.
\item Item 1
\item Item 2
\end{enumerate}
\begin{itemize}[label=\textbullet] % •
\item Item 1
\item Item 2
\end{itemize}
\begin{itemize}[label=--] % –
\item Item 1
\item Item 2
\end{itemize}
\begin{itemize}[label=\textasteriskcentered] % *
\item Item 1
\item Item 2
\end{itemize}
如果给 enumitem 宏包加上 shortlabels
选项,就可以更简单地实现
1 | \begin{enumerate}[1.] |
调整缩进与间距
主要考虑如下参数:
leftmargin列表整体的左缩进leftmargin=*自动计算缩进,使列表与父环境左对齐,而不是固定缩进
topsep列表与上下文段落的垂直间距itemsep每项之间的垂直间距
例如移除左缩进 1
2
3
4
5\begin{enumerate}[leftmargin=*]
\item Item 1
\item Item 2
\item Item 3
\end{enumerate}
移除各项之间的垂直间距 1
2
3
4
5\begin{enumerate}[itemsep=0pt]
\item Item 1
\item Item 2
\item Item 3
\end{enumerate}
对于嵌套列表,可以为每层嵌套单独调整
leftmargin,避免缩进过深或过浅。 1
2
3
4
5
6
7
8\begin{enumerate}
\item First
\begin{itemize}[leftmargin=1.5em]
\item Subitem 1
\item Subitem 2
\end{itemize}
\item Second
\end{enumerate}
全局配置
可以使用 \setlist 命令对列表进行全局配置。
1
2
3
4\usepackage{enumitem}
\setlist[itemize]{label=--, leftmargin=2em, itemsep=0.5em}
\setlist[enumerate]{label=\arabic*., leftmargin=2em, itemsep=0.3em}