Problema com referências de fantasia, babel e equações

Problema com referências de fantasia, babel e equações

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, \frefeqnameo valor padrão para inglês é redefinido, ou seja equation, . Claro, posso redefinir \frefeqnamedepois novamente, mas é muito feio e eu preferiria uma solução limpa para este problema.

Responder1

O babelpacote usa \caption<language>para alterar os textos das legendas. Esta macro é chamada em \selectlanguageou 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.}%
}

fancyrefOu pode ser utilizada a interface do pacote , que ele fornece \fancyrefaddcaptionspara 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}

Dependente do idioma <code>\frefeqname</code>

informação relacionada