Mesa con 100% de ancho y alineación vertical/horizontal

Mesa con 100% de ancho y alineación vertical/horizontal

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 \centeringdelante 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}

ingrese la descripción de la imagen aquí

Respuesta2

Puedes hacer la alineación con los métodos estándar de TeX pero mejor con ragged2eel 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 Xcolumna es básicamente una p{...}columna. Por lo tanto, puedes utilizar los comandos que se encuentran \RaggedRightal 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}{...}.

información relacionada