
Estou usando o fancyref e o babel juntos em um documento LaTeX e redefinindo o rótulo para as referências da equação por \renewcommand{\frefeqname}{Eq.}
, para que se pareçam com "Eq. (3.4)". No entanto, quando tenho uma seção de idioma estrangeiro em algum lugar como \begin{otherlanguage}{german} ... \end{otherlanguage}
esse, \frefeqname
o valor padrão para inglês é redefinido, ou seja equation
, . Claro, posso redefinir \frefeqname
depois novamente, mas é muito feio e eu preferiria uma solução limpa para este problema.
Responder1
O babel
pacote usa \caption<language>
para alterar os textos das legendas. Esta macro é chamada em \selectlanguage
ou ambiente otherlanguage
. Portanto as redefinições devem ser colocadas nestas macros de linguagem. Isso pode ser feito por babel
:\addto
\addto\captionsenglish{%
\renewcommand*{\frefeqname}{Eq.}%
}
fancyref
Ou pode ser utilizada a interface do pacote , que ele fornece \fancyrefaddcaptions
para esse fim, veja odocumentação 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}