如何将整数右对齐,但仍使其居中

如何将整数右对齐,但仍使其居中

假设我们有这样一个表:

\begin{tabular}{c}
Heading \\
1 \\
10 \\
100 \\
\end{tabular}

这将使所有数字居中。如果我想将它们右对齐,我可以将列定义更改为r,但这会使表格右端的数字居中。我想要的是宽度最大的数字(在本例中100)相对于列居中,其他数字右对齐到该数字。似乎有A 亿万 有各种各样的方法可以按小数点对齐数字,但似乎没有一种方法可以简单地将数字填充到固定宽度。有人有什么建议吗?

答案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>}帮助collcellect每个的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}

缺点是您需要摆弄添加到@表达式的空格数量。

相关内容