我无法为 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}