如何将 mathcal 字体与 mathdesign 的 charter 字体一起使用?

如何将 mathcal 字体与 mathdesign 的 charter 字体一起使用?

下面是一个使用数学设计实现 Charter 字体的包:

\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage[charter]{mathdesign}
\begin{document}
   $H \quad \mathcal H \quad \mathscr H$
\end{document}

输出结果如下:

在此处输入图片描述

根据这个回答,我预期\mathcal\mathscr会产生不同的结果。如何获得类似于这些的字体

在此处输入图片描述

同时使用 Charter 字体。(最后一张图片借用自上面引用的答案。)

答案1

您引用的答案并非特定于mathdesign,本质上显示了 的默认值\mathcal。字体包可能会更改它。

mathdesign是同义词,\mathcal除非将\mathscr(未记录的)选项cal=cmcal传递给包。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[charter,cal=cmcal]{mathdesign}

\begin{document}

$H \quad \mathcal{H} \quad \mathscr{H}$

\end{document}

在此处输入图片描述

避免\mathcal H并更喜欢\mathcal{H}。相信我。


如何找到未记录的选项?

Charter 字体由子包管理mdbch.sty,该子包具有

\if@MD@cmcal
\DeclareSymbolFont{mdcal}{OMS}{xmdcmsy}{m}{n}%
\SetSymbolFont{mdcal}{bold}{OMS}{xmdcmsy}{b}{n}%
\else
\DeclareSymbolFont{mdcal}{OMS}{mdbch}{m}{n}%
\SetSymbolFont{mdcal}{bold}{OMS}{mdbch}{b}{n}%
\fi
\DeclareSymbolFontAlphabet{\mathcal}{mdcal}
\DeclareSymbolFont{mdscr}{OMS}{mdbch}{m}{n}%

\DeclareSymbolFontAlphabet{\mathscr}{mdscr}%
\SetSymbolFont{mdscr}{bold}{OMS}{mdbch}{b}{n}%

我不会这么写,但那是另一回事。这似乎很合理,指的是xmdcmsy现代计算机\mathcal。事实上,mdfont.def

%% ----------------------------------------------------------------
%% Computer Modern Symbol
%% ----------------------------------------------------------------

  \def\MD@font@name{xmdcmsy}
  \DeclareFontFamily{OMS}{\MD@font@name}{\skewchar\font48 }
  \DeclareFontShape{OMS}{\MD@font@name}{m}{n}{%
    <5><6><7><8><9><10>sgen*[\cmsy@ratio]cmsy%
    <10.95><12><14.4><17.28><20.74><24.88> s*[\cmsy@ratio] cmsy10%
  }{}
  \DeclareFontShape{OMS}{\MD@font@name}{b}{n}{%
    <5><6><7><8><9>sgen*[\cmsy@ratio]cmbsy%
    <10><10.95><12><14.4><17.28><20.74><24.88> s*[\cmsy@ratio] cmbsy10%
  }{}
  \DeclareFontShape{OMS}{\MD@font@name}{mb}{n}{%
    <5><6><7><8><9>sgen*[\cmsy@ratio]cmbsy%
    <10><10.95><12><14.4><17.28><20.74><24.88> s*[\cmsy@ratio] cmbsy10%
  }{}

这本质上意味着cmsy字体需要经过适当的缩放才能与主字体兼容。

好的,现在不该看如何让\if@MD@cmcalreturn true 了。如果我们在 中查找mathdesign.sty,我们会发现

%% Type of calligraphic alphabet
\newif\if@MD@cmcal  \@MD@cmcalfalse

\define@key{MD}{cal}[cmcal]{%
    \ifthenelse{\equal{#1}{cmcal}}{\@MD@cmcaltrue }
    {\ifthenelse{\equal{#1}{script}}{\@MD@cmcalfalse}{}}}

这意味着如果传递了选项cal=cmcal,则条件将返回 true。如果传递了任何选项或cal=absolutelywhatever条件将返回 false,\mathcal并且\mathscr成为同义词。

实际上打字也cal可以,这样你就可以节省一些击键时间,然后说

\usepackage[charter,cal]{mathdesign}

为什么手册中没有提到此选项?谁知道?

相关内容