按 section.subsection 索引

按 section.subsection 索引

我在包含许多短小节(每页 2-3 个)的文档中使用 revtex4-1。我希望索引引用节和小节,而不是页码(例如,第 2 节第 1 小节中的项目“示例”为“示例,2.1”)。以下代码满足了我的所有要求,只是节号和小节号之间没有“。”:

\documentclass[rmp]{revtex4-1}
\usepackage{makeidx}

\makeatletter
  \def\@wrindex#1{%
    \protected@write\@indexfile{}%
      {\string\indexentry{#1}{\thesubsection}}
    \endgroup
  \@esphack}
\makeindex

\renewcommand{\thesection}{\arabic{section}}
\renewcommand{\thesubsection}{\arabic{section}\arabic{subsection}}

\begin{document}

\section{Section} This is Section 1
\subsection{Subsection} This is Subsection 1.1 \index{My Subsection}

\printindex
\end{document}

如果我改为这样做\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection},则索引将不会打印。我见过一些解决方法,例如这个,但此方法仅对最多 9 个子节有效。我怎样才能让索引打印 section.subsection?

答案1

关键page_compositor在于负责如何makeindex解释它读取的“数字”并进行相应的排序。

通过定义一个新的索引样式文件,例如subsection.ist,这可以用来将键更改为.

\documentclass[rmp]{revtex4-1}
\usepackage{makeidx}

\makeatletter
  \def\@wrindex#1{%
    \protected@write\@indexfile{}%
      {\string\indexentry{#1}{\thesubsection}}
    \endgroup
  \@esphack}
\makeindex

\renewcommand{\thesection}{\arabic{section}}
\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}}


\begin{filecontents}{subsection.ist}
page_precedence "nrRAa"
page_compositor "."
\end{filecontents}


\usepackage{pgffor}



\begin{document}

\section{Section} This is Section 1
\foreach \x in {1,...,20} {%
\clearpage
\subsection{Subsection \x} \index{My Subsection}
}

\section{Section} This is Section 1
\foreach \x in {1,...,20} {%
\clearpage
\subsection{Subsection \x} \index{My Subsection}
}


\printindex
\end{document}

makeindex -s subsection.ist foo如果foo.tex是文档的名称,则调用.tex

在此处输入图片描述

相关内容