如何在 \tcbset 中定义宏

如何在 \tcbset 中定义宏

我想构造一个带有三个参数myset/.code的样式(名为)tcolorbox。在这种样式中,将重新定义一个宏。请查看以下 MWE。但它无法编译。我认为样式的定义有些问题。有人可以告诉我如何修改我的定义吗?

\documentclass{article}
\usepackage[most]{tcolorbox}
\begin{document}

\newcounter{mycounter}
\stepcounter{mycounter}

\newcommand{\mycontent}{\alph{mycounter}}

\tcbset{myset/.code n args={%
  \renewcommand{\mycontent}{%
     #1\#2{mycounter}#3%
   }}}

\begin{tcbitemize}
  \tcbitem \mycontent
  \tcbitem [myset={(}{alph}{)}] \mycontent % I want get a typeout of "(a)"
\end{tcbitemize}

\end{document}

答案1

如果您说code n args,后面的第一个=必须是参数的数量,在本例中是 3。然后,为了“添加反斜杠”,您需要使用\csname

\documentclass{article}
\usepackage[most]{tcolorbox}
\begin{document}

\newcounter{mycounter}
\stepcounter{mycounter}

\newcommand{\mycontent}{\alph{mycounter}}

\tcbset{myset/.code n args={3}{%
  \renewcommand{\mycontent}{%
     #1\csname #2\endcsname{mycounter}#3%
   }}}

\begin{tcbitemize}
  \tcbitem \mycontent
  \tcbitem [myset={(}{alph}{)}] \mycontent % I want get a typeout of "(a)"
\end{tcbitemize}

\end{document}

在此处输入图片描述

相关内容