在 ”使外部参考脱颖而出“
我发现下面写的新命令非常有用。虽然我想在 \myautoref 命令中向外部文件添加页码,但似乎在论坛中找不到任何主题。
有人可以帮忙添加页码参考吗?
\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}
答案1
\pageref
我建议您在定义中使用宏\pending
。
顺便说一句,如果你想使用\autoref
交叉引用位于外部编译文件中的项目,你应该加载hyperref
外部文件。因此,extfile.tex
应该看起来像这样:
\documentclass{article}
\usepackage{hyperref} % <- new
\begin{document}
\section{A section} \label{sec:vis}
\end{document}
主文件可能如下所示:
\documentclass{article}
\usepackage{xr-hyper}
\externaldocument[A-]{extfile}
\usepackage{xcolor}
\usepackage[colorlinks,allcolors=red]{hyperref}
\makeatletter
\newcommand{\myautoref}[2][A-]{%
\@ifundefined{r@#1#2}{% Nope A-#2 isn't there
\@ifundefined{r@#2}{}{\autoref{#2}}%
}{{\pending{#1#2}}}}
\makeatother
\newcommand{\pending}[1]{\color{red}\autoref{#1} on page~\pageref{#1} of ``file.tex''}
\begin{document}
Using \myautoref{sec:vis}, but \autoref{localsection}.
\section{Local section} \label{localsection}
\end{document}
答案2
正如已经建议的那样:\pageref
或者在可扩展的上下文中:(\getpagerefnumber
需要refcount
)包。
\documentclass{article}
\usepackage{refcount}
\usepackage{xcolor}
\usepackage{xr-hyper}
\externaldocument[A-]{extfile} %(A)
\usepackage{hyperref}
\makeatletter
\newcommand{\myautoref}[2][A-]{%
\@ifundefined{r@#1#2}{% Nope A-#2 isn't there
\@ifundefined{r@#2}{%
}{%
\autoref{#2} on page \pageref{#2}%
}%
}{%
{\pending{#1#2}}%
}%
}
\newcommand{\pending}[1]{\color{red}\autoref{#1} from "file.tex" on page \getpagerefnumber{#1}}
\makeatother
\begin{document}
Using \myautoref{sec:vis} and \myautoref{sec:vis}, but \myautoref{localsection}
\section{Local section}\label{localsection}
\end{document}
为了防止autoref
抱怨,\usepackage{hyperref}
建议添加外部文件:
\documentclass{article}
\usepackage{hyperref}
\usepackage{blindtext}
\begin{document}
\blindtext[5]
\section{A section} \label{sec:vis}
\end{document}