当一个分页符出现在嵌套的 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}