在数学模式中使用旧式帕拉蒂诺数字(mathpazo)

在数学模式中使用旧式帕拉蒂诺数字(mathpazo)

我使用\usepackage[osf]{mathpazo}旧式数字和dcolumn包将表格内容按小数点对齐。问题是,它会dcolumn自动在数学模式下设置对齐内容,有时会导致旧式数字和对齐数字的奇怪混合。

是否有选项可以默认将数学模式中的数字设置为旧式?


编辑:(我希望在本地网络礼仪中编辑帖子是增强我的问题的正确方法)。

@Mico 我认为 siunitx 包是可行的方法,因为它允许完全退出表格中的数学模式,并允许在文档中使用不同的数学字体。但是,尝试将 siunitx 与我的表格一起使用会导致出现这样的现象:当条目的数字比以前的条目少时,括号中的数字会出现空白(顺便说一下,我的大多数表格都是由 Stata 的 esttab 插件创建的)。以下 MWE 说明了这个问题:

\documentclass{scrartcl}

\usepackage{booktabs}
\usepackage{siunitx}
\usepackage[osf]{mathpazo}

%SFor Tables created by estout
    \def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi} %for symbols in Table

\begin{document}

\begin{tabular*}
{\textwidth}{@{\hskip\tabcolsep\extracolsep\fill}l*{2}{S
    [mode=text,
    table-auto-round,
%   table-format=4.3,   % how is this supposed to work when we have entry with a different amount of digits?
    table-align-text-post=false,
    input-open-uncertainty=,
    input-close-uncertainty=]
    }   }
\toprule
\emph{Age}          &                     &                     \\
\hspace{0.1cm} 18-24&   [-1360.228]\sym{*}  &   -1371.941\sym{*}  \\
                    &   (6.915)         &   (-7.953)         \\
\hspace{0.1cm} 25-34&    -219.216         &    -240.271         \\
                    &   (514.894)         &   (515.348)         \\
\hspace{0.1cm} 35-44&    -310.715         &    -311.438         \\
                    &   (485.780)         &   (486.013)         \\
\hspace{0.1cm} 55+  &      -5.135         &      [2.656]         \\
                    &   (53.267)         &   (533.875)         \\
\bottomrule
\end{tabular*}

\end{document}

答案1

我不知道您如何使用该dcolumn包的功能实现您的目标。幸运的是,如果您愿意使用该siunitx包及其S列类型,那么这相当简单。

在下面的示例中,我采用了您的代码并做了一些更改,以指导siunitx如何处理圆括号和方括号等符号。基本上,代码告诉siunitx不要对这些符号做任何“特殊”处理。请注意,我已将与列中材料外观相关的大多数说明移至S序言。作为两S列选项提供的唯一说明是table-format=4.4,因为这可能会因表格而异。当然,这样做主要是风格或品味问题。

\documentclass{scrartcl}
\usepackage{booktabs}
\usepackage[osf]{mathpazo}
% For Tables created by estout
\newcommand{\sym}[1]{\ensuremath{^{#1}}} % for symbols in Table
\usepackage{siunitx}
\sisetup{ detect-mode, 
          group-digits            = false ,
          input-signs             = ,
          input-symbols           = ()[]-+ ,
          input-open-uncertainty  = ,
          input-close-uncertainty = ,
          table-align-text-post   = false 
        }
\begin{document}
\begin{tabular*}{\textwidth}{
    l @{\extracolsep\fill} *{2}{S[table-format=4.4]} @{}}
\toprule
\multicolumn{1}{@{}l}{\emph{Age}}  \\[0.5ex]
18--24 &   [-1360.228]\sym{*}  &  -1371.941\sym{*}  \\
       &       (6.915)         &    (-7.953)        \\
25--34 &     -219.216          &   -240.271         \\
       &     (514.894)         &   (515.348)        \\
35--44 &     -310.715          &   -311.438         \\
       &     (485.780)         &   (486.013)        \\
55$+$  &       -5.135          &     [2.656]        \\
       &      (53.267)         &   (533.875)        \\
\bottomrule
\end{tabular*}
\end{document}

在此处输入图片描述

答案2

您可以考虑切换到另一个数学版本:

\documentclass[11pt,a4paper]{article}
\usepackage[osf]{mathpazo}
\usepackage{dcolumn}
\DeclareMathVersion{oldstyle}%
\SetSymbolFont{operators}{oldstyle}{OML}{zplmj}{m}{it}
\newenvironment{oldstyletabs}{\mathversion{oldstyle}}{}

\begin{document}

\begin{tabular}{*{3}{D{.}{.}{2}}}
\multicolumn{3}{c}{normal tabular}\\
  1.23 & 2.66  & 0.21 \\
123.45 & 567.8 & 987.32
\end{tabular}\bigskip

\begin{oldstyletabs}
\begin{tabular}{*{3}{D{.}{\textrm{.}}{2}}}
\multicolumn{3}{c}{oldstyle tabular}\\
  1.23 & 2.66  & 0.21 \\
123.45 & 567.8 & 987.32
\end{tabular}
\end{oldstyletabs}

非数字可能会显示错误。这就是为什么我不得不使用\textrm{.}
另一种可能性是使用rccol与非常相似的包dcolumn。此包以 aktive 字体打印。因此,当您在文本模式下设置表格并在数学模式下排列数字时,您会得到旧式数字。无需切换到另一个mathversion

答案3

正如我之前的评论中提到的,您可以使用mathastext包裹它将允许您使用与文本相同的字体和选项来排版基本数学运算;但是,它会影响整个文档中的所有数学运算(因此,我仅建议将其用于主要包含一些偶尔的简短数学表达式的非技术论文)。

查看文档文件以找到适合您的选项,并稍微尝试一下。

相关内容