我发现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
您不想同时加载mathpazo
和stix2
,因为后者为数学字体设置了不同的字体编码并将它们弄乱。
您想使用特殊箭头作为文本符号。该怎么做?
我们\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}
您可能应该加载newpxtext
和newpxmath
,它们也提供 Palatino 字体并且积极维护,但就上述代码而言,这并不重要。
答案2
这似乎是使用不同的 8 位编码之间的相互作用。stix2
除非还加载了,否则包本身不会出现此问题:mathpazo
mathpazo
stix2
\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}
如果您可以使用 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}
如果您坚持使用 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}