
Estou tentando criar uma célula com colunas mescladas, mas não está produzindo uma célula com a largura correta. Quando eu uso c
ou l
ou r
como 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.97
corresponde, 4.33
mas 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}
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 \tabcolsep
geralmente é definido pela classe do documento. As classes de documento LaTeX "padrão" -- article
, report
e book
-- usam 6pt
como 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
\centering
e defina o tipo deC
coluna - remover
\fontsize{10pt}{12.0pt}\selectfont
e usar\small
ou\footnotesize
- remova primeiro
\cellcolor[HTML]{FFFFFF}
, o padrão é branco - remova
\multicolumn
itens 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
tabularx
automáticohsize
em vez dep
tipo 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}