当我一起使用mathpazo
和siunitx
(版本 2.3h)时,如果我\pi
在数值参数中使用\SI
,它将在输出中显示为“ß”。
\documentclass{article}
\usepackage{mathpazo, siunitx}
\begin{document}
$\pi + \SI{\pi}{\ohm}$
\end{document}
生成:
但当我不使用时mathpazo
:
为什么会发生这种情况?我该如何解决?
答案1
正如其他人所观察到的,这里的问题在于mathpazo
对待的方式\pi
。我会选择
\documentclass{article}
\usepackage{mathpazo, siunitx}
\protected\def\numpi{\text{\ensuremath{\pi}}}
\sisetup{input-symbols = \numpi}
\begin{document}
$\pi + \SI{\numpi}{\ohm}$
\end{document}
这里的想法是,这种方法强制在所有情况下使用“标准”字体\pi
(在数学和文本模式下都是安全的)。有理由siunitx
使用\mathrm
而不是\mathnormal
作为标准数学模式字体:尝试
\documentclass{article}
\begin{document}
$\mathnormal{123}$
\end{document}
看看为什么!
答案2
以下可解决您的问题:
\pi
没有siunitx
或者mathpazo
定义为\mathchar"119
;\pi
在下面仅有的siunitx
保持不变 (\mathchar"119
);\pi
在下面仅有的mathpazo
定义为\mathchar"7119
。
由于siunitx
不触及定义\pi
并且加载顺序没有纠正这一点,因此重新定义\pi
有效:
\documentclass{article}
\usepackage{siunitx,mathpazo}
\begin{document}
$\pi + \SI{\pi}{\ohm}$ \par
\renewcommand{\pi}{\mathchar"119}% Revert to original mathchar definition for \pi
$\pi + \SI{\pi}{\ohm}$ \par
\end{document}
答案3
问题是马特帕佐定义\pi
为\mathalpha
,即添加"7000
到其代码中和那希尼奇\mathrm
在的参数中默认使用\SI
:
\sisetup{number-math-rm=\mathnormal}
是错误的;使用
\SI[number-math-rm=\mathnormal]{\pi}{\ohm}