选自:http://wiki.ctex.org/index.php/LaTeX/列表

枚举、列举和描述

\begin{list_type}
\item The first item
\item The second item
\item The third etc \ldots
\end{list_type}

默认的 list_type 有 enumerate、 itemize 和 description,区别主要是列项标签的不同。enumerate 是有序的列表;itemize 用圆点;description 需要 \item[label] 指定标签。各种列表环境可以互相嵌套,此时,enuemrate 的标签会自动变化以体现分级层次。

如果不想让列项第一行和标签同行,加一个 \hfill。

\begin{description}
\item[First] \hfill \\
The first item
\item[Second] \hfill \\
The second item
\item[Third] \hfill \\
The third etc \ldots
\end{description}

紧凑的列表

以上的列表环境空白较大,如果需要更紧凑的列表方式,可以选用 mdwlist 宏包提供的 itemize*、enumerate* 和 description* 环境,用法和无星号的版本一致。
定制列表环境
距离

在列表的内部,很容易改变一些距离

\begin{itemize}
\setlength{\itemsep}{1pt}
\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
\item first item
\item second item
\end{itemize}

更详细的参数需要看下面 list 环境。
标签和计数器

枚举的列表计数可以通过其计数器来改变。enumerate 提供了四个计数器 enumi,enumii,enumiii, enumiv 对应不同层次的枚举。

\begin{enumerate}
\setcounter{enumi}{4}
\item fifth element
\end{enumerate}

会产生

5. fifth element

LaTeX 可以用其他格式打印这些计数器的值,
命令例子
\arabic1, 2, 3 ...
\alpha, b, c ...
\AlphA, B, C ...
\romani, ii, iii ...
\RomanI, II, III ...
\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)]
\item The first item
\item The second item
\item The third etc \ldots
\end{enumerate}

行内列表

paralist 宏包提供了 inparaenum 环境,产生不分段的列表。同样支持跟上面 enumerate 宏包类似的格式化标签。

\usepackage{paralist}
......
\textbf{\itshape Inline lists}, which aresequential in nature, just like enumerated lists, but are
\begin{inparaenum}[\itshape a\upshape)]
\item formatted within their paragraph;
\item usually labelled with letters; and
\item usually have the final item prefixed with`and' or `or',
\end{inparaenum} like this example.

list 环境

最有可定制性的当属 list 环境。以上的 enumerate, itemize,description 其本质上都是封装好的 list 环境。

\begin{list}{label}{spacing}
\item First item
\item Second item
\end{list}

其中, label 的内容将会作为标签,放在一个单独的盒子里,出现在每一 item 之前。也可以通过 \item[label] 来实现。

spacing 设定一些距离。通常为空,因为默认距离已经足够好了。

* \topsep 列表顶部与之前内容的额外空白,不含 \baselineskip
* \partopsep 如果列表之前是一个空行,列表顶部的额外空白
* \itemsep 列表各项之间额外的垂直空白
* \parsep 一个 item 中,如果分段,段落间额外空白
* \leftmargin 列表与左边距之间的水平距离,值为非负
* \rightmargin 列表与右边距之间的水平距离,值为非负
* \itemindent 每一 item 第一行的缩进
* \listparindent 每一 item 第一行之后各行的缩进
* \labelsep 标签盒子与每一 item 第一行文本之间距离
* \labelwidth 标签盒子的宽度;如果标签过长,这一宽度会自动变大,直到列表的第一行文本为止
* \makelabel{label} 生成 \item[label] 命令所要求的标签
* \usecounter{ctr} 使用列表项目计数器 ctr,初始值为 0

一个例子

%定义计数器
\newcounter{Lcount}
%标签计数显示为罗马数字
\begin{list}{Item-\Roman{Lcount}}
%使用计数器
{\usecounter{Lcount}
%左右对称
\setlength{\rightmargin}{\leftmargin}}
%开始
\item This is the first item
\item And this is the second item
\end{list}

效果将是

Item-IThis is the first item
Item-II And this is the second item


枚举、列举和描述

