Adicionando número de página ao comando de referência cruzada

Adicionando número de página ao comando de referência cruzada

em "fazendo referências externas se destacarem"

Achei o novo comando escrito abaixo muito útil. Embora eu gostaria de adicionar um número de página ao arquivo externo no comando \myautoref e não consigo encontrar nenhum tópico nos fóruns.

Alguém pode ajudar a adicionar uma referência 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}

arquivoext.tex

\documentclass{article}

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

insira a descrição da imagem aqui

Responder1

Eu sugiro que você use a macro \pagerefdentro da sua definição de \pending.

Aliás, se você quiser fazer \autorefreferência cruzada de itens localizados em arquivos compilados externamente, você deve carregar hyperrefos arquivos externos. Assim, extfile.texdeve ficar assim:

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

O arquivo principal poderia então ficar assim:

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

insira a descrição da imagem aqui

Responder2

Como já sugerido: \pagerefou em um contexto expansível: \getpagerefnumber(requer refcount) pacote.

\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 autorefreclamações, \usepackage{hyperref}recomenda-se adicionar ao arquivo externo:

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

informação relacionada