如何使用 mathalpha 的 bb=tx 选项?

如何使用 mathalpha 的 bb=tx 选项?

该软件包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=txmathalpha不直接定义黑板粗体字体:而是加载包tx-ds,它是 的一部分pxtxalphatx-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@bbrawscaledtx-dsscaled=\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时,它不会再次加载。mathalphatx-ds

当然直接加载tx-ds更简单:

\documentclass{article}

\usepackage[scale=1]{tx-ds}

\begin{document}

\(\mathbb{R}\)

\end{document}

相关内容