简化索引嵌套条目

简化索引嵌套条目

我想创建索引嵌套条目并使用相同的命令排版索引词。

对于简单的条目,\index{foo}我可以使用一些宏或\index*{foo}\Index{foo}indexhvindex分别解决这个问题,但问题在于嵌套条目,比如foo!bar我想在文本中只输入“ bar”并在索引中获得正确的嵌套条目,即:

foo
  bar, 1 

根据的手册hvindex,这个包就是这样做的,但是在更新的 TeXLive 2013 中,我无法获得这个包的任何嵌套条目。这个 MWEbar在正文中正确地输入了“ ”,但bar, 1在我的计算机中只有“ ”作为索引条目:

\documentclass{article}
\usepackage[makeidx]{hvindex}
\begin{document}
\Index{foo!bar}
\printindex
\end{document}

相反,index进行正确的嵌套输入,但foo!bar在正文中按原样写入“ ”:

\documentclass{article}
\usepackage{index}
\makeindex
\begin{document}
\index*{foo}
\index*{foo!bar}
\printindex
\end{document}

答案1

这似乎是 中的一个错误;内部宏的某个调用中hvindex缺少了。#1\index

\documentclass{article}
\usepackage[makeidx]{hvindex}

%%% fix \IndexXXii
\def\IndexXXii#1!#2@#3@#4\IndexNIL{%
  \ifx\relax#3\relax            %               no @ in last arg
    \def\hvTemp{#2}%
    \ifx\hvTemp\hvEncap\index{#1!{#2}}#2\else
      \ifx\hvIDXfont\hvIDXfontDefault\index{#1!#2}#2% <--- Here a % and #1 were missing
      \else\index{#1!#2@\hvIDXfont{#2}}\hvIDXfont{#2}\fi\fi%
  \else\index{#1!\protect#2@#3}#3\fi}

\begin{document}
\Index{foo}

\Index{foo!bar}
\printindex
\end{document}

在此处输入图片描述

相关内容