¿Por qué mi tabla tabular(x) de 7 columnas es más ancha de lo especificado?

¿Por qué mi tabla tabular(x) de 7 columnas es más ancha de lo especificado?

Quiero una tabla muy simple ( tabular/x/*lo que sea) con 7 columnas, cada una del 14% del \linewidth98% total.

Pero por alguna razón la columna de la derecha está a) en el margen, b) fuera de las reglas de la tabla. ingrese la descripción de la imagen aquí

¿Cómo lo soluciono?

\documentclass[version=last,12pt]{scrreport}
\usepackage{tabularx,booktabs}

\begin{document}
\begin{table}[t]
\tiny
\begin{tabularx}{\linewidth}{@{}
p{0.14\linewidth}
p{0.14\linewidth}
p{0.14\linewidth}
p{0.14\linewidth}
p{0.14\linewidth}
p{0.14\linewidth}
p{0.14\linewidth}
@{}
}
\toprule
Excavator
& Alphanumeric data 
& Location 
& Warranty details 
& Expiry date of the support period 
& Required business properties
& Maximum needed diesel
\\
\bottomrule
\end{tabularx}
\end{table}

\end{document}     

Respuesta1

Primera versión: el uso de tabularxcolumnas Xde tipo da como resultado una tabla que es exactamente tan ancha como el ancho del texto y consta de 7 columnas igualmente anchas. Para alinear las columnas a la izquierda, utilicé >{\raggedright\arraybackslash}y definí un nuevo tipo de columna personalizado L.

Segunda versión: aquí, calculé manualmente los anchos de las columnas teniendo en cuenta el valor \tabcolsepque se agrega a la izquierda y a la derecha del contenido de cada columna. Como puede ver, la tabla resultante es, como se esperaba, ligeramente más estrecha que el ancho del texto.

Tercera versión: en esta versión, utilicé tabular*en combinación con \extracolsep{\fill}}para asegurarme de que la tabla sea tan ancha como el ancho del texto.

Las líneas verticales en la siguiente captura de pantalla son causadas por el showframepaquete y muestran el ancho del texto/comienzo de los márgenes.

ingrese la descripción de la imagen aquí

Nota al margen: espero que el \tinytamaño de fuente se haya utilizado en este ejemplo. Como este tamaño de fuente es bastante difícil de leer porque es tan pequeño, recomiendo no usarlo. Podrías ajustar fácilmente la tabla al ancho del texto, incluso con un tamaño de fuente normal, lo que daría como resultado un resultado similar a

ingrese la descripción de la imagen aquí

Dependiendo del contenido de la tabla, también podría resultar beneficioso permitir diferentes anchos de columna.

\documentclass[version=last,12pt]{scrreport}
\usepackage{tabularx,booktabs}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}

\newcolumntype{Z}[2]{>{\raggedright\arraybackslash}p{\dimexpr #1\textwidth- #2\tabcolsep} }

\newcolumntype{Y}[1]{>{\raggedright\arraybackslash}p{\dimexpr #1\textwidth} }

\usepackage{showframe}
\begin{document}
\begin{table}[t]
\tiny
\begin{tabularx}{\linewidth}{@{}*{7}{L}@{}}
\toprule
Excavator
& Alphanumeric data 
& Location 
& Warranty details 
& Expiry date of the support period 
& Required business properties
& Maximum needed diesel
\\
\bottomrule
\end{tabularx}
\end{table}


\begin{table}[t]
\tiny
\begin{tabular}{@{}Z{0.14}{1} 
                   *{5}{Z{0.14}{2}}
                   Z{0.14}{1} @{}}
\toprule
Excavator
& Alphanumeric data 
& Location 
& Warranty details 
& Expiry date of the support period 
& Required business properties
& Maximum needed diesel
\\
\bottomrule
\end{tabular}
\end{table}


\begin{table}[t]
\tiny \setlength{\tabcolsep}{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}*{7}{Y{0.14}}}
\toprule
Excavator
& Alphanumeric data 
& Location 
& Warranty details 
& Expiry date of the support period 
& Required business properties
& Maximum needed diesel
\\
\bottomrule
\end{tabular*}
\end{table}

\end{document}

 

información relacionada