Por que a sobreposição funciona apenas no primeiro tcolorbox?

Por que a sobreposição funciona apenas no primeiro tcolorbox?

Estou tentando criar um customizado tcolorboxcom algum código TikZ na overlayopção.

Mas funciona apenas na primeira vez que uso minha nova caixa. O que estou fazendo de errado?

\documentclass{book}
\usepackage{tikzlings}
\usepackage{mwe}

\usepackage[most]{tcolorbox}

\newtcolorbox{mybox}[1][]{%
    enhanced,
    before skip=30ex,
    after skip=10ex,
    colback=yellow, 
    frame hidden,% from https://tex.stackexchange.com/a/247509/101651
    % from https://tex.stackexchange.com/a/431760/101651:
    overlay={%
        \begin{scope}
            \clip (frame.north west) -- (frame.north east) -- ++(0,+10ex) -- 
            ++(-\linewidth,0) -- cycle;
            \marmot[xshift=.5\linewidth]
        \end{scope}
        \begin{scope}
            \clip (frame.south west) -- (frame.south east) -- ++(0,-10ex) -- 
            ++(-\linewidth,0) -- cycle;
            \marmot[xshift=.5\linewidth, yshift=-\tcbtextheight-2ex]
        \end{scope}
    }
}
\begin{document}
    \begin{mybox}
         We love Ti\emph{k}Zlings!
    \end{mybox}
    \begin{mybox}
        \blindtext
    \end{mybox}
\end{document}

insira a descrição da imagem aqui

Responder1

Oh não! Nenhuma marmota na segunda caixa! Isto tem que ser corrigido! (Conforme mencionado por @samcarter, a marmota foi cortada. Mas pode-se deslocá-la de volta para a região visível.)

\documentclass{book}
\usepackage{tikzlings}
\usepackage{mwe}

\usepackage[most]{tcolorbox}

\newtcolorbox{mybox}[1][]{%
    enhanced,
    before skip=30ex,
    after skip=10ex,
    colback=yellow, 
    frame hidden,% from https://tex.stackexchange.com/a/247509/101651
    % from https://tex.stackexchange.com/a/431760/101651:
    overlay={%
        \begin{scope}
            \clip (frame.north west) -- (frame.north east) -- ++(0,+10ex) -- 
            ++(-\linewidth,0) -- cycle;
            \marmot[shift={([yshift=-7ex]frame.north)},whiskers,teeth]
        \end{scope}
        \begin{scope}
            \clip (frame.south west) -- (frame.south east) -- ++(0,-10ex) -- 
            ++(-\linewidth,0) -- cycle;
            \marmot[shift={([yshift=-4ex]frame.south)},whiskers,teeth]
        \end{scope}
    }
}
\begin{document}
    \begin{mybox}
         We love Ti\emph{k}Zlings!
    \end{mybox}
    \begin{mybox}
        \blindtext
    \end{mybox}
\end{document}

insira a descrição da imagem aqui

Alguns outros tikzlings juntaram-se à festa.

\documentclass{book}
\usepackage{tikzlings}
\usepackage{mwe}

\usepackage[most]{tcolorbox}

\newtcolorbox{mybox}[1][]{%
    enhanced,
    before skip=30ex,
    after skip=10ex,
    colback=yellow, 
    frame hidden,% from https://tex.stackexchange.com/a/247509/101651
    % from https://tex.stackexchange.com/a/431760/101651:
    overlay={%
        \begin{scope}
            \clip (frame.north west) -- (frame.north east) -- ++(0,+10ex) -- 
            ++(-\linewidth,0) -- cycle;
            \marmot[shift={([yshift=-7ex]frame.north)},whiskers,teeth]
            \koala[shift={([yshift=-7ex,xshift=-5em]frame.north)}]
            \mouse[shift={([yshift=-7ex,xshift=5em]frame.north)}]
        \end{scope}
        \begin{scope}
            \clip (frame.south west) -- (frame.south east) -- ++(0,-10ex) -- 
            ++(-\linewidth,0) -- cycle;
            \marmot[shift={([yshift=-4ex]frame.south)},whiskers,teeth]
            \koala[shift={([yshift=-4ex,xshift=-5em]frame.south)}]
            \mouse[shift={([yshift=-4ex,xshift=5em]frame.south)}]
        \end{scope}
    }
}
\begin{document}
    \begin{mybox}
         We love Ti\emph{k}Zlings!
    \end{mybox}
    \begin{mybox}
        \blindtext
    \end{mybox}
