是否可以仅将阴影应用于可破坏 tcolorbox 的最后一部分?

是否可以仅将阴影应用于可破坏 tcolorbox 的最后一部分?

我想将阴影(放下提升)仅应用于易碎物品的最后一部分tcolorbox,但我在文档中找不到任何提示。以下 MWE 是无效的尝试。

\documentclass{article}
\usepackage{tcolorbox}
\usepackage{mwe}
\tcbuselibrary{breakable,skins}
\begin{document}
\begin{tcolorbox}[breakable,drop lifted shadow,skin=enhancedlast]
  \lipsum[1-5]
\end{tcolorbox}
\end{document}

因此我的问题是:是否可以将阴影仅应用于可破碎物的最后部分tcolorbox

答案1

版本 1(附加内容):

也许最短的解决方案是利用或更新的新extras选项tcolorbox 3.70 (2015/07/16)。这些允许为中断序列的不同部分放置选项。在这里,我们需要extras unbroken or last

\documentclass{article}
\usepackage{tcolorbox}
\usepackage{mwe}
\tcbuselibrary{breakable,skins}
\begin{document}
\begin{tcolorbox}[breakable,
    extras unbroken and last={drop lifted shadow},
    skin=enhancedlast ]
  \lipsum[1-5]
\end{tcolorbox}
\end{document}

版本 2(皮肤):

这是另一种选择。无论如何,更换皮肤是解决问题的方法。如果主皮肤是enhancedlast,则中断顺序将是enhancedmiddle(第一个)、 enhancedmiddle(中间)、enhancedlast(最后一个)。

使用 subskin 功能,我采用此标准序列并添加适当的阴影选项。这得到:

\documentclass{article}
\usepackage{tcolorbox}
\usepackage{mwe}
\tcbuselibrary{breakable,skins}
\begin{document}
\begin{tcolorbox}[breakable,drop lifted shadow,
  skin=enhancedlast,
  skin first is subskin of={enhancedmiddle}{no shadow},
  skin middle is subskin of={enhancedmiddle}{no shadow},
  skin last is subskin of={enhancedlast}{drop lifted shadow} ]
  \lipsum[1-5]
\end{tcolorbox}
\end{document}

在此处输入图片描述

答案2

是的,这是可能的。我定义了一种新样式和一种新皮肤(类似于enhancedmiddle),可以做到这一点(也许有一个更简单的解决方案):

\documentclass{article}
\usepackage[a6paper]{geometry}% just for the example
\usepackage{tcolorbox}
\usepackage{lipsum}
\tcbuselibrary{breakable,skins}

\makeatletter
\tcbset{
  mybase@middle/.style={%
    clear@spec,graphical environment=tikzpicture@tcb@hooked,geometry nodes,%
    set@outerboundary=\tcb@boundaryframe@pathmiddle,%
    shape@of@skin=middle,%
    set@extensions@preframe={},%
    set@extensions@postframe={\tcb@draw@border@middle\tcb@apply@underlay\tcb@apply@overlay},%
    set@extensions@final={\tcb@apply@finish}%
  }
}
\tcb@new@skin{myenhancedmiddle}{
  mybase@middle,%
  frame engine=pathmiddle,
  interior titled engine=pathmiddle,
  interior engine=pathmiddle,
  segmentation engine=path,
  title engine=pathmiddle,%
  skin first=enhancedmiddle,
  skin middle=enhancedmiddle,
  skin last=enhancedmiddle
}
\makeatother

\begin{document}

\begin{tcolorbox}[
  breakable,
  skin=myenhancedmiddle,
  skin first=myenhancedmiddle,
  skin middle=myenhancedmiddle,
  drop lifted shadow
]
\lipsum[1-4]
\end{tcolorbox}

\end{document}

输出显示只有破损盒子的最后一个部分接收阴影:

在此处输入图片描述

相关内容