Как выровнять строки между столбцами типа X по горизонтали?

Как выровнять строки между столбцами типа X по горизонтали?

У меня есть таблица с короткими и длинными заголовками. Я использую этот тип столбцов Xиз tabularxпакета. Заголовки выровнены по верху, как мне выровнять заголовки горизонтально по центру?

\documentclass[12pt,a4paper]{article}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{array}

\begin{document}

\begin{table}[htb]
\centering
\caption{My caption}
\label{my-label}
\begin{tabularx}{\linewidth}{*2{>{\centering\arraybackslash}X}}
\toprule
\textbf{Short heading\newline(units)} &
\textbf{This is a long long, very very long heading\newline(units)}\\%
\midrule
416,09 & 194,30 \\
\bottomrule
\end{tabularx}
\end{table}

\end{document}

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

решение1

Предполагая, что вы хотите добиться горизонтально и вертикально центрированных записей, вы можете использовать следующее переопределение Xстолбцов типа. Обычно они выводятся из pстолбцов типа, выровненных по верхнему краю. С помощью \renewcommand{\tabularxcolumn}[1]{m{#1}}мы можем изменить это так, чтобы xстолбцы типа вытекали из столбцов типа, выровненных по вертикали m.

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

\documentclass[12pt,a4paper]{article}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{array}

\renewcommand{\tabularxcolumn}[1]{m{#1}}

\begin{document}

\begin{table}[htb]
\centering
\caption{My caption}
\label{my-label}
\begin{tabularx}{\linewidth}{*2{>{\centering\arraybackslash}X}}
\toprule
\textbf{Short heading\newline(units)} &
\textbf{This is a long long, very very long heading\newline(units)}\\%
\midrule
416,09 & 194,30 \\
\bottomrule
\end{tabularx}
\end{table}

\end{document}

Если вы хотите чаще использовать Xв документе столбцы текста, выровненные по горизонтали и вертикали, вы также можете добавить \newcolumntype{Y}{>{\centering\arraybackslash}X}в преамбулу и использовать \begin{tabularx}{\linewidth}{*2{Y}}.


Если вы хотите сохранить исходное определение Xтипа столбцов, выровненных по верхнему краю, и иметь отдельный производный и вертикально центрированный тип столбцов, вам, возможно, стоит взглянуть наКопировать столбец X tabularx как новый вертикально центрированный столбец


Если вы хотите изменить вертикальное выравнивание только для одной таблицы, вы можете использовать следующее локальное переопределение столбца типа X. Здесь я добавил \renewcommand{\tabularxcolumn}[1]{m{#1}}сразу после \begin{table}соответствующей таблицы.

\documentclass[12pt,a4paper]{article}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{array}


\begin{document}

\begin{table}[htb]
\centering
\caption{My caption}
\label{my-label}
\begin{tabularx}{\linewidth}{*2{>{\centering\arraybackslash}X}}
\toprule
\textbf{Short heading\newline(units)} &
\textbf{This is a long long, very very long heading\newline(units)}\\%
\midrule
416,09 & 194,30 \\
\bottomrule
\end{tabularx}
\end{table}

\begin{table}[htb]
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\centering
\caption{My caption}
\label{my-label}
\begin{tabularx}{\linewidth}{*2{>{\centering\arraybackslash}X}}
\toprule
\textbf{Short heading\newline(units)} &
\textbf{This is a long long, very very long heading\newline(units)}\\%
\midrule
416,09 & 194,30 \\
\bottomrule
\end{tabularx}
\end{table}

\begin{table}[htb]
\centering
\caption{My caption}
\label{my-label}
\begin{tabularx}{\linewidth}{*2{>{\centering\arraybackslash}X}}
\toprule
\textbf{Short heading\newline(units)} &
\textbf{This is a long long, very very long heading\newline(units)}\\%
\midrule
416,09 & 194,30 \\
\bottomrule
\end{tabularx}
\end{table}

\end{document}

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