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>에서 호출됩니다 . 따라서 재정의는 이러한 언어 매크로에 배치되어야 합니다. 이는 다음을 통해 수행할 수 있습니다 .\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>

관련 정보