自定义编号列表
\documentclass[a4paper]{ctexart}
\usepackage{ctex}
\usepackage{xeCJK} %导入这个宏包,就可以支持中文
\usepackage{enumitem}[inline]
\usepackage{ulem}
\begin{document}
%编号列表的自定义主要使用enumitem宏包。主要的计数器如下所示。
%enumerate:
%Counter:enumi、enumii、enumiii、enumiv.
%Label:labelenumi、labelenumii、...
%itemize:只有Label,该列表没有Counter.
%Label:labelitemi、labelitemii...
%discription:只有\descriptionlabel命令。其默认定义如下:
%\newcommand*{\descriptionlabel}[1]{\hspace\labelsep\normalfont\bfseries #1} %\labelsep标签间距,默认0.5em
%在enumerate列表中,编号样式按照1.——>(a)——>i.——>A的顺序嵌套,分别代表\theenumi、\theenumii、\theenumiii、\theenumiv的值。你可以通过计数器命令来指定编号样式,不过要额外加上一个星号,比如\arabic*表示阿拉伯数字。看下面一个例子:
\begin{enumerate} \item 第一
\begin{enumerate} \item 第二
\begin{enumerate} \item 第三
\begin{enumerate} \item 第四
\end{enumerate}
\end{enumerate}
\end{enumerate}
\end{enumerate}
%改为首层小写罗马数,放于圆括号
\renewcommand{\theenumi}{\roman{enumi}}
\renewcommand{\labelenumi}{(\theenumi)}
\begin{enumerate}
\item 更改了第一层的符号格式
\end{enumerate}
%你也可以在ctex宏包被调用(包括ctex文档类被使用)时,在导言区加入如下内容:
%\AddEnumerateCounter{\chinese}{\chinese}{}
%这样就可以将汉字指定为编号样式了。
%宏包enumitem可添加参数于列表后,像\begin{list}[options]
%label: 定义enumerate环境的编号样式,或者itemize环境的符号样式。
%ref: 设置嵌套序号格式,比如[ref=\emph{\alph*}]表示引用的上层序号是强调后的小写字母。你也可以这样写:[label=\alph{enumi}.\roman*]
%label*: 加在enumerate上层序号上,比如上层是2,那么就是2.1、2.1.1,...。
%font/format:设置label的字体。如果环境是description,那么就会设置\item命令后方括号内的文本字体。
%align:对齐方式默认right,也可以选择left/parleft。
%start:初始序号。start=2表示初始序号是2、b、B、ii或II。
%resume:不需要赋值的布尔参数,表示接着上一个enumerate环境的结尾进行编号。
%resume*:不需要赋值的布尔参数,表示完全继承上一个enumerate环境的参数。如果你常常使用这个命令,可以新定义一个列表环境。
%series:给当前列表起名(比如mylist),可以在后文中用resume=mylist进行继续编号。
%style:定义description列表的样式。
%standard:label放在盒子中。
%unboxed:label不放在盒子中,避免异常长度或空格。
%nextline:如果label过长,text会另起一行
%sameline:无论label多长,text从label同一行开始。
%multiline:label会被放在一个宽为leftmargin的parbox中。
%竖直空距topsep、partopsep、parsep、itemsep,以及水平空距left/rightmargin、listparindent、labelwidth、abelsep、itemindent都是可以直接以key=value的形式写在列表环境后作为参数的。
%命令\setlist,用于定义列表环境的样式,包括嵌套列表样式。
\setlist[enumerate]{label=\alph*,ref=Alph*}
\setlist[enumerate,2]{label=\arabic*,ref=\theenumi.\arabic*}
\setlist[itemize]{label=$\bullet$,leftmargin=\parindent}
\setlist[description]{font=\bfseries\uline}
%最后,说一下行内列表。在加载enumerate宏包时使用inline选项即可启用行内列表,环境名是enumerate*。
%参数有如下内容:
%beforeL:在行内列表插入前的文本,一般是冒号。
%itemjoin:各\item之间的文本,一般是逗号或者分号。
%itemjoin*:倒数第二个与最后一个\item间的文本,一般是“,and”或者“,还有”之类。
%接下来看几个小例子。description环境如下所示:
\begin{description}
[font=\bfseries\uline]
\item[这]是粗体。
\item[这] 也是。
\end{description}
%编号数字左端与左页边平齐。
锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦。锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦。
\begin{enumerate}[leftmargin=*]
\item 第一项
\item 第二项
\item 第三项
\end{enumerate}
%编号数字左端与段首缩进位置平齐。
锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦。锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦。
\begin{enumerate}[labelindent=\parindent,leftmargin=*]
\item 第一项
\item 第二项
\item 第三项
\end{enumerate}
%编号项目正文与段首缩进位置平齐。
锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦。锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦。
\begin{enumerate}[leftmargin=\parindent,start=3]
\item 第一项
\item 第二项
\item 第三项
\end{enumerate}
%标签加框如下所示:
\begin{enumerate}[label=\fbox{\Roman*},labelindent=\parindent]
\item 第一项
\item 第二项
\item 第三项
\end{enumerate}
%最后,本书使用了如下5种:
%\begin{description}[font=\bfseries\uline,labelindent=\parindent,itemsep=0pt,parsep=0pt,topsep=0pt,partopsep=0pt]
%\begin{description}[font=\bfseries\ttfamily,itemsep=0pt,parsep=0pt,topsep=0pt,partopsep=0pt]
%\begin{enumerate}[font=\bfseries,labelindent=0pt,itemsep=0pt,parsep=0pt,topsep=0pt,partopsep=0pt]
%\begin{itemize}[font=\bfseries,itemsep=0pt,parsep=pt,topsep=0pt,partopsep=0pt]
%行内列表定义
\newenvironment{inlinee}
{\begin{enumerate*}[label=(\arabic*),font=\rmfamily,
before=\unskip{:},itemjoin={
{;}},itemjoin*={
{,以及:}}]}
{\end{enumerate*}.}
\end{document}