如何使用符号 \mathtt{A}
和包装\usepackage{MnSymbol}
?
我的代码以
\PassOptionsToPackage{dvipsnames}{xcolor}
\documentclass[a4paper]{book}
\usepackage{lmodern}
\usepackage{amsmath,amssymb}
\usepackage{amssymb}
\usepackage{amsmath,amscd}
\usepackage{amsfonts}
\usepackage[utf8]{inputenc}
\usepackage{pstricks}
\usepackage{pstricks-add}
\usepackage{tikz}
\usepackage{tensor}
\usepackage{graphicx}
\usepackage{MnSymbol}
\usepackage{stmaryrd}
\usepackage{shuffle}
\usepackage{comment}
\usepackage[frenchb]{babel}
\usepackage{etex}
\usepackage[all]{xy}
\usepackage{float}
\usepackage{blkarray}
\usepackage{lipsum}
%\usepackage{mathtools}
%\usepackage{mathabx}
\usepackage[dvipsnames]{xcolor}
\usepackage{tkz-graph}
\usetikzlibrary{arrows}
\usepackage[french,linesnumbered,algoruled]{algorithm2e}
\usepackage{algorithmic}
\usepackage{pst-node,pstricks,multido,pst-plot,pst-text,pst-3d}%
\usetikzlibrary{arrows}
我收到这些警告和错误
! 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.656 \mathtt B
_{n,k}(P_1,\dots,P_m,\dots)=\mathfrak B_{n,k}[\a^{( P)}_{\Ph...
Your command was ignored.
答案1
我可以用
\documentclass[a4paper]{book}
\usepackage{lmodern}
\usepackage{amsmath,amssymb}
\usepackage{MnSymbol}
\usepackage{stmaryrd}
\usepackage{shuffle}
\begin{document}
$\mathbf{A}\mathit{A}\mathsf{A}\mathbb{A}\mathtt{A}$
\end{document}
其中仅保留了数学字体相关的包。
必须知道,每个\DeclareSymbolFont
声明都会使用 16 个可用数学组中的一个。默认设置分配从 0 到 3 的组,然后分配另外两个;四个由、一个由和一个由amssymb
使用。总共十二个,因此文档中只能使用三个额外的数学字母表。MnSymbol
stmaryrd
shuffle
有些\mathX
命令实际上并不使用新的数学字母表,例如\mathbb
(它与 定义的数学组共享一个数学组amssymb
),但 和 等命令并非\mathfrak
如此\mathbf
。数学字母表(使用 加载\DeclareMathAlphabet
)仅在使用时分配一个数学组,因此在上面的代码中,前四个指令耗尽了可用的组,并且\mathtt
无法找到分配组的位置。
您可以使用各种技术来避免浪费数学组。例如,shuffle
可以通过以不同的方式定义包提供的符号来避免浪费数学组:
\documentclass[a4paper]{book}
\usepackage{lmodern}
\usepackage{amsmath,amssymb}
\usepackage{MnSymbol}
\usepackage{stmaryrd}
%\usepackage{shuffle}
\DeclareRobustCommand{\shuffle}{%
\mathbin{\text{\usefont{U}{shuffle}{m}{n}\symbol{"001}}}%
}
\DeclareRobustCommand{\cshuffle}{%
\mathbin{\text{\usefont{U}{shuffle}{m}{n}\symbol{"002}}}%
}
\begin{document}
$x\shuffle y\cshuffle z_{x\shuffle y\cshuffle z}$
$\mathbf{A}\mathit{A}\mathsf{A}\mathfrak{A}\mathtt{A}$
\end{document}
现在\mathtt
可以使用了。但这并不能保证数学组不会再次被用完。对于该集合中最不常用的命令,您可以定义(较慢的)替代命令;例如,以下是不分配数学组的前言代码\mathtt
:
\AtBeginDocument{%
\DeclareRobustCommand{\mathtt}[1]{%
\text{\normalfont\ttfamily #1}%
}%
}
答案2
看起来您那里有一些多余的包,它们占用了数学系列插槽(总共只有 16 个)。(请注意,amsart
还会加载占用、等amsfonts
更多插槽的包)。\mathfrak
\mathbb
我不确定您是否真的需要 MnSymbol 包。如果我没错的话,有这个amssymb
包就足够了。
我在网上找到了一个例子:
\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}
如果它编译通过,请告诉我。