siunitx:粗体单个数字单元格 + mathspec

siunitx:粗体单个数字单元格 + mathspec

我需要同时使用表格中的数字值并将其加粗和对齐mathspecsiunitx包。我看过siunitx:粗体单个数字单元格tabular在带有包的环境中用于粗体和对齐siunitx,但是当\setallmainfonts(Digits){Helvetica}使用 mathspec 包指定时,这会中断。

下面的 MWE 显示了显示的数学中的正确数字字体(来自“数字”规范),3.060正确对齐,小数正确加粗,但数字不加粗。如果注释了\setallmainfonts(Digits){Helvetica},则表格数据正确加粗并对齐,但显示的数学数字会恢复为 CM。有人知道如何协调这两者吗?

\documentclass{article}
\usepackage{etoolbox}
\usepackage{siunitx}
\usepackage{booktabs}

\usepackage{mathspec}
\setallmainfonts(Latin,Greek)[Ligatures=TeX]{Helvetica}
\setallmainfonts(Digits){Helvetica}

\robustify\bfseries

\begin{document}

\begin{table}
\begin{tabular}{S[table-format=3.3,detect-weight]}
   \toprule
   {Header 35} \\
   \midrule  
   \bfseries 3.060\\
   100.59\\
   0.64\\
   0.52\\
   \bottomrule
\end{tabular}
\end{table}

This is the number 2.
\[\int_{-\infty}^{\infty} 2 x^{2}_{i} dx \]

\end{document}

答案1

我找到了问题的解决方案,但我认为 siunitx 与 mathspec 交互的方式可能存在错误。事实证明,detect-weight 和 detect-mode 选项都是诱导正确行为(粗体和对齐)所必需的,而单独使用 detect-weight 选项则不行。

我发现斜体也有同样的行为(别忘了\robustify\it),不过这里需要的是detect-shape选项,而不是detect-weight。detect-all选项也起作用,正如人们所料,因为这只是一个将detect-weight、detect-family、detect-shape和detect-mode设置为true的便利选项。

下面是 MWE 及其输出。输出显示以下内容:

  • 整个字体正确,包括数学模式下的数字
  • 表格中的字体粗细和形状适当
  • 正确对齐表格中的数字

请注意,我指定是table-format=5.4为了确保正确的对齐不仅仅与左对齐或右对齐的数字一致。

我不确定为什么使用 mathspec 时需要检测模式选项。

\documentclass{article}

\usepackage{etoolbox, siunitx, booktabs, mathspec}
\setallmainfonts(Digits,Latin,Greek)[Ligatures=TeX]{Helvetica}

\robustify\bfseries
\robustify\itshape

\begin{document}

\begin{table}
\begin{tabular}{S[table-format=5.4, detect-weight, detect-shape, detect-mode]}
  \toprule
  {Header 35}\\
  \midrule
  \bfseries 3.060\\
  \itshape 100.59\\
  0.64\\
  0.52\\
  \bottomrule
\end{tabular}
\end{table}

This is the number 2.
\[\int_{-\infty}^{\infty} 2 x^{2}_{i} dx \]

\end{document}

MWE 输出

相关内容