# “Too many math alphabets” error

I just got the error

Too many math alphabets used in version normal.


on a document I'm editing. What can I do to fix this, other than stop using an alphabet? All I've found online is instructions on what to do if you're using the bm.sty package, which I'm not calling (but maybe it's hidden in the AMS stuff?). I'll note, the thing that broke it was adding mathrsfs and using \mathscr.

Anyways, as you'll see in my preamble, I tried what they suggested anyways, and it didn't work.

My preamble:

\documentclass[11pt]{amsart}
\newcommand{\bmmax}{0}
\newcommand{\hmmax}{0}
\usepackage{amsmath, amssymb, amsthm, latexsym, amscd, enumerate, MnSymbol,bbm, etex,nicefrac,mathrsfs}


I'm using

\mathbf
\mathcal
\mathfrak
\mathscr
\mathsf
\mathbb
\mathbbm %(for a lower case blackboard bold letter)


I recognize this is a lot of math fonts, but doesn't seem unreasonable.

EDIT: getting rid of MnSymbol fixed things...

-

It looks like you've got some redundant packages in there which are using up math family slots (of which there are only 16 total). (Note that amsart also loads the amsfonts package which uses up several more for \mathfrak, \mathbb, etc.) For example, in the latexsym docs:

These fonts are not automatically included in the NFSS2/LATEX2ε since they take up important space and aren’t necessary if one makes use of the packages amsfonts or amssymb.

Furthermore, if you're using MnSymbol, doesn't that override much of the amssymb package? I could be wrong about that.

Finally, it looks the bbm family takes up five (or is it only three?) on its own—if you don't need that many you can copy out just the definitions you need, such as

\DeclareMathAlphabet{\mathbbm}{U}{bbm}{m}{n}


Bearing all this in mind, here's a minimal example that at least compiles: (I've removed a couple of unrelated packages)

\documentclass[11pt]{amsart}
\usepackage{amsmath, amssymb, amscd, MnSymbol,mathrsfs}
\DeclareMathAlphabet{\mathbbm}{U}{bbm}{m}{n}% from bbm.sty
\begin{document}
$\mathbf A \mathcal A \mathfrak A \mathscr A \mathsf A \mathbb A \mathbbm a$
\end{document}

-
Honestly, I have no idea why MnSymbol was there; my coauthor added it at some point. –  Ben Webster Oct 2 '10 at 7:51
Interestingly, I must have forgotten at least one math alphabet I was using, since your example compiles on my computer, but using your trick in the actual file doesn't. As I mentioned in the edit to the question, removing MnSymbol does, though. –  Ben Webster Oct 2 '10 at 7:53
MnSymbol might be used for an obscure glyph you otherwise can't access. It would be nice, huh, if LaTeX provided better logging of where all the math alphabets got used up :) –  Will Robertson Oct 2 '10 at 8:05
A question, since both XeTeX and LuaTeX can have 256 math families (right?), is this LaTeX error still relevant or can we get ride of it? –  Khaled Hosny Oct 2 '10 at 9:54
Funny, I never thought of that. I do increase the number of math families that can be allocated in unicode-math, but I haven't done any testing on it. I should add a test file that just defines, say, 50 math families to see what happens. If it works then perhaps this should be added to xltxtra & luatextra as well. –  Will Robertson Oct 2 '10 at 10:01
show 6 more comments

I recently encountered this error when compiling a proceedings volume. Each paper by itself could be typeset without throwing this error, but when all of them were included in the same LaTeX document, the math alphabet limit was exceeded.

We were able to solve the issue by declaring a separate math version for one of the more alphabet-hungry papers. Concretely, we put the command \DeclareMathVersion{normal2} at the end of the preamble, and the commands \mathversion{normal2} and \mathversion{normal} just before and after respectively the \include for the alphabet-hungry paper. This gave that paper an alphabet allocation (managed by the \c@mv@normal2 counter) that is separate from that of the others (managed by the \c@mv@normal counter), and this allowed both to stay below the limit. One thing this trick relies upon is that new math versions are created with all settings of the old one in place, so all declarations previously made for math version normal will be in place also in math version normal2 (and normal3, and so on, if one needs to repeat the trick).

-
Welcome to TeX.SX! You can have a look at our starter guide to familiarize yourself further with our format. –  Martin Schröder Jan 21 at 14:24