我正在尝试根据我是否“评分”来重新格式化枚举值,并且我有一个可行的解决方案,但我想知道如何根据我下面发布的最小工作示例在\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})}