
Estoy intentando crear una celda con columnas fusionadas pero no produce una celda con el ancho correcto. Cuando uso c
o l
o r
como parámetros de alineación, funciona perfectamente si el texto en la celda tiene menos ancho que el ancho de la celda, pero en el caso de que el texto tenga más de unas pocas palabras, se desborda el margen derecho. Para resolver esto, lo estoy usando p{with}
como parámetro de alineación, pero por alguna razón produce celdas con un ancho de celda más pequeño.
En el siguiente ejemplo 0.84*4+0.97
coincide con 4.33
pero no produce los 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}
Respuesta1
La suma de los anchos utilizables de los cincoindividualcolumnas es de hecho 0.84in*4+0.97in=4.33in
.
Sin embargo, dado que hay un relleno de espacios en blanco (en la cantidad de \tabcolsep
) a la izquierda y a la derecha de cada celda, el ancho utilizable delcombinaciónde las cinco celdas es 4.33in+8\tabcolsep
.
Para aprovechar este hecho, cambie
\multicolumn{5}{p{4.33in}}{...}
a
\multicolumn{5}{p{\dimexpr4.33in+8\tabcolsep\relax}}{...}
El valor de \tabcolsep
generalmente lo establece la clase de documento. Las clases de documentos LaTeX "estándar" -- article
, report
, y book
-- se utilizan 6pt
como valor.
Respuesta2
El problema principal se resolvió en la respuesta de @Mico, me gustaría abordar otros problemas. La mesa tiene mucho ruido y comandos repetidos innecesarios. En LaTeX, puedes definir tus propias macros de acceso directo para hacer cualquier cosa que uses con frecuencia. Aquí tienes una lista de cambios que puedes probar:
- definir una nueva macro para celdas coloreadas,
\CC{..}
por ejemplo - eliminar
\centering
y definir el tipo de columnaC
en su lugar - eliminar
\fontsize{10pt}{12.0pt}\selectfont
y usar\small
o\footnotesize
- eliminar primero
\cellcolor[HTML]{FFFFFF}
, el valor predeterminado es blanco - eliminar
\multicolumn
s innecesarios - es mejor usarlo
[!htbp]
en lugar de[H]
y dejar que LaTeX decida el lugar recomendado para su mesa - También puedes probar
tabularx
con automáticohsize
en lugar dep
tipo de columna.
Aquí hay una versión limpia de su tabla:
\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}