Umbruch zwischen Inhalt und Legende in der Farbbox vermeiden

Umbruch zwischen Inhalt und Legende in der Farbbox vermeiden

Situation: Ich verwende eine tcolorbox, aber manchmal sind Inhalt und Legende der Box durch eine Trennseite getrennt. Das möchte ich vermeiden, aber die Box inhaltlich teilbar lassen.

Ich habe verschiedene Dinge ausprobiert, unter anderem das Unterdrücken des Zeilenumbruchs zwischen dem Inhalt und der Legende (auch wenn das eher die zweitbeste Lösung ist), aber ich nehme an, ich mache es falsch.

Hier ist ein Beispiel für die Situation:

\documentclass{scrbook}

\usepackage[most]{tcolorbox}
\usepackage{setspace}
\usepackage{needspace}
\usepackage{lipsum}
\usepackage[french]{babel}

\newtcolorbox{carnetethno}[1][]{
    breakable, %pour casser les boîtes sur deux pages
    empty,
    before upper*={
        \newcommand{\transfert}{#1}
        \setstretch{1.1}
        \par\noindent\nobreak
    },
    after upper*={
        \par\textsc{\transfert}
    },
}

\begin{document}

    \section{Example}

\lipsum[1-3] \\

Bla~~\\

\begin{carnetethno}[Here the legend]

\lipsum[1]

\end{carnetethno}

\end{document}

Antwort1

Sie können \nopagebreakdirekt vor der Legende hinzufügen:

\newtcolorbox{carnetethno}[1][]{
    breakable, %pour casser les boîtes sur deux pages
    empty,
    before upper*={
        \newcommand{\transfert}{#1}
        \setstretch{1.1}
        \par\noindent\nobreak
    },
    after upper*={
        \nopagebreak\par\textsc{\transfert}% <-- prevent page break before
    },
}

Übrigens kannst du die Legende auch mit der titleTaste bearbeiten. Um sie unter die Box zu setzen, verwende detach title; der Titeltext steht dann mit zur Verfügung \tcbtitletextund der formatierte Titel mit \tcbtitle. Ich schlage vor, du definierst deine tcolorboxmit:

\newtcolorbox{carnetethno}[1][]{
    breakable, %pour casser les boîtes sur deux pages
    empty,
    before upper*={
        \setstretch{1.1}
        \par\noindent\nobreak
    },
    detach title,
    fonttitle=\scshape,
    coltitle=black,
    after upper*={
        \nopagebreak\par\tcbtitle
    },
    #1
}

Ich habe das Argument #1am Ende eingefügt, damit Sie einem bestimmten Feld zusätzliche Optionen zuweisen können.

Vollständiges Beispiel:

\documentclass{scrbook}

\usepackage[most]{tcolorbox}
\usepackage{setspace}
\usepackage{needspace}
\usepackage{lipsum}
\usepackage[french]{babel}

\newtcolorbox{carnetethno}[1][]{
    breakable, %pour casser les boîtes sur deux pages
    empty,
    before upper*={
        \setstretch{1.1}
        \par\noindent\nobreak
    },
    detach title,
    fonttitle=\scshape,
    coltitle=black,
    after upper*={
        \nopagebreak\par\tcbtitle
    },
    #1
}

\begin{document}

    \section{Example}

\lipsum[1-3] \\

% Bla~~\\

\begin{carnetethno}[title={Here the legend}]

\lipsum[1]

\end{carnetethno}

\begin{carnetethno}[title={Here the legend}, coltitle=red]

\lipsum[1]

\end{carnetethno}

\end{document}

vollständiges Beispiel

verwandte Informationen