\tcolorboxenvironment 与 hbox 不兼容?

\tcolorboxenvironment 与 hbox 不兼容?

以下 MWE 失败并显示错误消息\begin{tcolorbox} on input line 10 ended by \end{foo}。删除该选项hbox将成功,但当然不会达到将框缩小到尽可能最小的宽度的预期效果。

\documentclass{article}

\usepackage{tcolorbox}

\newenvironment{foo}{begin}{end}
\tcolorboxenvironment{foo}{hbox}

\begin{document}

\begin{foo}
  asdf
\end{foo}

\end{document}

这是错误还是故意为之?我在文档中找不到任何相关信息。如果这不是错误,有什么方法可以解决这个问题吗?


(当然,实际上,我的环境要复杂一些,这就是为什么我不只是使用\newtcolorbox。阻止我这样做的主要问题是它有几个可选参数,例如,\NewDocumentEnvironment{foo}{ O{one} O{two} }{begin with #1 and #2}{end}我希望颜色框环境也是一个tabular环境。无论如何,问题仍然存在,因为想要从包中装箱环境(而不想接触包代码)的应用程序会遇到同样的问题。)

答案1

这样就可以了

\documentclass{article}

\usepackage{tcolorbox}

%\newenvironment{foo}{begin}{end}
%\tcolorboxenvironment{foo}{hbox}

\newtcolorbox{foo}{hbox}

\begin{document}

\begin{foo}
  asdf
\end{foo}

\end{document}

在此处输入图片描述

答案2

\tcolorboxenvironmentcapture目前仅与模式minipage(默认)兼容,与hbox或不兼容fitbox。增强功能将其扩展到其他模式正在进行中并且可能会包含在下一个版本(4.52)中。

在此之前,解决方法是先收集环境主体,然后在相同的扩展步骤中插入\begin{tcolorbox}\end{tcolorbox}(即在环境的开始代码中)。这可以使用xparse的参数类型来完成(或者,如果您想采用老式方法,b则使用)。environ

\documentclass{article}

\usepackage{tcolorbox}

\NewDocumentEnvironment{foo}{ +b }{%
  \begin{tcolorbox}[hbox]
    begin%
    #1%
    end%
  \end{tcolorbox}
}{}

\begin{document}

\begin{foo}
  asdf
\end{foo}

\end{document}

相关内容