以下 MWE 工作正常:
\documentclass{book}
\usepackage{makeidx}
% \usepackage[greek,english]{babel}
\makeindex
\begin{document}
\frontmatter
foo\index{foo}
\mainmatter
\printindex
\end{document}
但如果我取消注释,\usepackage[greek,english]{babel}
我会得到一个错误(即使 MWE 不包含任何希腊文本)。我的.idx
文件已经从
\indexentry{foo}{i}
到
\indexentry{foo}{{\fontencoding {OT1}\selectfont i}}
并且.ilg
文件说
!! Input index error (file = test.idx, line = 1):
-- Illegal space within numerals in second argument.
我怎样才能摆脱不需要的字体编码?
该文档是使用latexmk
TexLive 2016(使用默认选项)编译的。
答案1
Christian Hupfer 的评论给出是否存在针对 babel 和索引罗马数字页码的当前解决方法?作为答案,但由于我从来不想在希腊文本中使用罗马数字,所以只需恢复 LaTeX 定义即可\@roman
“babel
增强”它也可以起作用:
\documentclass{book}
\usepackage{makeidx}
\makeatletter
\let\save@roman\@roman
\usepackage[greek,english]{babel}
\let\@roman\save@roman
\makeatother
\makeindex
\begin{document}
\frontmatter
foo\index{foo}
\mainmatter
\printindex
\end{document}
\@Roman
当然,同样的想法也适用于。