我需要同时使用表格中的数字值并将其加粗和对齐mathspec
和siunitx
包。我看过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}