索引 \afterpage 中出现的材料

索引 \afterpage 中出现的材料

我的文档包含一些我在命令中设置的横向表格\afterpage。当我尝试索引这些表格中出现的内容时,有时会出现重复的索引条目标题。从查看文件来看.idx,这显然是因为通过删除命令并引入多余的空格来重写我的命令\afterpage的参数。这是一个最小工作示例:\index\protect

\documentclass{article}
\usepackage{afterpage,makeidx}\makeindex

% For indexing material in tables
\newcommand{\tab}[1]{\emph{#1}}

% Stand-in example for a fragile command that needs \protection
\newcommand\fragilecmd{FragileCommand}

\begin{document}
\fragilecmd\index{FragileCommand@\protect\fragilecmd}
\fragilecmd-x\index{FragileCommand@\protect\fragilecmd!\protect\fragilecmd-x}
\afterpage{
\begin{table}
  \begin{tabular}{l}
    \fragilecmd \\
    \fragilecmd-x \\
  \end{tabular}
  \index{FragileCommand@\protect\fragilecmd|tab}
  \index{FragileCommand@\protect\fragilecmd!\protect\fragilecmd-x|tab}
\end{table}
}
\newpage\printindex
\end{document}

我期望最终的索引如下所示:

指数

FragileCommand,1,2

FragileCommand-x, 1,2

然而,它却看起来像这样:

指数

脆弱的命令,2

FragileCommand-x,2

FragileCommand,1

FragileCommand-x,1

.idx以下是makeindex 生成的文件的内容:

\indexentry{FragileCommand@\protect\fragilecmd}{1}
\indexentry{FragileCommand@\protect\fragilecmd!\protect\fragilecmd-x}{1}
\indexentry{FragileCommand@\fragilecmd |tab}{2}
\indexentry{FragileCommand@\fragilecmd !\fragilecmd -x|tab}{2}

我如何才能正确地索引出现在中的此类条目\afterpage

答案1

\protect在前两种情况下您不需要:\index在顶层(不在宏的参数内)使用逐字模式在文件中写入条目.idx

您需要的是\string其中的条目\afterpage,因为\index现在在另一个命令的参数中。

\documentclass{article}
\usepackage{afterpage,makeidx}\makeindex

% For indexing material in tables
\newcommand{\tab}[1]{\emph{#1}}

% Stand-in example for a fragile command that needs \protection
\newcommand\fragilecmd{FragileCommand}

\begin{document}
\fragilecmd\index{FragileCommand@\fragilecmd}
\fragilecmd-x\index{FragileCommand@\fragilecmd!\fragilecmd-x}
\afterpage{%
\begin{table}
  \begin{tabular}{l}
    \fragilecmd \\
    \fragilecmd-x \\
  \end{tabular}%
  \index{FragileCommand@\string\fragilecmd|tab}%
  \index{FragileCommand@\string\fragilecmd!\string\fragilecmd-x|tab}%
\end{table}%
}
\newpage\printindex
\end{document}

文件中显示的内容如下.idx

\indexentry{FragileCommand@\fragilecmd}{1}
\indexentry{FragileCommand@\fragilecmd!\fragilecmd-x}{1}
\indexentry{FragileCommand@\fragilecmd|tab}{2}
\indexentry{FragileCommand@\fragilecmd!\fragilecmd-x|tab}{2}

因此指数将符合预期

在此处输入图片描述

相关内容