![Таблица шириной 100 % и выравниванием по вертикали/горизонтали](https://rvso.com/image/266422/%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0%20%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D0%BE%D0%B9%20100%20%25%20%D0%B8%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B2%D0%BD%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20%D0%BF%D0%BE%20%D0%B2%D0%B5%D1%80%D1%82%D0%B8%D0%BA%D0%B0%D0%BB%D0%B8%2F%D0%B3%D0%BE%D1%80%D0%B8%D0%B7%D0%BE%D0%BD%D1%82%D0%B0%D0%BB%D0%B8.png)
Я хочу нарисовать следующую таблицу в 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}{...}
.