
Tengo un entorno detallado definido por newlist
:
\newlist{questions}{enumerate}{2}
\setlist[questions,1]{label=\arabic*.,ref=\arabic*}
...
Me gustaría saber en un punto arbitrario dentro de uno de estos entornos cuál es el nombre del entorno y cuál es la profundidad actual (o algún equivalente)
Descubrí que la macro \@listctr
parece ser el nombre del contador de la lista actual con la información que necesito (por ejemplo questionsii
), pero parece que no puedo compararla con el nombre de la lista (por ejemplo \ifthenelse{\equal{\@listctr}{questionsii}}
, \ifx\@listctr\questionsiiname
con el correspondiente questionsiiname
, etc.).
Con una enumeración simple, podría usar \@enumdepth
, pero no puedo encontrar nada similar para enumitem
las listas personalizadas de . Idealmente, tampoco me gustaría verificar el entorno actual para poder llamarlo dentro de un entorno dentro de una lista.
¿Qué puedo hacer para obtener o guardar+obtener esta información?
Ejemplo de trabajo mínimo:
\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}
Respuesta1
El nombre de la lista actual se puede encontrar con \@currenvir
. La profundidad de una enumitem
lista personalizada se almacena en la macro \enitdp@listname
. Entonces podemos construir una macro para imprimir el nombre de la lista y la profundidad actual:
\makeatletter
\def\currentlist{\@currenvir~\the\csname enitdp@\@currenvir\endcsname}
\makeatother
Como no estoy muy seguro de qué quiere hacer con la información, no intentaré ampliar el condicional de su ejemplo.
\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}