我正在尝试整理一个由文本和数字组成的表格。我希望大多数数字的小数点对齐。然而,有些单元格包含文本,因此只需居中即可。我设法使用 \multicolumn 命令正确对齐特定单元格。现在我想知道是否有更有效的方法来对齐整行(例如第 1 行),而不是为该行中的每个单元格编写 \multicolumn 命令。下面您可以看到我的表格现在的样子。
\documentclass{article}
% Column alignment
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\begin{document}
\begin{tabular}{lcc}
Column 1 & Column 2 & Column 3 \\
Row 1 & \multicolumn{1}{d{3.2}}{555} & 555\\
Row 2 & \multicolumn{1}{d{3.2}}{7.77} & 7.77 \\
Row 3 & \multicolumn{1}{d{3.2}}{99.9} & 99.9 \\
Row 4 & Text 1 & Text 2
\end{tabular}
\end{document}
答案1
您可以使用siunitx
,其中不适合数字方案的单元格只需进行支撑并自动居中。
\documentclass{article}
\usepackage{siunitx} % better
% the following two lines are not necessary for siunitx
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\begin{document}
\section{With \texttt{dcolumn}}
\begin{tabular}{ld{3.2}c}
Column 1 & \multicolumn{1}{c}{Column 2} & Column 3 \\
Row 1 & 555 & 555\\
Row 2 & 7.77 & 7.77 \\
Row 3 & 99.9 & 99.9 \\
Row 4 & \multicolumn{1}{c}{Text 1} & Text 2
\end{tabular}
\section{With \texttt{siunitx}}
\begin{tabular}{lS[table-format=3.2]c}
Column 1 & {Column 2} & Column 3 \\
Row 1 & 555 & 555\\
Row 2 & 7.77 & 7.77 \\
Row 3 & 99.9 & 99.9 \\
Row 4 & {Text 1} & Text 2
\end{tabular}
\end{document}
答案2
为了减少\multicolumn{1}{c}{...}
多次书写的繁琐,只需设置一个快捷宏,例如,
\newcommand\mc[1]{\multicolumn{1}{c}{#1}}
这将大大加快表创建速度。
如果完全实现了这个想法,你的代码将会是这样的:
\documentclass{article}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}} % handy shortcut macro
\begin{document}
\begin{tabular}{ l d{3.2} c }
Column 1 & \mc{Column 2} & Column 3 \\ % <-- note use of \mc
Row 1 & 555 & 555 \\
Row 2 & 7.77 & 7.77 \\
Row 3 & 99.9 & 99.9 \\
Row 4 & \mc{Text 1} & Text 2 % <-- note use of \mc
\end{tabular}
\end{document}
答案3
两种方式:
直接使用
\phantom
,或融入数字和小数点的
\phantom
活动字符。封装在环境中。#
!
ptabular
妇女权利委员会:
\documentclass{article}
\catcode`\#=\active %
\def#{\phantom{0}}
\catcode`!=\active %
\def!{\phantom{.}}
\catcode`\#=6 %
\catcode`!=12 %
\newenvironment{ptabular}{\catcode`\#=\active \catcode`!=\active \begin{tabular}}{\end{tabular}}
\begin{document}
\begin{tabular}{lcc}
Column 1 & Column 2 & Column 3 \\
Row 1 & 555\phantom{.00} & 555\\
Row 2 & \phantom{00}7.77 & 7.77 \\
Row 3 & \phantom{0}99.9\phantom{0} & 99.9 \\
Row 4 & Text 1 & Text 2
\end{tabular}
\begin{ptabular}{lcc}
Column 1 & Column 2 & Column 3 \\
Row 1 & 555!## & 555\\
Row 2 & ##7.77 & 7.77 \\
Row 3 & #99.9# & 99.9 \\
Row 4 & Text 1 & Text 2
\end{ptabular}
\end{document}