我正在尝试在文档上运行 texindy。我需要它,因为我用法语写作,而 makeindex 无法理解如何对带有变音符号的单词进行排序。
不幸的是,经过多次尝试,我还是没能让它运行。这是一个 MWE:
\documentclass{scrbook}
\usepackage[texindy]{imakeidx}
\makeindex
\begin{document}
Toto\index{tata}
\printindex
\end{document}
我收到消息:
进程:texindy“mwe-xindy”.idx
错误:EVAL:变量 BINARY 没有值
进程因一个或多个错误而终止(= 因一个或多个错误而结束)
我在 Ubuntu 20.04 下使用 TexStudio 2.12.22。我已检查设置,如您在此处所见:
我已经尝试过的一些方法:
texindy %.idx
用其他各种东西代替- 用各种其他选项替换
\usepackage[texindy]{imakeidx}
(xindy、truexindy、program=xindy、nothing 等等)
其他一些信息:
- 创建一个 .idx 文件,其中包含:
\indexentry{tata}{1}
,但不包含其他文件(.ind、.ilg、.xdy……) - 在日志文件的末尾,我读到了这一点,这让我认为 xindy 和 makeindex 之间存在混淆:
。
runsystem(makeindex mwe-xindy.idx)...executed safely (allowed).
(./mwe-xindy.ind) [2
我已经检查过 Synaptic(它是用于管理 ubuntu 上已安装程序的软件),并且xindy
似乎xindy-rules
定期安装。
如果您有关于问题根源的一些信息,我们将提前致谢。
答案1
texindy
Ubuntu 软件包提供的and/ortexindy
本身似乎存在问题xindy
。该文件/[relevant path]/xindy/tex/inputenc/latin.xdy
包含以下内容:
;; Generated from latin?.xdy
Binary file (standard input) matches
grep
这显然是由于运行包含二进制数据而不是文本而导致的错误stdin
。当 Clisp 尝试加载此文件时,它会导致错误,variable BINARY has no value
因为它认为此行文本是 Lisp 代码,因此Binary
必须是变量。
作为一种解决方法,您可以texindy
加载不同的文件,例如utf8.xdy
。这也具有处理utf-8的明显优势。
您可以通过在终端或 TeXstudio 中运行来手动执行此操作。不过,提供此选项并使用 运行 LaTeXtexindy -C utf8 yourfile.idx
更简单。在这种情况下,使用适当的选项为您运行。\makeindex
shell-escape
imakeidx
texindy
梅威瑟:
\documentclass{scrbook}
\usepackage[texindy]{imakeidx}
\makeindex[options=-C utf8]
\begin{document}
Toto\index{tata}
\printindex
\end{document}
看https://tex.stackexchange.com/a/598924/关于如何在 TeXstudio 中启用 shell 转义。在这种情况下,您不应该为索引按下单独的按钮,只需编译文件本身并imakeidx
创建索引。