In one of my indices it really would be nice if searching only matched the top level index entries.
One way would be to make the index entires images, but wondering if there is an easier way? And if this is the only solution, what is the best way to make the text be an image?
For instance in the following, within the index, searching for "byte" should yield on one result, not three.
Code:
\documentclass{article}
\usepackage{imakeidx}
\usepackage{xparse}
\usepackage{siunitx}
\usepackage{xcolor}
\usepackage{hyperref}
\newcommand*\lettergroup[1]{\subsection{#1}}
\newcommand*{\IndexWithName}[2]{%
% #1 = word to index
% #2 = index name
\index[#2]{#1}%
}
\NewDocumentCommand{\FormatIndexEntry}{mm}{%
\textcolor{blue}{#1} #2%
}
%% Defer the binary units until AFTER \begin{document} as per
%% http://tex.stackexchange.com/questions/287579/how-to-overwrite-siunitxs-binary-prefixes
\sisetup{binary-units=true}
\AtBeginDocument{%
\DeclareSIUnit\bit{\textcolor{red}{bit}}%
}
\NewDocumentCommand{\AddIndexEntry}{%
O{}% #1 = index name
m% #2 = word to index this under
m% #3 = indexed term
m% #4 = symbol
}{%
\expandafter\IndexWithName\expandafter{%
#2!#3@\FormatIndexEntry{#3}{\unexpanded{\unexpanded{#4}}}%
}{#1}%
}
\newcommand{\indexopt}[2]{\index[#2]{#1}}
\makeindex[title={Main Index},columns=1,program=texindy]
\makeindex[title={Name Index},columns=1,program=texindy,name=Name]
\indexsetup{level=\section}
\begin{document}
\SI{1}{\bit}
\AddIndexEntry[Name]{byte}{bit}{symbol: \si{\bit}}
\AddIndexEntry[Name]{byte}{nibble}{}
\AddIndexEntry[Name]{bit}{byte}{}
\AddIndexEntry[Name]{bit}{nibble}{}
\AddIndexEntry[Name]{nibble}{bit}{}
\AddIndexEntry[Name]{nibble}{byte}{}
\clearpage
\setcounter{secnumdepth}{0}
\printindex[Name]
\end{document}
