只需使用一个数学符号,无需加载整个字体

只需使用一个数学符号,无需加载整个字体

我怎样才能更改上述代码以获取字形而无需加载多种字体?如果可能的话。:-)

\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 个数学字母表,只要您不全部使用它们即可。

或者您可以(以一定的宏复杂性和对下标和上标定位的控制损失为代价)使用文本字体而不是数学字体。

所以简而言之,“不加载多种字体?”似乎是一种误解。您展示的代码只使用一个数学系列,而不是多个,重要的是计数,而不是它使用多种不同大小的字体。

相关内容