不使用 \imakeidx 对一个索引进行分组

不使用 \imakeidx 对一个索引进行分组

我有一个大型项目,其中包含 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,并且我还有多个其他索引,我不太想重做:

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}

相关内容