粗体版本中使用的数学字母太多(找不到解决方案)

粗体版本中使用的数学字母太多(找不到解决方案)

我知道这是一个常见问题,但我搜索了解决方案却找不到。我尝试使用bmmax/hmmax但没有帮助。以下是重现该问题的代码的最小部分。我将不胜感激任何建议/帮助。

\documentclass[12pt]{article}
\newcommand{\bmmax}{2}
\newcommand{\hmmax}{0}

\usepackage{array,float,epsf,latexsym,psfrag,amssymb,eurosym,theorem,amsmath,verbatim}

\usepackage{graphicx}
\usepackage{amsfonts}
\usepackage{bbm}
\usepackage{mathrsfs}

\usepackage[dvips]{color}
\usepackage[ansinew]{inputenc}
\usepackage{srcltx}

\DeclareMathAlphabet{\mathpzc}{OT1}{pzc}{m}{it}

\def\bsf  #1{           \mbox{\boldmath $\sf #1$}}
\def\bsfh #1{\widehat  {\mbox{\boldmath $\sf #1$}}}

\begin{document}

\begin{equation}
\bsf x ~ \bsfh x
\end{equation}

\end{document}

PS 我有一份 70 页的文档,编译起来没问题,但只要我删除前 40 页的公式,就会遇到该错误。这是我无法向自己解释的事情。

答案1

\bsf和的定义\bsfh产生了更多的错误,而不仅仅是“数学字母太多”的错误。

实际上,该错误是由您对 的定义引起的\bsfh,它导致一个循环,该循环因“数学字母太多”错误而停止,并最终正确打印所需的符号(但这样做会耗尽版本中的数学系列数量\boldmath)。

\bsf和的更合理定义\bsfh可以是

\DeclareMathAlphabet{\bsf}{OT1}{cmss}{bx}{n}
\newcommand{\bsfh}[1]{\widehat{\bsf{#1}}}

这不应该导致数学字母表的问题(我检查了一下,16 个字母表中只有 9 个被使用)。这样\bsf{x}在下标和上标中也会得到正确的结果。如果你不需要它们在这样的位置,可以使用更简单的定义:

\newcommand{\bsf}[1]{\mbox{\normalfont\sffamily\bfseries #1}}
\newcommand{\bsfh}[1]{\widehat{\bsf{#1}}}

不要加载latexsym已过时的(这样做可以减少数学字母的使用);它提供的符号可通过获得amssymb

相关内容