
Ich habe dieses MWE für einetcolorbox
\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{skins,breakable}
\usepackage{blindtext}
\newcommand{\blsn}[2]{
\begin{tcolorbox}[
sharp corners, breakable, frame hidden, enhanced, boxrule=0pt, before skip=30pt, after skip=30pt,
borderline west={3pt}{0pt}{red},
segmentation style={red, line width=0.75pt, solid},
colback=red!10,
]
\textbf{Situation} \textit{(#1)}\\[2mm]
#2
\end{tcolorbox}
}
\newcommand{\secc}[1]{\noindent\parbox{\textwidth}{\section{#1}}}
\begin{document}
\blindtext
\blsn{arg1}{arg2}
\blindtext
\section{Skip before ignored}
\blsn{arg1}{arg2}
\blindtext
\end{document}
Das erste funktioniert wie es soll. Aber warum wird es skip before
beim zweiten ignoriert?
Antwort1
In tcolorbox.sty
Zeile 304 haben wir:
before skip balanced/.style={before={%
\ifnum\lastnodetype=-1\relax%
\else%
\par%
\ifvmode%
\iftcb@minipage%
\ifdim\parskip>\z@\relax%
\addvspace{-\parskip}%
\fi%
\else%
\ifdim\prevdepth<\z@\relax%
\addvspace{\glueexpr#1-\parskip}%
\else%
\ifdim\prevdepth>.3\baselineskip\relax%
\addvspace{\glueexpr#1-\parskip}%
\else%
\addvspace{\glueexpr#1+.3\baselineskip-\prevdepth-\parskip}%
\fi%
\fi%
\fi%
\nointerlineskip%
\fi%
\fi%
\lineskip\z@skip%
\noindent%
}},
Ich behaupte nicht, alles zu verstehen, aber ich sehe einen Test im vertikalen Modus.
Mit \leavevmode\par
, im Befehl \bsn
erhalten wir dies before skip
am Anfang der Seite und auch nach dem Befehl\section
\documentclass{article}
%https://tex.stackexchange.com/questions/705470/why-is-before-skip-ignored-in-a-tcolorbox
\usepackage{tcolorbox}
\tcbuselibrary{skins,breakable}
\usepackage{blindtext}
\usepackage{showframe}%<-- comment in the final document
\newcommand{\blsn}[2]{
\leavevmode\par%<-- line added
\begin{tcolorbox}[
sharp corners, breakable, frame hidden, enhanced, boxrule=0pt, before skip=30pt, after skip=30pt,
borderline west={3pt}{0pt}{red},
segmentation style={red, line width=0.75pt, solid},
colback=red!10,
]
\textbf{Situation} \textit{(#1)}\\[2mm]
#2
\end{tcolorbox}
}
\begin{document}
\blsn{arg1}{arg2}
\blindtext
\section{Skip no more ignored}
\blsn{arg1}{arg2}
\blindtext
\end{document}
Antwort2
Ok, ich habe die Antwort auf mein Problem gefunden (auch wenn ich sie nicht verstehe). Das Problem tritt auf, wenn ich diesen Befehl verwende
\newcommand{\secc}[1]{\noindent\parbox{\textwidth}{\section{#1}}}
anstatt\section