
我在 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}