
Sou realmente novo no uso do LaTex e gostaria de ajuda para fazer esta tabela usando booktabs
formatação. Eu uso R
e idealmente o geraria usando xtables
package. No entanto, não consegui lidar com a questão da abrangência das colunas.
É por isso que tentei inserir \multicolumn
o comando manualmente.
Aqui está o código:
\documentclass{article}
\usepackage{booktabs}
\usepackage{multirow}
\begin{document}
\begin{table}[ht]
\centering
\begin{tabular}{@{\extracolsep{4pt}}llccccccc}
\toprule
{} & {} & {Observations} & \multicolumn{3}{c}{Median} & \multicolumn{3}{c}{SD}\\
\cline{3-3}
\cline{4-6}
\cline{7-9}
Year & Group & N & V1 & V2 & V3 & V1 & V2 & V3 \\
\hline
\multirow{2}{*}{2012}
& Control & 2 & 0.052 & 0.294 & 0.115 & 0.304 & 0.619 & 0.611 \\
& Treat & 2 & 0.511 & 0.083 & 0.123 & 0.573 & 0.541 & 0.734 \\
\multirow{2}{*}{2016}
& Control & 3 & 0.320 & 0.344 & 0.382 & 0.382 & 0.494 & 0.477 \\
& Treat & 3 & 0.378 & 0.296 & 0.123 & 0.386 & 0.668 & 0.732 \\
\hline
\end{tabular}
\caption{Mean by Year and Group}
\end{table}
\end{document}
Porém, acho que essa tabela não está muito bem formatada, não está de acordo com booktabs
os padrões, não é? Como fazer manualmente uma tabela com o mesmo desenho, mas melhor formatada?
Obrigado
Responder1
O principal problema com a tabela é que você não está usando regras booktabs
, mas sim uma mistura de regras tabulares padrão ( \hline
e \cline
) e booktabs
regras ( \toprule
).
Substituir essas regras pelas booktabs
versões ( \midrule
, \cmidrule
e \bottomrule
) fornece a boa formatação desejada.
Eu removi as multirow
coisas. Isso não acrescenta nada à sua mesa; é perfeitamente claro colocar o ano na primeira linha dos pares de linhas daquele ano. Em geral, eu evitaria usar multirow
. Ele tem seus usos, mas geralmente para coisas como formulários que possuem células em caixas. Para tabelas de pesquisa padrão quase nunca é apropriado.
PS Espero que os dados sejam inventados! Seus Ns são muito pequenos... :)
\documentclass{article}
\usepackage{booktabs}
\begin{document}
\begin{table}[ht]
\centering
\begin{tabular}{@{\extracolsep{4pt}}llccccccc}
\toprule
{} & {} & {Observations} & \multicolumn{3}{c}{Median} & \multicolumn{3}{c}{SD}\\
\cmidrule{3-3}
\cmidrule{4-6}
\cmidrule{7-9}
Year & Group & N & V1 & V2 & V3 & V1 & V2 & V3 \\
\midrule
2012 & Control & 2 & 0.052 & 0.294 & 0.115 & 0.304 & 0.619 & 0.611 \\
& Treat & 2 & 0.511 & 0.083 & 0.123 & 0.573 & 0.541 & 0.734 \\
2016 & Control & 3 & 0.320 & 0.344 & 0.382 & 0.382 & 0.494 & 0.477 \\
& Treat & 3 & 0.378 & 0.296 & 0.123 & 0.386 & 0.668 & 0.732 \\
\bottomrule
\end{tabular}
\caption{Mean by Year and Group}
\end{table}
\end{document}
Alguns comentários sobre a composição de dados numéricos
Usar o c
tipo de coluna não é realmente o melhor plano ao compor dados numéricos. Normalmente queremos que os dados numéricos sejam alinhados de alguma forma, para que, se os números forem de tamanhos diferentes, eles se alinhem corretamente.
Para dados decimais, é normal alinhar na vírgula decimal. Para dados não decimais, o simples alinhamento à direita é adequado.
Para alinhar com a vírgula decimal, você pode usar o siunitx
pacote ou o dcolumn
pacote. siunitx
possui muitos recursos sofisticados para formatar dados numéricos automaticamente, incluindo agrupamento de dígitos para números grandes. Ele também fornece maneiras de compor adequadamente as unidades SI. O dcolumn
pacote foi projetado especificamente para alinhamento de ponto decimal. Aqui está um exemplo para mostrar as diferenças.
\documentclass{article}
\usepackage{booktabs}
\usepackage{dcolumn}
\usepackage{siunitx}
% Shorthand for multicolumn
\newcommand\mc[1]{\multicolumn{1}{c}{#1}}
\begin{document}
\begin{tabular}{ccrD{.}{.}{2.3}S}
\toprule
Center & Center & \mc{right} & \mc{D-column} & \mc{S-column} \\
\midrule
1 & 32.6 & 1 & 32.6 & 32.6 \\
10 & 335.434 & 10 & 335.434 & 335.434 \\
100 & 0.99 & 100 & 0.99 & 0.99 \\
5 & 1 & 5 & 1 & 1 \\
\bottomrule
\end{tabular}
\end{document}
Responder2
Primeiro, todas as suas regras devem ser feitas com booktabs
, pois adiciona algum preenchimento às regras da tabela (linhas da tabela em látex básico geralmente são muito estreitas).
Em segundo lugar, as legendas das tabelas devem seracimatabelas, pois as tabelas podem se espalhar pelas páginas e os leitores não deveriam ter que virar a página para saber do que se trata a tabela. Para isso a legenda package
é útil, o látex básico esquece de trocar os valores de \abovecaptionskip
e \belowdisplayskip
quando a legenda está sobre a tabela.
Terceiro, eu substituiria Observations
por uma abreviatura, pois acho feio ter uma coluna de um dígito com um cabeçalho de coluna tão largo.
Quarto, eu definiria um espaço entre colunas menor para os dois grupos de 3 colunas no final da tabela. Além disso, o (lr)
parâmetro `\cmidrules é útil aqui para melhorar a aparência geral da tabela.
\documentclass{article}
\usepackage{array, multirow, caption, booktabs}
\begin{document}
\begin{table}[ht]
\centering\setlength\extrarowheight{2pt}
\caption{Mean by Year and Group}
\begin{tabular}{@{\extracolsep{4pt}}llc*{2}{c@{\enspace}c@{\enspace}c}}
\toprule
{} & {} & {Obsv\textsuperscript{ns}} & \multicolumn{3}{c}{Median} & \multicolumn{3}{c}{SD}\\
\cmidrule(lr){3-3}
\cmidrule{4-6}
\cmidrule(lr){7-9}
Year & Group & N & V1 & V2 & V3 & V1 & V2 & V3 \\
\midrule
\multirow{2}{*}{2012}
& Control & 2 & 0.052 & 0.294 & 0.115 & 0.304 & 0.619 & 0.611 \\
& Treat & 2 & 0.511 & 0.083 & 0.123 & 0.573 & 0.541 & 0.734 \\
\addlinespace
\multirow{2}{*}{2016}
& Control & 3 & 0.320 & 0.344 & 0.382 & 0.382 & 0.494 & 0.477 \\
& Treat & 3 & 0.378 & 0.296 & 0.123 & 0.386 & 0.668 & 0.732 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
Observação: Se você não quiser abreviar `Observações, você deve considerar reorganizar a tabela trocando linhas e colunas.