可破坏 tcolorbox 下部的覆盖层

可破坏 tcolorbox 下部的覆盖层

我想为可破坏的 tcolorbox 的下部定义一种特殊设计。lowerpart我指的是之后定义的所有内容\tcblower。我想为下部定义一些覆盖或边框或其他内容,而不管它覆盖了多少页或何时在破坏的框中启动。

假设

在此处输入图片描述

一条交叉线覆盖了框的下部。当 tcolorbox 不可破坏时,不会出现问题,因为segmentation节点可以用作 的顶部参考lowerpart

当将此设计应用于破损的盒子时,我希望这条交叉线出现在所有包含下部部分的碎片中。如果某个碎片包含上部和下部的一部分,则该线将仅覆盖碎片的下部(如上图所示),但如果它们仅包含下部,则将覆盖整个碎片。

例如,下图显示的左页“正确”,但右页不正确,因为红线不是从左上角开始。

在此处输入图片描述

另一个例子,左页有一个完整的方框,上面有一条“正确”的红线,还有一个破损的方框的第一部分,上面有一条“错误”的红线。它不应该出现在这里,因为这个部分不包含任何下部文本。

在此处输入图片描述

从前面的例子来看,似乎是segmentation从以前的使用或定义中记住的,并且没有在不应该存在的片段中删除。

先前的例子有以下变化:

\documentclass[a5paper]{article}
\usepackage[most]{tcolorbox}
\usepackage{geometry}
\usepackage{lipsum}

\newtcolorbox{mybox}[1][]{%
    enhanced, 
    breakable, 
    overlay unbroken={%
        \path[draw=red] (segmentation.west)--(frame.south east);},
    overlay broken={%
        \path[draw=red] (segmentation.west)--(frame.south east);},
    #1
}

\begin{document}

\begin{mybox}
This is the upper part
\tcblower
\lipsum[3]
\end{mybox}

\begin{mybox}
\lipsum[1-2]
\tcblower
\lipsum[3-4]
\end{mybox}

\end{document}

作为替代方案,我尝试使用bicolor皮肤,但segmentation style选项不够灵活,并且segmentation code不符合框架格式。

您能建议一个替代解决方案吗?

答案1

有一个名为 的宏,tcbsegmentstate其中包含012。此宏针对每个未破损的框和每个破损的部分框设置,含义如下:

  • 0:当前(部分)框仅包含上部。
  • 1:当前(部分)框包含上部和下部。该segmentation节点可用于定位。
  • 2:当前(部分)框仅包含下部。

示例代码可以做如下修改:

\documentclass[a5paper]{article}
\usepackage[most]{tcolorbox}
\usepackage{geometry}
\usepackage{lipsum}

\makeatletter
\newtcolorbox{mybox}[1][]{%
    enhanced,
    breakable,
    overlay={%
      \ifcase\tcbsegmentstate
        % 0 = Box contains only an upper part
      \or%
        % 1 = Box contains an upper and a lower part
        \path[draw=red] (segmentation.west)--(frame.south east);
      \else%
        % 2 = Box contains only a lower part
        \path[draw=red] (frame.north west)--(frame.south east);
      \fi%
    }
    #1
}
\makeatother

\begin{document}

\begin{mybox}
This is the only part
\end{mybox}

\begin{mybox}
This is the upper part
\tcblower
\lipsum[3]
\end{mybox}

\begin{mybox}
\lipsum[1-2]
\tcblower
\lipsum[3-4]
\end{mybox}

\end{document}

得出:

在此处输入图片描述

相关内容