当使用 babel 加载匈牙利语和希腊语(带有provide+=*
)时,我遇到了标题中的表格编号和标签的位置被还原的情况,即不再是“表 1”,而是“1. 表”。使用 的图形也会发生同样的情况\includegraphics
。
它只发生在这种特定的语言组合中。如果我省略匈牙利语,那就没问题,如果我省略provide+=*
希腊语选项,那就没问题。但是,对于我的更大设置,我依赖于provide+=*
希腊语选项。(我的文档中总共有 16 种语言,它们都运行良好。正是这个小问题阻止了我最终实现 babel。)
我花了一段时间才将问题缩小到这个组合,但最终我设法想出了一个可以重现该问题的 MWE。该问题在使用 xelatex 和 lualatex 进行编译时发生。
\documentclass{article}
\usepackage[hungarian,greek,provide+=*,english]{babel}
\begin{document}
\begin{table}
\caption{\label{tab:table1}Example Table}
\begin{tabular}{ c c c }
cell1 & cell2 & cell3 \\
cell4 & cell5 & cell6 \\
cell7 & cell8 & cell9
\end{tabular}
\end{table}
\end{document}
我是否遗漏了其中一种语言的选项?如何将编号恢复到正确位置?
答案1
我无法确认希腊语是否相关。只要加载匈牙利语,标题就会改变,因为匈牙利语提供了模板。
我认为您目前有两个选项可以重置标题:
- 使用 caption 包(babel 之后):
\documentclass{article}
\usepackage[
hungarian,
provide+=*,
english
]{babel}
\usepackage{caption}
\captionsetup{labelformat=simple} %original doesn't work
\begin{document}
\begin{table}[t]
\caption{Example Table}
\begin{tabular}{ c c c }
cell1 & cell2 & cell3 \\
cell4 & cell5 & cell6 \\
cell7 & cell8 & cell9
\end{tabular}
\end{table}
\selectlanguage{hungarian}
\begin{table}[t]
\caption{Example Table}
\begin{tabular}{ c c c }
cell1 & cell2 & cell3 \\
cell4 & cell5 & cell6 \\
cell7 & cell8 & cell9
\end{tabular}
\end{table}
xxx
\end{document}
或者通过重置模板(对于图形也必须这样做):
\documentclass{article}
\usepackage[
hungarian,
provide+=*,
english
]{babel}
\setlocalecaption{hungarian}{table.template}{[[table]]\nobreakspace[table]}
...