Como fazer tabelas manualmente usando booktabs

Como fazer tabelas manualmente usando booktabs

Sou realmente novo no uso do LaTex e gostaria de ajuda para fazer esta tabela usando booktabsformatação. Eu uso Re idealmente o geraria usando xtablespackage. No entanto, não consegui lidar com a questão da abrangência das colunas.

É por isso que tentei inserir \multicolumno 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 booktabsos 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 ( \hlinee \cline) e booktabsregras ( \toprule).

Substituir essas regras pelas booktabsversões ( \midrule, \cmidrulee \bottomrule) fornece a boa formatação desejada.

Eu removi as multirowcoisas. 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}

saída de código

Alguns comentários sobre a composição de dados numéricos

Usar o ctipo 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 siunitxpacote ou o dcolumnpacote. siunitxpossui 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 dcolumnpacote 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}

saída da amostra

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 \abovecaptionskipe \belowdisplayskipquando a legenda está sobre a tabela.

Terceiro, eu substituiria Observationspor 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} 

insira a descrição da imagem aqui

Observação: Se você não quiser abreviar `Observações, você deve considerar reorganizar a tabela trocando linhas e colunas.

informação relacionada