zerbrechliche Farbbox mit leerem/verstecktem Innenraum und nicht leerem Rahmen

zerbrechliche Farbbox mit leerem/verstecktem Innenraum und nicht leerem Rahmen

Ich möchte eine zerbrechliche Farbbox definieren, deren Inneres weder eine Farbe noch einen anderen Zeichencode enthält, sodass die Farbe angezeigt wird, die sich dahinter befindet.tcolorboxmit der skinsBibliothek gibt es die Optionen interior emptyund interior hidden, die die Zeichnung des Inneren steuern, obwohl ich Schwierigkeiten habe, die Interaktion zwischen diesen Tasten und den entsprechenden frame emptyund zu verstehen frame hidden. Ich würde erwarten, dass die früheren Tasten den Rahmen um den Inhalt der Box drucken, ohne dass mit dem Inneren etwas gemacht wird, aber stattdessen wird die Box mit einem dunkelgrauen Hintergrund gedruckt.

Ausdiese Antwort, ich sehe, dass wir das umgehen können, indem wir beides festlegen frame emptyund interior emptydann den Rahmen mit zeichnen borderline. Das funktioniert bei unzerbrochenen Boxen, aber wenn eine Box zerbrochen ist, scheinen die Schlüssel frame emptyund interior emptyignoriert zu werden und die tcolorbox-Standardwerte werden wirksam.

\documentclass{article}

\usepackage[skins,breakable]{tcolorbox}
\usepackage{kantlipsum}

\pagecolor{yellow!10}

\tcbset{enhanced}

\begin{document}

\begin{tcolorbox}[
  interior empty
  ]
This is a \textbf{tcolorbox}.
\end{tcolorbox}

\begin{tcolorbox}[
  interior empty,
  frame empty % don't want hidden frame
  ]
This is a \textbf{tcolorbox}.
\end{tcolorbox}

\begin{tcolorbox}[
  interior hidden
  ]
This is a \textbf{tcolorbox}.
\end{tcolorbox}

\begin{tcolorbox}[
  interior hidden,
  frame hidden, % don't want hidden frame
  ]
This is a \textbf{tcolorbox}.
\end{tcolorbox}

\begin{tcolorbox}[
  frame empty,
  interior empty,
  borderline={1pt}{0pt}{},
]
This is a \textbf{tcolorbox}.
\end{tcolorbox}

\begin{tcolorbox}[
  breakable,
  frame empty,
  interior empty,
  borderline={1pt}{0pt}{},
]
This is a \textbf{tcolorbox}.
\kant[1-3]
\end{tcolorbox}
\end{document}

tcbox

Ich verstehe wahrscheinlich nicht, was mit „Rahmen“ und „Innenraum“ wirklich gemeint ist, aber gibt es eine Möglichkeit, eine zerbrechliche Farbbox mit leerem Innenraum herzustellen?

Bearbeiten

Wie samcarter_is_at_topanswers.xyz in den Kommentaren anmerkt, ist der „Rahmen“ ein ausgefülltes Rechteck hinter der Box, keine Linie, die darum herum gezeichnet ist. Dies erklärt die Ausgabe mit interior emptyund interior hidden.

Ich habe auch festgestellt, dass die Interaktion mit und im Allgemeinen breakablenicht gut funktioniert :frame emptyinterior empty

\begin{tcolorbox}[
  breakable,
  interior empty,
  frame empty
  ]
This is a \textbf{tcolorbox}.
\kant[1-5]
\end{tcolorbox}

Dadurch werden die Standardeinstellungen für Rahmen und Innenausstattung zurückgesetzt, wenn diese beschädigt sind.

Für den Kontext versuche ich,diese Antwortzum Emulierenthmboxmit tcolorbox, um die Hintergrundfarbe der Seite zu verwenden, nicht die voreingestellte Hintergrundfarbe white, da dies das Verhalten von thmbox ist.

Antwort1

Es stellt sich heraus, dass die Antwort darin besteht, die Dokumente zu lesen :)

Normalerweise füllt die Frame-Engine den gesamten Boxbereich mit Farbe und die anderen Engines füllen bestimmte Bereiche mit anderen Farben. [...] Für bestimmte Boxen ist ein feineres Verfahren erforderlich. Wenn die Box beispielsweise durchscheinend sein soll, kann ein bereits bemalter Bereich nicht unbemalt gemacht werden. Aus diesem Grund sägen aufwändigere Frame-Engines Löcher in den Rahmen, in denen der Innenbereich und optional der Titelbereich bemalt werden. Die daraus resultierenden Skins werden Jigsaw-Skins genannt.

Man muss also nur die Puzzlebox verwenden:

\documentclass{article}
\usepackage{xcolor}
\usepackage{pagecolor}
\pagecolor{yellow}
\usepackage[most]{tcolorbox}
\usepackage{kantlipsum}

\begin{document}

\begin{tcolorbox}[
  enhanced jigsaw,
  breakable,
  opacityback=0,
]
This is a \textbf{tcolorbox}.
\kant[1-5]
\end{tcolorbox}

\end{document}

Bildbeschreibung hier eingeben

Antwort2

Anstatt die Farbbox transparent zu machen, könnte man siesehentransparent, indem Sie es in der gleichen Farbe wie die Seite einfärben:

\documentclass{article}
\usepackage{xcolor}
\usepackage[skins,breakable]{tcolorbox}
\usepackage{kantlipsum}
\usepackage{pagecolor}

\pagecolor{yellow}

\tcbset{enhanced}

