是否可以在文档开头插入索引,如下所示?:
\documentclass[11pt]{article}
\usepackage{imakeidx}
%\indexsetup{othercode=\small}
\makeindex[name=definitions,title=Definitions,columns=1,intoc=true,program=makeindex,options={-s index_style.ist}]
\begin{document}
\printindex[definitions]
bla bla \index[definitions]{bla}, lorem ipsum \index[definitions]{ipsum}
\end{document}
仅供参考,index_style.ist 的内容是:
headings_flag 1
heading_prefix "{\\large\\bfseries "
heading_suffix "}\\nopagebreak\n"
delim_0 " \\dotfill "
delim_1 " \\dotfill "
delim_2 " \\dotfill "
答案1
您必须imakeidx
使用该nonewpage
选项进行调用并手动运行makeindex
。
不幸的是,还需要对一个错误打补丁,该错误应在下一版本中得到解决imakeidx
;请参阅为什么imakeidx + nonewpage无法写入idx文件?
为了实现工作自动化,有两条路可走:
使用
latexmk
使用
arara
我更喜欢后者,因为它更容易定制。
示例(感谢的arara
作者 Paulo Cereda 提出这一files
技巧)。
% arara: pdflatex
% arara: makeindex: { files: [definitions], style: index_style.ist}
% arara: pdflatex
\documentclass[11pt]{article}
\usepackage[nonewpage]{imakeidx}
% work around the bug. :(
\makeatletter
\def\imki@putindex#1{%
\ifimki@nonewpage\else
\imki@clearpage
%%% The following two lines are incorrectly switched in the package
\immediate\closeout\csname #1@idxfile\endcsname
\fi
\let\imki@indexname\indexname % keep \indexname
\@nameuse{imki@set@#1}\imki@decide
\if@tempswa % we can call the external program
\imki@exec{\imki@program\imki@options#1.idx}%
\else
\imki@finalmessage{#1}%
\fi
\ifKV@imki@intoc
\def\imki@maybeaddtotoc{\@nameuse{phantomsection}%
\addcontentsline{toc}{\imki@toclevel}{\imki@title}}%
\else
\def\imki@maybeaddtotoc{}%
\fi
\ifx\imki@title\imki@check@indexname\else
\def\indexname{\imki@title}%
\fi
\@input@{#1.ind}
\let\indexname\imki@indexname % restore \indexname
}
\makeatother
%%% end of bug fix
%\indexsetup{othercode=\small}
\makeindex[name=definitions,
title=Definitions,
columns=1,
intoc=true,
program=makeindex,
options={-s index_style.ist}]
\begin{document}
\printindex[definitions]
bla bla \index[definitions]{bla}, lorem ipsum \index[definitions]{ipsum}
\end{document}
如果你运行arara -v filename
,你将得到这个输出。
在这种情况下,标准自动化无法实现是有原因的imakeidx
:为了运行makeindex
,.idx
必须关闭文件并包含所有必需的条目,如果索引不在文档末尾,则无法做到这一点。.idx
上次运行期间写入的文件不再可用,因为声明\makeindex
在文档开始时打开它们(因此清空它们)。
还
latexmk filename
应该可以开箱即用(使用补丁)。