我正在创建一个大表格,我手动在第一列换行,以便将表格放入页面中。但是,我遇到了一个小问题。以下各列是根据底线对齐的。
我分享一个小例子。我的目标是确保文本从顶部对齐,而不是从底部对齐。
\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
- 您将最后两列单元格的内容插入第二行。
- 您接下来要做的事情是使用
tblr
tabularray 包中定义的表轻松实现。 - 使用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}