fancyref、babel 和方程式引用的問題

fancyref、babel 和方程式引用的問題

我在 LaTeX 文件中一起使用 fancyref 和 babel ,並透過 重新定義方程式引用的標籤\renewcommand{\frefeqname}{Eq.},使它們看起來像「Eq. (3.4)」。但是,當我在某個地方有一個外語部分時,類似的\begin{otherlanguage}{german} ... \end{otherlanguage}位置\frefeqname會重置為英語的預設值,即equation.當然,我可以\frefeqname事後再次重新定義,但相當難看,我更喜歡一個乾淨的解決方案來解決這個問題。

答案1

babel包用於\caption<language>更改標題文字。此巨集稱為 in\selectlanguage或 環境otherlanguage。因此,重新定義應該放在這些語言巨集中。可以透過babel以下方式完成\addto

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

fancyref或者可以使用package的接口,它\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>

相關內容