在 tabularx 环境中手动强制换行后如何对齐行

在 tabularx 环境中手动强制换行后如何对齐行

我正在创建一个大表格,我手动在第一列换行,以便将表格放入页面中。但是,我遇到了一个小问题。以下各列是根据底线对齐的。

我分享一个小例子。我的目标是确保文本从顶部对齐,而不是从底部对齐。

\begin{table}[!ht]
\centering
\small
\begin{tabularx}{\textwidth}{lXX}
\toprule
\textbf{} & \textbf{Column A} & \textbf{Column B} \\ 
\midrule
\textbf{First} \\\textbf{Second} & Some text here & Some text there \\ 
\bottomrule
\end{tabularx}
\caption{My table}
\label{Table3}
\end{table}

在此处输入图片描述

答案1

我建议您将左侧列的列类型从 更改为 ,l并将p列宽设置为该列中出现的最长单词(“Second”)。然后,使用\newline在“First”和“Second”之间添加换行符。哦,如果左侧列的所有内容都应该是大胆的,我也会通过在 前面加上>{\bfseries}来自动执行该步骤p{\widthof{\textbf{Second}}}

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{calc} % for '\widthof' macro

\begin{document}
\begin{table}[!ht]
\centering
\small
\begin{tabularx}{\textwidth}{@{} 
     >{\bfseries}p{\widthof{\textbf{Second}}} 
     X 
     X 
     @{}}
\toprule
   & \textbf{Column A} & \textbf{Column B} \\ 
\midrule
First \newline Second & Some text here & Some text there \\ 
\bottomrule
\end{tabularx}

\caption{My table}
\label{Table3}
\end{table}

\end{document}

答案2

  • 您将最后两列单元格的内容插入第二行。
  • 您接下来要做的事情是使用tblrtabularray 包中定义的表轻松实现。
  • 使用7tblr`表,其代码更加简洁和简单(与您的代码片段相比)
  • MWE 展示了可能的解决方案:
    • 其他单元格中的文本位于单元格顶部
    • 其他单元格中的文本垂直居中:
\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}

\begin{document}
    \begin{table}[!ht]
\begin{tblr}{colspec = {Q[l, font=\bfseries] *{2}{X[l]}},
             row{1} = {font=\bfseries}
             }
    \toprule
                & Column A      & Column B          \\
    \midrule
{First\\    
    Second}     & Some text here & Some text there  \\
    \bottomrule
\end{tblr}
\caption{My table}
\label{Table3}
    \end{table}

    \begin{table}[!ht]
\begin{tblr}{colspec = {Q[l, m, font=\bfseries] *{2}{X[l]}},
             row{1} = {font=\bfseries}
             }
    \toprule
                & Column A      & Column B          \\
    \midrule
{First\\
    Second}     & Some text here & Some text there  \\
    \bottomrule
\end{tblr}
\caption{My table}
\label{Table3}
    \end{table}
\end{document}

在此处输入图片描述

编辑:
对您的评论的回应:

  • X建议的解决方案也适用于表格有更多列的情况
  • 下面的 MWE 是使用最新版本的tabularray软件包(版本 2023A,自 2023-03-01 开始)测试的。从收到的结果(如下所示)可以看出,您的主张不成立。建议的解决方案有效,正如所提供的那样。
\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}

\begin{document}
    \begin{table}[!ht]
\begin{tblr}{colspec = {Q[l, font=\bfseries] *{4}{X[l]}},
             row{1} = {font=\bfseries}
             }
    \toprule
                & Column A  & Column B  & Column C  &   Column D    \\
    \midrule
{First\\
    Second}     & Some text & Some text & Some text & Some text     \\
    \bottomrule
\end{tblr}
\caption{My table}
\label{Table3}
    \end{table}
\end{document}

在此处输入图片描述

相关内容