我有一个大型项目,其中包含 LuaLaTeX 中的多个索引。有没有办法使用 \imakeidx 或 .ind 文件,让其中一个索引“关闭”分组,以便每个 0 级项目与最后一个项目或子项目间隔开?
对于此索引,特定的 0 级项目没有页码,因此我希望它看起来像:
Item
Subitem page
Subitem page
Subitem page
Item
Subitem page
Item
Subitem page
Subitem page
ETC。
因为除了这个之外所有东西都已经正常工作了,所以我只想坚持使用 makeindex/imakeidx 和样式文件,而不是 xindy、texindy 或其他任何东西。
下面是我想要的示例,但它在序言中重新定义了 \item、\subitem 等,因此只有将其应用于所有索引时才有效。我只需要一个索引,其他索引则不用管:
这是 texindy 中的一个示例,但我不知道如何使用 texindy,并且我还有多个其他索引,我不太想重做:
能否使用样式文件在普通的 \makeindex/\imakeidx 中完成此操作?我似乎需要 item_10 之类的元素,但这似乎不存在。或者还有其他简单直接的方法吗?
答案1
您只能将自定义应用于主题索引。
\documentclass{article}
\usepackage{imakeidx}
\makeindex
\makeindex[title=Thematic index,name=thematic,columns=1]
% customize the thematic index
\makeatletter
\newcommand{\thematiccustom}{%
\def\@idxitem{\par\addvspace{10\p@ \@plus 5\p@ \@minus 3\p@}\hangindent 40\p@}%
\def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}%
\def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}%
\def\indexspace{}%
}
\makeatother
\begin{document}
Text.
\index{something}
\index{another}
\index[thematic]{Fruit!Apple}
\index[thematic]{Fruit!Banana}
\index[thematic]{Fruit!Cherry}
\index[thematic]{Animal!Whale}
\index[thematic]{Animal!Gnu}
\index[thematic]{Automobile!Chevrolet}
\index[thematic]{Automobile!Jaguar}
\index[thematic]{Miscellaneous!Beauty}
%\index[thematic]{Miscellaneous!Happiness}
\printindex
\begingroup
\thematiccustom
\printindex[thematic]
\endgroup
\end{document}
注意:columns=1
只是为了更好地显示项目之间的分离。
答案2
修正答案
对于每个主题“类别”,手动添加(并跟踪)一个单独的排序字符(s@t,其中 s = 排序字符串,t = 索引条目文本,其中“a@”代表“猫”,“b@”和“c@”分别代表犬科动物和携带包,“z@”代表杂项,因此索引条目看起来像,例如\index[theme]{a@Cats!leopard}
)。“杂项”在逻辑上应该位于主题列表的末尾。
.ist
带有命令的文件会dotfill
为您提供正确解释:如果它被称为plain.ist
,则调用它将通过:\makeindex[name=theme,title=Thematic Index,options=-s plain]
。
单列(命令columns=1
中的选项\makeindex
):
默认两列:
平均能量损失
\documentclass{article}
\usepackage[splitindex]{imakeidx}
\makeindex[name=fel,title=Cats]%a
\makeindex[name=can,title=Canids]%b
\makeindex[name=equ,title=Carrypacks]%c
\makeindex[name=msc,title=Misc]%z
\makeindex[name=theme,title=Thematic Index,options=-s plain]
\begin{document}
lion\index[fel]{lion}\index[theme]{a@Cats!lion}
coyote\index[can]{coyote}\index[theme]{b@Canids!coyote}
zebra\index[equ]{zebra}\index[theme]{c@Carrypacks!zebra}
moose\index[msc]{moose}\index[theme]{z@Miscellaneous!moose}
\newpage
wolf\index[can]{wolf}\index[theme]{b@Canids!wolf}
gazelle\index[equ]{gazelle}\index[theme]{c@Carrypacks!gazelle}
tiger\index[fel]{tiger}\index[theme]{a@Cats!tiger}
mouse\index[msc]{mouse}\index[theme]{z@Miscellaneous!mouse}
\newpage
guinea pig\index[msc]{guinea pig}\index[theme]{z@Miscellaneous!guinea pig}
leopard\index[fel]{leopard}\index[theme]{a@Cats!leopard}
dingo\index[can]{dingo}\index[theme]{b@Canids!dingo}
horse\index[equ]{horse}\index[theme]{c@Carrypacks!horse}
\newpage
\printindex[can]
\printindex[equ]
\printindex[fel]
\printindex[msc]
\printindex[theme]
\end{document}
文件plain.ist
:
delim_0 "\\space\\dotfill\\space "
delim_1 "\\space\\dotfill\\space "
delim_2 "\\space\\dotfill\\space "
delim_n ", "
delim_r "--"
delim_t ""
encap_prefix "\\"
encap_infix "{"
encap_suffix "}"
line_max 1000
原始答案
如果我理解正确的话,您的意思是添加类似摘要或主题索引的内容,使用 0 级作为分组?
它是一个单独的索引并有其自己的\index[...]{...}
条目。
脚本可以遍历.idx
文件并派生出主题.idx
文件,例如,\indexentry{lion}{1}
从 中获取-fel.idx
并输出\indexentry{Cats!lion}{1}
到 中,-theme.idx
但这将通过自动工具链进行部分操作,并且无论如何,仍需要事先在某处完成/定义将子条目(狮子)与分组(猫)匹配的映射。在建立映射后,也许正则表达式可以工作。
平均能量损失
\documentclass{article}
\usepackage[splitindex]{imakeidx}
\makeindex[name=fel,title=Cats]
\makeindex[name=can,title=Canids]
\makeindex[name=msc,title=Misc]
\makeindex[name=theme,title=Thematic Index]
\begin{document}
lion\index[fel]{lion}\index[theme]{Cats!lion}
coyote\index[can]{coyote}\index[theme]{Canids!coyote}
moose\index[msc]{moose}\index[theme]{Miscellaneous!moose}
\newpage
wolf\index[can]{wolf}\index[theme]{Canids!wolf}
tiger\index[fel]{tiger}\index[theme]{Cats!tiger}
mouse\index[msc]{mouse}\index[theme]{Miscellaneous!mouse}
\newpage
guinea pig\index[msc]{guinea pig}\index[theme]{Miscellaneous!guinea pig}
leopard\index[fel]{leopard}\index[theme]{Cats!leopard}
dingo\index[can]{dingo}\index[theme]{Canids!dingo}
\newpage
\printindex[can]
\printindex[fel]
\printindex[msc]
\printindex[theme]
\end{document}