枚举、列举和描述
\begin{list_type}
\end{list_type}
默认的 list_type 有 enumerate、 itemize 和 description,区别主要是列项标签的不同。enumerate 是有序的列表;itemize 用圆点;description 需要 \item[label] 指定标签。各种列表环境可以互相嵌套,此时,enuemrate 的标签会自动变化以体现分级层次。
如果不想让列项第一行和标签同行,加一个 \hfill。
\begin{description}
\end{description}
紧凑的列表
以上的列表环境空白较大,如果需要更紧凑的列表方式,可以选用 mdwlist 宏包提供的 itemize*、enumerate* 和 description* 环境,用法和无星号的版本一致。
定制列表环境
距离
在列表的内部,很容易改变一些距离
\begin{itemize}
\end{itemize}
更详细的参数需要看下面 list 环境。
标签和计数器
枚举的列表计数可以通过其计数器来改变。enumerate 提供了四个计数器 enumi,enumii,enumiii, enumiv 对应不同层次的枚举。
\begin{enumerate}
\end{enumerate}
会产生
5. fifth element
LaTeX 可以用其他格式打印这些计数器的值,
命令
\arabic
\alph
\Alph
\roman
\Roman
\fnsymbol
% 重定义第一级计数显示
\renewcommand{\theenumi}{\Roman{enumi}}
\renewcommand{\labelenumi}{\theenumi}
% 重定义第二级计数显示
\renewcommand{\theenumii}{\Alph{enumii}}
\renewcommand{\labelenumii}{(\theenumii)}
这样看起来有些麻烦。有时候直接写
\renewcommand{\labelenumi}{\Roman{enumi}}
但是这样有一个缺点:如果在列表内部引用这些计数器,就会按原来的格式打印。
对列举 itemize 而言,无须计数。标签的形式可以通过 \item[label] 来改变。或者通过各级 \labelitemi,\labelitemii,\labelitemiii,\labelitemiv。所以
\item[$\star$]
等价于
\renewcommand{\labelitemi}{$\star$}
enumerate 宏包
enumerate 宏包为 enumerate 提供了更灵活的标签。可以使用 A,a,I,i,1 作为可选项产生 \Alph,\alph,\Roman,\roman,\arabic 的效果。
usepackage{enumerate}
......
\begin{enumerate}[(i)]
\end{enumerate}
行内列表
paralist 宏包提供了 inparaenum 环境,产生不分段的列表。同样支持跟上面 enumerate 宏包类似的格式化标签。
\usepackage{paralist}
\textbf{\itshape Inline lists}, which are
\begin{inparaenum}[\itshape a\upshape)]
\end{inparaenum} like this example.
list 环境
最有可定制性的当属 list 环境。以上的 enumerate, itemize,description 其本质上都是封装好的 list 环境。
\begin{list}{label}{spacing}
其中, label 的内容将会作为标签,放在一个单独的盒子里,出现在每一 item 之前。也可以通过 \item[label] 来实现。
spacing 设定一些距离。通常为空,因为默认距离已经足够好了。
一个例子
%
\newcounter{Lcount}
%
\begin{list}{Item-\Roman{Lcount}}
%
%
%
\item This is the first item
\item And this is the second item
\end{list}
效果将是
Item-I
Item-II And this is the second item