在 \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
( )或自动运行)。\write18
makeindex
texindy
\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}