Como alinhar horizontalmente as linhas entre colunas do tipo X?

Como alinhar horizontalmente as linhas entre colunas do tipo X?

Eu tenho uma tabela com títulos curtos e longos. Estou usando o tipo de coluna Xdo tabularxpacote. Os títulos estão alinhados ao topo, como posso alinhar os títulos horizontalmente no meio?

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

insira a descrição da imagem aqui

Responder1

Supondo que você deseja obter entradas centralizadas horizontal e verticalmente, você pode usar a seguinte redefinição de Xcolunas de tipo. Normalmente eles são derivados de pcolunas de tipo alinhadas pela parte superior. Com \renewcommand{\tabularxcolumn}[1]{m{#1}}podemos mudar isso para que as xcolunas de tipo sejam derivadas das mcolunas de tipo centralizadas verticalmente.

insira a descrição da imagem aqui

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

Se quiser usar Xcolunas de tipo centralizadas horizontal e verticalmente com mais frequência em todo o documento, você também pode adicionar \newcolumntype{Y}{>{\centering\arraybackslash}X}ao seu preâmbulo e usar \begin{tabularx}{\linewidth}{*2{Y}}.


Se você deseja manter a definição original de Xcolunas de tipo alinhadas no topo e ter um tipo de coluna derivado separado e centralizado verticalmente, você pode querer dar uma olhada emCopie a coluna tabularx X como nova coluna centralizada verticalmente


Se você quiser alterar apenas o alinhamento vertical de uma única tabela, poderá usar a seguinte redefinição local da Xcoluna de tipo. Aqui adicionei \renewcommand{\tabularxcolumn}[1]{m{#1}}logo após \begin{table}a tabela correspondente.

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

informação relacionada