在以下 mwe 中,中的代码before={...}
不起作用。我相信这与tcolorbox
选项文档中的句子“此外,如果框紧跟标题,则不使用它...”有关before
(版本 4.5.1 的第 81 页tcolorbox
),但此处框没有立即地跟随标题。这是软件包中的错误还是我误解了什么?
\documentclass{article}
\usepackage{tcolorbox}
\begin{document}
\makeatletter
\begin{tcolorbox}[after={\@afterheading}]\end{tcolorbox}
abcd
\begin{tcolorbox}[before={test}]\end{tcolorbox}
\begin{tcolorbox}[before={test}]\end{tcolorbox}
\end{document}
答案1
代码after
在组中,因此您的\@afterheading
部分无效。\@nobreaktrue
由 LaTeX 全局执行,但\everypar
应在下一段重置布尔值的设置随后丢失。 使用\aftergroup
,或使用env/tcolorbox/after
钩子代替after
键\AddToHookNext{env/tcolorbox/after}{\@afterheading}
。 这需要当前的 LaTeX。
\documentclass{article}
\usepackage{tcolorbox}
\begin{document}
\makeatletter
\begin{tcolorbox}[after={\aftergroup\@afterheading}]\end{tcolorbox}
abcd
\begin{tcolorbox}[before={test}]\end{tcolorbox}
\begin{tcolorbox}[before={test}]\end{tcolorbox}
\end{document}