fancyref、babel 和 equation 引用存在问题

fancyref、babel 和 equation 引用存在问题

我在 LaTeX 文档中同时使用 fancyref 和 babel,并通过 重新定义方程引用的标签\renewcommand{\frefeqname}{Eq.},使其看起来像“Eq. (3.4)”。但是,当我在某个地方有外语部分时,\begin{otherlanguage}{german} ... \end{otherlanguage}就会\frefeqname重置为英语的默认值,即equation。当然,我可以\frefeqname事后再次重新定义,但这很丑陋,我更希望有一个干净的解决方案来解决这个问题。

答案1

babel使用\caption<language>来更改标题文本。此宏在\selectlanguage或 环境中调用otherlanguage。因此,重新定义应放在这些语言宏中。可以通过 来babel完成\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>

相关内容