避免顏色框中內容和圖例之間的斷裂

避免顏色框中內容和圖例之間的斷裂

情況:我使用 a 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
    },
}

順便說一句,您也可以用 key 來處理圖例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}

完整的例子

相關內容