% $Id: deIndex.sty 737 2009-10-12 08:59:10Z herbert $
%%
%% IMPORTANT NOTICE:
%%
%% This is file `hvindex.sty',
%%
%% Herbert Voss <herbert@dante.de>
%% October 01, 2009
%%
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN archives
%% in directory macros/latex/base/lppl.txt.
%%
%% DESCRIPTION:
%%   `hvindex' offers macros for simplifing indexing of words
%%
\NeedsTeXFormat{LaTeX2e}
\def\fileversion{0.03}
\def\filedate{2009/10/24}
%
\ProvidesPackage{hvindex}[\filedate\ \fileversion\ Index macros (hv)]
\message{`hvindex' v\fileversion, \filedate\space (hv)}
%
\newif\ifhv@makeidx\hv@makeidxfalse
\DeclareOption{makeidx}{\hv@makeidxtrue}
\ProcessOptions\relax

\ifhv@makeidx
  \RequirePackage{makeidx}\makeindex
\fi
%
\let\IndexNIL\@nil
\def\hvIDXfontDefault#1{#1}
\let\hvIDXfont\hvIDXfontDefault
%\providecommand*\shorthandoff[1]{}
%\providecommand*\shorthandon[1]{}
\newif\ifhvShortHandOff\hvShortHandOfffalse
%\ifcat"~\shorthandoff{"}\hvShortHandOfftrue\fi
\def\hvEncap{"|}
%
\makeatother
\def\Index#1{\expandafter\IndexXi#1!!!\IndexNIL}
\def\IndexXi#1!#2!#3!#4\IndexNIL{%
  \ifx\relax#3\relax 			% 	no 3rd argument
    \ifx\relax#2\relax			% 	no 2nd argument
      \IndexXXi#1@@\IndexNIL		% 	scan #1 for @
    \else\IndexXXii#1!#2@@\IndexNIL\fi	% 	scan #2 for @
  \else\IndexXXiii#1!\noexpand#2!#3@@\IndexNIL% scan #3 for @
  \fi}
\def\IndexXXi#1@#2@#3\IndexNIL{%
  \ifx\relax#2\relax % 				no @ in last arg
    \def\hvTemp{#1}%
    \ifx\hvTemp\hvEncap\index{{#1}}#1\else% {{...}} to get "| with hyperref
      \ifx\hvIDXfont\hvIDXfontDefault\index{#1}#1
      \else\index{#1@\hvIDXfont{#1}}\hvIDXfont{#1}\fi\fi%#1
  \else\index{#1@#2}#2\fi}%		% #1@#2
%
\def\IndexXXii#1!#2@#3@#4\IndexNIL{%
  \ifx\relax#3\relax 		% 		no @ in last arg
    \def\hvTemp{#2}%
    \ifx\hvTemp\hvEncap\index{#1!{#2}}#2\else
      \ifx\hvIDXfont\hvIDXfontDefault\index{#2}#2
      \else\index{#1!#2@\hvIDXfont{#2}}\hvIDXfont{#2}\fi\fi%
  \else\index{#1!\protect#2@#3}#3\fi}
%
\def\IndexXXiii#1!#2!#3@#4@#5\IndexNIL{%
  \ifx\relax#4\relax 		% 		no @ in last arg
    \def\hvTemp{#3}%
    \ifx\hvTemp\hvEncap\index{#1!#2!{#3}}#3\else
      \ifx\hvIDXfont\hvIDXfontDefault\index{#3}#3
      \else\index{#1!#2!#3@\hvIDXfont{#3}}\hvIDXfont{#3}\fi\fi%
  \else\index{#1!#2!\protect#3@#4}#4\fi}
%
\def\sfIndex#1{\let\hvIDXfont\textsf\Index{#1}\let\hvIDXfont\hvIDXfontDefault}
\def\ttIndex#1{\let\hvIDXfont\texttt\Index{#1}\let\hvIDXfont\hvIDXfontDefault}
\def\scIndex#1{\let\hvIDXfont\textsc\Index{#1}\let\hvIDXfont\hvIDXfontDefault}
\def\itIndex#1{\let\hvIDXfont\textit\Index{#1}\let\hvIDXfont\hvIDXfontDefault}
\def\bfIndex#1{\let\hvIDXfont\textbf\Index{#1}\let\hvIDXfont\hvIDXfontDefault}
%
\makeatletter
\def\sIndex#1{\expandafter\sIndex@i#1\@nil}
\def\sIndex@i#1|#2\@nil{\index{#1|see{#2}}#1}
\def\saIndex#1{\expandafter\saIndex@i#1\@nil}
\def\saIndex@i#1|#2\@nil{\index{#1|seealso{#2}}#1}
%
\begingroup
  \lccode`0=`\{
  \lccode`1=`\}
\lowercase{%
  \endgroup
  \newcommand\hv@BraceLeft{0}%
  \newcommand\hv@BraceRight{1}%
}
\iffalse
\def\iBraceL{%
  \begingroup
    \edef\x{\endgroup
      \noexpand\index{\string"\string{@\string\textbraceleft}%
    }\x}
\def\iBraceR{%
  \begingroup
    \edef\x{\endgroup
      \noexpand\index{\string"\string{@\string\textbraceleft}%
    }\x}
\fi
%\begingroup
%  \edef\x{\endgroup
%    \noexpand\index{\string"\string{@\string\textbraceleft}%
%  }%
%\x
\newcommand*{\hv@braceIndex}[1]{\index{#1}}
\newcommand*\iBraceL{\hv@braceIndex{\string"\hv@BraceLeft @\string\textbraceleft}}
\newcommand*\iBraceR{\hv@braceIndex{\string"\hv@BraceRight @\string\textbraceright}}
\newcommand*\IBraceL{\hv@braceIndex{\string"\hv@BraceLeft @\string\textbraceleft}\{}
\newcommand*\IBraceR{\hv@braceIndex{\string"\hv@BraceRight @\string\textbraceright}\}}

%\newcommand*\iBraceL{\iBraceL}
%\newcommand*\iBraceR{\iBraceR}
%\newcommand*\IBraceL{\iBraceL\textbraceleft}
%\newcommand*\IBraceR{\iBraceR\textbraceright}
%\ifhvShortHandOff\shorthandon{"}\fi

\endinput
