复制嵌套框样式

复制嵌套框样式

当一个分页符出现在嵌套的 tcolorbox 中嵌套框tcolorbox将被放置在新页面上。解决此问题的一种方法是创建两个单独的框,一个接一个,第二个框重新创建嵌套框的样式。

目前我还没有找到完全匹配的,但是有一个内饰风格设置可用于将更高级的样式应用于背景颜色,复制蓝色外边框和灰色背景之间的白色边框,但我没有足够的经验来知道这是否可能。

有人知道如何复制这种风格吗?

嵌套框样式

\documentclass{article}

\usepackage[breakable,skins]{tcolorbox}
\usepackage{lipsum}

\newtcolorbox{OuterBoxOne}{%
    enhanced,
    colback=white,
    colframe=blue,
}%
\newtcolorbox{InnerBoxOne}{%
    enhanced,
    colback=gray,
    colframe=white,
}%
\newtcolorbox{OuterBoxTwo}{%
    enhanced,
    colback=white,
    colframe=blue,
    bottomrule=0mm,
    sharp corners=south,
}%
\newtcolorbox{InnerBoxTwo}{%
    breakable,
    enhanced,
    colback=gray,
    colframe=blue,
    before=\vspace{-5pt},
    sharp corners=north,
    toprule=0cm,
}%

\begin{document}
    \begin{OuterBoxOne}
        \lipsum[1]
        \begin{InnerBoxOne}
            \lipsum[1]          
        \end{InnerBoxOne}       
    \end{OuterBoxOne}  
    \pagebreak
    \begin{OuterBoxTwo}
        \lipsum[1]               
    \end{OuterBoxTwo}  
    \begin{InnerBoxTwo}
        \lipsum[1]          
    \end{InnerBoxTwo}
\end{document}

答案1

事实证明我需要使用更强大的内部代码设置允许我使用pgf不限制其特定样式的代码。这使我能够绘制一个圆角矩形,模拟内部嵌套框样式。然后我需要为破损框的第一、中间和最后一部分创建三种不同的样式。

比较嵌套框

下面的代码还有待改进,但它对我来说很有用。

\documentclass{article}

\usepackage[breakable,skins]{tcolorbox}
\usepackage{lipsum}

\newtcolorbox{OuterBoxOne}{%
    enhanced,
    colback=white,
    colframe=blue,
}%
\newtcolorbox{InnerBoxOne}{%
    enhanced,
    colback=gray,
    colframe=white,
}%

\newtcolorbox{OuterBoxTwo}{%
    enhanced,
    colback=white,
    colframe=blue,
    bottomrule=0mm,
    sharp corners=south,
}%

\newtcolorbox{InnerBoxTwo}{%
    breakable,
    enhanced,    
    colback=gray,
    colframe=blue,
    before=\vspace{-5pt},
    sharp corners=north,
    toprule=0cm,
    left=25pt,
    right=25pt,
    bottom=10pt,
    overlay first={
        interior code={
            \path[fill=white] ([yshift=0.1cm]interior.north west) rectangle ([yshift=-0.1cm]interior.south east);
            \path[fill=gray] ([xshift=11.55cm,yshift=-1cm]interior.north west) rectangle ([xshift=-11.55cm]interior.south east);
            \path[fill=gray,rounded corners=5pt] ([xshift=11.55cm]interior.north west) rectangle ([xshift=-11.55cm,yshift=5pt]interior.south east);
        },
    },
    overlay middle={
        interior code={
            \path[fill=white] ([yshift=0.1cm]interior.north west) rectangle ([yshift=-0.1cm]interior.south east);
            \path[fill=gray] ([xshift=11.55cm]interior.north west) rectangle ([xshift=-11.55cm]interior.south east);
        }
    },
    overlay last={
        interior code={
            \path[fill=white] ([yshift=0.1cm]interior.north west) rectangle (interior.south east);
            \path[fill=gray] ([xshift=11.55cm]interior.north west) rectangle ([xshift=-11.55cm,yshift=1cm]interior.south east);
            \path[fill=gray,rounded corners=5pt] ([xshift=11.55cm]interior.north west) rectangle ([xshift=-11.55cm,yshift=5pt]interior.south east);
        }
    },
    interior code={
        \path[fill=white] ([yshift=0.1cm]interior.north west) rectangle (interior.south east);
        \path[fill=gray,rounded corners=5pt] ([xshift=11.55cm]interior.north west) rectangle ([xshift=-11.55cm,yshift=5pt]interior.south east);
    }
}%

\begin{document}
    \begin{OuterBoxOne}
        \lipsum[1]
        \begin{InnerBoxOne}
            \lipsum[1]          
        \end{InnerBoxOne}       
    \end{OuterBoxOne}  
    \pagebreak
    \begin{OuterBoxTwo}
        \lipsum[1]               
    \end{OuterBoxTwo}  
    \begin{InnerBoxTwo}
        \lipsum[1]   
    \end{InnerBoxTwo}
\end{document}

相关内容