我知道这是一个常见问题,但我搜索了解决方案却找不到。我尝试使用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
。