我正在忙着写的一本书里有很多表格,其中有不少表格具有如下所示的一般形式:
如果您注意到数字 5 1/2 和 16 1/2 的小数部分向右突出(数字是右对齐的)。
对于这个特定的例子,我通过在除小数之外的所有数字上添加幻影字符来实现结果,例如:
&5280\z ...
&660\z ...
&$16\frac{1}{2}$ ...
...
其中,\z
定义为\def\z{\phantom{0}}
关于如何实现自动化,有什么建议吗?
这些图都是由 TeX 自动生成的。输入只有前两行。其余数字在此基础上计算。只有以 0.25、0.5 等结尾的数字才会显示分数。这些是自动检测的,因此我可以根据需要添加字距。试过了,但效果不太好。
抱歉,由于代码太长,没有发布最少的代码。
答案1
\documentclass{article}
\usepackage{array,mathtools}
\newcolumntype{R}{>{$}r<{\phantom{2}$}}
\def\Frac#1#2{\mathrlap{\frac{#1}{#2}}}
\newcommand\mc[2]{\multicolumn{#1}{c|}{#2}}
\begin{document}
\def\arraystretch{1.2}
\begin{tabular}{|*5{R|}}\hline
\multicolumn{1}{|c|}{Mile} & \mc{1}{Furlong} & \mc{1}{Pole} & \mc{1}{Yard} & \mc{1}{Foot}\\\hline
1 & 8 & 320 & 1760 & 5280\\\hline
\mc{1}{} & 1 & 40 & 220 & 660\\\cline{2-5}
\mc{2}{} & 1 & 5\Frac{1}{2} & 16\Frac{1}{2}\\\cline{3-5}
\end{tabular}
\end{document}
答案2
那么如何使用该dcolumn
包呢?
\documentclass{article}
\usepackage{xfrac}
\usepackage{dcolumn}
\begin{document}
\newcolumntype{d}{D{.}{\,}{2}}
\newcommand*\mc[2]{\multicolumn{#1}{c|}{#2}}
\begin{tabular}{|r|r|r|d|d|}
\hline
\multicolumn{1}{|c|}{Mile} & \mc{1}{Furlong} & \mc{1}{Pole} & \mc{1}{Yard} & \mc{1}{Foot}\\
\hline
1 & 8 & 320 & 1760 & 5280\\
\hline
\mc{1}{} & 1 & 40 & 220 & 660\\
\cline{2-5}
\mc{2}{} & 1 & 5.\sfrac{1}{2} & 16.\sfrac{1}{2}\\ % note . delimeter
\cline{3-5}
\end{tabular}
\end{document}
这样可以正确对齐数字。输入使用点作为分数开始位置的标记,但使用dcolumn
更改输出标记的能力会打印出一个细小的空格。
此解决方案仅在包含分数的列不包含小数(如示例中的最后一列)时才有效。此外,如果您事先知道某些列不会包含小数,则可以将其中一些列调整为简单列,r
如我在示例中所做的那样。