Manuellen Seitenumbruch in tcolorbox erstellen

Manuellen Seitenumbruch in tcolorbox erstellen

Ich möchte eine neue Seite einfügen innerhalb einerAbonnieren-Umgebung, aber das folgende Beispiel zeigt, dass der \newpageBefehl 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 tcolorboxUmgebungen mit den auf bzw. \newpageeingestellten Skin-Parametern erstelle .skin=enhancedfirstskin=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)tcolorboxParameter, der bei einer bestimmten Länge abbricht . Dies ist in meiner Situation unbrauchbar, da die Anzahl der tcolorboxUmgebungen in die Hunderte geht und bei jeder Bearbeitung des Dokuments jeder break atParameter 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 tcolourboxUmgebung 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}

verwandte Informationen