连续多个索引关键字

连续多个索引关键字

有没有办法\index{}用一个命令声明多个关键字,而不是单独声明它们?

更准确地说,\index{keyword1}, \index{keyword2}, \index{keyword3}, \index{keyword4}我不想做 ,而是想做类似的事情\multipleIndex{keyword1, keyword2, keyword3, keyword4}

有没有办法做到这一点?

答案1

如果符合您的需要,请尝试以下示例。我使用\foreach来自pgffor//包的语句。tikzpgfplots

%! *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}

相关内容