大写希腊字母 \mathtt 未显示在 arxiv 中

大写希腊字母 \mathtt 未显示在 arxiv 中

我需要编写类似的内容\mathtt{\Pi},它可以在我的 Mac 上很好地呈现,但在 arxiv 和同事的笔记本电脑上都无法工作。

我怎样才能\mathtt{\Pi}在任何乳胶文档中排版?

附加问题:为什么这个在 Mac 上有效而在其他地方无效?

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{libertine}
\usepackage{newtxmath}

\begin{document}

$\Pi\mathtt{\Pi}$

\end{document}

答案1

为了实现这一目标,您需要解决三个不同的问题。

首先,20 世纪 70 年代末的旧式 7 位字体编码。该包(如果是文本字体,newtxmath则应与选项一起使用)将字母表设置为 7 位 OML 编码。这没问题,因为它是唯一包含大写和小写拉丁字母和希腊字母的旧式编码 — 只是 Libertine Mono 没有 OML 编码的字体文件。(理论上可以使用 FontForge 创建一个,但您需要使用它才能使用 arXiv。)事实上,据我所知,任何直立等宽字体都没有 OML 编码。libertinelibertine\mathtt

您可以通过加载 来解决这个问题\usepackage{libertinust1math}\usepackage[libertine]{newtxmath}这将\Pi使用默认的 OT1 编码,而不是 OML,这可能会在其他地方引起问题,但至少可以让您在数学模式下使用 OT1 字体。不幸的是,它将重新定义\mathtt为 Computer Modern Typewriter。

您可以通过再次拨打电话来解决该问题\SetMathAlphabet,更改\mathtt不同的传统等宽字体。

包含 Π 的其他编码只有 OML、8 位 LGR 编码(需要其他一些软件包,并且可用的字体更少)和 7 位 OT1 编码。后者是您需要使用的。但是,Linux Libertine Mono 和 Libertinus Mono 的 OT1 字体文件中都没有这个字形。

因此,解决方案有三个步骤:加载libertinust1math为与 Libertine 兼容的数学字体,加载不同的传统打字机字体,然后调用\SetMathAlphabet重新定义\mathtt为该字体的 OT1 编码。

\documentclass{article}
\usepackage[OT1, T1]{fontenc}
\usepackage[sb]{libertinus-type1}
\usepackage[type1, semibold]{sourcecodepro}
\usepackage{libertinust1math}

\SetMathAlphabet{\mathtt}{normal}{OT1}{SourceCodePro-TLF}{m}{n}

\begin{document}

$\Pi\mathtt{\Pi}$

\end{document}

字体示例

如果 的定义\mathtt破坏了文档中的其他内容,您也可以\mttPi"05字体槽{OT1}{SourceCodePro-TLF}{m}{n}或您选择的字体中声明一个新的数学符号 。

如果您需要粗体打字机数学字母,您也可以声明\setmathfont数学版本bold以及normal,并使用半粗体或粗体粗细代替m

最后一点:如果您没有因为 ArXiv 的限制而被迫使用 PDFLaTeX,我通常会建议您切换到现代工具链和unicode-math。这是极少数情况下无法立即解决字体编码问题的情况。Unicode \mathtt10 中没有定义希腊字母。相反,您需要通过加载不同的打字机字体作为数学字体来解决这个问题,您可以使用\setmathfontface,然后声明一个符号,如\mttPi

相关内容