我采用了code={}
来自的解决方案自动将前缀附加到 tcolorbox 的标题在标题中添加前缀,tcolorbox
并且间距变得很奇怪随后的使用mytitlebox
环境(见框 2 之前的间距)。
事实证明,如果我删除它\noindent
(如在框 3 之前所做的那样),这个问题就解决了。
虽然这解决了测试用例,但它并不能解决我实际使用案例中的问题,所以我希望理解这个问题可以帮助我找到我的实际问题。
问题:
为什么\noindent
后续使用的时候会出现问题mytitlebox
,但是第一次使用的时候却没问题mytitlebox
。
代码:
\documentclass{article}
\usepackage[most]{tcolorbox}
\pagecolor{white}
\newcommand{\NoIndent}{\noindent}% So we can disable this in the test case.
\makeatletter
\newtcolorbox{mytitlebox}[1][]{%
%%nobeforeafter,
coltitle=black,
colbacktitle=orange!25,
%% Adapted from
%% https://tex.stackexchange.com/questions/473438/auto-append-prefix-to-tcolorboxs-title
code={%
\NoIndent% <-- works fine if this if commented
\pgfkeysalsofiltered{#1}%
\expandafter\ifblank\expandafter{\kvtcb@title}%
{\pgfkeysalsofiltered{title=Note}}%
{\pgfkeysalsofiltered{before title=Note:~}}%
},
#1,
}
\makeatother
\pagecolor{white}
\begin{document}
\noindent
Some text before box 1.
\begin{mytitlebox}[title={My Title 1}, colbacktitle={cyan!20}]
Text in box.
\end{mytitlebox}
Text after box 1 and before box 2.
\begin{mytitlebox}[title={My Title 2}, colbacktitle={green!20}]
Text in box.
\end{mytitlebox}
Text after box 2 and before box 3, but with \verb|\def\NoIndent{}|
\def\NoIndent{}%
\begin{mytitlebox}[title={My Title 3}, colbacktitle={orange!20}]
Text in box.
\end{mytitlebox}
\end{document}