列表就是将所要表达的内容分为若干个条目并按一定的顺序排列,达到简明、直观的效果。在论文的写作中会经常使用到列表。LaTeX 中常见的列表环境有 enumerate、itemize 和 description。这三种列表环境的主要区别是列表项标签的不同:
1. enumerate 是有序的列表。例如:
1 \begin{enumerate}2 \item This is the first item3 \item This is the second item4 \item This is the third item5 \end{enumerate}
生成效果如下:
2. itemize 以圆点作为标签。例如:
1 \begin{itemize}2 \item This is the first item3 \item This is the second item4 \item This is the third item5 \end{itemize}
生成效果如下:
3. description 是解说列表,可以指定标签。例如:
1 %\usepackage{pifont}2 \begin{description}3 \item[\ding{47}] This is the first item4 \item[\ding{47}] This is the second item5 \item[\ding{47}] This is the third item6 \end{description}
生成效果如下:
列表环境也可以互相嵌套,默认情况下不同层级的标签不同,以体现分级层次。
上述三种列表都是基于 list 列表环境定制的,也就是说 list 环境是功能最强大的列表环境,只是由于它使用起来比较麻烦,所以很少被使用。其实上述的三种列表在通过一定的扩展后可以产生许多样式的列表,这些基本就可以满足平时的需要了。下面说一下怎么进行功能扩展。enumitem 宏包可以对 enumerate、itemize 和 description 环境进行功能扩展,并且提供了简便的语法。enumitem 宏包允许用户在上述三种列表中通过 key=value 的键值方式进行设置。可选的设置项包括:
• 垂直距离
– topsep
– partopsep – parsep – itemsep• 水平距离
– leftmargin
– rightmargin – listparindent – labelwidth – labelsep – itemindent这些距离的含义可以从图示中清楚的反映出来,更详细的说明可以参看 enumitem 宏包的说明文档。
下面是我在论文中对 enumerate 环境做的设置:
1 \usepackage{enumerate}2 \usepackage{enumitem}3 \setlist[enumerate,1]{label=(\arabic*).,font=\textup,4 leftmargin=7mm,labelsep=1.5mm,topsep=0mm,itemsep=-0.8mm}5 \setlist[enumerate,2]{label=(\alph*).,font=\textup, 6 leftmargin=7mm,labelsep=1.5mm,topsep=-0.8mm,itemsep=-0.8mm}
\setlist[enumerate,1] 表示对一级列表进行设置,\setlist[enumerate,1] 表示对二级列表进行设置。这样一级列表的标签就是括号加阿拉伯数字加点,二级标签是括号加小写英文字母加点。话不多说,看一下效果。
1 \begin{enumerate}2 \item 春花秋月何时了, 往事知多少? 小楼昨夜又东风, 故国不堪回首月明中。 3 雕栏玉砌应犹在, 只是朱颜改。问君能有几多愁?恰似一江春水向东流。4 \item 春花秋月何时了, 往事知多少? 小楼昨夜又东风, 故国不堪回首月明中。5 \begin{enumerate}6 \item 雕栏玉砌应犹在, 只是朱颜改。问君能有几多愁? 恰似一江春水向东流。7 \item 春花秋月何时了, 往事知多少? 小楼昨夜又东风, 故国不堪回首月明中。 8 \end{enumerate}9 \item 雕栏玉砌应犹在, 只是朱颜改。问君能有几多愁?恰似一江春水向东流。10 \end{enumerate}
编译后的效果如下: