Проблема со ссылками fancyref, babel и equals

Проблема со ссылками fancyref, babel и equals

Я использую fancyref и babel вместе в документе LaTeX и переопределяю метку для ссылок на уравнения с помощью \renewcommand{\frefeqname}{Eq.}, так что они выглядят примерно так: "Eq. (3.4)". Однако, когда у меня есть раздел на иностранном языке где-то вроде , \begin{otherlanguage}{german} ... \end{otherlanguage}тогда \frefeqnameсбрасывается до значения по умолчанию для английского языка, а именно equation. Конечно, я могу переопределить \frefeqnameего потом снова, но это довольно уродливо, и я бы предпочел чистое решение этой проблемы.

решение1

Пакет babelиспользует \caption<language>для изменения текстов заголовков. Этот макрос вызывается в \selectlanguageили среде otherlanguage. Поэтому переопределения должны быть помещены в эти языковые макросы. Это можно сделать с помощью babel's \addto:

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

fancyrefИли можно использовать интерфейс пакета , он обеспечивает\fancyrefaddcaptions , он для этого предусмотрен, см.документацияfancyref.

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

Зависит от языка <code>\frefeqname</code>

Связанный контент