在不同章节中重复使用相同的图表和公式标签

在不同章节中重复使用相同的图表和公式标签

对于我的论文,我使用回忆录类和\include命令来包含所有章节。不幸的是,我在某些章节中使用了相同的图表标签。因此,标签完全不对。

我找到了解决我的问题的方法:

在不同章节中重复使用相同的标签

按照 Werner 的最初建议和他的最后命令(2016 年 5 月 30 日 14:19),我设法修复了图表和表格标签。但现在公式标签已关闭(即,equation每当我引用公式时都会显示 ??)。

这是我的代码的一部分:

\documentclass[11pt,twoside,openright]{memoir}

\AtBeginDocument{% ...if you're using hyperref
  \let\oldlabel\label% Copy original version of \label
  \let\oldref\ref% Copy original version of \ref
}

\newcommand{\addlabelprefix}[1]{%
  \renewcommand{\label}[1]{\oldlabel{#1-##1}}% Update \label
  \renewcommand{\ref}[1]{\oldref{#1-##1}}% Update \ref
}
\newcommand{\removelabelprefix}{%
  \renewcommand{\label}{\oldlabel}% Restore \label
  \renewcommand{\ref}{\oldref}% Restore \ref
}

\addlabelprefix{a}
\include{chapter1} 

欢迎提供任何有关如何解决此问题的建议!

答案1

我使用了沃纳的回答同上,但采用不同的方法:

  • 每次开始一个 \chapter 时,辅助计数器就会增加,并且\@currentprefix定义为chapter::\number\value{auxchapter}
  • 这在和的\@currentprefix更新版本中用作(隐藏在 中)。\label\ref\@currentprefix::#1\generatemultilabel

那么,输入和来自的引用\include{foochapter}也将起作用。

此外,我还定义了一个宏,以便使用相关章节编号和常用标签进行跨章节引用。

当前方法对book和 均有效memoir

如果使用,则会失败cleveref,因为\label在中引入了可选参数cleveref


\documentclass[11pt,twoside,openright]{memoir}
\usepackage{xpatch}
\usepackage{hyperref}

\begin{filecontents}{externalchapter.tex}
\chapter{Yet another nice chapter}\label{foochapter}
See chapter~\ref{foochapter}.

\begin{figure}
\caption{Foo figure}\label{foofigure}
\end{figure}

\begin{table}
\caption{Foo table}\label{footable}
\end{table}

\begin{equation}
  E=mc^{2} \label{einstein}
\end{equation}

See \ref{einstein} or \ref{footable} or \ref{foofigure}
\end{filecontents}

\newcounter{auxchapter}


\makeatletter
\newcommand{\generatemultilabel}[1]{%
  \@currentprefix::#1%
}

\AtBeginDocument{%
  \let\latex@@label\label
  \let\latex@@ref\ref

  \renewcommand{\label}[1]{%
    \latex@@label{\generatemultilabel{#1}}%
  }
  \renewcommand{\ref}[1]{%
    \latex@@ref{\generatemultilabel{#1}}%
  }

  \xpretocmd{\chapter}{%
    \stepcounter{auxchapter}%
    \edef\@currentprefix{chapter::\number\value{auxchapter}}
  }{\typeout{Success}}{\typeout{Failure}}

  \newcommand{\crosschapterref}[2]{%
    \begingroup
    \edef\@currentprefix{chapter::#1}%
    \ref{#2}%
    \endgroup
  }
}
\makeatother





\begin{document}

% Hypothetical first paper

\chapter{A chapter}\label{foochapter}
See chapter~\ref{foochapter}.

\begin{figure}
\caption{Foo figure}\label{foofigure}
\end{figure}

\begin{table}
\caption{Foo table}\label{footable}
\end{table}

\begin{equation}
  E=mc^{2} \label{einstein}
\end{equation}

See \ref{einstein} or \ref{footable} or \ref{foofigure}

% Hypothetical second paper

\chapter{Another chapter}\label{foochapter}
See chapter~\ref{foochapter}.

\begin{figure}
\caption{Foo figure}\label{foofigure}
\end{figure}

\begin{table}
\caption{Foo table}\label{footable}
\end{table}

\begin{equation}
  E=mc^{2} \label{einstein}
\end{equation}

See \ref{einstein} or \ref{footable} or \ref{foofigure}

\include{externalchapter}

But in \crosschapterref{1}{einstein} we saw

\end{document}‎

enter image description here

相关内容