
Ich entwickle eine Vorlage und wollte mit dem Paket tcolorbox auf eine bestimmte Weise eine Box erstellen. Ich möchte, dass die Formatierung so aussieht, wenn die Box von einer Seite auf eine andere umgebrochen wird:
Und auf der nächsten Seite würde es so aussehen:
Wenn es keine Unterbrechung gäbe, würde es so aussehen:
Bisher sieht mein Code folgendermaßen aus:
\definecolor{ChapterBackground}{HTML}{101010}
\definecolor{ChapterForeground}{HTML}{e93820}
\newtcolorbox{solution}[1][]{%
enhanced,
breakable,
boxrule = 0pt,frame hidden,
borderline west = {4pt}{0pt}{ChapterBackground},
colback = CoverForeground!10,
sharp corners,
coltitle = ChapterForeground!85,
rounded corners = southeast,
rounded corners = northeast,
arc is angular,
arc = 3mm,
attach boxed title to top left,
boxed title style = {%
enhanced,
colback=ChapterBackground,
top=0pt,
bottom=0pt,
sharp corners,
rounded corners = northeast,
arc is angular,
arc = 2mm,
colframe = ChapterBackground,
rightrule = 0pt,
bottomrule = 0pt,
toprule = 0pt,
},
title = {\bfseries Solution:},
underlay = {% Leaf fold
\path[fill = tcbcolback!80!black] ([yshift = 3mm]interior.south east)--++(-0.4,-0.1)--++(0.1,-0.2);
\path[draw = tcbcolframe,
shorten <=-0.05mm,
shorten >=-0.05mm,
draw opacity=0] ([yshift = 3mm]interior.south east)--++(-0.4,-0.1)--++(0.1,-0.2);
},
overlay unbroken and first={%
\path
let
\p1=(title.north east),
\p2=(frame.north east)
in
node[anchor=west,
color=black!70]
at (title.east) {#1};}}
Wenn jemand weiß, wie man diese sehr spezifischen kleinen Änderungen vornimmt, wäre ich sehr dankbar.
Antwort1
Ich glaube, Sie wollen ungefähr Folgendes:
\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{skins, breakable}
\definecolor{ChapterBackground}{HTML}{101010}
\definecolor{ChapterForeground}{HTML}{e93820}
\definecolor{CoverForeground}{HTML}{ee0000}
\newtcolorbox{solution}[1][]{%
enhanced,
skin first = enhanced,
skin middle = enhanced,
skin last = enhanced,
breakable,
boxrule = 0pt,
frame hidden,
borderline west = {4pt}{0pt}{ChapterBackground},
colback = CoverForeground!10,
coltitle = ChapterForeground!85,
sharp corners,
rounded corners = southeast,
rounded corners = northeast,
arc is angular,
arc = 3mm,
attach boxed title to top left,
boxed title style = {%
enhanced,
colback = ChapterBackground,
colframe = ChapterBackground,
top = 0pt,
bottom = 0pt,
sharp corners,
rounded corners = northeast,
arc is angular,
arc = 2mm,
rightrule = 0pt,
bottomrule = 0pt,
toprule = 0pt,
},
title = {\bfseries Solution:},
overlay unbroken = {%
\node[anchor=west, color=black!70] at (title.east) {#1};
},
overlay first = {%
\node[anchor=west, color=black!70] at (title.east) {#1};
\path[fill = tcbcolback!80!black]
([yshift = 3mm]interior.south east) -- ++(-0.4,-0.1) -- ++(0.1,-0.2);
},
overlay middle = {%
\path[fill = tcbcolback!80!black]
([yshift = -3mm]interior.north east) -- ++(-0.4,0.1) -- ++(0.1,0.2);
\path[fill = tcbcolback!80!black]
([yshift = 3mm]interior.south east) -- ++(-0.4,-0.1) -- ++(0.1,-0.2);
},
overlay last = {%
\path[fill = tcbcolback!80!black]
([yshift = -3mm]interior.north east) -- ++(-0.4,0.1) -- ++(0.1,0.2);
}
}
\usepackage{lipsum}
\begin{document}
\begin{solution}[This is a box]
\lipsum[1]
\end{solution}
\vspace{5cm}
\begin{solution}[This is a box]
\lipsum[1-2]
\end{solution}
\end{document}
Eine Schachtel, die mehrmals aufgebrochen ist, hätte im Mittelteil zwei Eselsohren (also „gefaltete“ Ecken), eines in der oberen rechten und eines in der unteren rechten Ecke.
Sie müssen mehrere Dinge einrichten: Zunächst einmal möchten Sie, dass jeder Teil der kaputten Box die Skin hat enhanced
, aber standardmäßig haben sie unterschiedliche Skins, die sich auch auf auswirken rounded borders
. Da Sie die abgeschnittene Ecke in der oberen rechten und unteren rechten Ecke mit definieren rounded corners
, müssen wir daher festlegen skin first = enhanced, skin middle = enhanced, skin last = enhanced
.
Anschließend fügen Sie mithilfe von Overlays zwei Dinge hinzu: den eigentlichen Titel neben dem eingerahmten Titel und die Eselsohren. Sie müssen daher definieren
overlay unbroken
wo Sie nur den Titel platzieren,overlay first
wo Sie den Titel und das untere Eselsohr platzieren,overlay middle
wo Sie das obere und untere Eselsohr platzieren, und schließlichoverlay last
wo Sie lediglich das obere Eselsohr platzieren.
Sie haben nicht gezeigt, wie die untere rechte Ecke einer ungebrochenen Box aussehen soll, also nahm ich an, dass Sie dort ebenfalls eine abgeschnittene Ecke wünschen. Wenn Sie unten rechts keine abgeschnittene Ecke wünschen, können Sie die Option rounded corners = southeast
durch ersetzen extras first and middle = { rounded corners = southeast }
(weil wir unten rechts immer noch abgeschnittene Ecken für die Eselsohren benötigen).