
状況: を使用しています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}