SECOND EDIT
(I don't know what is the usual practice. I have left the initial answer and edit at the bottom and the new one here at the start).
To fullfill all the requirements, instead of manipulating the argument of \index
, I have made three new commands with two arguments to take care of it.
The first argument is the entry in the index and the second the see text.
The commands are:
\seeonlyindex{<index entry>}{<see text>}
\alsoindex{<index entry>}{<see text>}
\Alsoindex{<index entry>}{<see text>}
The result is:
The complete code is:
\documentclass{book}
\usepackage{makeidx}
\newcommand\gobbleone[1]{}
\newcommand{\seeonly}[2]{\ (\emph{\seename} #1)}
\newcommand{\also}[2]{\unskip(\emph{\alsoname} #1)}
\newcommand{\Also}[2]{\unskip\emph{See also} #1}
\let\oldindex\index
\renewcommand{\index}[1]{\def\exptoindex{#1}\expandafter\oldindex\expandafter{\exptoindex}}
\newcommand{\seeonlyindex}[2]{\index{#1@#1\protect\gobbleone|seeonly{#2}}}
\newcommand{\alsoindex}[2]{\index{#1!zzzz@\protect\gobbleone|also{#2}}}
\newcommand{\Alsoindex}[2]{\index{#1!zzzz@\protect\gobbleone|Also{#2}}}
\makeindex
\begin{document}
This is a short book about zero. Therefore, it's also about nothing.
Which means null (or nil).
\index{nothing}
\index{nothing!nil}
\index{nothing!nil!and zero}
\alsoindex{nothing!nil}{null elements}
\index{nothing!null}
\Alsoindex{nothing}{zero elements}
\index{null elements}
\seeonlyindex{zero}{zero elements}
\index{zero elements}
\printindex
\end{document}
OLD SECTION
To avoid the use of |gobbleone
to get rid of the page numbers, you have to insert the commands the makeidx
way with |
and not the LaTeX
way with \
.
To have these entries in the last place, you still will need \gobbleone
to eliminate the comma.
\index{nothing!nil!zzzz@\gobbleone|also{null elements}}
(edited to remove unwanted space)
An additional command \lastentry
makes typing easier, but the \index
command must be renewed and then a \def
is required to have the content of \index
expanded.
The complete code:
(edited to remove unwanted space)
\documentclass{book}
\usepackage{makeidx}
\newcommand\gobbleone[1]{}
\newcommand{\seeonly}[2]{\ (\emph{\seename} #1)}
\newcommand{\also}[2]{\unskip(\emph{\alsoname} #1)}
\newcommand{\Also}[2]{\unskip\emph{See also} #1}
\makeindex
\begin{document}
This is a short book about zero. Therefore, it's also about nothing.
Which means null (or nil).
\let\oldindex\index
\renewcommand{\index}[1]{\def\exptoindex{#1}\expandafter\oldindex\expandafter{\exptoindex}}
\newcommand{\lastentry}{!zzzz@\protect\gobbleone}
\index{nothing}
\index{nothing!nil}
%\index{nothing!nil!zzzz@\gobbleone|also{null elements}}
\index{nothing!nil\lastentry|also{null elements}}
\index{nothing!null}
%\index{nothing!zzzz@\gobbleone|Also{zero elements}}
\index{nothing\lastentry|Also{zero elements}}
\index{null elements}
\index{zero|seeonly{zero elements}}
\index{zero elements}
\printindex
\end{document}
Best Answer
You want a version of
|see
that does not discard the page number: