
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 \frefeqname
se restablece a su valor predeterminado para inglés, es decir equation
. Por supuesto, puedo redefinirlo \frefeqname
más tarde, pero es bastante feo y preferiría una solución limpia a este problema.
Respuesta1
El babel
paquete se utiliza \caption<language>
para cambiar los textos de los títulos. Esta macro se llama en \selectlanguage
o 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.}%
}
fancyref
O se puede utilizar la interfaz del paquete que proporciona \fancyrefaddcaptions
para 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}