\begin{document}

\begin{tcolorbox}[
  breakable,
  colback=\thepagecolor
]
This is a \textbf{tcolorbox}.
\kant[1-5]
\end{tcolorbox}


\end{document}

Bildbeschreibung hier eingeben

Antwort3

Während frame emptyund interior emptynicht wie erwartet funktionieren, wenn sie mit angegeben werden breakable, funktionieren sie, wenn sie mit dem extrasSchlüssel angegeben werden. Auf diese Weise können wir den Rahmen mit vortäuschen borderline.

\documentclass{article}

\usepackage[skins,breakable]{tcolorbox}
\usepackage{kantlipsum}

\pagecolor{yellow!10}

\begin{document}

\begin{tcolorbox}[
  breakable,
  extras={frame empty,interior empty},
  borderline={1pt}{0pt}{}
  ]
This is a \textbf{tcolorbox}.
\kant[1-5]
\end{tcolorbox}

\end{document}

zerbrechliche Kiste

Antwort4

Für den Kontext versuche ich,diese Antwortzum Emulierenthmboxmit tcolorbox, um die Hintergrundfarbe der Seite zu verwenden, nicht die voreingestellte Hintergrundfarbe white, da dies das Verhalten von thmbox ist.

Es scheint, Sie brauchen

\tcbset{
    thmbox/.style={
        % ...
        % colback=white,
        % colframe=white,
        % colbacktitle=white,
        %% in order to imitate effect of "enhanced jigsaw, boxrule=0pt"
        frame engine=empty,
        interior titled engine=empty,
        interior engine=empty,
        extras broken={
          frame engine=empty,
          interior titled engine=empty,
          interior engine=empty
        },
        % ...
    }
}

Bildbeschreibung hier eingeben

Vollständiges Beispiel, basierend auf dem verlinkten@Ignasis Antwort:

\documentclass{article}
\usepackage{amssymb}
\usepackage{lipsum}
\usepackage{tcolorbox}
\tcbuselibrary{breakable, skins, theorems}

\pagecolor{yellow!10}

\tcbset{
    thmbox/.style={
        breakable,
        enhanced,
        sharp corners=all,
        fonttitle=\bfseries\normalsize,
        fontupper=\normalsize\itshape,
        top=0mm,
        bottom=0mm,
        right=0mm,
        % colback=white,
        % colframe=white,
        % colbacktitle=white,
        %% in order to imitate effect of "enhanced jigsaw, boxrule=0pt".
        %% or put the following three lines in "extras unbroken={...}"
        frame engine=empty,
        interior titled engine=empty,
        %% every theorem has a title, so this is just for completeness
        interior engine=empty,
        extras broken={
          frame engine=empty,
          interior titled engine=empty,
          interior engine=empty
        },
        coltitle=black,
        attach boxed title to top left,
        boxed title style={empty, size=minimal, bottom=1.5mm},
        overlay unbroken ={
            \draw (title.south west)--(title.south east);
            \draw ([xshift=3.5mm]frame.north west)|-%
                  (frame.south east)--(frame.north east);},
        overlay first={
            \draw (title.south west)--(title.south east); 
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);
            \draw (frame.north east)--(frame.south east);},
        overlay middle={
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);
            \draw (frame.north east)--(frame.south east);},
        overlay last={
            \draw ([xshift=3.5mm]frame.north west)|-%
                  (frame.south east)--(frame.north east);},
        },
    S/.style={thmbox, 
        overlay unbroken ={
            \draw (title.south west)--(title.south east);
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay first={
            \draw (title.south west)--(title.south east); 
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay middle={
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay last={
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        },
    L/.style={thmbox, 
        overlay unbroken ={
            \draw (title.south west)--(title.south east);
            \draw ([xshift=3.5mm]frame.north west)|-([xshift=15mm]frame.south west);},
        overlay first={
            \draw (title.south west)--(title.south east); 
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay middle={
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay last={
            \draw ([xshift=3.5mm]frame.north west)|-([xshift=15mm]frame.south west);},
        },
    LQ/.style={thmbox, 
        overlay unbroken ={
            \draw (title.south west)--(title.south east);
            \draw ([xshift=3.5mm]frame.north west)|-([xshift=15mm]frame.south west);
            \node[anchor=east] at (frame.south east) {$\square$};},
        overlay first={
            \draw (title.south west)--(title.south east); 
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay middle={
            \draw ([xshift=3.5mm]frame.north west)--([xshift=3.5mm]frame.south west);},
        overlay last={
            \draw ([xshift=3.5mm]frame.north west)|-([xshift=15mm]frame.south west);
            \node[anchor=east] at (frame.south east) {$\square$};},
    },  
}

\newtcbtheorem[]{tcbthmbox}{Theorem}{thmbox}{theo}
\newtcbtheorem[]{tcbSthmbox}{Theorem}{thmbox,S}{theo}
\newtcbtheorem[]{tcbLthmbox}{Theorem}{thmbox,L}{theo}
\newtcbtheorem[]{proof}{Démonstration}{thmbox,LQ}{theo}

\begin{document}

\begin{tcbthmbox}{First result}{}
\lipsum[3]
\end{tcbthmbox}

\begin{tcbSthmbox}{Important}{}
\lipsum[2]
\end{tcbSthmbox}

\begin{tcbLthmbox}{Final}{}
\lipsum[1]
\end{tcbLthmbox}

\begin{proof}{Proof}{}
\lipsum[1]
\end{proof}
\end{document}

verwandte Informationen