有没有办法\index{}
用一个命令声明多个关键字,而不是单独声明它们?
更准确地说,\index{keyword1}, \index{keyword2}, \index{keyword3}, \index{keyword4}
我不想做 ,而是想做类似的事情\multipleIndex{keyword1, keyword2, keyword3, keyword4}
。
有没有办法做到这一点?
答案1
如果符合您的需要,请尝试以下示例。我使用\foreach
来自pgffor
//包的语句。tikz
pgfplots
%! *latex mal-index.tex
\documentclass{article}
\usepackage{pgffor}
\usepackage{makeidx}
\makeindex
\def\multipleIndex#1{\foreach\entry in{#1}{\index{\entry}}}
\begin{document}
My first paragraph.
\index{test1}%
\index{test2}%
\multipleIndex{a,b,c,d}
\end{document}
生成的mal-index.idx
文件如下所示:
\indexentry{test1}{1}
\indexentry{test2}{1}
\indexentry{a}{1}
\indexentry{b}{1}
\indexentry{c}{1}
\indexentry{d}{1}
答案2
它xparse
几乎只有一行:
\documentclass{article}
\usepackage{imakeidx}
\usepackage{xparse}
\makeindex
\NewDocumentCommand{\mindex}{ >{\SplitList{,}} m }
{%
\ProcessList{#1}{\index}%
}
\begin{document}
x\mindex{keyword1, keyword2, keyword3, keyword1!keyword4}
\printindex
\end{document}
当然imakeidx
只是为了方便;也makeidx
可以。
如果你想保留\index
(虽然我不推荐这样做):
\documentclass{article}
\usepackage{imakeidx}
\usepackage{xparse}
\makeindex
\let\originalindex\index
\RenewDocumentCommand{\index}{ >{\SplitList{,}} m }
{%
\ProcessList{#1}{\originalindex}%
}
\begin{document}
x\index{keyword1, keyword2, keyword3, keyword1!keyword4}
\printindex
\end{document}