Füllen Sie die Farbbox mit Sidebyside aus
Ich habe einige unzerbrechliche Sidebyside-Farbboxen mit variabler Höhe.
Am Ende dieser Felder möchte ich auf der linken Seite eine Zeile und auf der rechten Seite einen Text "Bitte hier trennen" auf derselben Ebene wie die Zeile haben.
Ich habe keine feste Höhe, daher kann ich dieses Attribut (?) Nicht festlegen.
\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}
Antworten
Der obere und untere Inhalt eines Side-by-Side tcolorboxwird in eine minipageUmgebung gestellt. Bis die Höhe von minipageangegeben ist, hat eine darin \vfillverwendete keine Auswirkung.
Im folgenden Beispiel wird der gewünschte Effekt overlayoptional emuliert . Einige interne Dimensionen von tcolorboxund zwei magische Zahlen (10pt, 12pt), die vermeidbar sind, werden verwendet.
\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}