我尝试使用禁用tcblisting
或tcolorbox
环境(来自包)后自动开始新段落的功能。如果我将此代码放在文档主体中,那么我会得到所需的结果:tcolorbox
\tcbset{after={\par\noindent}}
但如果我将其放在序言中(我认为它应该在那儿),那么我得到的却是一些错误的信息:
(该框似乎成为了上一行的一部分。)这个问题似乎不会发生在其他一些选项中,例如\tcbset{colback=yellow}
在两个位置都给出相同的结果。
这是有意为之吗?如果是,如何after={\par\noindent}
在序言中全局设置该选项?
用于意外输出的代码:
\documentclass[a4paper,10pt]{scrartcl}
\usepackage{tcolorbox}
\tcbset{after={\par\noindent}}
\begin{document}
%\tcbset{after={\par\noindent}}
Before the box.
\begin{tcolorbox}
The box.
\end{tcolorbox}
After the box.
\end{document}
附言:我在本地机器和 Overleaf 上尝试使用不同的编译器(LuaLaTeX、XeLaTeX 和 pdfLaTeX)运行上述代码,每次都出现上述情况。
答案1
默认情况下,tcolorbox 使用autoparskip
。此选项设置在文档的开头和before
的after
键值对依赖于 的当前值\parskip
。
after
如果您在序言中更改,则您正在禁用autoparskip
。在这种情况下,您必须before
自行设置。
\documentclass[a4paper,10pt]{scrartcl}
\usepackage{tcolorbox}
\tcbset{before={\par\pagebreak[0]\smallskip\parindent=0pt},after={\par\noindent}}
\begin{document}
Before the box.
\begin{tcolorbox}
The box.
\end{tcolorbox}
After the box.
\end{document}
答案2
在序言中,使用\AtBeginDocument{\tcbset{after={\par\noindent}}}
。
\documentclass[a4paper,10pt]{scrartcl}
\usepackage{tcolorbox}
\AtBeginDocument{\tcbset{after={\par\noindent}}}
\begin{document}
%\tcbset{after={\par\noindent}}
Before the box.
\begin{tcolorbox}
The box.
\end{tcolorbox}
After the box.
\end{document}