我尝试为自己编写的文档创建索引,但查看输出时.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
包不会自行生成索引;它只是将未排序的条目写入单独的文件。您需要使用外部处理器(例如makeindex
或xindy
)对索引进行排序,并以适合包含在文档中的方式对其进行格式化。
因此你的编译过程可能看起来像这样:
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 Prompt
或cmd
。您可以手动搜索这些内容,也可以将它们输入到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
在编译时运行命令,它将自动执行所有这些操作。