在latex中有三種條列式方法 itemize 、 enumerate 、 discription很常被使用。
本文討論主題有:行距設定, 編號設定, 以及全文設定方式
排版之後, 每一條列項之前會有一文字或符號標籤(label)。在itemize 與enumerate 指令環境下,
條列項之標籤有內定之符號,但也可以自行設定。description 指令環境之標籤則由使用者自行輸入。
每個條列項底下可以再放一層,最多可放六層。
(1) 行距設定-項目與項目間的距離 :
在begin{itemize}使用itemsep調整 -1pt即縮小1pt,1pt則增加1pt.
(2) 調整enumerate數字清單的編號
預設的第一層是阿拉拍數字, 第二層是(a),(b),(c)
documentclass{article}
usepackage{enumerate}
begin{document}
begin{enumerate}
item This is an example of ldots
item ldots the usual enumeration.
begin{enumerate}[a)]
item And this is a ldots
item ldots couple of ldots
end{enumerate}
item
begin{enumerate}[-- i --]
item ldots examples of ldots
item ldots custom-tailored ldots
item ldots enumerations.
newcounter{enumii_saved}
setcounter{enumii_saved}{value{enumii}}
end{enumerate}
Some general comments
begin{enumerate}[-- i --]
setcounter{enumii}{value{enumii_saved}}
如果要換另一個條列式項目, 但編號接續, 使用newcounter{enumii_saved}來操作
item My next point.
setcounter{enumii}{7}
使用setcounter{enumii}{數字}來指定編號號碼
item My eighth point.
end{enumerate}
end{enumerate}
end{document}
(3) enumerate也可以在全文指令環境中調整預設值: 層、標籤格式
表示條列的層:labelitemi與labelitemii
前者代表最外層之item指令環境;後者代表次一層之指令環境。再下一層之指令則為labelitemiii..
此一指令環境之標籤是以阿拉伯數字或英文字母依序標出,控制指令有: arabic, roman, Roman,與Alph。譬如,
renewcommand{labelenumi}{arabic{enumi})}
將把指令環境最外層之標籤改變成1), 2), . . .之形式。同理,下列指令則把標籤變成大寫羅馬字: I., II., . . . 。
renewcommand{labelenumi}{Roman{enumi}}
(4) 設定每一層列舉條文的內縮距離
第一層列舉項之內 縮距離是以leftmargini控制,
最後的字母i 代表第一層; 第二層列舉項則以leftmarginii 控制
用法
在begin{itemize}之前 先下兩行,表示第一層內縮7mm,第2層縮6mm
leftmargini=7mm
leftmarginii=6mm
-------------------------------
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 可以用其他格式打印这些计数器的值,
命令例子
arabic
1, 2, 3 ...
alph
a, b, c ...
Alph
A, B, C ...
roman
i, ii, iii ...
Roman
I, 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 aupshape)]
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