tcolorbox 下部的新环境

tcolorbox 下部的新环境

我想为 tcolorbox 的下半部分使用环境,而不仅仅是tcblower命令。我尝试使用以下代码,但失败了。

\documentclass{article}
\usepackage{tcolorbox}

\newenvironment{lowerpart}{\tcblower}{}

\begin{document}

% This works
\begin{tcolorbox}
Upper part
\tcblower
Lower part
\end{tcolorbox}

% This fails
\begin{tcolorbox}
Upper part
\begin{lowerpart}
Lower part
\end{lowerpart}
\end{tcolorbox}

\end{document}

显示的错误是

! Extra }, or forgotten \endgroup.
\endminipage ...pagefalse \color@endgroup \egroup 
                                                  \expandafter \@iiiparbox \...
l.16 \begin{lowerpart}

这个问题可能与 tcolorbox 中的 savelowerto 选项在包装器命令中失败。但由于问题不一样,我不知道相同的解决方案是否适用于此处,也不知道如何应用于我的代码。

答案1

正如 egreg 已经评论过的,问题的核心是群体层面。\tcblower关闭一个群体/环境(简称:上部minipage)并打开另一个群体/环境(简称:minipage下部)。

得益于etoolbox自动加载的包tcolorbox,您可以\tcblower在环境真正启动之前很早就放入lowerpart

\documentclass{article}
\usepackage{tcolorbox}

\newenvironment{lowerpart}{}{}
\BeforeBeginEnvironment{lowerpart}{\tcblower}

\begin{document}

% This works
\begin{tcolorbox}
Upper part
\tcblower
Lower part
\end{tcolorbox}

% This works too
\begin{tcolorbox}
Upper part
\begin{lowerpart}
Lower part
\end{lowerpart}
\end{tcolorbox}

\end{document}

在此处输入图片描述

但是,我不会冒险将这种新环境与诸如此类lowerpart的棘手事物结合起来。savelowerto

而不是使用真实的下部,也许,只需用 画一条线\tcbline就可以了。这可以不用技巧来使用:

\documentclass{article}
\usepackage[skins]{tcolorbox}

\newenvironment{lowerpart}{\tcbline}{}

\begin{document}

% This works
\begin{tcolorbox}
Upper part
\tcblower
Lower part
\end{tcolorbox}

% This works too
\begin{tcolorbox}
Upper part
\begin{lowerpart}
Lower part
\end{lowerpart}
\end{tcolorbox}

\end{document}

相关内容