Получить имя и глубину нового списка enumitem

Получить имя и глубину нового списка enumitem

У меня есть среда itemize, определенная следующим образом newlist:

\newlist{questions}{enumerate}{2}
\setlist[questions,1]{label=\arabic*.,ref=\arabic*}
...

Мне бы хотелось узнать название среды в произвольной точке внутри одной из этих сред и текущую глубину (или какой-либо эквивалент).

Я обнаружил, что макрос, \@listctrпо-видимому, является именем текущего счетчика списка с нужной мне информацией (например, questionsii), но я не могу сравнить его с именем списка (например \ifthenelse{\equal{\@listctr}{questionsii}}, \ifx\@listctr\questionsiinameс соответствующим questionsiiname, и т. д.).

С простым перечислением я мог бы использовать \@enumdepth, но я не могу найти ничего похожего для enumitemпользовательских списков . Я также в идеале не хотел бы проверять текущую среду, чтобы я мог вызвать это внутри среды внутри списка.

Что я могу сделать, чтобы получить или сохранить+получить эту информацию?

Минимальный рабочий пример:

\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}

решение1

Имя текущего списка можно найти с помощью \@currenvir. Глубина enumitemпользовательского списка хранится в макросе \enitdp@listname. Таким образом, мы можем создать макрос для печати имени списка и текущей глубины:

\makeatletter
\def\currentlist{\@currenvir~\the\csname enitdp@\@currenvir\endcsname}
\makeatother

Поскольку я не совсем понимаю, что вы хотите сделать с этой информацией, я не буду пытаться подробно останавливаться на условном наклонении вашего примера.

\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}

вывод кода

Связанный контент