该表格来自 Philippe Goutet 的精彩回答关于这个问题:
\documentclass[a4paper,12pt]{article}
\usepackage{array,booktabs} % I add booktabs AM
\usepackage[hmargin=2cm]{geometry}
\usepackage{xcolor}
\makeatletter
%http://groups.google.com/group/comp.text.tex/msg/7e812e5d6e67fcc5
\def\convertto#1#2{\strip@pt\dimexpr #2*65536/\number\dimexpr 1#1}
\makeatother
\begin{document} %
\begin{center}\begin{tabular} % Philippe Goutet
{>{\def\colunit{pt}}l<{\convertto{\rowunit}{1\colunit}}
>{\def\colunit{mm}}l<{\convertto{\rowunit}{1\colunit}}
>{\def\colunit{cm}}l<{\convertto{\rowunit}{1\colunit}}
>{\def\colunit{ex}}l<{\convertto{\rowunit}{1\colunit}}
>{\def\colunit{em}}l<{\convertto{\rowunit}{1\colunit}}
>{\def\colunit{bp}}l<{\convertto{\rowunit}{1\colunit}}
>{\def\colunit{dd}}l<{\convertto{\rowunit}{1\colunit}}
>{\def\colunit{pc}}l<{\convertto{\rowunit}{1\colunit}}
>{\def\colunit{in}}l<{\convertto{\rowunit}{1\colunit}}
>{\bfseries}l}
\multicolumn{1}{l}{\bfseries 1pt} & \multicolumn{1}{l}{\bfseries 1mm} &
\multicolumn{1}{l}{\bfseries 1cm} & \multicolumn{1}{l}{\bfseries 1ex} &
\multicolumn{1}{l}{\bfseries 1em} & \multicolumn{1}{l}{\bfseries 1bp} &
\multicolumn{1}{l}{\bfseries 1dd} & \multicolumn{1}{l}{\bfseries 1pc} &
\multicolumn{1}{l}{\bfseries 1in} & \\
\gdef\rowunit{pt} & & & & & & & & & \rowunit\\
\gdef\rowunit{mm} & & & & & & & & & \rowunit\\
\gdef\rowunit{cm} & & & & & & & & & \rowunit\\
\gdef\rowunit{ex} & & & & & & & & & \rowunit\\
\gdef\rowunit{em} & & & & & & & & & \rowunit\\
\gdef\rowunit{bp} & & & & & & & & & \rowunit\\
\gdef\rowunit{dd} & & & & & & & & & \rowunit\\
\gdef\rowunit{pc} & & & & & & & & & \rowunit\\
\gdef\rowunit{in} & & & & & & & & & \rowunit\\
\end{tabular}\end{center}
\end{document}
我想对齐每列的小数分隔符。我尝试使用numprint
和siunitx
。我知道诀窍,r@{.}l
但是这里......我在等着看......
答案1
\usepackage{dcolumn}
\newcolumntype{Z}[1]{D{.}{.}{2.5}<{\convertto{\rowunit}{1#1}}}
% for a comma as decimal separator use the following line
%\newcolumntype{Z}[1]{D{.}{,}{2.5}<{\convertto{\rowunit}{1#1}}}
然后可以将表输入为
\begin{tabular}{Z{pt}Z{mm}Z{cm}Z{ex}Z{em}Z{bp}Z{dd}Z{pc}Z{in}>{\bfseries}l}
\multicolumn{1}{c}{\bfseries 1pt} & \multicolumn{1}{c}{\bfseries 1mm} &
\multicolumn{1}{c}{\bfseries 1cm} & \multicolumn{1}{c}{\bfseries 1ex} &
\multicolumn{1}{c}{\bfseries 1em} & \multicolumn{1}{c}{\bfseries 1bp} &
\multicolumn{1}{c}{\bfseries 1dd} & \multicolumn{1}{c}{\bfseries 1pc} &
\multicolumn{1}{c}{\bfseries 1in} & \\
\gdef\rowunit{pt} & & & & & & & & & \rowunit\\
\gdef\rowunit{mm} & & & & & & & & & \rowunit\\
\gdef\rowunit{cm} & & & & & & & & & \rowunit\\
\gdef\rowunit{ex} & & & & & & & & & \rowunit\\
\gdef\rowunit{em} & & & & & & & & & \rowunit\\
\gdef\rowunit{bp} & & & & & & & & & \rowunit\\
\gdef\rowunit{dd} & & & & & & & & & \rowunit\\
\gdef\rowunit{pc} & & & & & & & & & \rowunit\\
\gdef\rowunit{in} & & & & & & & & & \rowunit\\
\end{tabular}
为了使用工具来格式化表格,siunitx
可以在排版之前构建表格:
\documentclass{article}
\usepackage{array,booktabs} % I add booktabs AM
\usepackage{siunitx}
\makeatletter
%http://groups.google.com/group/comp.text.tex/msg/7e812e5d6e67fcc5
\def\convertto#1#2{\strip@pt\dimexpr #2*65536/\number\dimexpr 1#1\relax\relax}
\makeatother
\begin{document}
\begingroup
\def\arow#1{
\convertto{#1}{1pt}&
\convertto{#1}{1mm}&
\convertto{#1}{1cm}&
\convertto{#1}{1ex}&
\convertto{#1}{1em}&
\convertto{#1}{1bp}&
\convertto{#1}{1dd}&
\convertto{#1}{1pc}&
\convertto{#1}{1in}&
#1}
\edef\rows{%
\unexpanded{%
\begin{tabular}{*{9}{S[table-format=2.5]}>{\bfseries}l}
\multicolumn{1}{c}{\bfseries 1pt} & \multicolumn{1}{c}{\bfseries 1mm} &
\multicolumn{1}{c}{\bfseries 1cm} & \multicolumn{1}{c}{\bfseries 1ex} &
\multicolumn{1}{c}{\bfseries 1em} & \multicolumn{1}{c}{\bfseries 1bp} &
\multicolumn{1}{c}{\bfseries 1dd} & \multicolumn{1}{c}{\bfseries 1pc} &
\multicolumn{1}{c}{\bfseries 1in} & \\
}
\arow{pt}\noexpand\\
\arow{mm}\noexpand\\
\arow{cm}\noexpand\\
\arow{ex}\noexpand\\
\arow{em}\noexpand\\
\arow{bp}\noexpand\\
\arow{dd}\noexpand\\
\arow{pc}\noexpand\\
\arow{in}
\noexpand\end{tabular}
}
\rows
\endgroup
\end{document}
S
将所需的所有其他选项添加到列规范中。