fancyref、babel、方程式参照に関する問題

fancyref、babel、方程式参照に関する問題

私は LaTeX 文書で fancyref と babel を一緒に使用し、方程式参照のラベルを で再定義して\renewcommand{\frefeqname}{Eq.}、「式 (3.4)」のような表示にしています。しかし、 のような外国語セクションがある場合、 は\begin{otherlanguage}{german} ... \end{otherlanguage}英語\frefeqnameのデフォルト値、つまり にリセットされますequation。もちろん、\frefeqname後で を再定義することもできますが、非常に見苦しいので、この問題の明確な解決策が望ましいです。

答え1

パッケージは、キャプション テキストを変更するためにbabelを使用します。このマクロは、または環境で呼び出されます。したがって、再定義はこれらの言語マクロに配置する必要があります。によって実行できます。\caption<language>\selectlanguageotherlanguagebabel\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>

関連情報