粗体斜体 z 在 mtpro2 完整版中不显示

粗体斜体 z 在 mtpro2 完整版中不显示

我正在使用MathTime Professional 2 字体来自 PCTeX。不幸的是,我的问题只能由购买了完全的版本。精简版版本在 CTAN 上可用,你可以找到包实现,即mtpro2.dtx文件在 CTAN 上也一样。

有了这个zswash选项,我期望得到一个z数学斜体数学粗体斜体:

\documentclass{article}
\usepackage[zswash]{mtpro2}% Complete
\begin{document}
$z$ $\mathbold{z}$ How to fix?\par
\makeatletter
$\mtp@z$ $\mathbold{\mtp@z}$\par
$\mtp@@z$ $\mathbold{\mtp@@z}$\par
\makeatother
\end{document}

噴霧

答案1

问题是\mathbold被声明为数学字母表,并且花键 z 是通过使用z以下定义激活数学来获得的:

如果当前数学组为 −1,则使用花键 z ( \mtp@@z),否则使用 z ( \mtp@z)

\mathbold这显然在使用特定数学组的范围内失败了。

解决方法:修改数学活动的代码z,以检查粗体字母的特定数学组。这需要用 重新\mathbold定义\DeclareSymbolFontAlphabet

由于我没有 的完整版本mtpro2,所以我用中等粗细的字体来模拟它;您应该{m}在下面的代码中用替换{b}

\documentclass{article}
\usepackage[lite,zswash]{mtpro2} % remove lite in your document

%\DeclareSymbolFont{boldletters}{LMP1}{mtt}{b}{it} % use this line
% the following line is for testing without the full version, remove it
\DeclareSymbolFont{boldletters}{LMP1}{mtt}{m}{it}

% with \DeclareSymbolFontAlphabet we know the family allocated to \mathbold,
% which is internally known as \symboldletters
\DeclareSymbolFontAlphabet{\mathbold}{boldletters}

\makeatletter
\begingroup
\lccode`\~=`\z
\lowercase{\endgroup\def~}{%
  \ifnum\mathgroup=\m@ne
    \mtp@@z
  \else
    %%% added test
    \ifnum\mathgroup=\symboldletters
      \mtp@@z
    \else
      \mtp@z
    \fi
  \fi
}
\makeatother

\begin{document}

$z+\mathbold{z}$

\end{document}

在此处输入图片描述

与 相同expl3,测试更具可读性。

\documentclass{article}
\usepackage[lite,zswash]{mtpro2} % remove lite in your document
\usepackage{expl3}

%\DeclareSymbolFont{boldletters}{LMP1}{mtt}{b}{it} % use this line
% the following line is for testing without the full version, remove it
\DeclareSymbolFont{boldletters}{LMP1}{mtt}{m}{it}

% with \DeclareSymbolFontAlphabet we know the family allocated to \mathbold,
% which is internally known as \symboldletters
\DeclareSymbolFontAlphabet{\mathbold}{boldletters}

\ExplSyntaxOn
\cs_new_protected:Nn \mtproii_swashz:
 {
  \int_case:nnF { \mathgroup }
   {
    {-1}{\use:c {mtp@@z}}
    {\symboldletters}{\use:c {mtp@@z}}
   }
   {\use:c {mtp@z}}
 }
\char_set_active_eq:NN z \mtproii_swashz:
\ExplSyntaxOff

\begin{document}

$z+\mathbold{z}$

\end{document}

答案2

您可以加载bm(“boldmath”的缩写,我猜)包并写入\bm{z}

完整的 MWE 及其输出:

在此处输入图片描述

\documentclass{article}
\usepackage[zswash]{mtpro2}
\usepackage{bm}
\begin{document}
$z$ $\bm{z}$
\end{document}

相关内容