
У меня есть среда 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}