修改 Makeindex 算法以选择性地删除页码

修改 Makeindex 算法以选择性地删除页码

我从答案中提取了以下代码从索引条目中删除页码

从每个索引条目中删除页码:

\documentclass{article}
\usepackage{xcolor}
\usepackage{imakeidx}

\makeindex[program=makeindex,options=-s mystyle.ist]

\usepackage{letltxmacro}
\usepackage{filecontents}
\makeatletter
\let\mygobble\@gobble
\LetLtxMacro\OldIndex\index
\renewcommand{\index}[1]{\OldIndex{#1|mygobble}} 
\makeatother
\begin{filecontents*}{mystyle.ist}
quote '+'
delim_0 " "
delim_1 " "
delim_2 " "
delim_n " "
\end{filecontents*}

\begin{document}
\LARGE

Test\index{foo}
\index{bar}
\printindex
\end{document}

产生索引输出:

在此处输入图片描述

我想,也许有一种方法可以修改上述代码,以便可以有选择地而不是全局地“吞噬”页码;更具体地说,我试图定义一个索引命令,比如,\index1如果使用则删除页码---并且,如果使用\index,则页码将被保留。

然而我的各种尝试均未成功。

问题:如果可能的话,如何修改上述代码,以便可以有选择地(而不是全局地)删除条目页码?

谢谢。

答案1

使用 \newcommand{\indexi}[1]{\OldIndex{#1|mygobble}}(命令名称中不允许使用数字)

A

\documentclass{article}
\usepackage{xcolor}
\usepackage{imakeidx}

\makeindex[program=makeindex,options=-s mystyle.ist]

\usepackage{letltxmacro}
\usepackage{filecontents}
\makeatletter
\let\mygobble\@gobble
\LetLtxMacro\OldIndex\index
\newcommand{\indexi}[1]{\OldIndex{#1|mygobble}} % changed <<<<<<<<
\makeatother
\begin{filecontents*}{mystyle.ist}
    quote '+'
    delim_0 " "
    delim_1 " "
    delim_2 " "
    delim_n " "
\end{filecontents*}

\begin{document}
    \LARGE
    
    Test\indexi{foo}  % no page number
    \index{bar}
    \printindex
\end{document}

相关内容