该软件包mathalpha
有一个选项bb=tx
可以将黑板粗体字体设置为与 Times 和类似字体相配的字体。但是,这个选项已经坏了一段时间了(至少从2021 年 6 月)事实上,示例文档
\documentclass{article}
\usepackage[bb=tx]{mathalpha}
\begin{document}
\(\mathbb{R}\)
\end{document}
导致“缺失数字,视为零”错误。
有人知道这个问题是否会得到解决吗?有没有可以使用此选项的解决方法?
答案1
总结将第 226 行替换mathalpha.sty
为
\usepackage[scaled=\mathalfa@bbrawscaled]{tx-ds} % has dotlessi, j
似乎解决了问题。我不知道这是好方法还是坏方法,但我认为当包损坏时,这种解决方法可能对其他人有用。
使用选项bb=tx
,mathalpha
不直接定义黑板粗体字体:而是加载包tx-ds
,它是 的一部分pxtxalpha
tx-ds
。我认为出错的地方是传递给的缩放选项mathalpha
未被识别。事实上,第 226 行mathalpha.sty
读取
\usepackage[scaled=\mathalfa@bbscaled]{tx-ds} % has dotlessi, j
缩放因子\mathalfa@bbscaled
是根据第 45-46 行的选项定义的bbscaled
(或者以基本相同的方式,但根据第 41-42 行的选项定义scaled
),如下所示
\define@key{mathalfa}{bbscaled}[1.0]{%
\def\mathalfa@bbscaled{s*[#1]}\def\mathalfa@bbrawscaled{#1}}
我不知道s*[...]
这里的 的目的是什么,但我意识到不会将结果缩放值识别为数字。这就是问题中的示例文档导致“缺少数字”错误的原因。但是,如果通过传递给而不是 来tx-ds
使用原始缩放因子,则字体可以正确加载。scaled=\mathalfa@bbrawscaled
tx-ds
scaled=\mathalfa@bbscaled
答案2
这肯定是一个错误mathalpha
,应该有
\usepackage[scaled=\mathalfa@bbrawscaled]{tx-ds} % has dotlessi, j
而不是\mathalfa@bbscaled
,因为后者扩展为 ,s*[<factor>]
其中<factor>
可以设置scale=<factor>
为 的选项mathalpha
。但传递当然scaled=s*[<factor>]
会导致错误。
不触及包代码的修复方法如下:
\documentclass{article}
% fix the bug in mathalpha
\makeatletter
\def\txds@@scale{1}% or the magnification factor you want
\input{ot1tx-ds.fd}
\makeatother
%% end fix
\usepackage[bb=tx]{mathalpha}
\begin{document}
\(\mathbb{R}\)
\end{document}
我们会预先加载,因此当要求使用错误的选项加载ot1tx-ds.fd
时,它不会再次加载。mathalpha
tx-ds
当然直接加载tx-ds
更简单:
\documentclass{article}
\usepackage[scale=1]{tx-ds}
\begin{document}
\(\mathbb{R}\)
\end{document}