% $Id: hvindex-doc.tex 1063 2025-01-24 15:26:55Z herbert $

\listfiles
\documentclass[english]{article}
\usepackage{fontspec}
\usepackage{libertinus-otf}
\setmonofont{NotoSansMono-Regular.ttf}[FakeStretch=0.85,Scale=MatchLowercase]
\usepackage{babel}
\usepackage{geometry}
\usepackage{longtable}
\usepackage[makeidx]{hvindex}
\usepackage[colorlinks,linktocpage]{hyperref}
\providecommand\phantomsection{}
\title{\texttt{hvindex}, v. \fileversion\\ simplifying indexing \ldots}
\author{Herbert Voß}
\date{\filedate}
\begin{document}
\maketitle

\tableofcontents

\vfill
Thanks to:\\
Denis Bitouzé

\clearpage
\section{Package options}
With the \Index{option} \ttIndex{makeidx} the also called package is 
loaded and the macro \texttt{\textbackslash{}makeindex}
is executed.

The package should be loaded \emph{after} package \ttIndex{babel}.

\section{Introduction}
The \Index{package} \ttIndex{hvindex} defines some \Index{macros}
as a \Index{macro!replacement} for 
\Index{macros!index@\texttt{\textbackslash index}} 
which makes \Index{live} easier\index{easy}. You have to type every
\Index{word} only \Index{once} to get it into the \Index{index} 
and into the \Index{text}.


\small
\begin{verbatim}
The \Index{package} \ttIndex{hvindex} defines some \Index{macros}
as a \Index{macro!replacement} for 
\Index{macros!index@\texttt{\textbackslash index}} 
which makes \Index{live} easier\index{easy}. You have to type every
\Index{word} only \Index{once} to get it into the \Index{index} 
and into the \Index{text}.
\end{verbatim}
\normalsize


\clearpage
\section{The macros}

\begin{longtable}{@{} l  l l @{}}\\\hline
\emph{code} & \emph{Text} & \emph{index}\\\hline
\endfirsthead
\multicolumn{3}{@{}l}{\ldots\ continued from previous page}\\\hline
\emph{code} & \emph{Text} & \emph{index}\\\hline
\endhead
\hline
\multicolumn{3}{r@{}}{continued on next page \ldots}\\
\hline
\endfoot
\hline
\endlastfoot
\verb+\Index{foo}+                      & \Index{foo}                   & foo\\
\verb+\Index{foo!bar}+                  & \Index{foo!bar}               & foo\\
                                        &                                            & \kern1em bar\\
\verb+\Index{foo!bar!baz}+              & \Index{foo!bar!baz}           & foo\\
                                        &                                            & \kern1em bar\\
                                        &                                            & \kern2em baz\\
\verb+\Index{foo@\textsc{foo}}+         & \Index{foo@\textsc{foo}}      & \textsc{foo}\\
\verb+\Index{foo!bar@\textsf{baz}}+     & \Index{foo!bar@\textsf{bar}}  & foo\\
                                        &                                            & \kern1em\textsf{bar}\\
\verb+\Index{foo!bar!baz@\texttt{baz}}+ & \Index{foo!bar!baz@\texttt{baz}}&foo\\
                                        &                                            & \kern1em bar\\
                                        &                                            & \kern2em \texttt{baz}\\
\verb+\Index{foo@\textsc{foo}!bar}+     & \Index{foo@\textsc{foo}!bar}  & \textsc{foo}\\
                                        &                                            & \kern1em bar\\
\verb+\Index{foo!bar@\textsc{bar}!baz}+ & \Index{foo!bar@\textsc{bar}!baz}& foo\\
                                        &                                            & \kern1em\textsc{bar}\\
                                        &                                            & \kern2em baz\\
\verb+\Index{foo@\textsc{foo}}+         & \Index{foo@\textsc{foo}}      & \textsc{foo}\\ 
\verb+\Index{foo!bar@\textsf{baz}}+     & \Index{foo!bar@\textsf{bar}}  & foo\\
                                        &                                            & \kern1em\textsf{bar}\\
