Agregar número de página al comando de referencia cruzada

Agregar número de página al comando de referencia cruzada

en "hacer que las referencias externas destaquen"

El nuevo comando escrito a continuación me resultó muy útil. Aunque me gustaría agregar un número de página al archivo externo en el comando \myautoref y parece que no puedo encontrar ningún tema en los foros.

¿Alguien puede ayudar a agregar una referencia de número de página?

\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}

archivoext.tex

\documentclass{article}

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

ingrese la descripción de la imagen aquí

Respuesta1

Le sugiero que utilice la macro \pagerefdentro de su definición de \pending.

Por cierto, si desea utilizar \autorefelementos de referencia cruzada ubicados en archivos compilados externamente, debe cargar hyperreflos archivos externos. Por lo tanto, extfile.texdebería verse así:

\documentclass{article}
\usepackage{hyperref}  % <- new
\begin{document}
\section{A section} \label{sec:vis}
\end{document}

El archivo principal podría verse así:

\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}

ingrese la descripción de la imagen aquí

Respuesta2

Como ya se sugirió: \pagerefo en un contexto expandible: \getpagerefnumber(requiere refcount) paquete.

\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}

Para evitar autorefquejas, \usepackage{hyperref}se recomienda agregar al archivo externo:

\documentclass{article}
\usepackage{hyperref}
\usepackage{blindtext}
\begin{document}
\blindtext[5]
\section{A section} \label{sec:vis}
\end{document}

información relacionada