\end{document}

insira a descrição da imagem aqui

E a cheeseboxtende a atrair ratos (comcontribuição importante de @samcarter no chat).

\documentclass{book}
\usepackage{tikzlings}
\usepackage{mwe}

\usepackage[most]{tcolorbox}

\newtcolorbox{mousebox}[1][]{%
    enhanced,
    before skip=30ex,
    after skip=10ex,
    underlay={%
        \begin{tcbclipinterior}
            \fill [yellow]
              (interior.south west) rectangle (interior.north east);
              \path let \p1=($(interior.north east)-(interior.south west)$)
              in [/utils/exec={\pgfmathtruncatemacro{\NX}{1+\x1*1pt/3cm}
              \pgfmathtruncatemacro{\NY}{1+\y1*1pt/2cm}\xdef\NX{\NX}
              \xdef\NY{\NY}}];
              \foreach \X in {1,...,\NX}
              {\foreach \Y in {1,...,\NY}
              { \foreach \x/\y/\r in {0.4/0.6/0.3, 
               0.5/1.3/0.2,%
               1.5/0.5/0.4,%
               1.5/0.5/0.4,% 
               2.1/1.5/0.3,%
               2.5/0.8/0.2,% 
               3.3/1.1/0.3}
               {\shade[ball color=yellow!80!orange,opacity=0.2] 
               ({\x+(\X-1)*3},{\y+(\Y-1)*2}) circle (\r);}
               }}
        \end{tcbclipinterior},
        },
    %colback=yellow, 
    frame hidden,% from https://tex.stackexchange.com/a/247509/101651
    % from https://tex.stackexchange.com/a/431760/101651:
    overlay={%
        \begin{scope}
            \foreach \Y in {-5,0,5}
            {\begin{scope}[shift={([yshift=-9ex,xshift=\Y em]frame.north)}]
             \path[fill=gray!50]
             (0.5, 1.8) .. controls (0.5, 1.58) and (0.2, 1.25) .. (0, 1.16) .. controls (-0.2, 1.25) and (-0.5, 1.58) .. (-0.5, 1.8) .. controls (-0.34, 2.3) and (0.34, 2.3) .. (0.5, 1.8) -- cycle;
             \path[fill=gray!50!black] (0, 1.248) circle (0.09);
             \foreach \X in {10,20,33}{%
                \fill[gray!50!black] (0,1.2) + (\X:0.08) to[out=\X,in={180-\X}] ++({\X-20}:0.3) --++(0,0.01) to[out={180-\X},in=\X] cycle (0,1.2) + ({180-\X}:0.08) to[out={180-\X},in=\X] ++({200-\X}:0.3) --++(0,0.01) to[out=\X,in={180-\X}] cycle;
              }
             \end{scope} 
             }
            \clip (frame.north west) -- (frame.north east) -- ++(0,+10ex) -- 
            ++(-\linewidth,0) -- cycle;
            \foreach \Y in {-5,0,5}
            {\mouse[shift={([yshift=-9ex,xshift=\Y em]frame.north)}]}
        \end{scope}
        \begin{scope}
            \clip (frame.south west) -- (frame.south east) -- ++(0,-10ex) -- 
            ++(-\linewidth,0) -- cycle;
            \foreach \X in {-5,0,5}
            {
            \mouse[shift={([yshift=-4ex,xshift=\X em]frame.south)}]}
        \end{scope}
    }
}
\begin{document}
    \begin{mousebox}
         We love cheese!
    \end{mousebox}
    \begin{mousebox}
        \blindtext
    \end{mousebox}
\end{document}

insira a descrição da imagem aqui

informação relacionada