\verb+\Index{foo!bar!baz@\texttt{baz}}+ & \Index{foo!bar!baz@\texttt{baz}}& foo\\
                                        &                                            & \kern1em bar\\
                                        &                                            & \kern2em\texttt{baz}\\
\verb+\ttIndex{foo}+                    & \ttIndex{foo} & \texttt{foo}\\
\verb+\bfIndex{foo}+                    & \bfIndex{foo} & \textbf{foo}\\
\verb+\sfIndex{foo}+                    & \sfIndex{foo} & \textsf{foo}\\
\verb+\scIndex{foo}+                    & \scIndex{foo} & \textsc{foo}\\
\verb+\itIndex{foo}+                    & \itIndex{foo} & \textit{foo}\\
\verb+\ttIndex{foo!bar}+                & \ttIndex{foo!bar} & foo\\
                                        &                                            & \kern1em\texttt{bar}\\
\verb+\bfIndex{foo!bar}+                & \bfIndex{foo!bar} & foo\\
                                        &                                            & \kern1em\textbf{bar}\\
\verb+\sfIndex{foo!bar}+                & \sfIndex{foo!bar} & foo\\
                                        &                                            & \kern1em\textsf{bar}\\
\verb+\scIndex{foo!bar}+                & \scIndex{foo!bar} & foo\\
                                        &                                            & \kern1em\textsc{bar}\\
\verb+\itIndex{foo!bar}+                & \itIndex{foo!bar} & foo\\
                                        &                                            & \kern1em\textit{bar}\\
\clearpage
\verb+\ttIndex{foo!bar!baz}+            & \ttIndex{foo!bar!baz} & foo\\
                                        &                                            & \kern1em bar\\
                                        &                                            & \kern2em\texttt{baz}\\
\verb+\bfIndex{foo!bar!baz}+            & \bfIndex{foo!bar!baz} & foo\\
                                        &                                            & \kern1em bar\\
                                        &                                            & \kern2em\textbf{baz}\\
\verb+\sfIndex{foo!bar!baz}+            & \sfIndex{foo!bar!baz} & foo\\
                                        &                                            & \kern1em bar\\
                                        &                                            & \kern2em\textsf{baz}\\
\verb+\scIndex{foo!bar!baz}+            & \scIndex{foo!bar!baz} & foo\\
                                        &                                            & \kern1em bar\\
                                        &                                            & \kern2em\textsc{baz}\\
\verb+\itIndex{foo!bar!baz}+            & \itIndex{foo!bar!baz} & foo\\
                                        &                                            & \kern1em bar\\
                                        &                                            & \kern2em\textit{baz}\\\hline
\verb+\sIndex{foo|bar}+                 & \sIndex{foo|bar}    & foo, see bar \\
\verb+\saIndex{baz|bar}+                & \saIndex{baz|bar}& baz, see also bar\\\hline

\end{longtable}

It is not easy to get the braces into an index, because \verb+\index+ reads its argument \Index{verbatim}.
The package defines the follwong macros:

\verb+\iBraceL+, which writes the \IBraceL{} into the \Index{index}, same for \verb+\iBraceR+ for the right \IBraceR.
With the upper case variant it is writen into the index and also printed into the text,
like this one: \IBraceL\ and \IBraceR\ (\verb|\IBraceL\ and \IBraceR|). The advantage of these macros is, that
the \Index{braces} are sorted correct, the character \IVert{} (written as \verb|\IVert|) must appear between them and it does \ldots

%BTW: with \texttt{hyperref} we have to write \verb+\index{{"|}}+, to get it as a correct \Index{link} into
%the index. \texttt{hvindex} does it for you if you use \verb+\Index{"|}+.
\index{bar}\iVert

\clearpage
\phantomsection
\addcontentsline{toc}{section}{Index}
\printindex
\end{document}


