目前,我的定理被索引为Theorem {chapter}{section}{number}
,例如Theorem 1.5.15
是第 1 章第 5 节中的第 15 条定理。但是,当使用引用这些定理时hyperref
,计数器会被删除。要引用Theorem 1.5.15
,链接仅为1.5
。
这是一个最小工作示例:
\documentclass[10pt]{report}
\usepackage{amsmath, amsthm}
\usepackage{hyperref}
\newtheorem{theorem}{Theorem}
\numberwithin{theorem}{section}
\begin{document}
\chapter{Chapter.}
\section{Section.}
\label{thm: Amazing.}\begin{theorem} Amazing!
\end{theorem}
\label{thm: Wow.}\begin{theorem} Wow!
\end{theorem}
By Theorem \ref{thm: Wow.} ...
\end{document}
答案1
\label
应该出现编号环境的命令里面一般来说,在环境内部,由于\refstepcounter
(增加相关计数器)设置\@currentlabel
,它只是由定义的宏\protected@edef
,所以\@currentlabel
在环境形成的组之后会丢失。
接下来将抓取最后一个全局的,在本例中\label
是部分值,即。\end{....}
\@currentlabel
1.1
使用该cleveref
包,可以说\Cref{lem: Wow}
并且Theorem 1.1.2
会自动出现,即无需Theorem
明确书写。
尽管可能,但不建议在标签名称中加空格。
\documentclass[10pt]{report}
\usepackage{amsmath, amsthm}
\usepackage{hyperref}
\newtheorem{theorem}{Theorem}
\numberwithin{theorem}{section}
\begin{document}
\chapter{Chapter.}
\section{Section.}
\begin{theorem} Amazing! \label{lem: Amazing.}
\end{theorem}
\begin{theorem} Wow! \label{lem: Wow.}
\end{theorem}
By Theorem \ref{lem: Wow.} ...
\end{document}