![Fancyref 和不同语言的一个章节](https://linux22.com/image/417071/Fancyref%20%E5%92%8C%E4%B8%8D%E5%90%8C%E8%AF%AD%E8%A8%80%E7%9A%84%E4%B8%80%E4%B8%AA%E7%AB%A0%E8%8A%82.png)
我正在使用fancyref
Texmaker 和 PdfLaTeX 中的包,但语言设置出现了问题。
有一章是英文的,其余内容是德文的。
一旦我在我的babel
包中添加英语语言,创建的文本fancyref
就是英语。
但是,参数中的最后一种语言应该是主要语言。我的错误在哪里?
\documentclass[fontsize=11pt, paper=a4, DIV=10, BCOR=8mm, oneside]{scrreprt}
\usepackage{blindtext}
\usepackage[english,ngerman]{babel}
\usepackage[english,german]{fancyref}
\begin{document}
\chapter{Chapter 1}
\blindtext
Test of \fref{eq:reaction1} and of \fref{tab:table1}.
\begin{equation}
A
\label{eq:reaction1}
\end{equation}
\begin{table}
\centering
\caption{One}
\begin{tabular}{cc}
1 & 2 \\
3 & 4 \\
\end{tabular}
\label{tab:table1}
\end{table}
\chapter{Chapter 2}
\selectlanguage{english}
\begin{table}
\centering
\caption{Two}
\begin{tabular}{cc}
1 & 2 \\
3 & 4 \\
\end{tabular}
\label{tab:table2}
\end{table}
Test of reference with \fref{eq:reaction1} and \fref{tab:table2}.
\end{document}
答案1
这里的问题是,你选择了 Babel 选项ngerman
,并且fancyref
只支持german
和english
。它自上个世纪以来就没有更新过,所以它不知道新法律文书。
您可以使用较新的软件包,例如cleveref
,或者可能hyperref
与 一起varioref
。以下是重写后的同一篇文档cleveref
(使用 和 的搜索和替换\fref
)\cref
。
\documentclass[
fontsize=11pt,
paper=a4,
DIV=10,
BCOR=8mm,
oneside,
english,
ngerman]{scrreprt}
\usepackage{blindtext}
\usepackage{babel,cleveref}
\begin{document}
\chapter{Chapter 1}
\blindtext
Test of \cref{eq:reaction1} and of \cref{tab:table1}.
\begin{equation}
A
\label{eq:reaction1}
\end{equation}
\begin{table}
\centering
\caption{One}
\begin{tabular}{cc}
1 & 2 \\
3 & 4 \\
\end{tabular}
\label{tab:table1}
\end{table}
\selectlanguage{english}
\chapter{Chapter 2}
\begin{table}
\centering
\caption{Two}
\begin{tabular}{cc}
1 & 2 \\
3 & 4 \\
\end{tabular}
\label{tab:table2}
\end{table}
Test of reference with \cref{eq:reaction1} and \cref{tab:table2}.
\end{document}
如果你希望继续使用fancyref
,你可以改为ngerman
。german
另一个临时解决方法是将创建新的 Babel “字幕” 的代码从 复制german
到ngerman
。
\documentclass[fontsize=11pt, paper=a4, DIV=10, BCOR=8mm, oneside]{scrreprt}
\usepackage{blindtext}
\usepackage[english,ngerman]{babel}
\usepackage[english,german]{fancyref}
\fancyrefaddcaptions{ngerman}{%
\providecommand*{\chaptername}{Kapitel}%
\providecommand*{\figurename}{Abbildung}%
\providecommand*{\pagename}{Seite}%
\providecommand*{\tablename}{Tabelle}%
\renewcommand*{\Frefchapname}{\chaptername}%
\renewcommand*{\Frefenumname}{Punkt}%
\renewcommand*{\Frefeqname}{Gleichung}%
\renewcommand*{\Freffigname}{\figurename}%
\renewcommand*{\Freffigshortname}{Abb.}%
\renewcommand*{\Freffnname}{Fu\ss note}%
\renewcommand*{\Frefonname}{Auf}%
\renewcommand*{\Frefpgname}{\pagename}%
\renewcommand*{\Frefpgshortname}{S.}%
\renewcommand*{\Frefsecname}{Abschnitt}%
\renewcommand*{\Frefseename}{Siehe}%
\renewcommand*{\Freftabname}{\tablename}%
\renewcommand*{\Freftabshortname}{Tab.}%
\renewcommand*{\frefchapname}{\Frefchapname}%
\renewcommand*{\frefenumname}{\Frefenumname}%
\renewcommand*{\frefeqname}{\Frefeqname}%
\renewcommand*{\freffigname}{\Freffigname}%
\renewcommand*{\freffigshortname}{\Freffigshortname}%
\renewcommand*{\freffnname}{\Freffnname}%
\renewcommand*{\frefonname}{%
\MakeLowercase{\Frefonname}%
}%
\renewcommand*{\frefpgname}{\Frefpgname}%
\renewcommand*{\frefpgshortname}{\Frefpgshortname}%
\renewcommand*{\frefsecname}{\Frefsecname}%
\renewcommand*{\frefseename}{%
\MakeLowercase{\Frefseename}%
}%
\renewcommand*{\freftabname}{\Freftabname}%
\renewcommand*{\freftabshortname}{\Freftabshortname}%
}%
\begin{document}
\chapter{Chapter 1}
\blindtext
Test of \fref{eq:reaction1} and of \fref{tab:table1}.
\begin{equation}
A
\label{eq:reaction1}
\end{equation}
\begin{table}
\centering
\caption{One}
\begin{tabular}{cc}
1 & 2 \\
3 & 4 \\
\end{tabular}
\label{tab:table1}
\end{table}
\selectlanguage{english}
\chapter{Chapter 2}
\begin{table}
\centering
\caption{Two}
\begin{tabular}{cc}
1 & 2 \\
3 & 4 \\
\end{tabular}
\label{tab:table2}
\end{table}
Test of reference with \fref{eq:reaction1} and \fref{tab:table2}.
\end{document}
Monkey-patching 远非理想的解决方案,因为如果软件包确实得到更新,该代码仍然依赖于 20 世纪 90 年代的版本。