使用 DeclareMathAlphabet 和 Mathalpha

使用 DeclareMathAlphabet 和 Mathalpha

这是一个与以下内容相关的问题: https://tex.stackexchange.com/a/384959/88262

DeclareMathAlphabet需要 4 个参数,其中第一个指定编码,第二个指定字体。但是,并非所有编码都与所有字体兼容。是否有一个列表列出要为哪种字体选择哪种编码?上面答案中的链接都失效了,查看 mathalpha 文档或mathalpha.sty它本身都无济于事。

\documentclass{article}
\usepackage{mathalfa}
\DeclareMathAlphabet\mathzapf{T1}{pzc}{mb}{it}
\DeclareMathAlphabet{\mathchorus}{OT1}{cmtt}{m}{n}
\DeclareMathAlphabet\mathrsfso{U}{rsfso}{m}{n}
% \DeclareMathAlphabet\mathesstix{???}{esstix}{m}{n} % which encoding to choose? 
                                                     % neither T1, OT1 or U work

\begin{document}
\[ \mathzapf{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \]
\[ \mathchorus{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \]
\[ \mathrsfso{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \]
% \[ \mathresstix{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \]
\end{document}

答案1

你可能遇到了 XY 问题

如果您将 Zapf Chancery 和 Ralph Smith Formal Script Oblique 定义为数学字母,那么您几乎肯定希望前者为\mathcal,而后者为\mathscr。(但是,您可能只是以这种方式完成了 MWE 作为示例。)如果您发现自己在同一篇论文中使用的脚本字母实际上比这更多,那么您应该认真重新考虑您的符号。

你真正想要做的是加载你的\mathscr\mathcal字母表mathalpha,例如:

\usepackage[cal=zapfc, scr=rsfso]{mathalpha}

在这种情况下,你会想要

\usepackage[scr=esstix]{mathalpha}

它将加载以下命令:

\DeclareFontFamily{U}{esstixscr}{\skewchar \font =45}
\DeclareFontShape{U}{esstixscr}{m}{n}{
  <-> \mathalfa@scrscaled  esstixcal}{}
\DeclareMathAlphabet{\mathscr}{U}{esstixscr}{m}{n}

剩下的命令名为\mathchorus,暗示它旨在设置 TeX Gyre Chorus,这是 Zapf Chancery 的克隆。但是,它实际上选择了 Computer Modern Sans Serif。这样做没什么用;如果您想使用 Chorus,请使用它而不是默认的 PostScript pzc(在不同系统上可能是不同的字体),如果您想要 Computer Modern Sans Serif 作为非主要字母表的字母表,请将其用作\mathsf

字面答案

虽然字体编码通常在包文档中,但 LaTeX 的新字体选择方案 (NFSS) 会搜索名为 [encoding][family].fd 的文件。(在 Linux 等操作系统上,文件名中的编码为小写,但文档命令中的编码为大写。)

因此,您的示例对应于文件urfsfo.fdt1pzc.fdot1cmss.fd

因此,您可以在 TeX 目录中搜索符合此命名方案的文件。例如,在 Ubuntu 命令行上,您可以使用以下命令搜索该pzc系列 (Zapf Chancery) 或qzc(TeX Gyre Chorus,实际上是 TeX 附带的克隆) 的所有编码:

find /usr/share/texlive/texmf-dist/ -name "*[pq]zc.fd" -print

如果你只是想检查某个特定的家族是否有特定的编码,你可以用 测试特定文件名是否在 TeX 数据库中kpsewhich。例如,要确认cmr有以下OML编码:

kpsewhich omlcmr.fd

或者,所有现代文件管理器都有文件搜索功能。

实际上,通常可以先尝试 OML,如果不行,再尝试 OT1,如果还不行,再尝试 T1。几乎所有字体都带有 OT1 和 T1,但它mathdesign是少数支持 OML 的软件包之一。

unicode-math最后,如果您可以使用LuaTeX 或 XeTeX,这一切都会变得简单得多。

相关内容