内部に色やその他の描画コードが含まれず、その背後にある色を表示する、breakable tcolorbox を定義したいと思います。tcolorbox
ライブラリには、内部の描画を制御するskins
オプションinterior empty
とがありますが、これらのキーと対応するおよびの間の相互作用を理解するのに苦労しています。前者のキーは、内部に何もせずにボックスの内容を囲むフレームを印刷すると予想していましたが、代わりにボックスは暗い灰色の背景で印刷されました。interior hidden
frame empty
frame hidden
からこの答えframe empty
、両方を設定してからinterior empty
でフレームを描画することでこれを回避できることがわかりましたborderline
。これは壊れていないボックスでは機能しますが、ボックスが壊れている場合は、frame empty
とinterior empty
キーが無視され、 tcolorbox のデフォルトが有効になるようです。
\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}
おそらく「フレーム」と「内部」の本当の意味を誤解しているのでしょうが、内部が空である壊れやすい tcolorbox を作成する方法はありますか?
編集
samcarter_is_at_topanswers.xyz がコメントで指摘しているように、「フレーム」はボックスの背後にある塗りつぶされた四角形であり、その周りに描かれた線ではありません。これは、 および の出力を説明していinterior empty
ますinterior hidden
。
また、一般的には は およびとbreakable
うまく連携しないことがわかりました。frame empty
interior empty
\begin{tcolorbox}[
breakable,
interior empty,
frame empty
]
This is a \textbf{tcolorbox}.
\kant[1-5]
\end{tcolorbox}
これにより、壊れたときにフレームと内部のデフォルトがリセットされます。
文脈上、私は適応しようとしているこの答え模倣のためthmbox
tcolorbox を使用すると、プリセットの背景色ではなく、ページの背景色が使用されますwhite
。これは thmbox の動作です。
答え1
結局、答えはドキュメントを読むことです :)
通常、フレーム エンジンはボックス領域全体を色で塗りつぶし、他のエンジンは特定の領域を他の色で塗りつぶします。[...] 特定のボックスでは、より繊細な手順が必要です。たとえば、ボックスを半透明にする必要がある場合、すでにペイントされている領域を未ペイントにすることはできません。そのため、より精巧なフレーム エンジンでは、内部領域とオプションでタイトル領域をペイントするフレームに穴を開けます。結果として得られるスキンは、ジグソー スキンと呼ばれます。
したがって、ジグソーボックスを使用するだけです。
\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}
答え2
tcolorboxを実際に透明にする代わりに、見てページと同じ色で着色して透明にします。
\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}
答え3
と は に与えられた場合には期待通りには動作しませんが、frame empty
キーに与えられた場合には動作します。このようにして、 でフレームを偽装することができます。interior empty
breakable
extras
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}
答え4
文脈上、私は適応しようとしているこの答え模倣のため
thmbox
tcolorbox を使用すると、プリセットの背景色ではなく、ページの背景色が使用されますwhite
。これは thmbox の動作です。
必要なようです
\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
},
% ...
}
}
リンクされた完全な例@Ignasi の回答:
\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}