当我尝试在 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
首先,删除latexsym
和gensymb
添加没有真正有用的东西:前者被覆盖,amssymb
而后者的符号可以很容易地以不同的方式生成。
这已经保存了两个数学组。此外,加载dsfont
也是可疑的,除非您想要两种不同的双笔画字体。
或许也是upgreek
不必要的。
附注:很快就会amsfonts
自动加载。amssymb
amstext
amsmath
\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
答案4
我已经多次遇到同样的问题,这些解决方案都不适合我,但给出的解决方案这里诀窍在于:只需\usefonttheme{professionalfonts}
在序言的开头添加即可。