如何创建一个列表,其项目既是
- 枚举(a、b、c、d、…)
\item[texthere]
并允许通过?设置描述。
我在 Windows 上使用 MikTex。
答案1
编辑
Ben 的评论:
我是否还可以有一个单独的列表类,比如 enumdescript,这样我就不必每次想要使用其中一个列表时手动应用设置?
包裹enumitem
提供了一种定义您自己的列表环境的简单方法。命令\newlist
与setlist
相关命令结合使用。\newlist
您可以使用设置来定义您自己的列表。在下面的例子中,我定义了深度为 2 的\setlist
环境。这两个命令在enumdescript
文档。
\documentclass{scrbook}
\usepackage{enumitem}
\newcounter{descriptcount}
\newlist{enumdescript}{description}{2}
\setlist[enumdescript,1]{%
before={\setcounter{descriptcount}{0}%
\renewcommand*\thedescriptcount{\alph{descriptcount}}}
,font=\bfseries\stepcounter{descriptcount}\thedescriptcount~
}
\setlist[enumdescript,2]{%
before={\setcounter{descriptcount}{0}%
\renewcommand*\thedescriptcount{\roman{descriptcount}}}
,font=\bfseries\stepcounter{descriptcount}\thedescriptcount~
}
\begin{document}
\begin{enumdescript}
\item item one
\item item two
\item[Some Text] item three
\begin{enumdescript}
\item item one
\item item two
\item[Some Text] item three
\end{enumdescript}
\item item four
\item item five
\end{enumdescript}
\end{document}
原始答案:
使用包enumitem
在最新版本中:
\documentclass{scrbook}
\usepackage{enumitem}
\newcounter{descriptcount}
\renewcommand*\thedescriptcount{\alph{descriptcount}}
\begin{document}
\begin{description}[%
before={\setcounter{descriptcount}{0}},%
,font=\bfseries\stepcounter{descriptcount}\thedescriptcount~]
\item item one
\item item two
\item[Some Text] item three
\end{description}
\end{document}
答案2
这实际上是对 Marco Daniel 的回答的增强,与问题略有偏离。但我认为,它仍然比其他地方更适合这里。
对于常见问题列表,我需要一个枚举的描述列表,以便我可以在其中引用项目,因此我添加了一些内容:
我添加了更多自定义计数器(我需要 4 个)并重新定义了它们
\newcounter{enumdesci} \newcounter{enumdescii}[enumdesci] % note the optional reset value \newcounter{enumdesciii}[enumdescii] \newcounter{enumdesciv}[enumdesciii] % \renewcommand*{\theenumdesci}{\Roman{enumdesci}} % the default is "\arabic{enumdesci}" \renewcommand*{\theenumdescii}{\theenumdesci.\Alph{enumdescii}} \renewcommand*{\theenumdesciii}{\theenumdescii.\arabic{enumdesciii}} \renewcommand*{\theenumdesciv}{\theenumdesciii.\alph{enumdesciv}}
我用四个不同的此处计数器的表示仅用于说明。
如果你在最后一个计数器后也需要一个句号,请注意在哪里添加它(与上面的版本相比,哪里需要删除;在我看来,上面的第一个版本更好,也可以在
enumdescript
下面的定义中添加尾点):\renewcommand*{\theenumdesci}{\Roman{enumdesci}.} \renewcommand*{\theenumdescii}{\theenumdesci\Alph{enumdescii}.} \renewcommand*{\theenumdesciii}{\theenumdescii\arabic{enumdesciii}.} \renewcommand*{\theenumdesciv}{\theenumdesciii\alph{enumdesciv}.}
一旦定义,我发现这对其他列表也很有用,但现在
hyperref
抱怨计数器不是唯一的(参见hyperref
文档,例如mafp 引用),所以我不得不在其他行之后直接添加几行:% for "hyperref", not needed without this or for a single list: \newcounter{enumdesc} \newcommand*{\theHenumdesci}{\theenumdesc\theenumdesci} \newcommand*{\theHenumdescii}{\theenumdesc\theenumdescii} \newcommand*{\theHenumdesciii}{\theenumdesc\theenumdesciii} \newcommand*{\theHenumdesciv}{\theenumdesc\theenumdesciv}
现在部分内容或多或少改编自Marco 的回答– 定义一个新列表(此处
enumdescript
)并设置级别。记住,我说过,我需要 4 个。\newlist{enumdescript}{description}{4} %for a single list (without "hyperref" the "\phantomsection"s must be removed, too): \setlist[enumdescript,1]{before={\setcounter{enumdesci}{0}},style=nextline,leftmargin=0pt,topsep=0.5\baselineskip,% font={\phantomsection\normalfont\normalsize\bfseries\refstepcounter{enumdesci}\theenumdesci~}} \setlist[enumdescript,2]{style=nextline,leftmargin=0.75em,labelindent=0.75em,topsep=0.5\baselineskip,% font={\phantomsection\normalfont\normalsize\bfseries\refstepcounter{enumdescii}\theenumdescii~}} \setlist[enumdescript,3]{style=nextline,leftmargin=1.5em,labelindent=1.5em,topsep=0.5\baselineskip,% font={\phantomsection\normalfont\normalsize\bfseries\refstepcounter{enumdesciii}\theenumdesciii~}} \setlist[enumdescript,4]{style=nextline,leftmargin=2.25em,labelindent=2.25em,topsep=0.5\baselineskip,% font={\phantomsection\normalfont\normalsize\bfseries\refstepcounter{enumdesciv}\theenumdesciv~}}
注意
before={\setcounter{enumdesci}{0}}
在第一级,如果您开始一个新列表,它将重置计数器。我还\phantomsection
从“hyperref”包中添加了一些 s,并替换了\stepcounter
s,以便使用\refstepcounter
s 进行引用。边距和标签缩进应根据所需缩进和使用的字体进行调整。可以为较短的项目更改样式nextline
,有关详细信息,请参阅“enumitem”文档。对于
hyperref
多个列表,enumdesc
必须添加增加计数器的命令。最好在before
第一级定义的关键中完成此操作。因此,这变成%for more than one list and "hyperref": \setlist[enumdescript,1]{before={\stepcounter{enumdesc}\setcounter{enumdesci}{0}},% style=nextline,leftmargin=0pt,topsep=0.5\baselineskip,% font={\phantomsection\normalfont\normalsize\bfseries\refstepcounter{enumdesci}\theenumdesci~}}
对于内部“目录”或概述(常见问题解答是更大文档的一部分),我使用新命令定义了附加列表:
\newlist{edtoclist}{itemize}{4} \setlist[edtoclist,1]{label=\hspace*{1.25em},labelwidth=*,leftmargin=*} \setlist[edtoclist,2]{label=\hspace*{1.3em},labelwidth=*,leftmargin=*} \setlist[edtoclist,3]{label=\hspace*{2.1em},labelwidth=*,leftmargin=*} \setlist[edtoclist,4]{label=\hspace*{3.0em},labelwidth=*,leftmargin=*} \newcommand*{\edtitem}[2]{\item[\ref{#1}] \hyperref[#1]{#2}}
当然,这里也必须是 4 个级别。
\hspace*
需要根据字体、计数器定义和实际级别深度进行手动调整。对于整个列表,必须根据enumdescript
级别手动调整级别。此外,项目必须手动复制。
总计(这里只使用了 3 个列表级别):
\documentclass{article}
\usepackage[ngerman,english]{babel} % needed for "blindtext",
% "english" is the active language
\usepackage [pangram,random]{blindtext} % for some filler text
\usepackage{lipsum,kantlipsum} % also for filler text
\usepackage{enumitem}
\usepackage[%
colorlinks=true,%
linkcolor=blue,%
]{hyperref}
%-----------------------%
% Further settings for "enumitem"
%-----------------------%
% Custom counters:
\newcounter{enumdesci}
\newcounter{enumdescii}[enumdesci]
\newcounter{enumdesciii}[enumdescii]
\newcounter{enumdesciv}[enumdesciii]
% Redefinition:
\renewcommand*{\theenumdesci}{\Roman{enumdesci}}
\renewcommand*{\theenumdescii}{\theenumdesci.\Alph{enumdescii}}
\renewcommand*{\theenumdesciii}{\theenumdescii.\arabic{enumdesciii}}
\renewcommand*{\theenumdesciv}{\theenumdesciii.\alph{enumdesciv}}
% For "hyperref":
\newcounter{enumdesc}
\newcommand*{\theHenumdesci}{\theenumdesc\theenumdesci}
\newcommand*{\theHenumdescii}{\theenumdesc\theenumdescii}
\newcommand*{\theHenumdesciii}{\theenumdesc\theenumdesciii}
\newcommand*{\theHenumdesciv}{\theenumdesc\theenumdesciv}
%
\newlist{enumdescript}{description}{4}
\setlist[enumdescript,1]{before={\stepcounter{enumdesc}\setcounter{enumdesci}{0}},style=nextline,leftmargin=0pt,%
font={\phantomsection\normalfont\normalsize\bfseries\refstepcounter{enumdesci}\theenumdesci~}}
\setlist[enumdescript,2]{style=nextline,leftmargin=0.75em,labelindent=0.75em,%
font={\phantomsection\normalfont\normalsize\bfseries\refstepcounter{enumdescii}\theenumdescii~}}
\setlist[enumdescript,3]{style=nextline,leftmargin=1.5em,labelindent=1.5em,%
font={\phantomsection\normalfont\normalsize\bfseries\refstepcounter{enumdesciii}\theenumdesciii~}}
\setlist[enumdescript,4]{style=nextline,leftmargin=2.25em,labelindent=2.25em,%
font={\phantomsection\normalfont\normalsize\bfseries\refstepcounter{enumdesciv}\theenumdesciv~}}
%-----------------------%
% Definition of a new list for own "TOC":
\newlist{edtoclist}{itemize}{4}
\setlist[edtoclist,1]{label=\hspace*{1.1em},labelwidth=*,leftmargin=*}
\setlist[edtoclist,2]{label=\hspace*{1.37em},labelwidth=*,leftmargin=*}
\setlist[edtoclist,3]{label=\hspace*{2.16em},labelwidth=*,leftmargin=*}
\setlist[edtoclist,4]{label=\hspace*{2.94em},labelwidth=*,leftmargin=*}
\newcommand*{\edtitem}[2]{\item[\ref{#1}] \hyperref[#1]{#2}}
%-----------------------%
\begin{document}
\section*{Overview}
% first level
\begin{edtoclist}
\edtitem{bltxt-xmpl}{``blindtext'' examples}
% second level
\begin{edtoclist}
\edtitem{bltxt-xmplen}{English}
% third level
\begin{edtoclist}
\edtitem{bltxt-xmplen1}{Example~1}
\edtitem{bltxt-xmplen2}{Example~2}
\end{edtoclist}
% second level
\edtitem{bltxt-xmplde}{German}
% third level
\begin{edtoclist}
\edtitem{bltxt-xmplde1}{Beispiel~1}
\edtitem{bltxt-xmplde2}{Beispiel~2}
\end{edtoclist}
\end{edtoclist}
% first level
\edtitem{lkl-xmpl}{``lipsum'' and derived ``kantlipsum''}
% second level
\begin{edtoclist}
\edtitem{lips-xmpl}{``lipsum'' examples}
% third level
\begin{edtoclist}
\edtitem{lips-xmpl10}{Tenth section}
\edtitem{lips-xmpl20}{Twentieth section}
\end{edtoclist}
% second level
\edtitem{klips-xmpl}{``kantlipsum'' examples}
% third level
\begin{edtoclist}
\edtitem{klips-xmpl15}{Fifteenth section}
\edtitem{klips-xmpl30}{Thirtieth section}
\end{edtoclist}
\end{edtoclist}
\end{edtoclist}
%\newpage
\section*{Examples}
% first level
\begin{enumdescript}
\item[``blindtext'' examples\label{bltxt-xmpl}]
~\\[-2\baselineskip]
% second level
\begin{enumdescript}
\item[English\label{bltxt-xmplen}]
~\\[-2\baselineskip]
% third level
\begin{enumdescript}
\item[Example~1:\label{bltxt-xmplen1}]
\blindtext[1]
\item[Example~2:\label{bltxt-xmplen2}]
\blindtext[1]
\end{enumdescript}
% second level
\item[German\label{bltxt-xmplde}]
~\selectlanguage{ngerman}\\[-2\baselineskip]
% third level
\begin{enumdescript}
\item[Beispiel~1:\label{bltxt-xmplde1}]
\blindtext[1]
\item[Beispiel~2:\label{bltxt-xmplde2}]
\blindtext[1]
\end{enumdescript}
\selectlanguage{english}
\end{enumdescript}
% first level
\item[``lipsum'' and derived ``kantlipsum''\label{lkl-xmpl}]
~\\[-2\baselineskip]
% second level
\begin{enumdescript}
\item[``lipsum'' examples\label{lips-xmpl}]
~\\[-2\baselineskip]
% third level
\begin{enumdescript}
\item[Tenth section\label{lips-xmpl10}]
\lipsum[10]
\item[Twentieth section\label{lips-xmpl20}]
\lipsum[20]
\end{enumdescript}
% second level
\item[``kantlipsum'' examples\label{klips-xmpl}]
~\\[-2\baselineskip]
% third level
\begin{enumdescript}
\item[Fifteenth section\label{klips-xmpl15}]
\kant[15]
\item[Thirtieth section\label{klips-xmpl30}]
\kant[30]
\end{enumdescript}
\end{enumdescript}
\end{enumdescript}
\end{document}
答案3
您可以使用此enumerate
包来实现此目的:
\documentclass{scrbook}
\usepackage{enumerate}
\begin{document}
\begin{enumerate}[a)]
\item item one
\item item two
\end{enumerate}
\end{document}
答案4
使用该enumitem
包可以扩展enumerate
环境,以便拥有类似描述的功能。与扩展环境的相反方法相比,description
新方法enumdescript
可以采用可选的标签格式化命令。
\documentclass{article}
\usepackage{enumitem}
\makeatletter
\newlist{enum@descript}{enumerate}{1}
\setlist[enum@descript]{label=\arabic*.}
\newenvironment{enumdescript}[1][]{
\begin{enum@descript}[#1]
\let\old@item\item
\renewcommand{\item}[1][]{
\old@item\ifx&##1&\else\textbf{##1}~\fi
\@ifnextchar\par\@gobble\relax
}
}{\end{enum@descript}}
\makeatother
\begin{document}
\begin{enumdescript}[label=\roman*)]
\item[first]\label{one}Text
\item [second] \label{two} Text
\item
[third]
\label{three} Text
\end{enumdescript}
\begin{enumdescript}[label=\{\alph*\}]
\item\label{four}Text
\item \label{five} Text
\item
\label{six} Text
\end{enumdescript}
Items \ref{one}, \ref{two}, \ref{three}, \ref{four}, \ref{five}, and \ref{six}.
\end{document}
我还没有实现列表嵌套。