在 tcolorbox 的代码={} 中使用 \noindent 会产生奇怪的垂直间距

在 tcolorbox 的代码={} 中使用 \noindent 会产生奇怪的垂直间距

我采用了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}

相关内容