\vfill 在 tcolorbox 中并排显示

\vfill 在 tcolorbox 中并排显示

我有一些牢不可破的可变高度并排 tcolorboxes。

我希望在这些框的底部左侧有一条线,并在右侧与该线在同一级别上显示“请在此处分开”的文本。

我没有固定高度,所以我无法设置这个属性(?)。

\documentclass[notitlepage]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[many]{tcolorbox}
\usepackage{lipsum}

\begin{document}

\begin{tcolorbox}[sidebyside,sidebyside align=top]
on left: \lipsum[1]
\vfill
\mbox{}{ \hrule}
\tcblower
text
\vfill
please separate here
\end{tcolorbox}

\begin{tcolorbox}[sidebyside,sidebyside align=top]
text
\vfill
\mbox{}{ \hrule}
\tcblower
on right:\lipsum[2]
\vfill
please separate here
\end{tcolorbox}

\end{document}

答案1

并排的上下内容分别tcolorbox放在环境中。除非指定了minipage的高度,否则在其中使用的 不会产生任何效果。minipage\vfill

以下示例通过 option 模拟了所需的效果。使用了overlay一些内部尺寸和两个(可避免的)魔法数字(10pt、12pt)。tcolorbox

\documentclass[notitlepage]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[many]{tcolorbox}
\usepackage{lipsum}

\makeatletter
\tcbset{
  my sidebyside/.style={
    sidebyside, sidebyside align=top,
    enhanced, geometry nodes,
    bottom=2mm+14.4pt,
    overlay={
      \draw ([shift={(\kvtcb@leftupper+\kvtcb@boxsep, 10pt)}]frame.south west) 
         -- ([shift={(-.5*\kvtcb@sbs@gap, 10pt)}]frame.south);
      \node[shift={(.5*\kvtcb@sbs@gap, 10pt)}, inner sep=0pt, anchor=base west] at (frame.south) {please separate here};
    }
  }
}
\makeatother

\begin{document}

\begin{tcolorbox}[my sidebyside]
  \lipsum[2]
  \tcblower
  right-side is shorter
\end{tcolorbox}

\begin{tcolorbox}[my sidebyside]
  left-side is shorter
  \tcblower
  \lipsum[2]
\end{tcolorbox}

\end{document}

在此处输入图片描述

相关内容