
在 ”使外部參考脫穎而出」
我發現下面寫的新指令非常有幫助。雖然我想在 \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
(requires 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}