朋友们,我遇到了以下问题:我有一个包含多个索引的文档。该splitidx
软件包可以毫无问题地处理它们。碰巧我有一些非常长的索引条目,所以我决定让它们看起来更美观:
步调一致提供了一个惊人的解决方案效果非常好。此解决方案在我的其他文档中有效。不幸的是,当我尝试在“生产文档”中使用它时,它不起作用。埃格尔建议我将文档精简为一个最小示例,因此这里就是。谢天谢地,它仍然不起作用:
% since the first example was full of "package noise",
% I left only the needed ones.
\documentclass[12pt,oneside]{book}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{savesym}
\usepackage[useindex]{splitidx}
\savesymbol{newindex}
\makeindex
\orignewindex[My custom index]{stl}
\AtWriteToIndex{stl}{\let\thepage\thesongnum}
\usepackage{idxlayout}
\usepackage[lyric]{songs}
\newindex{reltitleidx}{cbreltitle}
\begin{document}
\showindex{{\normalfont\bfseries My songs index}}{reltitleidx}
\begin{songs}{reltitleidx}
\beginsong{Funny song}[by={},sr={}]
\sindex[stl]{Cool@\textbf{Cool}!Stuff}
\beginchorus
This is my chorus.
\endchorus
\beginverse
Verse 1.
\endverse
\beginverse
Verse 2.
\endverse
\beginverse
Verse 3.
\endverse
\endsong
\end{songs}
\printindex*
\end{document}
非常感谢您的帮助。
编辑1:我忘了提一下。\pfill
似乎会引发错误。如果我将其从ist
样式文件中删除,则文档将成功编译。
有以下命令:pdflatex mydocument.tex
,,,,。splitindex mydocument.idx
makeindex -s mystyle.ist mydocument-stl.idx
pdflatex mydocument.tex
编辑2:引发的错误:
! Undefined control sequence. <recently read> \efill l.4 \item \textbf{Cool}\efill
和
! Undefined control sequence. \pfill ...ll \penalty 500 \strut \nobreak \dotfil ~\ignorespaces l.5 \subitem Stuff\pfill 1
编辑3:我欠埃格尔喝一杯。第一个错误消失了!索引已正确生成,但这个烦人的错误仍然困扰着我:
! Undefined control sequence. \pfill ...ll \penalty 500 \strut \nobreak \dotfil ~\ignorespaces l.5 \subitem Stuff\pfill 1
编辑4:现在这个问题已经解决了,感谢埃格尔的绝妙解决方案。=)
编辑5:为了完整性,我的样式文件基于gind.ist
。由于这些命令未根据其他命令定义,因此引发了上述错误。一旦正确定义它们,错误就会消失。
答案1
\pfill
是来自的宏ltxdoc
\def\pfill{\unskip~\dotfill\penalty500
\strut\nobreak\leaders\hbox to.6em{\hss.\hss}\hfil~\ignorespaces}
您可能还需要\efill
:
\def\efill{\hfill\nopagebreak}
\dotfil
定义为
\def\dotfil{\leaders\hbox to.6em{\hss.\hss}\hfil}
答案2
Paulo:关于您的 MWE——我不得不将这四个\renewcommand{\idx...}
命令更改为\newcommand
,还必须注释掉该\songpos
命令(第 50 行),因为它似乎没有在 songs.sty 中定义。通过 latex 和 makeindex 运行 MWE 后,以下文本显示在 song.ilg 文件中:
This is makeindex, version 2.15 [TeX Live 2011] (kpathsea + Thai support).
Scanning input file song.idx...
!! Input index error (file = song.idx, line = 1):
-- Unknown index keyword \indexentry[stl].
done (0 entries accepted, 1 rejected).
Nothing written in song.ind.
Transcript written in song.ilg.
这也是您遇到的错误吗?