mathpazo + siunitx:π 变成 ß

mathpazo + siunitx:π 变成 ß

当我一起使用mathpazosiunitx(版本 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}

答案4

抱歉,我之前的回答是错误的。这是经过测试的代码。它看起来更简洁。

\documentclass{article}
\usepackage{mathpazo, siunitx}
\begin{document}
    $\pi + \SI[mode=text]{\pi}{\ohm}$

    $\pi + \SI{\pi}{\ohm}$

    $\pi + \SI[mode=math]{\pi}{\ohm}$
\end{document}

在此处输入图片描述

注意:如果将数值参数中的“\pi”替换为其他非数字符号(如“p”),则代码将不起作用。

相关内容