Tcolorbox :: Side-by-Side-Option führt zu schlechtem Ergebnis

Tcolorbox :: Side-by-Side-Option führt zu schlechtem Ergebnis

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}

OHNE Side-by-Side... AUSGABE

MIT sidebyside... Bildbeschreibung hier eingeben

Antwort1

Warum verwenden Sie in diesem Fall nicht einfach ein tabularxinnerhalb 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}

Bildbeschreibung hier eingeben

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 \multicolumnBefehl 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 ( tcolorboxAutor) 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}

Bildbeschreibung hier eingeben

2. Aktualisierung:

Das Problem mit multicolumndem 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 sidebysideOption den Segmentierungsknoten so zu ändern scheint, dass \tcblowerzwischen den beiden Einheiten eine vertikale Linie statt der üblichen horizontalen Linie erstellt werden kann. \tcblineFunktioniert daher nicht wie erwartet, da derselbe Segmentierungscode verwendet wird, der auf dem Segmentierungsknoten basiert.

Ich kann in der Paketdokumentation keine Beispiele zur Verwendung \tcblinemit dieser sidebysideOption 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

Ausgabe

Die einzige Problemumgehung, die ich sehe, besteht darin, die Segmentierungslinien manuell mit der overlayOption zu zeichnen (die integrierten Linien mit der segmentation hiddenTaste zu deaktivieren). Sie können dies einigermaßen pragmatisch mit dem frameKnoten und der Tikizlibrary- calcBibliothek 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 letin \drawBefehlen finden Sie beispielsweise unterdiese Antwort. Beim Erstellen zukünftiger Boxen müssen Sie hoffentlich nur die Koordinaten bearbeiten L1und L2die Höhe der horizontalen Linien richtig einstellen (beachten Sie, dass nur die Y-Komponente dieser Koordinaten verwendet wird).

Ausgabe:

Ausgabe2

verwandte Informationen