目前我需要减少一篇文章中使用的数学字体。尽管如此,我还是不想失去这些功能。因此我找到了一种方法:用文本版本替换数学版本。
例如假设我们使用\mathsf
。在头部添加代码:\renewcommand{\mathsf}{\textsf}
。然后 mathalphabet 的一个房间就会空出来。
\mathsf
但是和之间有什么不同\textsf
?它们看起来一样,而且 只能\mathsf
在数学模式下使用,而\textsf
也可以在文本模式下使用;但是\textsf
也可以在数学模式下使用,那么 有什么必要呢\mathsf
?此外,为什么不全部替换\math*
为 呢\text*
?
答案1
主要问题是,\textsf
只将当前系列更改为\sfdefault
(对应于类或加载的包设置,默认为cmss
Computer 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
尚未提前使用用于排版(定义中的使用并不重要),数学组将以处理时间为代价得到有效保存(对于快速的机器,可能为几毫秒)。