\begin{list_type}
 \item The first item
 \item The second item
 \item The third etc \ldots
\end{list_type}

默认的 list_type 有 enumerate、 itemize 和 description,区别主要是列项标签的不同。enumerate 是有序的列表;itemize 用圆点;description 需要 \item[label] 指定标签。各种列表环境可以互相嵌套,此时,enuemrate 的标签会自动变化以体现分级层次。

如果不想让列项第一行和标签同行,加一个 \hfill。

\begin{description}
 \item[First] \hfill \\
 The first item
 \item[Second] \hfill \\
 The second item
 \item[Third] \hfill \\
 The third etc \ldots
\end{description}

紧凑的列表

以上的列表环境空白较大,如果需要更紧凑的列表方式,可以选用 mdwlist 宏包提供的 itemize*、enumerate* 和 description* 环境,用法和无星号的版本一致。

定制列表环境

距离

在列表的内部,很容易改变一些距离

\begin{itemize}
 \setlength{\itemsep}{1pt}
 \setlength{\parskip}{0pt}
 \setlength{\parsep}{0pt}
 \item first item
 \item second item
\end{itemize}

更详细的参数需要看下面 list 环境

标签和计数器

枚举的列表计数可以通过其计数器来改变。enumerate 提供了四个计数器 enumi,enumii,enumiii, enumiv 对应不同层次的枚举。

\begin{enumerate}
 \setcounter{enumi}{4}
 \item fifth element
\end{enumerate}

会产生

5. fifth element

LaTeX 可以用其他格式打印这些计数器的值,

命令例子
\arabic1, 2, 3 ...
\alpha, b, c ...
\AlphA, B, C ...
\romani, ii, iii ...
\RomanI, II, III ...
\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)]
 \item The first item
 \item The second item
 \item The third etc \ldots
\end{enumerate}

行内列表

paralist 宏包提供了 inparaenum 环境,产生不分段的列表。同样支持跟上面 enumerate 宏包类似的格式化标签。

\usepackage{paralist}
 ......
\textbf{\itshape Inline lists}, which are  sequential in nature, just like enumerated lists, but are
\begin{inparaenum}[\itshape a\upshape)]
 \item formatted within their paragraph;
 \item usually labelled with letters; and 
 \item usually have the final item prefixed with  `and' or `or',
\end{inparaenum} like this example.

list 环境

最有可定制性的当属 list 环境。以上的 enumerate, itemize,description 其本质上都是封装好的 list 环境。

\begin{list}{label}{spacing}
 \item First item
 \item Second item
 \end{list}

其中, label 的内容将会作为标签,放在一个单独的盒子里,出现在每一 item 之前。也可以通过 \item[label] 来实现。

spacing 设定一些距离。通常为空,因为默认距离已经足够好了。

  • \topsep 列表顶部与之前内容的额外空白,不含 \baselineskip

  • \partopsep 如果列表之前是一个空行,列表顶部的额外空白

  • \itemsep 列表各项之间额外的垂直空白

  • \parsep 一个 item 中,如果分段,段落间额外空白

  • \leftmargin 列表与左边距之间的水平距离,值为非负

  • \rightmargin 列表与右边距之间的水平距离,值为非负

  • \itemindent 每一 item 第一行的缩进

  • \listparindent 每一 item 第一行之后各行的缩进

  • \labelsep 标签盒子与每一 item 第一行文本之间距离

  • \labelwidth 标签盒子的宽度;如果标签过长,这一宽度会自动变大,直到列表的第一行文本为止

  • \makelabel{label} 生成 \item[label] 命令所要求的标签

  • \usecounter{ctr} 使用列表项目计数器 ctr,初始值为 0

一个例子

%    定义计数器
\newcounter{Lcount}
%   标签计数显示为罗马数字
\begin{list}{Item-\Roman{Lcount}}
%    使用计数器
  {\usecounter{Lcount}
%    左右对称
  \setlength{\rightmargin}{\leftmargin}}
%    开始
\item This is the first item
\item And this is the second item
\end{list}

效果将是

Item-I  This is the first item
Item-II And this is the second item

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部