字母太多,如何避免这个错误?

字母太多,如何避免这个错误?

当我尝试在 LaTeX 中使用太多不同类型的数学符号时遇到了问题,例如以下示例:

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{latexsym}
\usepackage{dsfont}
\usepackage{gensymb}
\usepackage{amssymb}
\usepackage{authblk}
\usepackage{amstext}
\usepackage{amsfonts}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{upgreek}
\usepackage{textcomp}
\usepackage{bm}
\usepackage[mathscr]{euscript}
\let\euscr\mathscr \let\mathscr\relax
\usepackage[scr]{rsfso}
\usepackage{siunitx}
\usepackage[e]{esvect}
\begin{document}
$\mathbb{R}\mathscr{P}\euscr{B}\mathcal{C}\vv{x_0}$
\end{document}

当我尝试编译它时,终端中出现以下错误消息:

! LaTeX Error: Too many math alphabets used in version normal.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.21 $\mathbb{R}\mathscr{P}
                           \euscr{B}\mathcal{C}\vv{x_0}$
? 

我该怎么做才能使用更多字母?事实上,我需要文档中的所有数学符号。

答案1

首先,删除latexsymgensymb添加没有真正有用的东西:前者被覆盖,amssymb而后者的符号可以很容易地以不同的方式生成。

这已经保存了两个数学组。此外,加载dsfont也是可疑的,除非您想要两种不同的双笔画字体。

或许也是upgreek不必要的。

附注:很快就会amsfonts自动加载。amssymbamstextamsmath

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{upgreek}
\usepackage{authblk}
\usepackage{textcomp}
\usepackage{bm}
\usepackage{siunitx}

% more calligraphic fonts
\usepackage[mathscr]{euscript}
\let\euscr\mathscr \let\mathscr\relax
\usepackage[scr]{rsfso}

\begin{document}

$\mathbb{R}\mathscr{P}\euscr{B}\mathcal{C}$

\end{document}

这样,最后分配的数学组是 14。如果您以后遇到麻烦,唯一可行的选择是以不同的方式定义一些书法字体。

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{upgreek}
\usepackage{authblk}
\usepackage{textcomp}
\usepackage{bm}
\usepackage{siunitx}

% more calligraphic fonts
\DeclareRobustCommand{\euscr}[1]{%
  \text{\usefont{U}{eus}{m}{n}#1}%
}
\DeclareRobustCommand{\mathscr}[1]{%
  \text{\usefont{U}{rsfso}{m}{n}#1}%
}

\begin{document}

$\mathbb{R}\mathscr{P}\euscr{B}\mathcal{C}$

\end{document}

没有粗体版本,但我不认为你需要它:区分\euscr{C}和已经很困难了\mathcal{C}

答案2

这个新答案只是为了举个例子,先前的答案

egreg 的解决方案(首先清理)的补充解决方案是减少 - 使用的字母数量,而 -bm 又被以下程序使用amssymb

\newcommand\hmmax{0}
\newcommand\bmmax{0}

\usepackage{amssymb}

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{latexsym}
\usepackage{dsfont}
\usepackage{gensymb}

% put these before amssymb
% to avoid ``Too many math alphabets used in version normal.''
% cf. https://tex.stackexchange.com/a/243541/91665
\newcommand{\hmmax}{0}
\newcommand{\bmmax}{0}
\usepackage{amssymb}

\usepackage{authblk}
\usepackage{amstext}
\usepackage{amsfonts}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{upgreek}
\usepackage{textcomp}
\usepackage{bm}
\usepackage[mathscr]{euscript}
\let\euscr\mathscr \let\mathscr\relax
\usepackage[scr]{rsfso}
\usepackage{siunitx}
\usepackage[e]{esvect}
\begin{document}
$\mathbb{R}\mathscr{P}\euscr{B}\mathcal{C}\vv{x_0}$
\end{document}

答案3

在此处输入图片描述

xelatex如果您使用或lualatex每个数学版本有 256 个而不是 16 个可用数学字母,则发布的文档运行时不会出现错误。

答案4

我已经多次遇到同样的问题,这些解决方案都不适合我,但给出的解决方案这里诀窍在于:只需\usefonttheme{professionalfonts}在序言的开头添加即可。

相关内容