
a opção sidebyside dá um resultado ruim ...
sem lado a lado, o código funciona bem.
\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}
Responder1
Nesse caso, por que não usar apenas um tabularx
dentro do 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}
Atualizar:
As imagens OP mostram um texto alinhado à esquerda na primeira linha. Na minha resposta original não consegui reproduzir esse comportamento devido a um problema quando um \multicolumn
comando é introduzido na primeira célula de um tcolorbox tabularx. Este problema é mostrado emtcolorbox, tabularx: primeira linha com multicolunas não funciona no ambiente tcolorbox. Agora, obrigado a Thomas F. Sturm ( tcolorbox
autor), existe uma solução provisória para este problema.
\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ª atualização:
O problema com multicolumn
o comando na coluna esquerda da regra superior foi resolvido em tcolorbox v4.20
. Não há necessidade de pacto anterior. O segundo valor pode ser obtido com:
\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}
Responder2
O problema surge porque sidebyside
aparece a opção de modificar o nó de segmentação para que \tcblower
possa produzir uma linha vertical entre as duas unidades em vez da habitual linha horizontal. Conseqüentemente, \tcbline
não funciona conforme o esperado, pois utiliza o mesmo código de segmentação que depende do nó de segmentação.
Não consigo encontrar nenhum exemplo na documentação do pacote de uso \tcbline
com a sidebyside
opção, portanto, não está claro se isso é suportado.
Você pode obter uma caixa razoavelmente próxima do resultado pretendido com uma linha vertical sólida, definindo seu estilo de segmentação como sólido (vermelho) e removendo o código de segmentação (o que está causando problemas). Entretanto, linhas horizontais tracejadas não estão presentes.
As mudanças
segmentation style={solid, red}
% segmentation code={
% \path[color=red,draw]
% (segmentation.west) -- (segmentation.east);}
produz
A única solução que consigo ver é desenhar manualmente as linhas de segmentação usando a overlay
opção (desativando as embutidas com a segmentation hidden
chave). Você pode fazer isso de forma um tanto pragmática usando o nó e a biblioteca frame
tikizlibrary :calc
% \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});
}
]
Para uso de comandos let
in \draw
, consulte, por exemplo,esta resposta. Ao construir caixas futuras, esperamos que você só precise editar as coordenadas L1
e L2
obter a altura das linhas horizontais correta (observe que apenas o componente y dessas coordenadas é usado).
Saída: