![引用的前缀](https://linux22.com/image/450962/%E5%BC%95%E7%94%A8%E7%9A%84%E5%89%8D%E7%BC%80.png)
当我给一个定义贴上“定理...”的标签,然后引用它时,我没有得到“定义”或“定理”的前缀。我正在hyperref
使用背页。
在下图中,我想让超链接自动显示:“定义 1.1”,而不仅仅是“1.1”,如果可能的话,让“定义”也成为链接的一部分。
我使用的代码是:
\documentclass{article}
\usepackage{xcolor}
\usepackage{amsmath, amssymb, amsthm}
\usepackage{hyperref}
\hypersetup{colorlinks = true, linkcolor = blue}
\theoremstyle{definition}
\newtheorem{definition}{Definition}[section]
\newcommand{\R}{\mathbb{R}}
\title{Math class}
\author{Pablo García López}
\date{June 2022}
\begin{document}
\maketitle
\section{Line integral}
\begin{definition}[Opposite curve]
\label{curvaOpuesta}
Let $\gamma: [a, b] \to \R$ be a curve $\mathcal{C}^1$. Then the \textcolor{red}{opposite curve} is defined as $-\gamma: [-b, -a] \to \R, (-\gamma)(t) = \gamma(-t)$
\end{definition}
We can observe that on \ref{curvaOpuesta} we don't need \dots
\end{document}
我能得到任何帮助吗?
谢谢你!
答案1
您需要使用\autoref
而不是普通的\ref
。此外,由于hyperref
包尚未被告知要对definition
对象使用哪种前缀标签,因此您还需要运行指令
\def\definitionautorefname{definition}
或者,您可以在加载后cleveref
使用选项加载包,然后使用和创建自动包含对象名称的交叉引用;后者将以大写形式排版对象名称的首字母。nameinlink
hyperref
\cref
\Cref
\documentclass{article}
\usepackage{amsthm}
\usepackage[colorlinks = true, linkcolor = blue]{hyperref}
\def\definitionautorefname{definition}
\usepackage[nameinlink]{cleveref} % always load cleveref *after* hyperref
\theoremstyle{definition}
\newtheorem{definition}{Definition}[section]
\begin{document}
\section{Line integral}
\begin{definition}[Opposite curve] \label{curvaOpuesta}
\dots
\end{definition}
\ref{curvaOpuesta}
\autoref{curvaOpuesta}
\cref{curvaOpuesta}
\Cref{curvaOpuesta}
\end{document}
答案2
另一个解决方案使用cleveref
(之后加载hyperref
):
\documentclass{article}
\usepackage{xcolor}
\usepackage{amsmath, amssymb, amsthm}
\usepackage{hyperref}
\usepackage[nameinlink]{cleveref}
\hypersetup{colorlinks = true, linkcolor = blue}
\theoremstyle{definition}
\newtheorem{definition}{Definition}[section]
\newcommand{\R}{\mathbb{R}}
\title{Math class}
\author{Pablo García López}
\date{June 2022}
\begin{document}
\maketitle
\section{Line integral}
\begin{definition}[Opposite curve]
\label{curvaOpuesta}
Let $\gamma: [a, b] \to \R$ be a curve $\mathcal{C}^1$. Then the \textcolor{red}{opposite curve} is defined as $-\gamma: [-b, -a] \to \R, (-\gamma)(t) = \gamma(-t)$
\end{definition}
We can observe that on \cref{curvaOpuesta} we don't need \dots
\end{document}