Valores não alinhados ao usar tabela

Valores não alinhados ao usar tabela

Tenho um problema ao exibir corretamente a seguinte tabela:

\documentclass[12pt]{report}
\usepackage{tabulary}
\usepackage{booktabs}
\usepackage{float,lscape}
\usepackage{longtable}
\usepackage{tabularx}
\makeatletter
\def\hlinewd#1{%
  \noalign{\ifnum0=`}\fi\hrule \@height #1 \futurelet
   \reserved@a\@xhline}
\makeatother
\usepackage{multirow}
\usepackage{bigstrut}

\begin{table}[htbp]
  \centering
  \caption{Yearly membership growth for different time periods}
  \scriptsize
    \begin{tabulary}{\textwidth}{LLLLLLLLLLLLLLLLL}
    \hlinewd{1.25pt}
    \textbf{a. Time period 1886 - 1892:} & \textbf{} & \textbf{} &       &       &       &       &       &       &       &       &       &       &       &       &       &  \bigstrut\\
\cline{1-8}    \multicolumn{1}{C}{86} & \multicolumn{1}{C}{87} & \multicolumn{1}{C}{88} & \multicolumn{1}{C}{89} & \multicolumn{1}{C}{90} & \multicolumn{1}{C}{91} & \multicolumn{1}{C}{92} & \multicolumn{1}{C}{AVG} &       &       &       &       &       &       &       &       &  \bigstrut\\
\cline{1-8}    \multicolumn{1}{C}{485} & \multicolumn{1}{C}{229} & \multicolumn{1}{C}{372} & \multicolumn{1}{C}{401} & \multicolumn{1}{C}{488} & \multicolumn{1}{C}{261} & \multicolumn{1}{C}{444} & \multicolumn{1}{C}{383} &       &       &       &       &       &       &       &       &  \bigstrut\\
\cline{1-8}          &       &       &       &       &       &       &       &       &       &       &       &       &       &       &       &  \bigstrut[t]\\
    \textbf{b. Time period 1911 - 1926:} & \textbf{} & \textbf{} &       &       &       &       &       &       &       &       &       &       &       &       &       &  \bigstrut[b]\\
    \hline
    \multicolumn{1}{C}{11} & \multicolumn{1}{C}{12} & \multicolumn{1}{C}{13} & \multicolumn{1}{C}{14} & \multicolumn{1}{C}{15} & \multicolumn{1}{C}{16} & \multicolumn{1}{C}{17} & \multicolumn{1}{C}{18} & \multicolumn{1}{C}{19} & \multicolumn{1}{C}{20} & \multicolumn{1}{C}{21} & \multicolumn{1}{C}{22} & \multicolumn{1}{C}{23} & \multicolumn{1}{C}{24} & \multicolumn{1}{C}{25} & \multicolumn{1}{C}{26} & \multicolumn{1}{C}{AVG} \bigstrut\\
    \hline
    \multicolumn{1}{C}{338} & \multicolumn{1}{C}{929} & \multicolumn{1}{C}{528} & \multicolumn{1}{C}{1'426} & \multicolumn{1}{C}{-301} & \multicolumn{1}{C}{117} & \multicolumn{1}{C}{375} & \multicolumn{1}{C}{293} & \multicolumn{1}{C}{652} & \multicolumn{1}{C}{2'671} & \multicolumn{1}{C}{1'370} & \multicolumn{1}{C}{544} & \multicolumn{1}{C}{786} & \multicolumn{1}{C}{479} & \multicolumn{1}{C}{440} & \multicolumn{1}{C}{800} & \multicolumn{1}{C}{715} \bigstrut\\
    \hlinewd{1.25pt}
    \end{tabulary}%
  \label{tab:addlabel}%
\end{table}%

O resultado fica como na imagem a seguir:

Mesa

Embora o posicionamento da mesa seja bom, não entendo por que o látex, depois de começar com o primeiro conjunto de números, coloca o resto à direita. Os números à direita (87, 88, 89, ....) também devem estar alinhados à esquerda. Como posso gerenciar isso para esta tabela?

Muito obrigado pela sua ajuda, como sempre!

Responder1

Você deve usar tabulare \multicolumn{17}{l}{...}para as entradas que abrangem colunas:

\documentclass[12pt]{report}
\usepackage{booktabs}
\usepackage{caption}

\begin{document}
\begin{table}[htbp]
\centering
\caption{Yearly membership growth for different time periods}
\label{tab:addlabel}

\scriptsize

\addtolength{\tabcolsep}{-1.8pt}
\begin{tabular}{*{17}{c}}
\toprule
\multicolumn{17}{l}{\textbf{a. Time period 1886--1892}} \\

\cmidrule[\lightrulewidth]{1-8}

86 & 87 & 88 & 89 & 90 & 91 & 92 & AVG & & & & & & & & & \\

\cmidrule[\lightrulewidth]{1-8}

485 & 229 & 372 & 401 & 488 & 261 & 444 & 383 & & & & & & & & & \\

\cmidrule[\lightrulewidth]{1-8}

\multicolumn{17}{l}{\textbf{b. Time period 1911--1926}} \\

\midrule

11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 & 24 & 25 & 26 & AVG \\

\midrule

338 & 929 & 528 & 1426 & $-301$ & 117 & 375 & 293 & 652 & 2671 & 1370 & 544 & 786 &
  479 & 440 & 800 & 715 \\
\bottomrule
\end{tabular}

\end{table}

\begin{table}[htbp]
\centering
\caption{Yearly membership growth for different time periods}
\label{tab:addlabel-double}

\footnotesize

\addtolength{\tabcolsep}{-3.1pt}
\begin{tabular}{*{17}{c}}
\toprule
\multicolumn{17}{l}{\textbf{a. Time period 1886--1892}} \\

\cmidrule[\lightrulewidth]{1-8}

86 & 87 & 88 & 89 & 90 & 91 & 92 & AVG & & & & & & & & & \\

\cmidrule[\lightrulewidth]{1-8}

485 & 229 & 372 & 401 & 488 & 261 & 444 & 383 & & & & & & & & & \\

\cmidrule[\lightrulewidth]{1-8}

\multicolumn{17}{l}{\textbf{b. Time period 1911--1926}} \\

\midrule

11 & 12 & 13 & 14 & 15 & 16 & 17 & 18 & 19 & 20 & 21 & 22 & 23 & 24 & 25 & 26 & AVG \\

\midrule

338 & 929 & 528 & 1426 & $-301$ & 117 & 375 & 293 & 652 & 2671 & 1370 & 544 & 786 &
  479 & 440 & 800 & 715 \\
\bottomrule
\end{tabular}

\end{table}

\end{document}

Não há necessidade \bigstrutou código complicado para regras mais pesadas.

Forneci duas versões da tabela, a segunda usa \footnotesize.

Como calculei a -3.1ptcorreção?

Executei o documento sem \addtolengthe obtive, para o segundo caso, um overfull de 104,69522pt. Como 104.69522/34 é aproximadamente 3.079, arredondei.

Da mesma forma para a primeira versão.

insira a descrição da imagem aqui

Se você quiser algum espaço vertical acima do segundo título, use\addlinespace

...

485 & 229 & 372 & 401 & 488 & 261 & 444 & 383 & & & & & & & & & \\

\cmidrule[\lightrulewidth]{1-8}

\addlinespace[\medskipamount]

\multicolumn{17}{l}{\textbf{b. Time period 1911--1926}} \\

\midrule

...

insira a descrição da imagem aqui

Responder2

as últimas colunas estão todas alinhadas à esquerda, mas a primeira coluna é muito larga devido a

 \textbf{a. Time period 1886 - 1892:} 

o que força a largura da coluna. talvez você pretendesse usar \multicolumnde forma que abrangesse todas as colunas em vez de forçar a largura da primeira coluna?

tabulary(e tabularx) não são adequados para esse tipo de tabela, eles funcionam alterando oquebra de linhalargura especificada em cada coluna. Como suas colunas consistem principalmente em dados numéricos, a quebra de linha não é relevante e seria melhor usar um padrão tabular.

informação relacionada