
Eu tenho um ambiente itemize definido por newlist
:
\newlist{questions}{enumerate}{2}
\setlist[questions,1]{label=\arabic*.,ref=\arabic*}
...
Gostaria de saber em um ponto arbitrário dentro de um desses ambientes qual é o nome do ambiente e qual é a profundidade atual (ou algo equivalente)
Descobri que a macro \@listctr
parece ser o nome do contador da lista atual com as informações que preciso (por exemplo questionsii
), mas não consigo compará-la com o nome da lista (por exemplo \ifthenelse{\equal{\@listctr}{questionsii}}
, \ifx\@listctr\questionsiiname
com apropriado questionsiiname
, etc).
Com um enum simples, eu poderia usar \@enumdepth
, mas não consigo encontrar nada semelhante para enumitem
as listas personalizadas de. Idealmente, também não gostaria de verificar o ambiente atual para poder chamar isso em um ambiente dentro de uma lista.
O que posso fazer para obter ou salvar + obter essas informações?
Exemplo mínimo de trabalho:
\documentclass{article}
\usepackage{enumitem}
\newlist{questions}{enumerate}{2}
\setlist[questions]{label*=\arabic*.}
\makeatletter
\def\currentlist{???} % ???=/@listctr, /@enumctr, etc.
\makeatother
\def\questionsiiname{questionsii}
\begin{document}
\begin{questions}
\item Hello world. The current list is ``\currentlist''.
\begin{questions}
\item My depth is: \ifx\currentlist\questionsiiname 2! \else ??? \fi.
\end{questions}
\end{questions}
\end{document}
Responder1
O nome da lista atual pode ser encontrado com \@currenvir
. A profundidade de uma enumitem
lista personalizada é armazenada na macro \enitdp@listname
. Portanto, podemos construir uma macro para imprimir o nome da lista e a profundidade atual:
\makeatletter
\def\currentlist{\@currenvir~\the\csname enitdp@\@currenvir\endcsname}
\makeatother
Como não tenho certeza do que você deseja fazer com as informações, não tentarei expandir a condicional do seu exemplo.
\documentclass{article}
\usepackage{enumitem}
\newlist{questions}{enumerate}{2}
\setlist[questions]{label*=\arabic*.}
\makeatletter
\def\currentlist{\@currenvir~\the\csname enitdp@\@currenvir\endcsname}%
\makeatother
\def\questionsiiname{questionsii}
\begin{document}
\begin{questions}
\item Hello world. The current list is ``\currentlist’’.
\begin{questions}
\item The current list is ``\currentlist’’
\end{questions}
\end{questions}
\end{document}