\printindex 问题。未创建索引

\printindex 问题。未创建索引

我尝试为自己编写的文档创建索引,但查看输出时.pdf没有索引。也没有显示任何错误消息。我设法在日志文件中找到以下内容:
No file "Actual Document".ind. ("Actual Document.aux") )
事实上,当我检查应该包含这些文件的文件夹时,我只找到了一个Actual Document.idx包含所有索引的文件,但没有.ind文件。将扩展名更改.idx为会.ind产生错误。
以下是我写的内容:

\documentclass[12pt]{book}
\usepackage{makeidx}
\makeindex
\begin{document}
continuous \index{continuous}
\clearpage
\printindex
\end{document}

我做错了什么以及这些文件发生了什么?

答案1

makeidx包不会自行生成索引;它只是将未排序的条目写入单独的文件。您需要使用外部处理器(例如makeindexxindy)对索引进行排序,并以适合包含在文档中的方式对其进行格式化。

因此你的编译过程可能看起来像这样:

pdflatex jobname.tex

这将生成一个jobname.pdf文件并将索引条目写入其中jobname.idx

makeindex jobname.idx

这会对索引条目和输出进行排序和格式化jobname.ind

pdflatex jobname.tex

这将生成一个pdf文件,并包含jobname.ind您发布的文档中的任何内容\printindex

通常,最好将这些命令放入脚本中,这样您就不会忘记运行它们。

请记住,每次编译文档时,它都是两个都jobname.ind包括你发布的任何内容\printindex 将所有索引条目写入jobname.idx。一旦有了ind文件,您就不需要重新运行,makeindex除非您的页码已更改或您已更改索引中的条目。

答案2

虽然问题已经得到解答,但对于 Windows 用户仍然需要做出一些澄清。

makeindex在 Windows 中运行,您必须转到终端,即 Windows 所称的Command Promptcmd。您可以手动搜索这些内容,也可以将它们输入到run中出现的程序中Start。打开终端后,您可以使用Unix命令去做任何事情。makeindex是一个Unix命令也是如此,并且只能在该终端中起作用。

答案3

我遇到了跑步的问题

makeindex "filename with spaces.idx"

我写了一个批处理文件索引文件为了避免在文件名或路径名中出现这些空格:

e:
cd "my path to my document"
makeindex main.idx
set /p DUMMY=Hit ENTER to continue...

批处理文件运行后等待键盘敲击。不要调用批处理文件制作索引文件因为这样就会发生无限循环!

答案4

在 Windows 上,假设您已经makeindex安装并在您的 PATH 上,应遵循的步骤是:

像往常一样编译您的.tex文档。

打开 Windows 命令提示符,可以通过搜索 来完成cmd。在命令提示符中执行(输入并按回车键)

cd C:\Users\<username>\<path to file>

其中,将<username>和替换<path to file>为用户名和包含.tex文件的文件夹的完整路径。如果其中包含空格,请将整个路径括在引号中,例如

cd "C:\Users\<username>\<path to file with spaces>"

然后,假设你的.tex被调用main.tex,执行

makeindex main

再次编译.tex,索引现在应该完整了。

许多 (La)TeX 编辑器还允许您指定命令,例如makeindex在编译时运行命令,它将自动执行所有这些操作。

相关内容