为什么小写数学字母会显示为随机符号?

为什么小写数学字母会显示为随机符号?

amsfonts没有小写书法字母,因此当你这样做时,$\mathcal{Hello World}$你会得到一些奇怪的结果。(\mathbb我相信也是如此)

现在,让我吃惊的不是没有小写的数学字母,而是有了这个,文档就可以编译了!这是什么意思,这意味着它\mathcal{lowercase}被解释为一串随机符号?似乎哪个字母变成哪个符号是恒定的,所以这不仅仅是随机的:发生这种情况是有原因的。

发生了什么事?有人能解释一下表面下发生的细节吗?这意味着 LaTeX 将里面的小写字母解释\mathcal为各种数学符号?

[我不太明白这里哪些标签与此相关...]

答案1

TeX 的创建时间比 Unicode 和 OpenType 标准化字符集和字体的时间要早​​得多。每个数学字体只包含 128 个字形(“较新”版本的 TeX 允许使用 256 个字形,但 Computer Modern 数学字体只使用 128 个字形。对于拉丁字母,默认字体是cmmi(Computer Modern Math Italic),其中包含大写和小写字母;该\mathcal命令只是将所有字母切换为cmsy(Computer Modern Math Symbols),它恰好在正确的位置包含书法大写字母,但没有小写书法字母;相反,它在通常小写字母所在的位置有各种运算符和其他符号(因此字体名称为“Symbols”)。texdoc encguide有关确切的编码表,请参阅 LaTeX 编码指南 ( ),第 A.4 节。曾经有人尝试标准化数学编码,但从未成功过(至少在 LaTeX 世界中),如今只有 OpenType 和 Unicode 才是重要的,因为一切都已完全标准化,所以不会出现此类问题。

旁注:此行为与 AMS 字体无关;AMS 字体不包含任何中等粗细的书法字符。

答案2

所有字体都“存在于”特殊定位表中。例如,您可以使用包fonttable和以下最小示例查看 Euler Fraktur 字体和书法字体表:

\documentclass[11pt]{article} 
\usepackage{fonttable}
\usepackage{amsmath}
\usepackage{amsfonts}
\begin{document}
\fonttable{eufm10} %fraktur
\fonttable{eusm10} %calligrafic ?
\[ \mathfrak{A} \neq \mathcal{A} \]

$\mathfrak{Hello World}$
$\mathcal{Hello World}$
\end{document}

如果您使用小写字母,而其位置没有符号,计算机将直接选择该内存位置上的任何符号。有时,字体作者会在这些位置上粘贴各种其他符号,您会看到随机符号出现。这就是为什么 $\mathcal{HELLO WORLD}$可以工作但 不行的原因$\mathcal{hello world}$

相关内容