命名法无法打印,可能是因为 hebrew babel 破坏了 makeindex

命名法无法打印,可能是因为 hebrew babel 破坏了 makeindex

我一直想打印nomencl多语言文档中使用的自动命名法。但没成功,下面是 MWE。

从其中删除所有希伯来语(从babel定义和 中删除所有\begin{otherlanguage}...)会生成一个命名法。这让我相信命名法无法打印的原因是 搞乱babelmakeindex

\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage[hebrew,english]{babel}
\usepackage{nomencl}
\makenomenclature

\begin{document}
blah blah blah 
\begin{otherlanguage}{hebrew}
נסיון
\end{otherlanguage}
\nomenclature{ab}{a aand b}
\printnomenclature
\end{document}

makeindexCTAN 上有一个希伯来语支持自述文件,但是该文件中提供的下载镜像均不起作用。

此外,我目前正在使用 Overleaf,并且不想安装额外的支持,因为这需要在多台计算机上安装额外的编辑器……

我的问题是:问题真的出在 吗makeindex?不管是不是,我该如何解决这个问题?

更新:

glossaries软件包没有 makeindex 选项(CTAN 文档中的选项 1)。这可以自动生成首字母缩略词和符号列表。这只能部分解决我的问题,因为我的大部分工作都是使用/nomenclature正文中的定义编写的,恢复到正文glossaries需要将所有这些定义移到序言中。仍在等待更好的解决方案。

更新 2.0:

以下是 makeindex 运行的日志:

This is makeindex, version 2.15 [MiKTeX 2.9] (kpathsea + Thai support).
Scanning style file C:/Program Files (x86)/MiKTeX 2.9/makeindex/nomencl/nomencl.ist.......
** Input style error (file = C:/Program Files (x86)/MiKTeX 2.9/makeindex/nomencl/nomencl.ist, line = 70):
   -- Unknown specifier lethead_prefix.
** Input style error (file = C:/Program Files (x86)/MiKTeX 2.9/makeindex/nomencl/nomencl.ist, line = 71):
   -- Unknown specifier lethead_suffix.
** Input style error (file = C:/Program Files (x86)/MiKTeX 2.9/makeindex/nomencl/nomencl.ist, line = 72):
   -- Unknown specifier lethead_flag.
...done (10 attributes redefined, 3 ignored).
Scanning input file filename.nlo...
!! Input index error (file = filename.nlo, line = 1):
   -- Illegal space within numerals in second argument.
done (0 entries accepted, 1 rejected).
Nothing written in filename.nls.
Transcript written in filename.ilg.

filename.nlo 的内容

\nomenclatureentry{aab@[{ab}]\begingroup a aand b\nomeqref {\@@number {\@@number {0}}}|nompageref}{\@@number {1}}

答案1

我找到了解决方案,遵循@Nicola Talbots 的评论,并遵循这个问题使用 Babel 和 Algorithm2e,我得出了以下解决方案:

\documentclass{article}
\usepackage[utf8x]{inputenc}
\usepackage[hebrew,english]{babel}
\usepackage{nomencl}
\makenomenclature

\makeatletter
\def\@number#1{\number#1}
\makeatother

\begin{document}
blah blah blah

\begin{otherlanguage}{hebrew}
נסיון
\end{otherlanguage}
\nomenclature{ab}{a aand b}
\nomenclature{ba}{b aand a}
\printnomenclature
\end{document} 

的定义\@number从 .nlo 文件中删除了 \@@number。现在,当运行 pdflatex->makeindex->​​pdflatex 时,命名法就可以正常工作了。

这使得我的 MWE 完美运行,但是我很确定这个@number宏具有某种意义,我无法检查这个补丁会引起什么其他问题。

相关内容