以小数点分隔符为中心,图形字体选择

以小数点分隔符为中心,图形字体选择

我想用带小数点的数字格式化一列。在正文中,我使用旧式数字表示数字,在公式中使用内衬数字。如果我使用dcolumn表格,请使用内衬数字,而不是旧式数字。

我已经尝试过定义dcolumn.sty,但它似乎依赖于数学模式来使点“正确”,因此删除所有$- 字符会导致损坏。暂时将数学字体更改为使用旧式数字似乎也是一件相当困难的事情,这一切都是在加载字体包时设置的……

使用siunitx\sisetup{mode=text}I得到旧式数字,但是\figureversion{tab},我用来切换到表格数字的数字却被忽略了,而且数字也排列得不太好。

有人能给出好的建议,要么dcolumn在非数学模式下使用,要么siunitx使用旧式表格图形吗?

一个使用 siunitx 的最小示例:

\documentclass{standalone}
\usepackage[mathlf]{MinionPro}
\usepackage{siunitx}
\sisetup{mode=text}
\begin{document}
{\figureversion{tab}
  \begin{tabular}{SSS[table-format=4.1]}
    {A wide heading} & $x$ & {more data} \\
    14.1 & 14.1 & 1111.1 \\
    1.674 & 1.671 & 4882.8 \\
  \end{tabular}}
\end{document}

答案1

在此处输入图片描述

\documentclass[12pt]{standalone}
\usepackage{dcolumn}  

\makeatletter  


\newcolumntype{O}[3]{>{\everymath{\mathgroup\symletters}\DC@{#1}{#2}{#3}}c<{\DC@end}}
\makeatother

\begin{document}


\begin{tabular}{cO..{-1}D..{-1}}
zzzz & 1.1 & 1.1\\
zzzz & 1.12 & 1.12\\
zzzz & 2341.1 & 2341.1\\
zzzz & 1.1043 & 1.1043
\end{tabular}
\end{document}

答案2

在对 David 先前回答的评论中,您表示有兴趣看到使用该siunitx包及其S列类型的解决方案。关键是指定选项detect-mode,强制使用数字样式文本字体而不是数学字体。

下面的答案使用了带有在文本模式下使用旧式数字选项的kpfonts包;环境主体与 David 的答案相同。oldstylenumstabular

在此处输入图片描述

\documentclass[12pt]{standalone}
\usepackage[oldstylenums]{kpfonts} % oldstyle tabular numbers in text mode, but not in math mode
\usepackage[table-format=4.4]{siunitx}
\begin{document}
\begin{tabular}{cS[detect-mode]S}
zzzz & 1.1 & 1.1\\
zzzz & 1.12 & 1.12\\
zzzz & 2341.1 & 2341.1\\
zzzz & 1.1043 & 1.1043
\end{tabular}
\end{document} 

相关内容