hyperref 未检测定理计数器/定理数

hyperref 未检测定理计数器/定理数

目前,我的定理被索引为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{....}\@currentlabel1.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}

在此处输入图片描述

相关内容