如何在不使用数学字母的情况下完全替换 \mathsf?

如何在不使用数学字母的情况下完全替换 \mathsf?

目前我需要减少一篇文章中使用的数学字体。尽管如此,我还是不想失去这些功能。因此我找到了一种方法:用文本版本替换数学版本。

例如假设我们使用\mathsf。在头部添加代码:\renewcommand{\mathsf}{\textsf}。然后 mathalphabet 的一个房间就会空出来。

\mathsf但是和之间有什么不同\textsf?它们看起来一样,而且 只能\mathsf在数学模式下使用,而\textsf也可以在文本模式下使用;但是\textsf也可以在数学模式下使用,那么 有什么必要呢\mathsf?此外,为什么不全部替换\math*为 呢\text*

答案1

主要问题是,\textsf只将当前系列更改为\sfdefault(对应于类或加载的包设置,默认为cmssComputer Modern Sans),如\textrm{} 和 \mathrm{} 之间的区别对于\textrm\mathrm,但这里适用相同的概念。

通过加载amsmath,所有\textXY命令都可以在数学模式下使用,并且它们会根据当前数学样式自动改变大小(\displaystyle以及\textstyle当前字体大小,\scriptstyle以及\scriptscriptstyle缩小尺寸,取决于当前字体大小)。

相反,\mathsf通常设置为选择无衬线直立中等字体,使用当前字体大小(或减少下标和上标)。这比使用 处理时间更有效率\textsf,但在缺少数学组的情况下,一个好的替代方案是避免只在少数情况下使用其中一个。

可以

\usepackage{amsmath} % for enabling reduced size in sub/superscripts
\let\mathsf\relax    % just to avoid a message in the log file
\DeclareRobustCommand{\mathsf}[1]{\text{\normalfont\sffamily#1}}

确保与 所做的字体选择相同\mathsf,与上下文无关。应在加载可以发出命令的字体包后进行此重新定义\DeclareMathAlphabet{\mathsf}

如果\mathsf尚未提前使用用于排版(定义中的使用并不重要),数学组将以处理时间为代价得到有效保存(对于快速的机器,可能为几毫秒)。

相关内容