
私は LaTeX 文書で fancyref と babel を一緒に使用し、方程式参照のラベルを で再定義して\renewcommand{\frefeqname}{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}