
Situação: Eu uso um tcolorbox
, mas às vezes o conteúdo e a legenda da caixa ficam separados por uma quebra. Quero evitar isso, mas deixar a caixa quebrável em seu conteúdo.
Tentei coisas diferentes, inclusive suprimir a quebra de linha entre o conteúdo e a legenda (mesmo que seja a segunda melhor opção), mas suponho que estou fazendo errado.
Aqui está um exemplo da situação:
\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}
Responder1
Você pode adicionar \nopagebreak
logo antes da legenda:
\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
},
}
A propósito, você também pode manipular a legenda com a title
chave. Para colocá-lo abaixo da caixa, use detach title
; o texto do título fica disponível com \tcbtitletext
e o título formatado com \tcbtitle
. Sugiro definir o seu tcolorbox
com:
\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
}
Coloquei o argumento #1
no final, para que você possa definir opções extras para uma caixa específica.
Exemplo completo:
\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}