为 classicthesis 添加索引

为 classicthesis 添加索引

我一直在尝试在我的 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}

我找不到太多关于使用makeidxwith 的信息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。我还不知道为什么会这样,所以如果有人能在这里阐明这个问题,我相信我们都会非常感激。

相关内容