カラーボックス内のコンテンツと凡例の間の改ページを回避する

カラーボックス内のコンテンツと凡例の間の改ページを回避する

状況: を使用していますtcolorboxが、ボックスの内容と凡例が改ページによって分離されている場合があります。これを回避し、ボックスをその内容で分割できるようにしたいと考えています。

コンテンツと凡例の間の改行を抑制するなど、さまざまなことを試しましたが (次善の策のように思えますが)、間違っているようです。

状況の例を以下に示します。

\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}

答え1

\nopagebreak凡例の直前に追加できます:

\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
    },
}

ちなみに、凡例はtitleキーで処理することもできます。ボックスの下に配置するには を使用します。detach titleすると、タイトル テキストは で\tcbtitletext、フォーマットされたタイトルは で使用できるようになります\tcbtitle。 を で定義することをお勧めしますtcolorbox:

\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
}

引数を#1最後に置いたので、特定のボックスに追加のオプションを設定できます。

完全な例:

\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}

完全な例

関連情報