我一直想打印nomencl
多语言文档中使用的自动命名法。但没成功,下面是 MWE。
从其中删除所有希伯来语(从babel
定义和 中删除所有\begin{otherlanguage}...
)会生成一个命名法。这让我相信命名法无法打印的原因是 搞乱babel
了makeindex
。
\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}
makeindex
CTAN 上有一个希伯来语支持自述文件,但是该文件中提供的下载镜像均不起作用。
此外,我目前正在使用 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
宏具有某种意义,我无法检查这个补丁会引起什么其他问题。