Obtenha o nome e a profundidade da nova lista de enumitem

Obtenha o nome e a profundidade da nova lista de enumitem

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 \@listctrparece 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\questionsiinamecom apropriado questionsiiname, etc).

Com um enum simples, eu poderia usar \@enumdepth, mas não consigo encontrar nada semelhante para enumitemas 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 enumitemlista 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}

saída de código

informação relacionada