tcolorbox 中某一部分后的边距

tcolorbox 中某一部分后的边距

我喜欢“第 2 节”中黄色 tcolorbox 的漂亮黄色边距(顶部和底部)和间距。不​​幸的是,我只在 或 之后才获得这些边距和间距\section\subsection问题:a) 如果 tcolorbox 前面没有\section或 ,则\subsection顶部边距会更大 b) 在某些情况下,我会丢失两个 tcolorbox 之间的白色间距,请参阅我的示例。特别是灰色 tcolorbox 之间有白色间距,但黄色 tcolorbox 没有。

无论如何,如何获得同样漂亮的边距和间距?当然,在标题之后/之前添加额外的白色间距是没有问题的,例如\section\subsection尊重标题。

\documentclass[a4paper]{scrbook}

\usepackage{xparse}
\usepackage{tcolorbox}
\tcbuselibrary{skins,breakable,xparse}

\NewDocumentEnvironment{Material}{o}% recommend using xparse's arg-type o
    {% begin-Befehle
        \begin{tcolorbox}[%
            parbox=false,% wenn dieser Befehl deaktiviert ist, dann sollte unten setlength{\parskip}{0.5\baselineskip plus2pt minus2pt} aktiviert sein.
            enhanced jigsaw,%
            breakable,% auskommentieren, wenn die Aufgaben in einer einzigen Box zusammenhängen sollen
            grow to left by=2mm,%
            left*=0mm,%
            grow to right by=2mm,%
            right*=0mm,%
            boxrule=0pt,% keine Rahmenlinie
            arc=0mm,% keinen Rundung in den Ecken
            colback=gray!30,% Hintergrundfarbe im Body
            %beforeafter skip balanced=0pt,% kein Abstand davor und dahinter
            ]%
        \subsubsection{Material}
        \IfValueTF{#1}
            {\begin{itemize}[#1]}% optional #1 is given by user
            {\begin{itemize}}% optional #1 has no value
    }%
    {% end-Befehle
        \end{itemize}%
        \end{tcolorbox}%
    }%
    
\NewDocumentEnvironment{Content}{o}% recommend using xparse's arg-type o
    {% begin-Befehle
        \begin{tcolorbox}[%
            parbox=false,% wenn dieser Befehl deaktiviert ist, dann sollte unten setlength{\parskip}{0.5\baselineskip plus2pt minus2pt} aktiviert sein.
            enhanced jigsaw,%
            breakable,% auskommentieren, wenn die Aufgaben in einer einzigen Box zusammenhängen sollen
            grow to left by=2mm,%
            left*=0mm,%
            grow to right by=2mm,%
            right*=0mm,%
            boxrule=0pt,% keine Rahmenlinie
            arc=0mm,% keinen Rundung in den Ecken
            colback=yellow!30,% Hintergrundfarbe im Body
            beforeafter skip balanced=0pt,% kein Abstand davor und dahinter
            ]%
        \subsubsection{Content}
        \IfValueTF{#1}
            {\begin{itemize}[#1]}% optional #1 is given by user
            {\begin{itemize}}% optional #1 has no value
    }%
    {% end-Befehle
        \end{itemize}%
        \end{tcolorbox}%
    }%

\begin{document}

\begin{Content}
\item Content 1
\end{Content}

\begin{Content}
\item Content 1
\end{Content}

\begin{Material}
\item Material 1
\end{Material}

\begin{Material}
\item Material 1
\end{Material}

\subsection{Subsection 1}

\begin{Content}
\item Content 1
\end{Content}

\begin{Content}
\item Content 1
\end{Content}

\begin{Material}
\item Material 1
\end{Material}


\begin{Material}
\item Material 1
\end{Material}

\end{document}

在此处输入图片描述

答案1

对于问题 a),将 \subsubsection 之前的空格省略为:\RedeclareSectionCommand[beforeskip=0pt]{subsubsection}

对于问题 b),注释掉该行beforeafter skip balanced=0pt,。为了避免影响文档的其余部分,请仅在框中的子部分之前执行此操作,然后恢复类的原始值。

我还添加了frame empty,以避免在 boxrule=0pt 的情况下仍然可见的小框架规则。

\documentclass[a4paper]{scrbook}
\usepackage{xparse}
\usepackage{tcolorbox}
\tcbuselibrary{skins,breakable,xparse}

\NewDocumentEnvironment{Material}{o}% recommend using xparse's arg-type o
    {% begin-Befehle
        \begin{tcolorbox}[%
            parbox=false,% wenn dieser Befehl deaktiviert ist, dann sollte unten setlength{\parskip}{0.5\baselineskip plus2pt minus2pt} aktiviert sein.
            enhanced jigsaw,%
            breakable,% auskommentieren, wenn die Aufgaben in einer einzigen Box zusammenhängen sollen
            grow to left by=2mm,%
            left*=0mm,%
            grow to right by=2mm,%
            right*=0mm,%
            boxrule=0pt,% keine Rahmenlinie
            frame empty,% to avoid the little frame rules still visible
            arc=0mm,% keinen Rundung in den Ecken
            colback=gray!30,% Hintergrundfarbe im Body
            %beforeafter skip balanced=0pt,% kein Abstand davor und dahinter
            ]%
        \let\savedsubsubsection\subsubsection%
        \RedeclareSectionCommand[beforeskip=0pt]{subsubsection}%
        \subsubsection{Material}
        \let\subsubsection\savedsubsubsection%
        \IfValueTF{#1}
            {\begin{itemize}[#1]}% optional #1 is given by user
            {\begin{itemize}}% optional #1 has no value
    }%
    {% end-Befehle
        \end{itemize}%
        \end{tcolorbox}%
    }%
    
\NewDocumentEnvironment{Content}{o}% recommend using xparse's arg-type o
    {% begin-Befehle
        \begin{tcolorbox}[%
            parbox=false,% wenn dieser Befehl deaktiviert ist, dann sollte unten setlength{\parskip}{0.5\baselineskip plus2pt minus2pt} aktiviert sein.
            enhanced jigsaw,%
            breakable,% auskommentieren, wenn die Aufgaben in einer einzigen Box zusammenhängen sollen
            grow to left by=2mm,%
            left*=0mm,%
            grow to right by=2mm,%
            right*=0mm,%
            boxrule=0pt,% keine Rahmenlinie
            frame empty,% to avoid the little frame rules still visible
            arc=0mm,% keinen Rundung in den Ecken
            colback=yellow!30,% Hintergrundfarbe im Body
            %beforeafter skip balanced=0pt,% kein Abstand davor und dahinter
            ]%
        \let\savedsubsubsection\subsubsection%
        \RedeclareSectionCommand[beforeskip=0pt]{subsubsection}%
        \subsubsection{Content}
        \let\subsubsection\savedsubsubsection%
        \IfValueTF{#1}
            {\begin{itemize}[#1]}% optional #1 is given by user
            {\begin{itemize}}% optional #1 has no value
    }%
    {% end-Befehle
        \end{itemize}%
        \end{tcolorbox}%
    }%

\begin{document}

\begin{Content}
\item Content 1
\end{Content}

\begin{Content}
\item Content 1
\end{Content}

\begin{Material}
\item Material 1
\end{Material}

\begin{Material}
\item Material 1
\end{Material}

\subsection{Subsection 1}

\begin{Content}
\item Content 1
\end{Content}

\begin{Content}
\item Content 1
\end{Content}

\begin{Material}
\item Material 1
\end{Material}


\begin{Material}
\item Material 1
\end{Material}

\subsubsection{Ordinary subsubsection}
Something something

\subsection{Another subsection}
\subsubsection{With a subsubsection}
Something something
\subsubsection{And a second subsubsection}
Something something
\subsubsection{And a third subsubsection}
Something something
\subsubsection{And another subsubsection}
Something something

\end{document}

在此处输入图片描述 在此处输入图片描述

相关内容