我想使用 mathcal 的数学字体,即:“pxtx”和“dutchcal”,这两个字体在这篇文章中有详细说明回答。但是,我不想更改标准数学字体,而只是在本地使用这些字体。我该怎么做?
一些额外的信息。感谢@Mico:
1)我使用 amsfont 包。下图中的 F 是标准的数学字体:
2)文档类:IEEEtran
3)pdfLaTeX
4)我使用\mathbb
答案1
我不确定我是否正确理解了您的问题。如果您需要在同一文档中使用两种不同的书法字母,最简单的方法是将一个加载为 ,将\mathcal
另一个加载为\mathscr
。mathalpha
(在较旧的安装中,您可能需要使用它的旧名称mathalfa
。)
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[cal = pxtx, scr = dutchcal]{mathalpha}
\begin{document}
pxtx: \( \mathcal{ABC} \)
dutchcal: \( \mathscr{ABC} \)
\end{document}
不过,我不确定你是否意味着你需要使用三同一文档中的书法字母非常相似。(除非它是不同数学文字的样本,否则我想不出为什么。)
在这种情况下,请使用\DeclareMathAlphabet
正确的系列和编码名称。我修改了以下代码mathalpha.sty
:
\documentclass{article}
\usepackage[T1]{fontenc}
% Based on the code from mathalpha.sty:
\DeclareFontFamily{U}{dutchcal}{\skewchar \font =45}
\DeclareFontShape{U}{dutchcal}{m}{n}{
<-> dutchcal-r}{}
\DeclareFontShape{U}{dutchcal}{b}{n}{
<-> dutchcal-b}{}
\DeclareMathAlphabet{\mdutchcal}{U}{dutchcal}{m}{n}
\SetMathAlphabet{\mdutchcal}{bold}{U}{dutchcal}{b}{n}
\DeclareMathAlphabet{\mdutchbcal} {U}{dutchcal}{b}{n}
\DeclareFontFamily{U}{txcal}{\skewchar \font =45}
\DeclareFontShape{U}{txcal}{m}{n}{
<-> txr-cal}{}
\DeclareFontShape{U}{txcal}{b}{n}{
<-> txb-cal}{}
\DeclareMathAlphabet{\mtxcal}{U}{txcal}{m}{n}
\SetMathAlphabet{\mtxcal}{bold}{U}{txcal}{b}{n}
\DeclareMathAlphabet{\mtxbcal} {U}{txcal}{b}{n}
\begin{document}
pxtx: \( \mtxcal{ABC} \)
dutchcal: \( \mdutchcal{ABC} \)
mathcal: \( \mathcal{ABC} \)
\end{document}
如果你的某个软件包发生了变化\mathcal
,而你需要恢复它,看到这个问题。\mathcal
您还可以使用\let
和 保存 的原始定义\renewcommand\mathcal
。
请注意,旧版 LaTeX 仅允许您声明有限数量的数学字母。解决此问题的一种方法是将脚本字体加载为文本字体(例如,来自 的 Fraktur 字体),并通过将其包装在来自oldgerm
中在数学模式下使用它。\text
amsmath
在带有 的现代工具链中unicode-math
,您可以使用\setmathfontface
创建任意数量的新数学字母表。您还可以使用\setmathfont[range=cal, Scale=MatchUppercase]{Some Font}
和\setmathfont[range=scr, Scale=MatchUppercase]{Another Font}
加载新的脚本字母表。事实上,如果您不执行任何操作,它们将默认设置为相同的字体。