相互参照コマンドにページ番号を追加する

相互参照コマンドにページ番号を追加する

で "外部参照を目立たせる

以下に記述した新しいコマンドは非常に役立ちました。\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}

extファイル.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}

関連情報