Gostaria de adicionar uma caixa retangular à minha tabela para destacar algumas linhas. Estou tentando usar tikz
com o segundo lote de código deA resposta de Harish Kumarpara uma pergunta semelhante. Porém, diferentemente da pergunta anterior, estou usando beamer
e a caixa aparece no lugar errado após compilar diversas vezes. Estou anexando uma foto com o resultado desejado e o que obtenho.
Este é o meu código:
\documentclass{beamer}
\usepackage[english]{babel}
\usepackage{tabularx,booktabs,dcolumn}
\usepackage{tikz}
\usetikzlibrary{matrix,shapes,arrows,fit}
\pdfmapfile{+sansmathaccent.map}
\newcolumntype{d}{D..{-1}}
\newcounter{nodecount}
\newcommand\tabnode[1]{\addtocounter{nodecount}{1} \tikz \node (\arabic{nodecount}) {#1};}
% Some options common to all the nodes and paths
\tikzstyle{every picture}+=[remember picture,baseline]
\tikzstyle{every node}+=[inner sep=0pt,anchor=base,
minimum width=1.8cm,align=center,text depth=.25ex,outer sep=1.5pt]
\tikzstyle{every path}+=[thick, rounded corners]
\begin{document}
\begin{frame}
\frametitle{Title of my slide}
\begin{table}
\resizebox{\textwidth}{!}{
\begin{tabular}{c*{7}{d}}
\midrule
\multicolumn{1}{c}{$CCCCC$}
& \multicolumn{1}{c}{$CCCC$}
& \multicolumn{1}{c}{$CCCC$}
& \multicolumn{1}{c}{$CCC$}
& \multicolumn{1}{c}{$CCCCCCC$}
& \multicolumn{1}{c}{$CCCCC$}
& \multicolumn{1}{c}{$CCCCC$}
& \multicolumn{1}{c}{$CCCCCCC$}
\\
\midrule
\multicolumn{8}{c}{\textbf{Panel A: AAA}} \\
\midrule
\tabnode{0} & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & \tabnode{0.00} \\
\tabnode{} & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & \tabnode{0.00} \\
& & & & & & & \\
0 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 \\
& (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) \\
& & & & & & & \\
0 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 \\
& (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) \\
\multicolumn{8}{c}{\textbf{Panel B: BBB}} \\
\midrule
0 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 \\
& (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) \\
& & & & & & & \\
0 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 \\
& (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) \\
& & & & & & & \\
0 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 \\
& (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) \\
\midrule
\end{tabular}
}
\begin{tikzpicture}[overlay]
\node[draw=red,rounded corners = 1ex,fit=(1)(4),inner sep = 1pt] {};
\end{tikzpicture}
\end{table}
\end{frame}
\end{document}
Responder1
Aqui está a versão revisada.
Mudanças:
Corrigido seu
newcolumntype
. Eu também corrigi o comando para\tabnode
, mas esta solução não permitiu que os números dentro do nó se alinhassem pelo separador decimal, então removi o comando completamente e substituí por outra coisa, veja abaixo.Além disso, agora, se você tentar adicionar números aleatórios aos seus valores, todos eles deverão estar alinhados no separator
.
, acabei de testar sozinho. Na saída abaixo, o primeiro número é longo e parece não estar alinhado, mas se você adicionar mais números na coluna, eles ficarão alinhados.Eu usei uma versão ajustada deA solução da Caramdirpara desenhar o retângulo. Basicamente você precisa marcar ocanto superior esquerdocom
\marktopleft{a1}
ondea1
está a primeira forma, por exemplo, e ocanto inferior direitocom\markbottomright{a1}
.Cada forma precisa ser acoplada dessa forma.
Caso você não saiba,
booktabs
suporta também\toprule
e\bottomrule
. Eu os adicionei.
Como de costume com o Tikz, lembre-se de que se você adicionar um novo retângulo, pode ser necessário compor duas vezes para corrigir o posicionamento.
Aqui está a saída:
E aqui está o código:
\documentclass{beamer}
\usepackage[english]{babel}
\usepackage{lmodern}% http://ctan.org/pkg/lm
\usepackage{tikz}
\usepackage{booktabs,dcolumn}
\usepackage{tabularx}
\usetikzlibrary{matrix,shapes,arrows,fit,tikzmark}
\newcolumntype{.}{D{.}{.}{-1}}
\begin{document}
% Some options common to all the nodes and paths
\tikzset{
every picture/.style={remember picture,baseline},
every node/.style={anchor=base,align=center,outer sep=1.5pt},
every path/.style={thick},
}
\newcommand\marktopleft[1]{%
\tikz[overlay,remember picture]
\node (marker-#1-a) at (.1em,.3em) {};%
}
\newcommand\markbottomright[1]{%
\tikz[overlay,remember picture]
\node (marker-#1-b) at (.1em,.3em) {};%
\tikz[overlay,remember picture,inner sep=3pt]
\node[draw=red,rounded corners,fit=(marker-#1-a.north west) (marker-#1-b.south east)] {};%
}
\begin{frame}
\frametitle{Title of my slide}
%
\begin{table}
\resizebox{\textwidth}{!}{%
%
\begin{tabular}{.*{8}{.}}
\toprule
%
\multicolumn{1}{c}{$CCCCC$}
& \multicolumn{1}{c}{$CCCC$}
& \multicolumn{1}{c}{$CCCC$}
& \multicolumn{1}{c}{$CCC$}
& \multicolumn{1}{c}{$CCCCCCC$}
& \multicolumn{1}{c}{$CCCCC$}
& \multicolumn{1}{c}{$CCCCC$}
& \multicolumn{1}{c}{$CCCCCCC$}
\\
\midrule
\multicolumn{8}{c}{\textbf{Panel A: AAA}} \\
\midrule
\marktopleft{a1}134,343.50 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.030 \\
& (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & 12510.00\markbottomright{a1} \\
& & & & & & & \\
0 & 103.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.440 \\
& (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (10.00) \\
& & & & & & & \\
\marktopleft{b1}0 & 0.0435 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 \\
& (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00)\markbottomright{b1} \\
& & & & & & & \\
\multicolumn{8}{c}{\textbf{Panel B: BBB}} \\
\midrule
0 & 0.00 & 404.00 & 0.34300 & 0.00 & 0.00 & 0.00 & 0.00 \\
& (70.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) \\
& & & & & & & \\
0 & 32.00 & 0.2300 & 54540.00 & 0.0045 & 0.00 & 0.00 & 0.00 \\
& (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) \\
& & & & & & & \\
0 & 0.00 & 10.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 \\
& (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) & (0.00) \\
\bottomrule
\end{tabular}
}
\end{table}
\end{frame}
\end{document}