我一直在尝试在我的 classicthesis 文档中添加索引,以及词汇表(因为它们不是一回事)我已经完成了一些常规工作:
% in the preamble
\PassOptionsToPackage{listings,parts,%
eulerchapternumbers=true,
dottedtoc=false,
tocaligned=false,
pdfspacing=true,
floatperchapter=false,
linedheaders=false,
subfig=true,
eulermath=true,
parts=true,
drafting=true,
}{classicthesis}
..
\usepackage{makeidx}
\makeindex
...
% in the text
Some term\index{defined}.
%before the end:
\printindex
然而,编译总是因以下类型的错误而停止:
[35] [36] [37] (./main-electronic.ind
! LaTeX Error: Float(s) lost.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.1 \begin{theindex}
? error: could not open document
H
You've lost some text. Try typing <return> to proceed.
If that doesn't work, type X <return> to quit.
?
Underfull \vbox (badness 10000) has occurred while \output is active
! Missing number, treated as zero.
<to be read again>
{
l.5 \end{theindex}
?
! Missing number, treated as zero.
<to be read again>
}
l.5 \end{theindex}
?
! Illegal unit of measure (pt inserted).
<to be read again>
}
l.5 \end{theindex}
?
! Missing number, treated as zero.
<to be read again>
{
l.5 \end{theindex}
?
! Missing number, treated as zero.
<to be read again>
}
l.5 \end{theindex}
?
! Illegal unit of measure (pt inserted).
<to be read again>
}
l.5 \end{theindex}
?
! Infinite glue shrinkage found in a paragraph.
<inserted text> \par
l.5 \end{theindex}
?
Overfull \hbox (242.98398pt too wide) has occurred while \output is active
[] []
该ind
文件看起来不错:
\begin{theindex}
\item defined, \hyperpage{14}
\end{theindex}
idx 文件也是如此:
\indexentry{defined|hyperpage}{14}
我找不到太多关于使用makeidx
with 的信息classicthesis
,也没有找到任何说它们不应该一起使用的信息。有一两篇帖子提到了classicthesis
重新定义\item
,但没有太多关于如何解决这个问题的信息。
有人能对此提供一些提示吗?无论是如何使其工作,还是如果它们不能一起工作,为什么不呢?任何有关创建索引(使用glossaries
或其他包)的其他信息也将不胜感激。
干杯。
答案1
我设法让它构建,即使我一开始还不明白是什么导致了错误。
我调查了一下——通读了整个错误等等。似乎归结于文件\begin{theindex}
中的位ind
。一个简单的测试证实了这一点。我简单地替换了\begin{theindex}
(\begin{itemize}
以及结束位),编译就顺利进行了。
因此我开始研究如何theindex
用其他东西替换。使用样式文件作为索引似乎是个好办法。类似以下内容(摘录man makeindex
并进行了调整):
preamble
"\\begin{itemize}
{\\small\n"
postamble
"\n\n}
\\end{itemize}\n"
然而,当我开始研究如何将其传递给命令时\makeindex
,我发现使用包无法做到这一点makeidx
。再多看一看,我找到了imakeidx
允许将选项传递给命令的包。\makeindex
命令变成这样:\makeindex[options=-s simplesyle.ist]
。
运行良好,编译成功。出于好奇,我删除了 中的选项,令我大吃一惊的是,编译仍然有效——使用?!\makeindex
根本不需要样式文件!imakeidx
因此,这里的解决方案是使用imakeidx
而不是makeidx
。我还不知道为什么会这样,所以如果有人能在这里阐明这个问题,我相信我们都会非常感激。