tcolorbox 的自定义环境无法使用某些选项

tcolorbox 的自定义环境无法使用某些选项

我无法为 tcolorbox 方程式环境定义自定义环境。当我为我的彩色盒子ams 对齐选项我得到错误:

LaTeX Error: \begin{tcolorbox} on input line 494 ended by \end{myenv}. (\end{myenv} 

答案来自使用新环境时,LaTeX 错误:输入行 x 上的 \begin{tcolorbox} 由 \end{myenv} 结束我以为我能解决它。但是虽然这个问题中的例子有效,但我的却不行。

因此使用这个环境是可行的

 \newenvironment{myenv}
 {\tcolorbox[hbox]}
   {\endtcolorbox}

但是当我使用这个时:

\newenvironment{myenv}
{\tcolorbox[ams align]}
  {\endtcolorbox}

我收到上述错误。哪里出了问题?如何解决?

答案1

foo通过编写启动环境时\begin{foo}会发生几件事;其中,当前环境的名称存储在宏中\@currenvir,然后\foo展开宏。这就是为什么在定义环境包装器时,使用内部宏\foo和总是一个好主意的原因\endfoo:这样你(通常)会得到更清晰的错误消息。

然而,tcolorbox事情却有所不同,而且 \tcolorbox(更确切地说,几次扩展之后的其他一些宏也设置了\@currenvir

\documentclass[twocolumn]{article}% twocol for smaller snapshot

\usepackage{tcolorbox}

\begin{document}

\csname@currenvir\endcsname
\begin{center}
\csname@currenvir\endcsname
\end{center}
\csname@currenvir\endcsname
\begin{tcolorbox}
\csname@currenvir\endcsname
\end{tcolorbox}

\end{document}

在此处输入图片描述

我不太清楚这种选择背后的理由,但我猜这也是为什么提供一个tcolorbox版本的原因,即:\newenvironment\newtcolorbox

\documentclass{article}

\usepackage{tcolorbox}
\tcbuselibrary{theorems}

\newtcolorbox{myenv}{ams align}

\begin{document}

\begin{myenv}
a &= b & c&= d \\
e &= f
\end{myenv}

\end{document}

在此处输入图片描述

相关内容