表格列中的列右对齐

表格列中的列右对齐

我有一个定义如下的表,其中第一列是右对齐的:

\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{array}
\begin{document}
\begin{table}
\centering
\begin{tabular}{>{\hfill}p{3.50cm}p{5.50cm}p{5.50cm}}
\hline\noalign{\smallskip}
\textbf{Column 1} & \textbf{Column 2} & \textbf{Column 3} \\ [0.5ex]
\hline\noalign{\smallskip}
1 & text & text \\
2 & text & text \\
\hline\noalign{\smallskip}
\end{tabular}
\caption{thisTable.}
\label{tab:thisTable}
\end{table}
\end{document}

不过,第一列的列标题也是右对齐的。

我可以将列标题改为左对齐,但将列数据部分的值内容保持右对齐吗?

答案1

我可以将列标题改为左对齐,但将列数据部分的值内容保持右对齐吗?

是的。只需将单元格的内容放在\multicolumn{1}{l}{...}“包装器”中即可。

\hline\noalign{\smallskip}顺便说一句,我建议您加载该booktabs包并使用其宏\toprule\midrule\botttomrule来获得间距适当的水平线,而不是使用有些笨拙的指令。

并且,我建议您加载和包并定义一个采用宽度参数的 raggedleft(flushright)列类型,而不是>{\hfill}p{3.50cm}指定最左边的列,如下例所示。arrayragged2e

在此处输入图片描述

\documentclass{article}
\usepackage[margin=1in,a4paper]{geometry}  % choose margins appropriately
\usepackage{array,booktabs,ragged2e}
\newcolumntype{R}[1]{>{\RaggedLeft\arraybackslash}p{#1}}
\begin{document}
\begin{table}
\centering
\begin{tabular}{ R{3.50cm} p{5.50cm} p{5.50cm} }
\toprule
\multicolumn{1}{l}{\textbf{Column 1}} & \textbf{Column 2} & \textbf{Column 3} \\ 
\midrule
1 & text & text \\
2 & text & text \\
\bottomrule
\end{tabular}
\caption{thisTable.}
\label{tab:thisTable}
\end{table}
\end{document}

附录回答 OP 的后续问题:如果所讨论的单元格包含大量需要跨越多行的文本,您仍然可以使用\multicolumn,但不能使用l列类型说明符。例如,您可以输入

\newcolumntype{L}[1]{>{\RaggedRight\arraybackslash}p{#1}}

在序言中,然后写

\multicolumn{1}{L{3.50cm}}{An incredibly long header that occupies several lines.}

而不是早先的

\multicolumn{1}{l}{\textbf{Column 1}}

总之,\multicolumn是一个非常强大和灵活的工具。

答案2

@Mico 解决方案的一个变体,使用makecell包:它旨在通过一个命令 ( \thead) 对列标题进行通用格式设置,从而节省一些输入,而且在我看来最重要的是,它在语义上更好。我还允许自己将标题放在顶部,这是表格的印刷规范,并添加了包caption以确保标题和表格之间的垂直间距正确。

\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{array, booktabs, caption}
\usepackage{ragged2e}
\usepackage{makecell}
\renewcommand\theadalign{lc}
\renewcommand\theadfont{\bfseries}

\begin{document}
\begin{table}
\centering
\caption{thisTable.}
\label{tab:thisTable}
\begin{tabular}{>{\RaggedLeft}p{3.50cm}p{5.50cm}p{5.50cm}}
\toprule
\thead{Column 1} & \thead{Column 2} & \thead{Column 3} \\
\midrule
1 & text & text \\[0.5ex]
2 & text & text \\
\bottomrule
\end{tabular}
\end{table}
\end{document} 

在此处输入图片描述

相关内容