根据 \@enumdepth 自动在 \theenumi、\theenumii 和 \theenumiii 之间切换

根据 \@enumdepth 自动在 \theenumi、\theenumii 和 \theenumiii 之间切换

我正在尝试根据我是否“评分”来重新格式化枚举值,并且我有一个可行的解决方案,但我想知道如何根据我下面发布的最小工作示例在\theenumi\theenumii和之间自动切换:\theenumiii\@enumdepth

\documentclass{article}
\usepackage{ifthen, amsmath, tikz, enumerate}

\newif\ifgrading
\gradingtrue

\newcommand*\circleAns[1]{\tikz[baseline=(char.base)]{
            \node[shape=circle,draw,inner sep=2pt,color=blue] (char) {#1};}}

\makeatletter        
\newcommand{\itemAns}{
    \ifgrading
        \stepcounter{enum\romannumeral\@enumdepth}
        \item[\circleAns{\textcolor{blue}{\theenumi)}}]
    \else \item
    \fi
}
\makeatother

\begin{document}

\begin{enumerate}[a)]
    \item 
    \itemAns
    \item
\end{enumerate}

\end{document}

我尝试使用\theenum\romannumeral\@enumdepth而不是\theenumii,类似于我对 所做的操作\stepcounter{enum\romannumeral\@enumdepth},但没有成功,但我想我明白原因。如果有人对如何更好地实施此解决方案并根据级别进行更新有任何建议,我非常乐意接受建议。

- - - - - - - - - - - - - - 编辑

使用 Donald Arseneau 的解决方案作为基础,我修改了我的实现以自动包含标签:\textcolor{ForestGreen}{\@nameuse{label\@enumctr}} 因此代码

\begin{enumerate}[a)]
    \item 
    \itemAns
    \item 
\end{enumerate}
\begin{enumerate}[a.]
    \item 
    \item 
    \itemAns
\end{enumerate}

生产 所以它具备我需要的功能。如果有人知道重新定位圈出项目的简单方法,请告诉我,但除此之外,我对结果非常满意!

答案1

使用\@nameuse{ }\csname \endcsname

\textcolor{blue}{\@nameuse{theenum\romannumeral\@enumdepth})}

但既然你已经了解\@enumdepth并使用它,你可能已经看到\@enumctr这将简化使用

\textcolor{blue}{\@nameuse{the\@enumctr})}

相关内容