我有一个文档(在 acmart 类中),它应该写一个无衬线的 Gamma:
\documentclass{acmart}
\usepackage{amsmath}
\begin{document}
\sbox0{$\mathsf{\Gamma}$}
{\tracingall\scrollmode\showbox0 }
\usebox{0}
\end{document}
其日志如下:https://pastebin.com/M1aDaFDQ 我猜最有趣的是第 949 行:
.\T1/LinuxBiolinumT-TLF/m/n/9 ^^@
在我的旧 MacBook 上,它显示正常,我得到的日志是:https://pastebin.com/GS1imAYa 但是,在我的新款 MacBook Pro 中,它显示一个反勾“`”。我知道这个问题也出现在运行不同操作系统的其他笔记本电脑上,例如 Linux(但不知道具体的发行版)。
其他大写希腊字母(如 \Pi)也会出现此问题,但 \Sigma 或任何小写希腊字母都不会出现此问题。
我也尝试添加\tracinglostchars=3
,但是什么也没有弹出。
有没有办法对我的旧笔记本电脑(我仍然拥有它)进行逆向工程,以便让新笔记本电脑正确打印大写希腊字母?
答案1
更新
我很尴尬地说我忽略了这个问题,即您加载的文档类amsart
加载了命令
\usepackage[tt=false, type1=true]{libertine}
\usepackage[libertine]{newtxmath}
这些将文本字体编码从 20 世纪 80 年代的包含大写希腊字母的 7 位 OT1 更改为 20 世纪 90 年代的 8 位 T1 编码,将重音符号放在相同的位置。
您可以通过加载具有所需编码的无衬线字体来解决这个问题。如果您想要一种支持大写和小写希腊字母的直立无衬线字体,最好的选择是使用 切换到 Unicode 字体fontspec
。但是,您可以使用以下命令加载具有大写希腊字母的匹配\mathsf
字母表(例如 Libertinus Sans):
\documentclass{acmart}
\tracinglostchars=3 % Make missing symbols an error!
\pagestyle{empty} % Suppress page numbers
\usepackage{amsmath}
\DeclareMathAlphabet{\mathsf}{OT1}{LibertinusSans-LF}{m}{n}
\SetMathAlphabet{\mathsf}{bold}{OT1}{LibertinusSans-LF}{bx}{n}
\begin{document}
\[ \mathop{\textsf{sin}} \mathsf{\Gamma} \quad \mathop{\textsf{Tr}} \boldsymbol{\mathsf{\Gamma}}
\]
\end{document}
原始答案
我无法复制您的错误,但一个可能的笨拙解决方法是手动设置为\mathsf
肯定涵盖希腊大写字母的字母表。(如果您还需要直立无衬线小写希腊文,则旧版 8 位 TeX 中没有太多好的选择,但如果您切换到 ,就会有大量的选择unicode-math
。)
例如,这可能会解决您的眼前问题:
\documentclass{article}
\tracinglostchars=3 % Make missing symbols an error!
\pagestyle{empty} % Suppress page numbers
\usepackage{amsmath}
\DeclareMathAlphabet{\mathsf}{OT1}{cmss}{m}{n}
\SetMathAlphabet{\mathsf}{bold}{OT1}{cmss}{bx}{n}
\begin{document}
\[ \mathsf{\Gamma} \quad \boldsymbol{\mathsf{\Gamma}}
\]
\end{document}
但是,这里重要的不是\DeclareMathAlphabet
。而是\tracinglostchars=3
。如果您在 MWE 中遇到此错误,则说明您的安装出现了问题,您需要诊断出是什么问题,而不是继续用笨办法解决它。
由于 20 世纪 80 年代的技术原因,当你请求当前字体没有的符号时,TeX 的默认行为是打印一个空格,然后默默将错误消息记录到文件中间.log
。相反,您希望它停止并打印错误消息,告诉您实际出了什么问题。
不过,我猜你加载的某个包直接或间接地将 的编码\mathsf
从OT1
(其中插槽"00
为 Γ)更改为T1
(其中同一插槽为反引号)。但是,你的 MWE 中似乎没有任何一行应该这样做。