Ich möchte eine neue Seite einfügen innerhalb einerAbonnieren-Umgebung, aber das folgende Beispiel zeigt, dass der \newpage
Befehl ignoriert wird:
\documentclass[11pt]{book}
\usepackage{lipsum}
\usepackage[breakable,skins]{tcolorbox}
\newtcolorbox{activitybox}{%
breakable,
enhanced,
colback=white,
colframe=black,
coltitle=white,
title={\bfseries Title}
}
\begin{document}
\begin{activitybox}
\lipsum[1]
\newpage
\lipsum[1]
\end{activitybox}
\end{document}
Die Dokumentation schlägt vor, dass die einzige Möglichkeit hierfür die Erstellung einesFake-Break (Seite 373)wo ich zwischen den Befehlen zwei separate tcolorbox
Umgebungen mit den auf bzw. \newpage
eingestellten Skin-Parametern erstelle .skin=enhancedfirst
skin=enhancedlast
\documentclass[11pt]{book}
\usepackage{lipsum}
\usepackage[breakable,skins]{tcolorbox}
\newtcolorbox{activitybox}[1][]{%
breakable,
enhanced,
colback=white,
colframe=black,
coltitle=white,
#1
}
\begin{document}
\begin{activitybox}[title=Title,skin=enhancedfirst]
\lipsum[1]
\end{activitybox}
\newpage
\begin{activitybox}[skin=enhancedlast]
\lipsum[1]
\end{activitybox}
\end{document}
Das Problem bei dieser Idee ist, dass die neue Seite möglicherweise in Umgebungen platziert werden muss. Diese müssen dann vorzeitig geschlossen und erneut geöffnet werden, wobei sicherzustellen ist, dass der Umgebungszustand wie zuvor fortgesetzt wird. Es kann auch weitere Anfangs- und Enddefinitionen innerhalb dieser Umgebungen geben, die nicht aufgerufen werden sollten, da die Umgebung noch nicht wirklich beendet wurde und noch über die Seite fortgesetzt wird.
Eine alternative Lösung ist die Nutzung derbreak at
(Seite 355)tcolorbox
Parameter, der bei einer bestimmten Länge abbricht . Dies ist in meiner Situation unbrauchbar, da die Anzahl der tcolorbox
Umgebungen in die Hunderte geht und bei jeder Bearbeitung des Dokuments jeder break at
Parameter neu berechnet werden muss, was wiederum nur nach einem vollständigen Rendern des Dokuments möglich ist, um die neue Länge manuell messen zu können.
Auf einer tieferen Ebene ist ein Seitenumbruch möglich, wennbreakable
(Seite 351)ist aktiviert und die tcolourbox
Umgebung muss sich über mehr als eine Seite erstrecken. Ist es möglich, diesen Seitenumbruch auf einer höheren Ebene auszulösen oder zumindest den Rest der Seite mit leerem vertikalen Raum zu füllen?
Antwort1
Du könntest benutzen
\documentclass[11pt]{book}
\usepackage{lipsum}
\usepackage[breakable,skins]{tcolorbox}
\newtcolorbox{activitybox}[1][]{%
breakable,
enhanced,
colback=white,
colframe=black,
coltitle=white,
#1
}
\newcommand*{\fakebreak}{\par\vspace{\textheight minus \textheight}\pagebreak}
\begin{document}
\begin{activitybox}[title=Title]
\lipsum[1]
\fakebreak
\lipsum[1]
\end{activitybox}
\end{document}
Beachten Sie jedoch, dass das Ergebnis anders ist, da die Box bis zum Seitenende gefüllt wird!
Wenn Sie ein ähnliches Verhalten für automatische Pausen wünschen, verwenden Sie die Option height fixed for=first and middle
:
\documentclass[11pt]{book}
\usepackage{lipsum}
\usepackage[breakable,skins]{tcolorbox}
\newtcolorbox{activitybox}[1][]{%
breakable,
enhanced,
colback=white,
colframe=black,
coltitle=white,
#1
}
\newcommand*{\fakebreak}{\par\vspace{\textheight minus \textheight}\pagebreak}
\begin{document}
\begin{activitybox}[title=Title,height fixed for=first and middle]
\lipsum[1]
\fakebreak
\lipsum[1-2]
\parbox{\linewidth}{\lipsum[3-4]}% \parbox used to force an early page break
\lipsum[5-7]
\end{activitybox}
\end{document}