我从答案中提取了以下代码从索引条目中删除页码
从每个索引条目中删除页码:
\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}}
(命令名称中不允许使用数字)
\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}