Largura de célula errada na tabela ao mesclar colunas

Largura de célula errada na tabela ao mesclar colunas

Estou tentando criar uma célula com colunas mescladas, mas não está produzindo uma célula com a largura correta. Quando eu uso cou lou rcomo parâmetros de alinhamento, ele funciona perfeitamente se o texto na célula for menor que a largura da célula, mas no caso em que o texto tiver mais do que algumas palavras, ele transbordará a margem direita. Para resolver isso estou usando p{with}como parâmetro de alinhamento, mas por algum motivo está produzindo células com largura menor.

No exemplo abaixo 0.84*4+0.97corresponde, 4.33mas não está produzindo os resultados esperados.

\begin{table}[H]
\begin{tabular}{p{0.97in}p{0.84in}p{0.84in}p{0.84in}p{0.84in}}
\multicolumn{1}{p{0.97in}}{\cellcolor[HTML]{FFFFFF}} & 
\multicolumn{1}{p{0.84in}}{\cellcolor[HTML]{CCCCCC}\Centering {\fontsize{10pt}{12.0pt}\selectfont col-head-1}} & 
\multicolumn{1}{p{0.84in}}{\cellcolor[HTML]{CCCCCC}\Centering {\fontsize{10pt}{12.0pt}\selectfont col-head-2}} & 
\multicolumn{1}{p{0.84in}}{\cellcolor[HTML]{CCCCCC}\Centering {\fontsize{10pt}{12.0pt}\selectfont col-head-3}} & 
\multicolumn{1}{p{0.84in}}{\cellcolor[HTML]{CCCCCC}\Centering {\fontsize{10pt}{12.0pt}\selectfont col-head-4}} \\

\multicolumn{1}{p{0.97in}}{\cellcolor[HTML]{CCCCCC}\Centering {\fontsize{10pt}{12.0pt}\selectfont row-1}} & 
\multicolumn{1}{p{0.84in}}{\Centering YES} & 
\multicolumn{1}{p{0.84in}}{\Centering NO} & 
\multicolumn{1}{p{0.84in}}{\Centering YES} & 
\multicolumn{1}{p{0.84in}}{\Centering YES} \\

\multicolumn{5}{p{4.33in}}{\Centering \cellcolor[HTML]{CCCCCC}{\textbf{ Some random long text, Some random long text, Some random long text,}}} \\
\end{tabular}
\end{table}

Saída

Responder1

A soma das larguras utilizáveis ​​dos cincoIndividualcolunas é de fato 0.84in*4+0.97in=4.33in.

No entanto, como há preenchimento de espaços em branco (na quantidade de \tabcolsep) à esquerda e à direita de cada célula, a largura utilizável docombinaçãodas cinco células é 4.33in+8\tabcolsep.

Para aproveitar esse fato, altere

\multicolumn{5}{p{4.33in}}{...}

para

\multicolumn{5}{p{\dimexpr4.33in+8\tabcolsep\relax}}{...}

O valor de \tabcolsepgeralmente é definido pela classe do documento. As classes de documento LaTeX "padrão" -- article, reporte book-- usam 6ptcomo valor.

Responder2

O problema principal foi resolvido na resposta do @Mico, gostaria de abordar outros problemas. A mesa tem muito barulho e comandos repetidos desnecessários. No LaTeX, você pode definir suas próprias macros de atalho para fazer qualquer coisa usada com frequência. Aqui está uma lista de alterações que você pode tentar:

  • defina uma nova macro para células coloridas, \CC{..}por exemplo
  • remova \centeringe defina o tipo de Ccoluna
  • remover \fontsize{10pt}{12.0pt}\selectfonte usar \smallou\footnotesize
  • remova primeiro \cellcolor[HTML]{FFFFFF}, o padrão é branco
  • remova \multicolumnitens desnecessários
  • é melhor usar [!htbp]em vez de [H]e deixar o LaTeX decidir o local recomendado para sua mesa
  • você também pode tentar tabularxautomático hsizeem vez de ptipo de coluna

Aqui está uma versão limpa da sua tabela:

\documentclass[12pt,a4paper]{article}
%\usepackage{colortbl,xcolor} % OR
\usepackage[table]{xcolor}    % see Mico's comment below
\begin{document}

\newcommand{\CC}[1]{\cellcolor[HTML]{CCCCCC}{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

\begin{table}
\begin{tabular}{C{0.97in}C{0.84in}C{0.84in}C{0.84in}C{0.84in}}
                  & \CC{\small col-head-1} & \CC{\small col-head-2} & \CC{\small col-head-3} & \CC{\small col-head-4} \\
\CC{\small row-1} & YES                    & NO                     & YES                    & YES                    \\
\multicolumn{5}{C{\dimexpr4.33in+8\tabcolsep\relax}}{\CC{\textbf{Some random long text, Some random long text, Some random long text,}}} 
\end{tabular}
\end{table}

\end{document}

informação relacionada