![Mesa con 100% de ancho y alineación vertical/horizontal](https://rvso.com/image/266422/Mesa%20con%20100%25%20de%20ancho%20y%20alineaci%C3%B3n%20vertical%2Fhorizontal.png)
Quiero dibujar la siguiente tabla en LaTeX. En la primera columna el texto debe estar alineado a la izquierda. El texto de todas las demás celdas debe estar centrado. El primer problema ocurre con D en la primera fila. Si escribo un \centering
delante de D
, aparece un error de LaTeX. El segundo problema es que quiero alinear verticalmente el texto en todas las celdas pero no sé cómo. Encontré una solución pero no funciona si se especifica el ancho de la primera columna.
\documentclass{article}
\usepackage{blindtext}
\usepackage{tabularx}
\begin{document}
\begin{tabularx}{\textwidth}{|p{4cm}|X|X|X|X|}
\hline
& \centering A & \centering B & \centering C & D\\
\hline
\blindtext & 123 & 123 & 123 & 123\\
\hline
\end{tabularx}
\end{document}
Respuesta1
Para texto centrado horizontal y verticalmente, redefina la definición de la columna X:
\documentclass{article}
\usepackage{ragged2e}
\usepackage{tabularx}
\renewcommand\tabularxcolumn[1]{>{\Centering}m{#1}}
\newcommand\TEXT{%
I want to draw the following table in Latex. In the first column the text should be left aligned. The text in all other cells should be centered.}% only for demo
\begin{document}
\begin{tabularx}{\textwidth}{|m{4cm}*4{|X}|}\hline
& A & B & C & D \\\hline
\TEXT\TEXT & 123 & 123 & 123 & \TEXT\\\hline
\end{tabularx}
\end{document}
Respuesta2
Puedes hacer la alineación con los métodos estándar de TeX pero mejor con ragged2e
el paquete de LaTeX:
\documentclass{article}
\usepackage{blindtext}
\usepackage{tabularx}
\usepackage{ragged2e}
\begin{document}
\begin{tabularx}{\textwidth}{|>{\RaggedRight}p{4cm}*{5}{|>{\Centering}X}|}
\hline
& A & B & C & D\\
\hline
\blindtext & 123 & 123 & 123 & 123\\
\hline
\end{tabularx}
\end{document}
Una X
columna es básicamente una p{...}
columna. Por lo tanto, puedes utilizar los comandos que se encuentran \RaggedRight
al principio de cada celda. Para hacerlo automáticamente para cada celda, simplemente use >{..}
, que inserta el contenido de las llaves al comienzo de cada celda en esa fila.
Para evitar la repetición de las últimas cinco celdas, he insertado la construcción *{5}{...}
.