6

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.

enter image description here

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}
  • 1
    As you imply with your image suggestion, you will almost certainly have to fool the PDF browser to do this. Another way might be to add some "hidden" characters? – Andrew Feb 16 '16 at 11:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.