使外部参考脱颖而出

使外部参考脱颖而出

我正在将一些文本拆分成几个文件,因此有外部引用。我想以某种方式强调这些引用,以便打印,例如:“定理 7(来自 OtherPaper)”。由于有很多这样的引用,并且拆分不稳定,我希望有一种自动方法来实现这一点。到目前为止,我拥有的是:

\documentclass{article} 
\usepackage{xcolor}
\usepackage{xr-hyper}
\usepackage[hypertex]{hyperref} 
\begin{document}
\def\ifUnDefinedCs#1{\expandafter\ifx\csname#1\endcsname\relax}  %Victor Eijkhout, "TeX by Topic", p.143
\newcommand{\myautoref}[1]{\ifUnDefinedCs{r@#1} {\pending{#1}}\else\autoref{#1}\fi}
\newcommand{\pending}[1]{\color{red}\autoref{#1} from "file.tex"}
% \externaldocument{file}[../file]  %(A)
Using \myautoref{sec:vis} and \myautoref{sec:vis},...
% \externaldocument{file}[../file]  %(B)
\end{document}

一旦\externaldocument{file}[../file]发布,所有标签file.aux都会立即添加,如果我没记错的话。因此,如果使用行 (A),则其上的引用在打印时与任何本地引用“看起来没有任何不同”。如果使用行 (B),则标签添加得太晚了,重复编译不会改变任何东西。
我的问题是:是否有可能强制执行“第二遍”,即激活无关的标签他们的参考文献已经标记了吗?

答案1

我不确定这是 OP 的要求:该xr包允许为外部文档指定标签前缀,比如说A-

有必要(以我的观点来看)首先检查该\r@A-#2命令是否存在,如果不存在,\autoref{...}则该引用被视为本地引用并被使用。

顺便说一句:\ifUnDefinedCs这不是必需的,因为 LaTeX 核心\@ifundefined{}{}{}已经提供了。

\documentclass{article} 
\usepackage{xcolor}
\usepackage{xr-hyper}

\usepackage{hyperref} 

\externaldocument[A-]{extfile}  %(A)
\makeatletter

\newcommand{\myautoref}[2][A-]{%
  \@ifundefined{r@#1#2}{% Nope A-#2 isn't there
    \@ifundefined{r@#2}{%
    }{%
      \autoref{#2}%
    }%
  }{%
    {\pending{#1#2}}%
  }%
}
\newcommand{\pending}[1]{\color{red}\autoref{#1} from "file.tex"}

\makeatother


\begin{document}
Using \myautoref{sec:vis} and \myautoref{sec:vis}, but \myautoref{localsection}

\section{Local section}\label{localsection}
\end{document}

扩展文件.tex

\documentclass{article}

\begin{document}
\section{A section} \label{sec:vis}
\end{document}

在此处输入图片描述

相关内容