我\O
出于数学目的重新定义了该命令,但现在它似乎与\o
我需要的用于人名的命令相冲突。到目前为止,问题似乎只发生在作者条目中。这是一个 MWE。
\documentclass{amsart}
\usepackage{amsmath,amssymb}
\makeatletter\let\OO\O\let\O\@undefined\makeatother
\newcommand{\O}{\mathcal O}
\begin{document}
\author{R{\o}n}
\title{Hi}
\maketitle
Hi R{\o}n, I like $\O_X$.
\end{document}
如果您从作者条目中删除{\o}
,它就可以正常编译。
答案1
执行 时,该类amsart
适用\MakeUppercase
于作者姓名\maketitle
。由于\MakeUppercase
宏变为\o
,\O
因此会出现错误。
你可以做
\documentclass{amsart}
\usepackage{amsmath,amssymb}
\let\latexO\O
\let\O\relax
\DeclareRobustCommand{\O}{\ifmmode\mathcal{O}\else\latexO\fi}
\begin{document}
\author{R{\o}n}
\title{Hi}
\maketitle
Hi R{\o}n, I like $\O_X$.
\end{document}
但实际上却无法避免搬起石头砸自己脚的风险:在某些情况下,\O
仍然可能会理解为错误的意思。
不去做吧;用一个有意义的名字来\mathcal{O}
代替。