我想创建索引嵌套条目并使用相同的命令排版索引词。
对于简单的条目,\index{foo}
我可以使用一些宏或\index*{foo}
或\Index{foo}
包index
和hvindex
分别解决这个问题,但问题在于嵌套条目,比如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}