![替换 mathcal 加上 margin-note 导致 \reserved@a 与定义不匹配](https://linux22.com/image/397519/%E6%9B%BF%E6%8D%A2%20mathcal%20%E5%8A%A0%E4%B8%8A%20margin-note%20%E5%AF%BC%E8%87%B4%20%5Creserved%40a%20%E4%B8%8E%E5%AE%9A%E4%B9%89%E4%B8%8D%E5%8C%B9%E9%85%8D.png)
这与MIT 论文包中的 \mathcal 问题;我在那里发布了下面的 MWE,但由于偏离了原作者的帖子,编辑被拒绝了。我不知道是否应该提出一个新问题,但如果我错了,请纠正我。
我正在使用带有数学字体的论文模板mathdesign
,但不喜欢mathcal
字体,所以我想替换它们。以下219091和223843我尝试过
\let\mathcal\undefined
\DeclareMathAlphabet{\mathcal}{OMS}{zplm}{m}{n}
修复,但这会导致以下错误:
! Use of \reserved@a doesn't match its definition.
\reserved@b ->\relax
\ifmmode \else \non@alpherr \mathcal \fi \use@mathgrou...
l.23 $\mathcal{A}
$
?
正如下面的 MWE 所建议的那样,它似乎与在参考书目中使用数学有关。这是我能想到的最接近的例子,抽象了大部分模板内容(这里的一个特别之处是引用被打印到边缘——删除命令中的这个补丁cite
也会删除错误,但我想保留这个补丁cite
)
\begin{filecontents}{\jobname.bib}
@misc{example,
author = {Example},
title = {$\mathbf{F}_2^n$},
}
\end{filecontents}
\documentclass{article}
\usepackage[charter]{mathdesign}
\let\mathcal\undefined
\DeclareMathAlphabet{\mathcal}{OMS}{zplm}{m}{n}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\DeclareCiteCommand{\cite}[]{}{\marginpar{\footnotesize\printfield[citetitle]{labeltitle}}}{}{}
\begin{document}
$\mathcal{A}$
\cite{example}
$\mathcal{A}$
\end{document}
删除\footnotesize
边距注释似乎也能解决问题,但在这里,我也想坚持使用字体大小。
答案1
取消定义 \mathcal 命令是一种糟糕的黑客行为,您会因此受到惩罚。使用 \SetMathAlphabet 更改字母表:
\begin{filecontents}{\jobname.bib}
@misc{example,
author = {Example},
title = {$\mathbf{F}_2^n$},
}
\end{filecontents}
\documentclass{article}
\usepackage[charter]{mathdesign}
\SetMathAlphabet{\mathcal}{normal}{OMS}{zplm}{m}{n}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\DeclareCiteCommand{\cite}[]{}{\marginpar{\footnotesize\printfield[citetitle]{labeltitle}}}{}{}
\begin{document}
$\mathcal{A}$
\cite{example}
$\mathcal{A}$
\end{document}