tcolorbox quebrável com interior vazio/oculto e moldura não vazia

tcolorbox quebrável com interior vazio/oculto e moldura não vazia

Eu gostaria de definir um tcolorbox quebrável cujo interior não contenha nenhuma cor ou outro código de desenho, portanto exiba qualquer cor que esteja por trás dele.tcolorboxcom a skinsbiblioteca tem as opções interior emptye interior hiddenque controlam o desenho do interior, embora eu tenha dificuldade para entender a interação entre essas teclas e as correspondentes frame emptye frame hidden. Eu esperaria que as chaves anteriores imprimissem a moldura ao redor do conteúdo da caixa sem nada fazer no interior, mas em vez disso a caixa é impressa com um fundo cinza escuro.

Deesta resposta, vejo que podemos contornar isso definindo ambos frame emptye interior emptydesenhando o quadro com borderline. Isso funciona para caixas intactas, mas se uma caixa estiver quebrada, parece que as teclas frame emptye interior emptysão ignoradas e os padrões do tcolorbox entram em vigor.

\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

Provavelmente estou entendendo mal o que realmente significa "moldura" e "interior", mas existe uma maneira de fazer um tcolorbox quebrável com um interior vazio?

Editar

Como samcarter_is_at_topanswers.xyz aponta nos comentários, o "quadro" é um retângulo preenchido atrás da caixa, não uma linha desenhada ao redor dela. Isso explica a saída com interior emptye interior hidden.

Também descobri que breakablenão interage bem com frame emptye interior emptyem geral:

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

Isso redefine os padrões da moldura e do interior quando quebrados.

Para contextualizar, estou tentando adaptaresta respostapara emularthmboxcom tcolorbox para usar a cor de fundo da página, não a cor de fundo predefinida white, pois esse é o comportamento do thmbox.

Responder1

Acontece que a resposta é ler os documentos :)

Normalmente, o mecanismo de quadro preenche toda a área da caixa com cor e os outros mecanismos preenchem determinadas áreas com outras cores. [...] Para determinadas caixas é necessário um procedimento mais delicado. Por exemplo, se a caixa for translúcida, uma área já pintada não poderá ficar sem pintura. Portanto, motores de quadro mais elaborados fizeram furos no quadro onde a área interna e opcionalmente a área do título serão pintadas. As películas resultantes são chamadas de películas de quebra-cabeças.

Então basta usar a caixa de quebra-cabeças:

\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}

insira a descrição da imagem aqui

Responder2

Em vez de tornar o tcolorbox transparente, você poderia torná-loolhartransparente colorindo-o na mesma cor da página:

\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}

insira a descrição da imagem aqui

Responder3

Embora frame emptye interior emptynão funcionem como esperado quando fornecidos com breakable, eles funcionam se fornecidos com a extraschave. Dessa forma, podemos falsificar o quadro com 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}

caixa quebrável

Responder4

Para contextualizar, estou tentando adaptaresta respostapara emularthmboxcom tcolorbox para usar a cor de fundo da página, não a cor de fundo predefinida white, pois esse é o comportamento do thmbox.

Parece que você precisa

\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
        },
        % ...
    }
}

insira a descrição da imagem aqui

Exemplo completo, baseado no linkResposta de @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}

informação relacionada