varioref: cambia la cadena predeterminada "en la página siguiente"

varioref: cambia la cadena predeterminada "en la página siguiente"

Me gustaría poder cambiar las variorefcuerdas. En particular, el on the facing page.

No deberia ser un problema. La documentación indica claramente varias macros utilizadas y creo que podría cambiarlas 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}

Esto funciona bien, a menos que lo use babeljunto con varioref.

MWE sigue:

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

Respuesta1

Si pones la \renewcommands después \begin{document}, funciona bien. Si los coloca en el preámbulo, se sobrescriben cuando se configuran elementos al final del preámbulo/principio del documento.

Sin embargo, no creo que ponerlos después \begin{document}sea la solución correcta. Consulte el manual para vervariador, encontramos instrucciones modificadas para documentos que utilizanBabel. Estos sugieren el siguiente 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

Tenga en cuenta que al pasar englisha la clase de documento, en lugar de directamente a babel, otros paquetes que reconocen el idioma podrán retomar la configuración.

Respuesta2

babelhace algunas redefiniciones directamente en \AtBeginDocument, por lo que las \renewcommandmacros \ref....deben engancharse incluso más adelante, es decir, usarse \AtBeginDocument{...}alrededor de \renewcommandy los cambios entran en acción, ya que esta nueva \AtBeginDocumentadición de contenido se ejecuta después de las anteriores. (De lo contrario, utilice el \addtoenfoque - como lo sugiere la solución de CFR; esto varioreftambién se menciona en el manual del paquete)

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

ingrese la descripción de la imagen aquí

información relacionada