参考编号

参考编号

我正在用类编写文档amsbook。我有几个章节,但只有章节内部(没有子章节)。我使用过

\swapnumbers
\theoremstyle{theorem}
\newtheorem{corollary}{Corollary}[section]
\newtheorem{teo}[corollary]{Théorème}
\newtheorem{lem}[corollary]{Lemme}

等等。

现在,在第 1 章第 2 节中我有“2.2 定理:......”此外,在第 2 章第 2 节中我有“2.2. 引理:......”每个都有其标签,当我在其他章节中引用其中一个时,我只会得到“参见 2.2”,因此读者不知道我在谈论 I.2.2 还是 II.2.2。

有什么建议么?

答案1

您可以重新定义\p@corollary(控制交叉引用中使用的前缀)并添加章节编号的罗马表示形式:

\documentclass{amsbook}
\usepackage[frenchb]{babel}
\swapnumbers 
\theoremstyle{theorem} 
\newtheorem{corollary}{Corollary}[section] 
\newtheorem{teo}[corollary]{Théorème} 
\newtheorem{lem}[corollary]{Lemme}

\makeatletter
\renewcommand\p@corollary{\Roman{chapter}.}
\makeatother

\begin{document}

\chapter{Test Chapter One}
\ref{cortest} and \ref{lemtest}
\section{Test Section One One}
\section{Test Section One Two}
\begin{corollary}
\label{cortest}
test
\end{corollary}

\chapter{Test Chapter Two}
\ref{cortest}
\section{Test Section Two One}
\section{Test Section Two Two}
\begin{lem}
\label{lemtest}
test
\end{lem}

\end{document}

在此处输入图片描述

评论中提出了一个新要求:仅当引用的对象出现在与\ref使用章节不同的章节中时才添加章节编号;这可以通过一些字符串操作来完成:

\documentclass{amsbook}
\usepackage[frenchb]{babel}
\usepackage{refcount}
\usepackage{xstring}

\newcommand\currentchapter{}
\newcommand\thmref{}

\newcommand\Thmref[1]{%
  \renewcommand\currentchapter{\thechapter}
  \StrBefore{\getrefnumber{#1}}{.}[\thmrefbefore]%\thmrefbefore\currentchapter%
  \StrBehind{\getrefnumber{#1}}{.}[\thmrefbehind]%\thmrefbehind\currentchapter%
  \IfStrEq{\currentchapter}{\thmrefbefore}{\thmrefbehind}{\uppercase\expandafter{\romannumeral 0\thmrefbefore\relax}.\thmrefbehind} 
}

\swapnumbers 
\newtheorem{corollary}{Corollary}[section] 
\newtheorem{teo}[corollary]{Théorème} 
\newtheorem{lem}[corollary]{Lemme}

\makeatletter
\renewcommand\p@corollary{\arabic{chapter}.}
\makeatother

\begin{document}

\chapter{Test Chapter One}
\section{Test Section One One}
\section{Test Section One Two}
Corollary~\Thmref{cortesta} and Lemme~\Thmref{lemtestb}... On the other hand, Corollary~\Thmref{cortestb} and Lemme~\Thmref{lemtesta}...
\begin{corollary}
\label{cortesta}
test
\end{corollary}
\begin{lem}
\label{lemtesta}
test
\end{lem}

\chapter{Test Chapter Two}
\section{Test Section Two One}
\section{Test Section Two Two}
Corollary~\Thmref{cortesta} and Lemme~\Thmref{lemtestb}... On the other hand, Corollary~\Thmref{cortestb} and Lemme~\Thmref{lemtesta}...
\begin{corollary}
\label{cortestb}
test
\end{corollary}
\begin{lem}
\label{lemtestb}
test
\end{lem}

\end{document}

第一章的图片:

在此处输入图片描述

第二章的图片:

在此处输入图片描述

第二种方法没有与合作hyperref

相关内容