我正在使用 XeTeX 和fontspec
,并且我选择了旧式图形作为正文。现在我使用siunitx
包,并将其设置为使用文本字体而不是数学字体。对于值,siunitx
我想使用衬线数字而不是旧式数字。我该怎么做?
我已经尝试过这个,但是没有用:
\setromanfont[Numbers=OldStyle]{Arno Pro}
\usepackage{siunitx}
\sisetup{mode = text}
\sisetup{inter-unit-separator =\cdot}
\sisetup{detect-all}
<snip>
{\fontspec[Numbers={Lining}]{Arno Pro}\SI{10}{\kilo\volt\per\centi\metre}}
此外,siunitx
使用数学字体逗号而不是文本字体逗号时
\sisetup{output-decimal-marker ={,}}
答案1
除非您提供其他内容,否则字体检测siunitx
将使用文档默认值。因此,在您的示例中,您得到的是\rmfamily
。关键是定义一个字体命令来选择您想要的内容。
\documentclass{article}
\usepackage{fontspec,siunitx}
\setromanfont[Numbers=OldStyle]{Linux Libertine O}
\newfontfamily\liningroman[Numbers={Lining}]{Linux Libertine O}
\sisetup{mode = text,number-text-rm = \liningroman}
\begin{document}
1234567890
\SI{123456789}{\kilo\volt\per\centi\metre}
\end{document}
我看到问题还有第二部分,询问选项output-decimal-marker
。如手册中所述,这是一个数学模式选项。如果您想强制将其置于文本模式,则需要使用\text
:
\documentclass{article}
\usepackage{fontspec,siunitx}
\setromanfont[Numbers=OldStyle]{Linux Libertine O}
\newfontfamily\liningroman[Numbers={Lining}]{Linux Libertine O}
\sisetup{mode = text,number-text-rm = \liningroman,
output-decimal-marker=\text{,}}
\begin{document}
1234567890
\SI{123.456789}{\kilo\volt\per\centi\metre}
\end{document}