多重索引:书的每个部分都有一个索引

多重索引:书的每个部分都有一个索引

我正在写一本书,分为几个部分。基本上,我希望在每个部分的末尾都有一个索引。索引应该只列出这部分中提到的单词。实现这个最简单的方法是什么?

在下面的 MWE 中,您可以看到我迄今为止尝试过的内容。我想要以下内容:

  • INDEX 1 应列出贝比加拿大
  • 索引 2 应列出滴滴电竞

在我的“解决方案”中,索引 2 列出的内容与索引 1 相同。

平均能量损失

\documentclass{book}

\usepackage{blindtext}

\usepackage{imakeidx}
\makeindex


\begin{document}

\part{My Headline}

    \chapter{My Headline}
    \blindtext[2]

    \chapter{My Headline}
    \blindtext[2]

    \index{Aaa}\index{Bbb}\index{Caa} % keywords for INDEX 1

    \printindex % INDEX 1

\part{Two}

    \chapter{My Headline}
    \blindtext[2]

    \chapter{My Headline}
    \blindtext[2]

    \index{Aaa}\index{Ddd}\index{Eee} % keywords for INDEX 2

    \printindex % INDEX 2

\end{document}

我不想要什么

我知道splitidx。手册上说:

使用 \newindex 命令声明单独的索引并赋予唯一的快捷方式标识符。

我的问题是:有没有办法避免使用该\nexindex命令?这本书已经写好了,我不想将其更改\index{Aaa}\newindex{index1}{Aaa}

答案1

\documentclass{book}

\usepackage{blindtext}

\usepackage{imakeidx}
\usepackage{letltxmacro}
\makeindex[name=index1]

\makeindex[name=index2]


\makeatletter
\AtBeginDocument{%
\let\latex@@index\index
\renewcommand{\index}[1]{%
  \latex@@index[index\number\value{part}]{#1}%
}
}

\makeatother


\begin{document}

\part{My Headline}

    \chapter{My Headline}
    \blindtext[2]

    \chapter{My Headline}
    \blindtext[2]

    \index{Aaa}\index{Bbb}\index{Caa} % keywords for INDEX 1

    \printindex[index\number\value{part}] % INDEX 1

\part{Two}

    \chapter{My Headline}
    \blindtext[2]

    \chapter{My Headline}
    \blindtext[2]

    \index{Aaa}\index{Ddd}\index{Eee} % keywords for INDEX 2

    \printindex[index\number\value{part}] % INDEX 2

\end{document}

改良版

自动\makeindex[index...]循环定义并\printindex

\documentclass{book}

\usepackage{blindtext}

\usepackage{imakeidx}
\usepackage{letltxmacro}

\makeatletter
\newcounter{loopcntr}
\newcommand{\setupindexfiles}[1]{%
\setcounter{loopcntr}{1}%
\loop\unless\ifnum\value{loopcntr}>#1%
\makeindex[name=index\number\value{loopcntr}]
\stepcounter{loopcntr}%
\repeat
}%




\setupindexfiles{3}


\AtBeginDocument{%
\LetLtxMacro\latex@@index\index
\LetLtxMacro\latex@@printindex\printindex
\renewcommand{\index}[2][]{%
  \def\first@arg{#1}%
  \ifx\first@arg\empty
  \latex@@index[index\number\value{part}]{#2}%
  \else
  \latex@@index[#1]{#2}%
  \fi
}
\renewcommand{\printindex}[1][]{%
  \def\first@arg{#1}%
  \ifx\first@arg\empty
  \latex@@printindex[index\number\value{part}]%
  \else
  \latex@@printindex[#1]%
  \fi
}
}


\makeatother


\begin{document}

\part{My Headline}

    \chapter{My Headline}
    \blindtext[2]

    \chapter{My Headline}
    \blindtext[2]

    \index{Aaa}\index{Bbb}\index{Caa} % keywords for INDEX 1

    \printindex

\part{Two}

    \chapter{My Headline}
    \blindtext[2]

    \chapter{My Headline}
    \blindtext[2]

    \index{Aaa}\index{Ddd}\index{Eee} % keywords for INDEX 2

    \printindex%




\part{Three}

    \chapter{My Headline}
    \blindtext[2]

    \chapter{My Headline}
    \blindtext[2]

    \index{Aaa}\index{FFFFFF}\index{AAAAAAA} % keywords for INDEX 2

    \printindex%



\end{document}

相关内容