我正在使用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}