
Die Side-by-Side-Option führt zu schlechten Ergebnissen ...
ohne Side-by-Side funktioniert der Code gut.
\documentclass[10pt,xcolor={usenames,dvipsnames,svgnames}]{beamer}
\usepackage[most]{tcolorbox}
\definecolor{linen}{HTML}{FAF0E6}
\definecolor{sandybrown}{rgb}{0.96, 0.64, 0.38}
\begin{document}
\begin{frame}
\begin{tcolorbox}[title=Formulas,
%sidebyside,
enhanced,
colback=linen,
colframe=sandybrown,
coltext=DarkRed,
coltitle=white,
fonttitle=\small\bfseries,
fontupper=\noindent,
segmentation style={dashed, red},
segmentation code={
\path[color=red,draw]
(segmentation.west) -- (segmentation.east);}
]
Some Text \bfseries{Some text}
\begin{equation*}
a = b + c
\end{equation*}
\tcbline
\begin{equation*}
a = b + c
\end{equation*}
\tcbline
\begin{equation*}
a = b + c
\end{equation*}
%
\tcblower
Some Text \bfseries{Some text}
\begin{equation*}
a = b + c
\end{equation*}
\tcbline
\begin{equation*}
a = b + c
\end{equation*}
\tcbline
\begin{equation*}
a = b + c
\end{equation*}
\end{tcolorbox}
\end{frame}
\end{document}
Antwort1
Warum verwenden Sie in diesem Fall nicht einfach ein tabularx
innerhalb des tcolorbox
?
\documentclass[10pt,xcolor={table, usenames, dvipsnames, svgnames}]{beamer}
\usepackage[T1]{fontenc}
\usepackage{array,tabularx}
\usepackage[most]{tcolorbox}
\definecolor{sandybrown}{rgb}{0.96,0.64,0.38}
\definecolor{linen}{HTML}{FAF0E6}
\begin{document}
\begin{frame}
\rowcolors{1}{linen}{linen!70!DarkRed}
\begin{tcolorbox}[enhanced, colback=linen, colframe=sandybrown,
title=Formulas, coltitle=white, fonttitle=\small\bfseries,
clip upper, fontupper=\sffamily,%
coltext=DarkRed,
tabularx*={\arrayrulecolor{DarkRed}}{>{\centering\arraybackslash}X|%
>{\centering\arraybackslash}X}]
Some Text \bfseries{Some text} &
Some Text \bfseries{Some text} \\\hline
$a= b+c$ & $a= b+c$\\\hline
$a= b+c$ & $a= b+c$\\\hline
$a= b+c$ & $a= b+c$
\end{tcolorbox}
\end{frame}
\end{document}
Aktualisieren:
OP-Bilder zeigen einen linksbündigen Text in der ersten Zeile. In meiner ursprünglichen Antwort konnte ich dieses Verhalten aufgrund eines Problems nicht reproduzieren, wenn ein \multicolumn
Befehl in die erste Zelle einer tabularx tcolorbox eingegeben wird. Dieses Problem wird in gezeigttcolorbox, tabularx: erste Zeile mit mehreren Spalten funktioniert in der tcolorbox-Umgebung nicht. Dank Thomas F. Sturm ( tcolorbox
Autor) gibt es nun eine vorläufige Lösung für dieses Problem.
\documentclass[10pt,xcolor={table, usenames, dvipsnames, svgnames}]{beamer}
\usepackage[T1]{fontenc}
\usepackage{array,tabularx}
\usepackage[most]{tcolorbox}
\definecolor{sandybrown}{rgb}{0.96,0.64,0.38}
\definecolor{linen}{HTML}{FAF0E6}
\makeatletter
\tcbset{%
hackfortabularx/.code={%
\def\tcb@saveupperbox{%
\begin{tcb@savebox}{\tcb@upperbox}{\tcb@w@upper}
\kvtcb@fontupper\kvtcb@halignupper\kvtcb@before@upper}}
}
\makeatother
\begin{document}
\begin{frame}
\begin{tcolorbox}[enhanced, colback=linen, colframe=sandybrown,
title=Formulas, coltitle=white, fonttitle=\small\bfseries,
clip upper, hackfortabularx,
fontupper=\sffamily, coltext=DarkRed,
tabularx*={\rowcolors{1}{linen}{linen!70!DarkRed}\arrayrulecolor{DarkRed}}%
{>{\centering\arraybackslash}X|>{\centering\arraybackslash}X}]
\multicolumn{1}{l|}{Some Text \bfseries{Some text}} &
\multicolumn{1}{l}{Some Text \bfseries{Some text}} \\\hline
$a= b+c$ & $a= b+c$\\\hline
$a= b+c$ & $a= b+c$\\\hline
$a= b+c$ & $a= b+c$
\end{tcolorbox}
\end{frame}
\end{document}
2. Aktualisierung:
Das Problem mit multicolumn
dem Befehl in der linken Spalte der obersten Regel wurde in gelöst tcolorbox v4.20
. Der vorherige Pfad ist nicht erforderlich. Die zweite Abbildung kann wie folgt erhalten werden:
\documentclass[10pt,xcolor={table, usenames, dvipsnames, svgnames}]{beamer}
\usepackage[T1]{fontenc}
\usepackage{array,tabularx}
\usepackage[most]{tcolorbox}
\definecolor{sandybrown}{rgb}{0.96,0.64,0.38}
\definecolor{linen}{HTML}{FAF0E6}
\begin{document}
\begin{frame}
\begin{tcolorbox}[enhanced, colback=linen, colframe=sandybrown,
title=Formulas, coltitle=white, fonttitle=\small\bfseries,
clip upper,
fontupper=\sffamily, coltext=DarkRed,
tabularx*={\rowcolors{1}{linen}{linen!70!DarkRed}\arrayrulecolor{DarkRed}}%
{>{\centering\arraybackslash}X|>{\centering\arraybackslash}X}]
\multicolumn{1}{l|}{Some Text \bfseries{Some text}} &
\multicolumn{1}{l}{Some Text \bfseries{Some text}} \\\hline
$a= b+c$ & $a= b+c$\\\hline
$a= b+c$ & $a= b+c$\\\hline
$a= b+c$ & $a= b+c$
\end{tcolorbox}
\end{frame}
\end{document}
Antwort2
Das Problem entsteht, weil die sidebyside
Option den Segmentierungsknoten so zu ändern scheint, dass \tcblower
zwischen den beiden Einheiten eine vertikale Linie statt der üblichen horizontalen Linie erstellt werden kann. \tcbline
Funktioniert daher nicht wie erwartet, da derselbe Segmentierungscode verwendet wird, der auf dem Segmentierungsknoten basiert.
Ich kann in der Paketdokumentation keine Beispiele zur Verwendung \tcbline
mit dieser sidebyside
Option finden, daher ist nicht klar, ob dies unterstützt wird.
Sie können eine Box mit einer durchgezogenen, vertikalen Linie erhalten, die Ihrem gewünschten Ergebnis einigermaßen nahe kommt, indem Sie Ihren Segmentierungsstil auf durchgezogen (rot) setzen und den Segmentierungscode entfernen (der Probleme verursacht). Gestrichelte horizontale Linien sind jedoch nicht vorhanden.
Die Veränderungen
segmentation style={solid, red}
% segmentation code={
% \path[color=red,draw]
% (segmentation.west) -- (segmentation.east);}
produziert
Die einzige Problemumgehung, die ich sehe, besteht darin, die Segmentierungslinien manuell mit der overlay
Option zu zeichnen (die integrierten Linien mit der segmentation hidden
Taste zu deaktivieren). Sie können dies einigermaßen pragmatisch mit dem frame
Knoten und der Tikizlibrary- calc
Bibliothek tun:
% \usetikzlibrary{calc} % Preamble
% Box options
[title=Formulas,
sidebyside,
enhanced,
colback=linen,
colframe=sandybrown,
coltext=DarkRed,
coltitle=white,
fonttitle=\small\bfseries,
fontupper=\noindent,
segmentation hidden, % Hide the inbuilt segmentation - we're drawing our own
overlay={
\coordinate (FL) at (frame.west);
\coordinate (FT) at (frame.north);
\coordinate (FR) at (frame.east);
\coordinate (FB) at (frame.south);
\coordinate (L1) at (frame.center); % Center of frame is about right height
\coordinate (L2) at (0,1.1); % Second dashed line at height of 1.1
\def\borderthickness{2} % Offset due to borders of box
\def\titlethickness{15} % Offset due to box title
\draw [red,dashed] let \p{FT}=(FT),\p{FB}=(FB) in (\x{FB},\y{FB}+\borderthickness) -- (\x{FT},\y{FT}-\titlethickness);
\draw [red,dashed] let \p{FR}=(FR),\p{FL}=(FL),\p{L1}=(L1) in (\x{FL}+\borderthickness,\y{L1}) -- (\x{FR}-\borderthickness,\y{L1});
\draw [red,dashed] let \p{FR}=(FR),\p{FL}=(FL),\p{L2}=(L2) in (\x{FL}+\borderthickness,\y{L2}) -- (\x{FR}-\borderthickness,\y{L2});
}
]
Informationen zur Verwendung von let
in \draw
Befehlen finden Sie beispielsweise unterdiese Antwort. Beim Erstellen zukünftiger Boxen müssen Sie hoffentlich nur die Koordinaten bearbeiten L1
und L2
die Höhe der horizontalen Linien richtig einstellen (beachten Sie, dass nur die Y-Komponente dieser Koordinaten verwendet wird).
Ausgabe: