使用 \index{...} 中的计数器和 {index} 包(不是 {makeidx} 包)

使用 \index{...} 中的计数器和 {index} 包(不是 {makeidx} 包)

在 \index{...} 中使用计数器\index给出了使用时在命令 中使用计数器的问题的解决方案\usepackage{makeidx},例如

    \index{index entry \arabic{counter}}

在这种情况下,\arabic{counter}是逐字书写的

    "index entry \arabic{counter}"

到 .idx 文件,而不是先展开为类似

    "index entry 1".

给出的解决方案包括定义一个新的宏\Index或使用\mbox{}。这些解决方案在使用包时非常有效makeidx

index但是,当使用包而不是包时,这两种解决方案都不起作用makeidx。这是一个改编自上述链接的简单示例:

\documentclass{article}
%\usepackage{makeidx}% using this, "\arabic{section}" expands to 1, 2, 3,...
\usepackage{index}% using this, "\arabic{section}" does not expand
\makeindex
\newcommand*{\Index}[1]{\index{#1}}
\begin{document}
\section{First  Section} \Index{first  \arabic{section}}
\section{Second Section} \Index{second \arabic{section}}
\section{Third  Section} \Index{third  \arabic{section}}
\section{Fourth Section} \mbox{\index{fourth \arabic{section}}}
\section{Fifth  Section} \mbox{\index{fifth  \arabic{section}}}
\section{Sixth  Section} \mbox{\index{sixth  \arabic{section}}}
\printindex
\end{document}

当使用 \usepackage{makeidx} 时,.idx 文件包含可能需要的内容(扩展的计数器值):

    \indexentry{first 1}{1}
    \indexentry{second 2}{1}
    \indexentry{third 3}{1}
    \indexentry{fourth 4}{1}
    \indexentry{fifth 5}{1}
    \indexentry{sixth 6}{1}

但是,当使用时\usepackage{index}.idx文件包含可能不想要的内容(逐字字符串/未扩展的计数器值):

    \indexentry {first \arabic {section}}{1}
    \indexentry {second \arabic {section}}{1}
    \indexentry {third \arabic {section}}{1}
    \indexentry {fourth \arabic {section}}{1}
    \indexentry {fifth \arabic {section}}{1}
    \indexentry {sixth \arabic {section}}{1}

我想使用该index包实现多索引支持。有人有可以与该index包一起使用的解决方案吗?

在此先谢谢大家,

Dan

答案1

该(非常旧的)软件包否决了对索引文件的index添加,因此索引条目不会先扩展然后再写入。latex.ltx\protected@write\arabic{section}.idx

这个非常复杂的包imakeidx会取代index并允许多个索引(如果启用了shell-escape( )或自动运行)。\write18makeindextexindy

\documentclass{article}

\usepackage{imakeidx}
\makeindex

\begin{document}
\section{First  Section} \index{first \textbf{Hello} \arabic{section}}
\section{Second Section} \index{second \arabic{section}}
\section{Third  Section} \index{third  \arabic{section}}
\section{Fourth Section} \index{fourth \arabic{section}}
\section{Fifth  Section} \index{fifth  \arabic{section}}
\section{Sixth  Section} \index{sixth  \arabic{section}}
\printindex
\end{document}

在此处输入图片描述

相关内容