我怎样才能更改上述代码以获取字形而无需加载多种字体?如果可能的话。:-)
\documentclass[12pt]{article}
% Source: https://tex.stackexchange.com/a/40767/6880
\newcommand{\PrintMathFonts}{%
\count255=0
\loop\ifnum\count255<16
(\the\count255:~\fontname\textfont\count255)
\advance\count255 by 1
\repeat}
\DeclareFontFamily{U}{mathb}{}
\DeclareFontShape{U}{mathb}{m}{n}{
<-5.5> mathb5
<5.5-6.5> mathb6
<6.5-7.5> mathb7
<7.5-8.5> mathb8
<8.5-9.5> mathb9
<9.5-11> mathb10
<11-> mathb12
}{}
\DeclareSymbolFont{mathb}{U}{mathb}{m}{n}
\DeclareFontSubstitution{U}{mathb}{m}{n}
\DeclareMathSymbol{\test}{3}{mathb}{"D8}
\begin{document}
\PrintMathFonts
$\test$
\PrintMathFonts
\end{document}
答案1
您无法加载部分字体,因此标题问题的答案是无法做到这一点,要访问字形,您必须加载完整的字体。
但是,代码中(以及相关的并行问题)隐含的问题不是避免加载字体,而是在任何给定的数学表达式中保持在 16 个字体系列的经典 tex 限制内。
从使用插槽的角度来看,\fam
您显示的代码相当少,它只使用一个插槽(mathb
),这是添加新的数学符号字体时可以做的最少的事情。
替代方法是声明一个数学字母表而不是数学符号字体,数学字母表只有在实际使用时才会使用一个插槽,而不是在声明时使用,因此您可以声明超过 16 个数学字母表,只要您不全部使用它们即可。
或者您可以(以一定的宏复杂性和对下标和上标定位的控制损失为代价)使用文本字体而不是数学字体。
所以简而言之,“不加载多种字体?”似乎是一种误解。您展示的代码只使用一个数学系列,而不是多个,重要的是计数,而不是它使用多种不同大小的字体。