我想使用 mathdesign,但我仍然想要普通的 mathcal。在这个问题建议使用
\let\mathcal\undefined
\DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n}
它与 \documentclass{amsart} 配合得很好。但我想使用斯维尤尔 。我收到错误消息不是在我第一次使用 \mathcal 时,而是在使用它、分节符,然后再次使用它时。这是一个最小的工作示例:
\documentclass [invmat]{svjour}
\usepackage[garamond]{mathdesign}
\let\mathcal\undefined
\DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n}
\begin{document}
$\mathcal{R}$
\section{New Section}
$\mathcal{S}$
\end{document}
我得到的错误是
Use of \reserved@a doesn't match its definition. [$\mathcal{S}]
Undefined control sequence. [$\mathcal{S}]
重复几次然后
LaTeX Error: Too many math alphabets used in version normal. [$\mathcal{S}]
答案1
svjour
和之间存在一种奇怪的互动mathdesign
:他们互相争斗,\mathcal
而你失败了。
使用不同的名称:
\DeclareMathAlphabet{\mcal}{OMS}{cmsy}{m}{n}
\SetMathAlphabet{\mcal}{bold}{OMS}{cmsy}{b}{n}
示例(同svjour3
,但应该是一样的):
\documentclass{svjour3}
\usepackage[garamond]{mathdesign}
\DeclareMathAlphabet{\mcal}{OMS}{cmsy}{m}{n}
\SetMathAlphabet{\mcal}{bold}{OMS}{cmsy}{b}{n}
\begin{document}
$\mcal{R}$
\section{New Section $\mcal{X}$}
$\mcal{S}$
\end{document}
实际上,这不是一个特定的问题svjour
;以下示例显示了相同的问题:
\documentclass{article}
\usepackage[garamond]{mathdesign}
\let\mathcal\relax
\DeclareMathAlphabet{\mathcal}{OMS}{cmsy}{m}{n}
\begin{document}
$\mathcal{R}${\boldmath}$\mathcal{T}$
\end{document}
声明是在类中\boldmath
自动发出的,这是问题的根源。罪魁祸首显然是\section
svjour
mathdesign
更新
该mathdesign
包有一个特殊的定义策略\mathcal
:它用\DeclareSymbolFont
和来定义它\DeclareSymbolFontAlphabet
。这显然是错误的,因为与其关联的数学组被浪费了,即使\mathcal
从未在文档中使用过。
就你的情况来说,这没什么区别,因为你做使用\mathcal
。
\documentclass{svjour3}
\usepackage[garamond]{mathdesign}
\DeclareSymbolFont{cmcal}{OMS}{cmsy}{m}{n}
\SetSymbolFont{cmcal}{bold}{OMS}{cmsy}{b}{n}
\DeclareSymbolFontAlphabet{\mathcal}{cmcal}
\begin{document}
$\mathcal{R}$
\section{New Section $\mathcal{X}$}
$\mathcal{T}$
\end{document}
这会产生与上面相同的输出。