
Ситуация: Я использую 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}