我需要编写类似的内容\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 编码。libertine
libertine
\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 \mathtt
10 中没有定义希腊字母。相反,您需要通过加载不同的打字机字体作为数学字体来解决这个问题,您可以使用\setmathfontface
,然后声明一个符号,如\mttPi
。