Wie kann ich diese spezifischen Änderungen mit tcolorbox vornehmen?

Wie kann ich diese spezifischen Änderungen mit tcolorbox vornehmen?

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: Erste Pausenbox

Und auf der nächsten Seite würde es so aussehen: Zweite Breakbox

Wenn es keine Unterbrechung gäbe, würde es so aussehen: Unzerbrechliche Box

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}

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

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

  1. overlay unbrokenwo Sie nur den Titel platzieren,
  2. overlay firstwo Sie den Titel und das untere Eselsohr platzieren,
  3. overlay middlewo Sie das obere und untere Eselsohr platzieren, und schließlich
  4. overlay lastwo 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 = southeastdurch ersetzen extras first and middle = { rounded corners = southeast }(weil wir unten rechts immer noch abgeschnittene Ecken für die Eselsohren benötigen).

verwandte Informationen