Problem mit FancyRef-, Babel- und Gleichungsreferenzen

Problem mit FancyRef-, Babel- und Gleichungsreferenzen

Ich verwende fancyref und babel zusammen in einem LaTeX-Dokument und definiere die Bezeichnung für die Gleichungsverweise mit neu \renewcommand{\frefeqname}{Eq.}, so dass sie etwa wie "Gleichung (3.4)" aussehen. Wenn ich jedoch irgendwo einen fremdsprachigen Abschnitt wie habe, wird \begin{otherlanguage}{german} ... \end{otherlanguage}dann \frefeqnameauf den Standardwert für Englisch zurückgesetzt, nämlich equation. Natürlich kann ich das \frefeqnamenachträglich noch einmal neu definieren, aber das ist ziemlich hässlich und ich hätte lieber eine saubere Lösung für dieses Problem.

Antwort1

Das babelPaket verwendet \caption<language>zum Ändern der Beschriftungstexte. Dieses Makro wird in \selectlanguageunserer Umgebung aufgerufen otherlanguage. Daher sollten die Neudefinitionen in diesen Sprachmakros vorgenommen werden. Dies kann mit babelden folgenden Befehlen erfolgen \addto:

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

fancyrefOder Sie nutzen die Schnittstelle des Pakets , die es \fancyrefaddcaptionsfür diesen Zweck bereitstellt, sieheDokumentation vonfancyref.

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

Sprachabhängig <code>\frefeqname</code>

verwandte Informationen