Таблица шириной 100 % и выравниванием по вертикали/горизонтали

Таблица шириной 100 % и выравниванием по вертикали/горизонтали

Я хочу нарисовать следующую таблицу в LaTeX. В первом столбце текст должен быть выровнен по левому краю. Текст во всех остальных ячейках должен быть выровнен по центру. Первая проблема возникает с D в первой строке. Если я пишу a \centeringперед D, я получаю ошибку LaTeX. Вторая проблема в том, что я хочу выровнять текст по вертикали во всех ячейках, но не знаю как. Я нашел решение, но оно не работает, если указана ширина первого столбца.

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

решение1

Для текста, центрированного по горизонтали и вертикали, переопределите определение столбца 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}

введите описание изображения здесь

решение2

Выравнивание можно выполнить стандартными методами TeX, но лучше использовать ragged2eпакет 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}

Столбец Xпо сути является p{...}столбцом. Поэтому вы можете использовать команды, как \RaggedRightв начале каждой ячейки. Чтобы сделать это автоматически для каждой ячейки, просто используйте >{..}, который вставляет содержимое фигурных скобок в начало каждой ячейки в этой строке.

Чтобы избежать повторения последних пяти ячеек, я вставил конструкцию *{5}{...}.

Связанный контент