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.tcolorbox
mit der skins
Bibliothek gibt es die Optionen interior empty
und interior hidden
, die die Zeichnung des Inneren steuern, obwohl ich Schwierigkeiten habe, die Interaktion zwischen diesen Tasten und den entsprechenden frame empty
und 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 empty
und interior empty
dann den Rahmen mit zeichnen borderline
. Das funktioniert bei unzerbrochenen Boxen, aber wenn eine Box zerbrochen ist, scheinen die Schlüssel frame empty
und interior empty
ignoriert 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}
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 empty
und interior hidden
.
Ich habe auch festgestellt, dass die Interaktion mit und im Allgemeinen breakable
nicht gut funktioniert :frame empty
interior 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 Emulierenthmbox
mit 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}
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}
Antwort3
Während frame empty
und interior empty
nicht wie erwartet funktionieren, wenn sie mit angegeben werden breakable
, funktionieren sie, wenn sie mit dem extras
Schlü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}
Antwort4
Für den Kontext versuche ich,diese Antwortzum Emulieren
thmbox
mit tcolorbox, um die Hintergrundfarbe der Seite zu verwenden, nicht die voreingestellte Hintergrundfarbewhite
, 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
},
% ...
}
}
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}