Desenhando tabela multicolunas em látex

Desenhando tabela multicolunas em látex

Estou com um problema ao desenhar uma tabela com várias colunas em látex ieeetran.

Isto é o que eu quero desenhar: insira a descrição da imagem aqui

No entanto, não consegui. Estou tendo problemas para adicionar linhas OBR e AR. Tentei alguns códigos, nenhum deles funcionou. Meu último teste é:

\begin{table}[!h]
\centering

    \caption{caption}     
    \label{tab:table}

    \begin{small}
    \begin{tabular}{|l|l|l|l|}
    \hline
    & \multicolumn{6} {c|} {\bfseries Dataset} & {\bfseries  A} &{\bfseries B}  & {\bfseries C}\\
    \cline{2-7}
    {\bfseries } & {\bfseries OBR} &{\bfseries AR}  & {\bfseries OBR} &{\bfseries AR} & {\bfseries OBR} &{\bfseries AR}\\
    \hline
    D1        & 2.1\%   &   2.1\%   2.1\%  & 2.1\%  &   2.1\%   2.1\%   \\
    \hline
    D2         & 11.6\% &11.6\% & 11.6\%  & 2.1\%   &   2.1\%   2.1\%\\
    \hline
    D3          & 5.5\%     &   5.5\%   & 5.5\%   & 2.1\%   &   2.1\%   2.1\%  \\
    \hline
    \end{tabular}
    \end{small} 
\end{table}

Posso pedir a alguém que me ajude a desenhar esta mesa? Estarei muito grato.

Responder1

Alguns comentários iniciais:

  • Presumo que você esteja usando omultirowpacote para tentar imprimir as múltiplas colunas (você não disse, mas parece a escolha natural).

  • Eu sugeriria usar osiunitxpacote para alinhar as casas decimais em sua tabela.

  • Obooktabspackage tem alguns bons conselhos para tabelas bonitas em LaTeX na documentação. Eu usei abaixo, mas você pode remover a dependência substituindo \toprule, \midrulee \bottomrulepor \hline.

Quanto ao motivo pelo qual o exemplo atual não está compilando:

  • O tabularnão tem colunas suficientes. Você passou na opção {|l|l|l|l|}, que consiste em quatro colunas alinhadas à esquerda com barras verticais entre cada uma delas. Na sua parte mais larga, a tabela original tem sete colunas e você precisa levar em conta todas elas. Portanto, isso deve ser alterado para algo como {|l|l|l|l|l|l|l|}.

    Se você usar siunitx, então use {lSSSSSS}: the Sé uma opção siunitxque alinha os pontos decimais em seus dados. Sinta-se à vontade para alterar isso novamente se não quiser/não puder usar este pacote.

  • O multicolumn{6} {c|}leva oConjunto de dadostítulo e preenche seis colunas com ele, então você tem mais três colunas paraA,BeC. Isso significa que esta linha tem nove colunas no total, o que é mais do que você precisa.

    Em vez disso, você quer algo mais como:

    \multirow{2}{*}{Dataset} &
      \multicolumn{2}{c}{A} &
      \multicolumn{2}{c}{B} &
      \multicolumn{2}{c|}{C} \\
    

    Você precisa fazer a coluna final c|para obter a linha vertical final no final.

  • Na segunda linha, você pula a primeira célula (que é preenchida por **Dataset* da linha anterior) e depois preenche o restante normalmente:

    & O.B.R & A.R & O.B.R & A.R & O.B.R & A.R \\
    

    Se você usar siunitx, será necessário colocá-los entre chaves, para que o ponto final não seja lido como um ponto decimal. Caso contrário, você receberá um erro porque não é possível alinhar esses números.

    & {O.B.R} & {A.R} & {O.B.R} & {A.R} & {O.B.R} & {A.R} \\
    

Se modificarmos seu código com essas sugestões em mente, obteremos algo assim:

\documentclass{article}

\usepackage{multirow}

\begin{document}

\begin{table}
  \begin{tabular}{|l|l|l|l|l|l|l|}
    \hline
    \multirow{2}{*}{Dataset} &
      \multicolumn{2}{c}{A} &
      \multicolumn{2}{c}{B} &
      \multicolumn{2}{c|}{C} \\
    & O.B.R & A.R & O.B.R & A.R & O.B.R & A.R \\
    \hline
    D1 & 2.1\% & 2.1\% & 2.1\% & 2.1\% & 2.1\% & 2.1\% \\
    \hline
    D2 & 11.6\% & 11.6\% & 11.6\% & 11.6\% & 11.6\% & 11.6\% \\
    \hline
    D3 & 5.5\% & 5.5\% & 5.5\% & 5.5\% & 5.5\% & 5.5\% \\
    \hline
  \end{tabular}
\end{table}

\end{document}

e este é o resultado:

insira a descrição da imagem aqui

Aqui está um exemplo que inclui siunitxe booktabs(também coloquei o sinal % no cabeçalho para facilitar a legibilidade):

\documentclass{article}

\usepackage{booktabs}
\usepackage{multirow}
\usepackage{siunitx}

\begin{document}

\begin{table}
  \begin{tabular}{lSSSSSS}
    \toprule
    \multirow{2}{*}{Dataset} &
      \multicolumn{2}{c}{A (\%)} &
      \multicolumn{2}{c}{B (\%)} &
      \multicolumn{2}{c}{C (\%)} \\
      & {O.B.R} & {A.R} & {O.B.R} & {A.R} & {O.B.R} & {A.R} \\
      \midrule
    D1 & 2.1 & 2.1 & 2.1 & 2.1 & 2.1 & 2.1 \\
    D2 & 11.6 & 11.6 & 11.6 & 11.6 & 11.6 & 11.6 \\
    D3 & 5.5 & 5.5 & 5.5 & 5.5 & 5.5 & 5.5 \\
    \bottomrule
  \end{tabular}
\end{table}

\end{document}

que compila para

insira a descrição da imagem aqui

Responder2

 \begin{tabular}{|l|l|l|l|l|l|l|}
    \hline 
   \multicolumn{1}{|c|}{Std} &
      \multicolumn{2}{c|}{1.5} &
      \multicolumn{2}{c|}{2} &
      \multicolumn{2}{c|}{3} \\ 
      \hline
    d& Mean & Std & Mean & Std & Mean & Std \\
    \hline
    D1 & 2.1\% & 2.1\% & 2.1\% & 2.1\% & 2.1\% & 2.1\% \\
    \hline
    D2 & 11.6\% & 11.6\% & 11.6\% & 11.6\% & 11.6\% & 11.6\% \\
    \hline
    D3 & 5.5\% & 5.5\% & 5.5\% & 5.5\% & 5.5\% & 5.5\% \\
    \hline
  \end{tabular}

informação relacionada