
Я хочу нарисовать следующую таблицу в 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}{...}
.