varioref: altera a string padrão "na página oposta"

varioref: altera a string padrão "na página oposta"

Eu gostaria de poder mudar as variorefcordas. Em particular, on the facing pageaquele.

Não deveria ser um problema. A documentação indica claramente várias macros usadas, e eu acho que seria capaz de alterá-las usando:

\renewcommand\reftextfaceafter{on the following page}
\renewcommand\reftextafter {on the next page}
\renewcommand\reftextfacebefore{on the previous page}
\renewcommand\reftextbefore {on the previous page}

Isso funciona bem, a menos que eu use babeljunto com varioref.

MWE segue:

\documentclass{book}

\usepackage[english]{babel}  % works if this line is commented out

\usepackage{varioref}

\renewcommand\reftextfaceafter{on the following page}
\renewcommand\reftextafter {on the next page}
\renewcommand\reftextfacebefore{on the previous page}
\renewcommand\reftextbefore {on the previous page}

\begin{document}

empty page
\clearpage

\begin{figure}
\centering
\rule{5cm}{3cm}
\caption{Caption}
\label{fig}
\end{figure}

\clearpage

Figure \vref{fig}

\end{document}

Responder1

Se você colocar o \renewcommands depois \begin{document}, funciona bem. Se você colocá-los no preâmbulo, eles serão substituídos quando as coisas forem configuradas no final do preâmbulo/início do documento.

No entanto, não acho que colocá-los depois \begin{document}seja a solução correta. Olhando o manual paravariref, encontramos instruções modificadas para documentos que usambabel. Eles sugerem o seguinte código:

\documentclass[english]{book}
\usepackage{babel}  % works if this line is commented out
\usepackage{varioref}
\addto\extrasenglish{% page 5 of varioref's manual
  \renewcommand\reftextfaceafter{on the following page}%
  \renewcommand\reftextafter {on the next page}%
  \renewcommand\reftextfacebefore{on the previous page}%
  \renewcommand\reftextbefore {on the previous page}%
}
\begin{document}
empty page
\clearpage
\begin{figure}
\centering
\rule{5cm}{3cm}
\caption{Caption}
\label{fig}
\end{figure}
\clearpage
Figure \vref{fig}
\end{document}

renovado

Observe que, ao passar englishpara a classe document, em vez de diretamente para babel, outros pacotes que reconhecem o idioma poderão escolher a configuração.

Responder2

babelfaz algumas redefinições logo no \AtBeginDocument, então o \renewcommanddas \ref....macros deve ser enganchado ainda mais tarde, ou seja, use \AtBeginDocument{...}em torno do \renewcommande as alterações entram em ação, já que essa nova \AtBeginDocumentadição de conteúdo é executada após as anteriores. (Caso contrário, use a abordagem - conforme sugerido pela solução do cfr - isso também \addtoé mencionado no manual do pacote)varioref

\documentclass{book}

\usepackage[english]{babel}  % works if this line is commented out

\usepackage{varioref}


\AtBeginDocument{%
\renewcommand\reftextfaceafter{on the following page}
\renewcommand\reftextafter{on the next page}
\renewcommand\reftextfacebefore{on the previous page}
\renewcommand\reftextbefore{on the previous page}
}
\begin{document}

empty page
\clearpage

\begin{figure}
\centering
\rule{5cm}{3cm}
\caption{Caption}
\label{fig}
\end{figure}

\clearpage

Figure \vref{fig}

\end{document}

insira a descrição da imagem aqui

informação relacionada