
Я использую 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}