如何告诉 mathpazo 呈现正确的上标减号符号?

如何告诉 mathpazo 呈现正确的上标减号符号?

我发现mathpazo我长久以来使用的 会将 使用的上标减号渲染为stix2星号。这是一个最简单的例子:

\documentclass[11pt,a4paper]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{stix2}
\usepackage{mathpazo}
\DeclareRobustCommand{\heterozyg}{$^{+/-}$}
\DeclareRobustCommand{\minuszyg}{$^{-/-}$}
\DeclareRobustCommand{\gs}{$\rightwhitearrow$}
\begin{document}
    (\gs Shh\heterozyg)
    (\gs Shh\minuszyg) 
\end{document}

在此处输入图片描述

因为我想要箭头符号,但stix2我没有简单的解决方案。如何适应它?

答案1

您不想同时加载mathpazostix2,因为后者为数学字体设置了不同的字体编码并将它们弄乱。

您想使用特殊箭头作为文本符号。该怎么做?

我们\stix@MathSymbol{\rightwhitearrow}{\mathord}{arrows1}{"EF}在 中找到stix2.sty。因此,让我们寻找arrows1,我们会发现

\DeclareSymbolFont{arrows1}{LS1}{stix2sf}{m}{n}

好的,我们需要LS1编码,我们发现

\DeclareFontEncoding{LS1}{}{}
\DeclareFontSubstitution{LS1}{stix2}{m}{n}

这就是我们所需要的。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{mathpazo}

\DeclareFontEncoding{LS1}{}{}
\DeclareFontSubstitution{LS1}{stix2}{m}{n}
\DeclareRobustCommand{\textrightwhitearrow}{%
  {\usefont{LS1}{stix2sf}{m}{n}\symbol{"EF}}%
}

\DeclareRobustCommand{\heterozyg}{$^{+/-}$}
\DeclareRobustCommand{\minuszyg}{$^{-/-}$}
\DeclareRobustCommand{\gs}{\textrightwhitearrow}

\begin{document}

(\gs Shh\heterozyg)
(\gs Shh\minuszyg)

\end{document}

在此处输入图片描述

您可能应该加载newpxtextnewpxmath,它们也提供 Palatino 字体并且积极维护,但就上述代码而言,这并不重要。

答案2

这似乎是使用不同的 8 位编码之间的相互作用。stix2除非还加载了,否则包本身不会出现此问题:mathpazomathpazostix2

\documentclass[11pt,a4paper]{scrbook}
\tracinglostchars=3
\usepackage{mathpazo}
\usepackage[ngerman]{babel}

\DeclareRobustCommand{\heterozyg}{$^{+/-}$}
\DeclareRobustCommand{\minuszyg}{$^{-/-}$}
\DeclareRobustCommand{\gs}{$\Rightarrow$}
\begin{document}
    (\gs Shh\heterozyg)
    (\gs Shh\minuszyg) 
\end{document}

Pazo 样品

如果您可以使用 LuaTeX 或 XeTeX,则可以通过更改为 Unicode 字体来解决这个难题。

\documentclass[11pt,a4paper]{scrbook}
\tracinglostchars=3
\usepackage{unicode-math}
\usepackage[ngerman]{babel}

\setmainfont{TeX Gyre Pagella}
\setmathfont{TeX Gyre Pagella Math}

\DeclareRobustCommand{\heterozyg}{$^{+/-}$}
\DeclareRobustCommand{\minuszyg}{$^{-/-}$}
\DeclareRobustCommand{\gs}{$\rightwhitearrow$}
\begin{document}
    (\gs Shh\heterozyg)
    (\gs Shh\minuszyg) 
\end{document}

TeX Gyre Pagella 数学示例

如果您坚持使用 PDFTeX,您可能只需从 导入所需的特定符号stix2,而不是整个包。您也可以尝试加载\usepackage{newpxtext, newpxmath},这是 的更新 8 位版本,其中mathpazo包含更多符号。

答案3

我建议您切换到\textsuperscript文本模式指令。

在此处输入图片描述

\documentclass[11pt,a4paper]{scrbook}
%\usepackage[utf8]{inputenc} % that's the default nowadays
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{stix2}
\usepackage{mathpazo}

\DeclareRobustCommand{\heterozyg}{\textsuperscript{+/-}} 
\DeclareRobustCommand{\minuszyg}{\textsuperscript{-/-}}
\DeclareRobustCommand{\gs}{$\rightwhitearrow$}

\begin{document}
(\gs Shh\heterozyg) (\gs Shh\minuszyg) 
\end{document}

相关内容