答案1
使用siunitx
你会这样做
\documentclass{article}
\usepackage{booktabs,siunitx}
\begin{document}
\begin{tabular}{S[table-format=3.0]}
\toprule
{Heading} \\
\midrule
1 \\
10 \\
100 \\
\bottomrule
\end{tabular}
\end{document}
答案2
如果您希望它不那么复杂,那么\makebox
直接使用数字和\multicolumn
标题。
\documentclass[a5paper]{article}
\usepackage{array,calc}
\newcolumntype{C}{>{\FormatNo} c }
\def\FormatNo\ignorespaces#1\\{%
\ignorespaces\makebox[\widthof{000}][r]{#1}\tabularnewline}
\begin{document}
\begin{tabular}{C}
\multicolumn{1}{c}{Heading} \\
1 \\
10 \\
100 \\
\end{tabular}
\end{document}
答案3
该过程可以在一定程度上实现自动化eqparbox
和\eqmakebox[<tag>][<align>]{<stuff>}
帮助collcell
ect每个的coll
内容并将其传递给。<stuff>
cell
\eqmakebox
\documentclass{article}
\usepackage{eqparbox,collcell}
\newcommand{\columnalign}{}
\newcommand{\columnalignment}[2]{\renewcommand{\columnalign}{\eqmakebox[#1][#2]}}
\begin{document}
\columnalignment{tag1}{r}
\begin{tabular}{>{\collectcell\columnalign}c<{\endcollectcell}}
\multicolumn{1}{c}{Heading} \\
1000 \\
1 \\
10 \\
100
\end{tabular}
\columnalignment{tag2}{r}
\begin{tabular}{>{\collectcell\columnalign}c<{\endcollectcell}}
\multicolumn{1}{c}{Heading} \\
words \\
of \\
differing \\
length
\end{tabular}
\end{document}
请注意,这需要对与任何特定相关的最大元素的每次更改进行至少两次编译<tag>
。
答案4
无需使用特殊的 LaTeX 包。您可以使用以下带有 @ 表达式的标准 LaTeX 构造:
\documentclass{article}
\begin{document}
\begin{tabular}{r@{\ \ \ \ \ }}
\multicolumn{1}{c}{Heading} \\
1 \\
10 \\
100 \\
\end{tabular}
\end{document}
缺点是您需要摆弄添加到@表达式的空格数量。