Problema con referencias a fancyref, babel y ecuaciones

Problema con referencias a fancyref, babel y ecuaciones

Estoy usando fancyref y babel juntos en un documento LaTeX y redefino la etiqueta para las referencias de ecuaciones mediante \renewcommand{\frefeqname}{Eq.}, para que se vean algo así como "Ec. (3.4)". Sin embargo, cuando tengo una sección de idioma extranjero en algún lugar como \begin{otherlanguage}{german} ... \end{otherlanguage}entonces \frefeqnamese restablece a su valor predeterminado para inglés, es decir equation. Por supuesto, puedo redefinirlo \frefeqnamemás tarde, pero es bastante feo y preferiría una solución limpia a este problema.

Respuesta1

El babelpaquete se utiliza \caption<language>para cambiar los textos de los títulos. Esta macro se llama en \selectlanguageo entorno otherlanguage. Por lo tanto, las redefiniciones deben colocarse en estas macros de lenguaje. Se puede hacer mediante babel's \addto:

\addto\captionsenglish{%
  \renewcommand*{\frefeqname}{Eq.}%
}

fancyrefO se puede utilizar la interfaz del paquete que proporciona \fancyrefaddcaptionspara este propósito; consulte ladocumentación defancyref.

\documentclass{article}
\usepackage[german,english]{babel,fancyref}

\fancyrefaddcaptions{english}{%
  \renewcommand*{\frefeqname}{Eq.}%
}
\fancyrefaddcaptions{german}{%
  \renewcommand*{\frefeqname}{Gl.}%
}

\begin{document}
  \noindent
  \fref{eq:einstein} and \fref{eq:velocity}.
  \begin{equation}
    E=mc^2 \label{eq:einstein}
  \end{equation}
\begin{otherlanguage}{german}
  \fref{eq:einstein} und \fref{eq:velocity}.
  \begin{equation}
    v=\frac st \label{eq:velocity}
  \end{equation}
\end{otherlanguage}
  \fref{eq:einstein} and \fref{eq:velocity}.
\end{document}

Dependiente del idioma <code>\frefeqname</code>

información relacionada