空/非表示の内部と空でないフレームを備えた壊れやすい tcolorbox

空/非表示の内部と空でないフレームを備えた壊れやすい tcolorbox

内部に色やその他の描画コードが含まれず、その背後にある色を表示する、breakable tcolorbox を定義したいと思います。tcolorboxライブラリには、内部の描画を制御するskinsオプションinterior emptyとがありますが、これらのキーと対応するおよびの間の相互作用を理解するのに苦労しています。前者のキーは、内部に何もせずにボックスの内容を囲むフレームを印刷すると予想していましたが、代わりにボックスは暗い灰色の背景で印刷されました。interior hiddenframe emptyframe hidden

からこの答えframe empty、両方を設定してからinterior emptyでフレームを描画することでこれを回避できることがわかりましたborderline。これは壊れていないボックスでは機能しますが、ボックスが壊れている場合は、frame emptyinterior 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}

tcボックス

おそらく「フレーム」と「内部」の本当の意味を誤解しているのでしょうが、内部が空である壊れやすい tcolorbox を作成する方法はありますか?

編集

samcarter_is_at_topanswers.xyz がコメントで指摘しているように、「フレーム」はボックスの背後にある塗りつぶされた四角形であり、その周りに描かれた線ではありません。これは、 および の出力を説明していinterior emptyますinterior hidden

また、一般的には は およびとbreakableうまく連携しないことがわかりました。frame emptyinterior empty

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

これにより、壊れたときにフレームと内部のデフォルトがリセットされます。

文脈上、私は適応しようとしているこの答え模倣のためthmboxtcolorbox を使用すると、プリセットの背景色ではなく、ページの背景色が使用されます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 emptybreakableextrasborderline

\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

文脈上、私は適応しようとしているこの答え模倣のためthmboxtcolorbox を使用すると、プリセットの背景色ではなく、ページの背景色が使用されます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}

関連情報