使用创建的 itemize 类列表中的标签enumitem
似乎不遵循\@listdepth
。考虑以下内容。我们定义两种类型的列表
\documentclass{article}
\usepackage{enumitem}
\newlist{foolist}{itemize}{2}
\newlist{barlist}{itemize}{2}
\setlist[foolist,1]{label=\textbullet}
\setlist[foolist,2]{label=\textendash}
\setlist[barlist,1]{label=\textbullet}
\setlist[barlist,2]{label=\textendash}
对于任何一种类型的列表,当列表未嵌套时,我们都应该得到一个项目符号,当列表嵌套时,我们都应该得到一个破折号。然而,实际上,只有当父列表与嵌套列表是同一类型时,才会出现这种情况。
\begin{document}
\makeatletter
\begin{foolist}
\item Foo \the\@listdepth
\begin{foolist}
\item Foo \the\@listdepth
\end{foolist}
\end{foolist}
\begin{foolist}
\item Foo \the\@listdepth
\begin{barlist}
\item Bar \the\@listdepth
\end{barlist}
\end{foolist}
\makeatother
\end{document}
上面的代码产生
* Foo 1
- Foo 2
* Foo 2
* Bar 2
尽管\@listdepth
最后barlist
设置了两个 2,但标签是一个项目符号。
我怎样才能使标签完全依赖于值,\@listdepth
而不管列表的类型?
答案1
您可以将\@listdepth
其用作密钥的一部分label
:
\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\newlist{foolist}{itemize}{2}
\newlist{barlist}{itemize}{2}
\makeatletter
\setlist[foolist]{label={\ifnum\@listdepth=\@ne\textbullet\else\textendash\fi}}
\setlist[barlist]{label={\ifnum\@listdepth=\@ne\textbullet\else\textendash\fi}}
\makeatother
\begin{document}
\makeatletter
\begin{foolist}
\item Foo \the\@listdepth
\begin{foolist}
\item Foo \the\@listdepth
\end{foolist}
\end{foolist}
\begin{foolist}
\item Foo \the\@listdepth
\begin{barlist}
\item Bar \the\@listdepth
\end{barlist}
\end{foolist}
\makeatother
\end{document}