宏作为 tcolorbox 的选项

宏作为 tcolorbox 的选项

我想将一些选项存储tcolorbox在宏中(因为它们可能会改变)以供以后使用。但以下方法失败了。

\usepackage{tcolorbox}
\begin{document}

\newcommand{\theoption}{colback=red,boxrule=3pt}
\tcbset{myoption/.style={code={\theoption}}}

\begin{tcbitemize}[myoption]
    \tcbitem some text
    \tcbitem some text
    \tcbitem some text
    \tcbitem some text
\end{tcbitemize}

\end{document}

但是选项 colback 和 boxrule 没有任何效果。那么,如何将宏设置为 tcolorbox 的选项

答案1

添加选项并从宏中评估它们的“正确”(但很可能不是唯一)方法是使用

code={\pgfkeysalsofrom{\someoption}}

请不要使用\the...名称,这些名称基本上是为计数器输出名称等“保留”的\thesection

\documentclass{article}

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

\newcommand{\someoption}{colback=red,boxrule=3pt}
\tcbset{myoption/.style={code={\pgfkeysalsofrom{\someoption}}}}

\begin{tcbitemize}[myoption]
    \tcbitem some text
    \tcbitem some text
    \tcbitem some text
    \tcbitem some text
\end{tcbitemize}

\end{document}

在此处输入图片描述

答案2

这不是您问题的答案,但可能是一种解决方法:

\documentclass{article}

\usepackage{tcolorbox}
\tcbuselibrary{raster}

\newenvironment{myitemize}[1][]{%
 \begin{tcbitemize}[colback=red,boxrule=3pt,#1]}
{\end{tcbitemize}}

\begin{document}

\begin{myitemize}
    \tcbitem some text
    \tcbitem some text
    \tcbitem some text
    \tcbitem some text
\end{myitemize}

\end{document}

相关内容