enumitem 是通过 key=value 选项 重塑 itemize、enumerate 和 description 的标准包。您无需使用 \renewcommand 手动覆盖内部命令,而是将设置写入环境的方括号 — \begin{enumerate}[label=(\alph*), leftmargin=*] 中。标签格式、项目之间的间距、边距、编号开始或继续的位置,甚至内联(插入)列表和新定义的列表类型:几乎有关列表的所有内容都在这里。
键=值的想法
用\usepackage{enumitem} 将其加载到序言中,三个基本列表环境获得一个可选参数。在方括号内写入以逗号分隔的key=value 对 - \begin{itemize}[...] - 并配置一个列表。如果一个值完全用大括号括起来,则外部对将被剥离(默认的键值行为),因此为了保留大括号本身,您可以将它们加倍。该软件包由哈维尔·贝索斯 (Javier Bezos) 维护;当前的 CTAN 版本是 v3.11 (2025-02-06)。
\usepackage{enumitem}
% ...
\begin{itemize}[itemsep=1ex, leftmargin=1cm]
\item 余白と項目間を調整した箇条書き
\item 二つめの項目
\end{itemize}相同的键可以在层次结构中被覆盖 - 对于整个文档、每个列表类型或一个列表(通过\setlist,如下)。最具体的值获胜,因此您可以设置全局策略并仅在需要时覆盖。
标签和参考格式(label、ref)
在enumerate 中,标签设置为label=。在值内部,\arabic、\alph、\Alph、\roman 和 \Roman(\arabic* 等)的加星号形式代表该级别的当前计数器。因此,label=(\arabic*) 给出 (1) (2) (3),label=\alph*) 给出 a) b) c),label=\Roman*. 给出 I。三.这些带星号的表格无需争论;它们是扩展为标签内计数器值的特殊拼写。
\begin{enumerate}[label=(\alph*)]
\item りんご
\item みかん
\item ぶどう
\end{enumerate}默认情况下,label= 设置还控制交叉引用 (\ref) 的外观。要为参考文献提供不同的格式,请添加ref=。例如,您可以将列表内标签打印为带括号的 (1),同时使 \ref 生成裸露的 1。
\begin{enumerate}[label=(\arabic*), ref=\arabic*]
\item \label{step:one} 下ごしらえ
\item 加熱する
\end{enumerate}
手順~\ref{step:one} に戻る。请注意,label 和ref 值是移动参数,因此脆弱的命令可能需要\protect(带星号的计数器本身就可以)。它还有助于记住更改 label= 会同时更新该级别的计数器表示(\theenumi 等)。
间距和边距(itemsep、leftmargin,...)
LaTeX内部使用的长度直接成为enumitem中的键名。垂直:topsep(列表上方和下方)、partopsep(列表跟随段落时的额外位)、parsep(一个条目内的段落之间)和itemsep(条目之间)。水平:leftmargin / rightmargin(侧边距)、labelsep(标签到正文间隙)、labelwidth(标签框宽度)、itemindent 和 enumitem 自己的 labelindent(从外部到标签框左边缘的间隙)。
| 密钥 | 含义 | 轴 |
|---|---|---|
topsep | 列表上方和下方的空间 | 垂直 |
partopsep | 列表在段落后面时的额外空格 | 垂直 |
parsep | 一个条目内段落之间的空格 | 垂直 |
itemsep | 条目之间的空格 | 垂直 |
leftmargin | 列表主体的左边距 | 水平 |
labelsep | 标签和条目正文之间的间隙 | 水平 |
labelwidth | 放置标签的盒子的宽度 | 水平 |
labelindent | 从外部到标签框的间隙(由enumitem添加) | 水平 |
align | 标签对齐(left / right(默认)/ parleft) | — |
这些不是独立的;它们由\leftmargin + \itemindent = \labelindent + \labelwidth + \labelsep 绑定。因此,将 * 或 ! 赋予某些键,让 enumitem 计算其余部分。特别是 leftmargin=* 是调整标签左边距大小的日常模式,而 labelsep=* 当您希望正文从固定位置开始时非常方便。 align= 控制标签是左对齐、右对齐(默认)还是左对齐 parbox — 整理数字和标记的排列方式。
紧凑列表和快捷方式(nosep、noitemsep、wide)
一些快捷键可以快速调整间距。 nosep 将条目周围和条目之间的所有垂直空间归零(topsep、partopsep、parsep 和 itemsep 一起位于 0pt),以形成紧密排列的列表。 noitemsep 仅删除项目间和段落间空格 (itemsep=0pt, parsep=0pt),同时保留列表上方和下方的空格。
\begin{itemize}[nosep]
\item 詰まった項目その一
\item 詰まった項目その二
\item 詰まった項目その三
\end{itemize}另一个便捷键是wide。它将左边距清空,以便标签作为文本的一部分读取,并且像普通段落一样设置条目(在内部它扩展为 align=left, leftmargin=0pt, labelindent=\parindent, labelwidth=0pt, itemindent=! 等)。要更改缩进,请传递一个值,如 wide=\parindent 中。
并且要以enumerate 包的短样式编写enumerate 标签,请使用\usepackage[shortlabels]{enumitem} 加载它。然后在括号中写A、a、I、i 或1 作为第一个元素,分别表示\Alph*、\alph*、\Roman*、\roman* 或\arabic*(例如\begin{enumerate}[(1)])。
开始和恢复编号(开始、恢复)
还有用于编号的键。 start= 设置第一项的编号(start=5 从 5 开始)。要中断一个段落,然后继续从上一个 enumerate 编号 ,请使用 resume。要继承先前列表的选项设置,请使用resume*(此带星号的形式仅在环境的括号中有意义)。
\begin{enumerate}
\item 最初の項目
\item 二つめの項目
\end{enumerate}
途中に説明の段落が入る。
\begin{enumerate}[resume]
\item 三つめの項目(番号が続く)
\end{enumerate}resume 在本地继续。要将多个单独的列表作为一个全局单元进行线程编号,请使用“系列”功能:使用 series=name 标记起始列表,然后在后面的列表上使用 resume=name 或 resume*=name。
全局设置和新列表类型(\setlist、\newlist)
每次都写相同的设置很乏味。 \setlist 将设置批量应用于选定的列表类型和级别。 \setlist[enumerate,1]{...} 的目标是enumerate 的级别1,\setlist[itemize]{...} 的目标是itemize 的所有级别,而\setlist{...}(无括号)则到达每个列表的每个级别。带星号的 \setlist* 添加之前的设置而不是覆盖它们。
% プリアンブルで一括設定
\setlist{nosep} % すべてのリストの空きを詰める
\setlist[itemize]{leftmargin=*} % itemize の左余白を自動調整
\setlist[enumerate,1]{label=(\arabic*), ref=\arabic*}更进一步,您可以定义自己的列表类型。 \newlist{name}{type}{max-depth} 将三个基本列表(enumerate、itemize 或 description)之一克隆到新环境中,然后使用 \setlist[name]{...} 查看它(您至少必须设置标签)。因为你可以给它一个合乎逻辑的名称,所以手稿的意图读起来更清楚。
\newlist{steps}{enumerate}{1}
\setlist[steps]{label=\textbf{Step \arabic*.}, leftmargin=*}
% 本文では独自の環境として使える
\begin{steps}
\item お湯を沸かす
\item 麺を入れる
\end{steps}内联(运行)列表
您还可以在段落内水平设置列表 - “内联列表”。将包加载为\usepackage[inline]{enumitem},您将获得加星标的环境enumerate*、itemize* 和description*。它们共享所显示的对应项的标签,并且 label= 等键照常工作。
\usepackage[inline]{enumitem}
% ...
必要なものは
\begin{enumerate*}[label=(\arabic*)]
\item 小麦粉
\item 砂糖
\item 塩
\end{enumerate*}
の三つです。内联列表中的标点符号可以使用itemjoin(在项目之间;默认情况下为空格)、itemjoin*(用于最后一项之前的不同分隔符)和afterlabel(在标签之后;默认为~)等键进行调整。请注意,内联列表项默认情况下是装箱的,因此浮动、嵌套列表和显示的数学不能进入内部(如果需要,请使用mode=unboxed)。它们适合简短的磨合短语。