如何让标签记住章节?

如何让标签记住章节?

我正在使用 amsbook 包和 hyperref 包。假设在第 9 章第 3 节第 2 小节中陈述了一个定义,它被称为“定义 3.2”,而使用 hyperref 包时,它会被调用为“3.2”,而不会提及该章节。我该如何让包将其调用为“IX 3.2”?

添加如果这对我们所在的章节敏感,那就更好了:如果在同一章的第 5 节中调用定义 3.2,则不应进行区分,但如果在任何地方调用它不同的章节中,需要进行这样的区分。

平均能量损失

\documentclass[a4paper,11  pt]{amsbook}
\usepackage[utf8x]{inputenc}
\usepackage{amsfonts,amssymb,amsmath}
\usepackage{hyperref}

\newtheorem{theorem}{Theorem}[section]
\newtheorem{lema}[theorem]{Lemma}

\theoremstyle{definition}
\newtheorem{deff}[theorem]{Definition}

\begin{document}
\chapter{Preliminaries.}
\section{Examples.}
\begin{deff}\label{def::connectedfoo} Define a foo to be connected if...
\end{deff}
\chapter{Stuff.}
In ~\ref{def::connectedfoo} we defined what a connected foo is. This will be of great use in...
\end{document}

答案1

使用\p@theorem,作为参考编号的“前缀”。

\documentclass[a4paper,11  pt]{amsbook}
\usepackage[utf8]{inputenc}
\usepackage{amssymb,amsmath}
\usepackage{hyperref}

\newtheorem{theorem}{Theorem}[section]
\newtheorem{lema}[theorem]{Lemma}

\theoremstyle{definition}
\newtheorem{deff}[theorem]{Definition}

\makeatletter
\renewcommand{\p@theorem}{\ref@chapter{\arabic{chapter}}}
\protected\def\ref@chapter#1{%
  \ifnum#1=\value{chapter}%
  \else
    \@Roman{#1}\,%
  \fi
}
\makeatother
\renewcommand{\thechapter}{\Roman{chapter}}

\begin{document}

\chapter{Preliminaries}
\section{Examples}
\begin{deff}\label{def::connectedfoo}
Define a foo to be connected if...
\end{deff}

Definition~\ref{def::connectedfoo} is nice.

\chapter{Stuff}

In~\ref{def::connectedfoo} we defined what a connected foo is. This will be of great use in...

\end{document}

在此处输入图片描述

在此处输入图片描述

相关内容