我有一个部分专门用于定理的证明,因此我使用
\section{Proof of Theorem~\ref{thm}}
当然,由于标题是大写的,它在生成标题时会要求输入 \ref{THM},我得到了一个明显的错误。处理这种情况的正确方法是什么?下面是 MWE:
\documentclass{amsbook}
\usepackage{lipsum}
\newtheorem{thm}{Theorem}
\begin{document}
\chapter{First Chapter}
\section{The Theorem}
\begin{thm}[Lipsum Theorem]
\label{thm}
\lipsum[1]
\end{thm}
\section{Proof of Theorem~\ref{thm}}
\lipsum[1-23]
\end{document}
编译时我得到:
LaTeX Warning: Reference `THM' on page 3 undefined on input line 14.
(每次生成一个标题),标题显示
`2. 定理证明??'
答案1
如果您不想四处乱逛并且不介意绕过您的问题:一个定理可以有多个标签,所以\label{THM}
也请给出它。
答案2
一种解决方法是定义一个包含扩展引用的新宏,并在章节标题中使用该宏:
\edef\mythmref{\ref{thm}}
\section{Proof of Theorem~\mythmref}
答案3
由于amsbook
使用不将数学表达式大写的宏\uppercasenonmath
,因此您可以使用技巧进入数学模式以供参考:
\section{Proof of Theorem~$\text{\ref{thm}}$}
对我来说效果很好:在正文中、在目录中以及在页眉中。
答案4
您可以在使用之前定义\label
并将它们的参数小写,如下所示:\ref
\expandafter\def\expandafter\label\expandafter#\expandafter1\expandafter{\expandafter\lowercase\expandafter{\label{#1}}}
\expandafter\def\expandafter\ref\expandafter#\expandafter1\expandafter{\expandafter\lowercase\expandafter{\ref{#1}}}
\expandafter\def\expandafter\eqref\expandafter#\expandafter1\expandafter{\expandafter\lowercase\expandafter{\eqref{#1}}}
然后,标签名称变得不区分大小写。