%%
%% This is file `splitidx.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% splitidx.dtx  (with options: `package')
%% 
%% This is a generated file.
%% 
%% Copyright (c) Markus Kohm, 2002-2009
%% 
%% This file was generated from file(s) of the `SplitIndex bundle'.
%% ----------------------------------------------------------------
%% 
%% This work may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, version 1.3c of the license.
%% The latest version of this license is in
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later and of this work.
%% 
%% This work has the LPPL maintenance status "author-maintained".
%% 
%% The Current Maintainer and author of this work is Markus Kohm.
%% 
%% This file may only be distributed together with a copy of the
%% SplitIndex bundle. You may however distribute the SplitIndex bundle
%% without such generated files.
%% 
%% The list of all files belongig to the SplitIndex bundle is given in
%% in the file `manifest.txt'. Files generated by means of unpacking the
%% distribution (using, for example, the docstrip program) or by means
%% of compiling them from a source file, for example, from splitindex.c
%% or splitindex.java may be distributed at the distributor's discretion.
%% However if they are distributed then a copy of the SplitIndex bundle
%% must be distributed together with them.
%% 
%% The list of derived (unpacked or compiled) files belongig to the
%% distribution and covered by LPPL is defined by the unpacking scripts
%% (with extension .ins) and the installation script (with name
%% install.sh) which are part of the distribution.
%% 
%% Two often ignorred clauses from LPPL 1.3c you should not ignore:
%% ----------------------------------------------------------------
%% 2. You may distribute a complete, unmodified copy of the Work as you
%%    received it.  Distribution of only part of the Work is considered
%%    modification of the Work, and no right to distribute such a Derived
%%    Work may be assumed under the terms of this clause.
%% 3. You may distribute a Compiled Work that has been generated from a
%%    complete, unmodified copy of the Work as distributed under Clause 2
%%    above, as long as that Compiled Work is distributed in such a way that
%%    the recipients may install the Compiled Work on their system exactly
%%    as it would have been installed if they generated a Compiled Work
%%    directly from the Work.
%% 
\ProvidesPackage{splitidx}[%
 2013/04/09 v1.2a multiple indices for LaTeX]
\DeclareOption{makeindex}{\AtEndOfPackage{\makeindex}}
\DeclareOption{useindex}{%
  \def\@se@nd@xc@d@{\let\index\sindex}%
  \AtEndOfPackage{\@se@nd@xc@d@}%
}
\let\@se@nd@xc@d@\relax
\DeclareOption{allatone}{%
  \PackageWarning{splitidx}{Option `allatone' deprecated!\MessageBreak
    You should replace it by `allintoone'}%
  \ifx\@se@nd@xc@d@\relax\else
    \PackageInfo{splitidx}{option `allatone' overwrites option `useindex'}%
    \let\@se@nd@xc@d@\relax
  \fi
  \AtEndOfPackage{%
    \renewcommand*{\sindex}[1][]{\index}%
    \g@addto@macro\makeindex{\renewcommand*{\sindex}[1][]{\index}}%
  }%
}
\DeclareOption{allintoone}{%
  \ifx\@se@nd@xc@d@\relax\else
    \PackageInfo{splitidx}{option `allintoone' overwrites option `useindex'}%
    \let\@se@nd@xc@d@\relax
  \fi
  \AtEndOfPackage{%
    \renewcommand*{\sindex}[1][]{\index}%
    \g@addto@macro\makeindex{\renewcommand*{\sindex}[1][]{\index}}%
  }%
}
\newif\if@verbindex\@verbindexfalse
\DeclareOption{protected}{\@verbindextrue}
\newif\if@newidxcmd\@newidxcmdfalse
\DeclareOption{idxcommands}{\@newidxcmdtrue}
\newif\if@splitidx\@splitidxfalse
\DeclareOption{split}{\@splitidxtrue}
\ProcessOptions\relax
\newcommand*\see[2]{\emph{\seename} #1}
\providecommand*\seealso[2]{\emph{\alsoname} #1}
\providecommand\seename{see}
\providecommand*\alsoname{see also}
\newcommand*{\sindex}[2][]{%
}
\g@addto@macro\makeindex{%
  \renewcommand*{\sindex}{%
    \@bsphack\begingroup
    \@sanitize
    \@wrsindex
  }%
  \typeout{Using splitted index at \jobname.idx}%
  \@se@nd@xc@d@
}
\newcommand*{\@wrsindex}[2][]{%
  \ifx\relax#1\relax
    \if@splitidx
      \@wrsindex[idx]{#2}%
    \else
      \def\@tempa{#2}%
      \if@verbindex\@onelevel@sanitize\@tempa\fi
      \@wrindex{\@tempa}%
    \fi
  \else
    \def\@tempa{#2}%
    \csname index@#1@hook\endcsname
    \expandafter\ifx\csname @@wrsindex\endcsname\relax
      \@@@wrsindex{#1}{{\@tempa}{\thepage}}%
    \else
      \def\@tempb{\@@wrsindex{#1}}%
      \expandafter\@tempb\@tempa||\\%
    \fi
    \endgroup
    \@esphack
  \fi
}
\newcommand*{\@@@wrsindex}[2]{%
  \begingroup
    \if@splitidx
      \expandafter\ifx\csname @indexfile@#1\endcsname\relax
        \PackageError{splitidx}{%
          Index entry for not existing index%
        }{%
          You've tried to set an index to index `#1', without
          defining\MessageBreak
          that index before using \string\newindex.\MessageBreak
          This is only allowed, if you are not using package option
          `split'.%
        }%
      \else
        \expandafter\protected@write\csname @indexfile@#1\endcsname{%
          \csname index@#1@writehook\endcsname
          \csname index@#1@writehook@once\endcsname
        }{%
          \string\indexentry#2%
        }%
      \fi
    \else
      \protected@write\@indexfile{%
        \csname index@#1@writehook\endcsname
        \csname index@#1@writehook@once\endcsname
      }{%
        \string\indexentry[#1]#2%
      }%
    \fi
  \endgroup
}
\AtBeginDocument{%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname ifHy@hyperindex\endcsname\relax
  \else
    \csname ifHy@hyperindex\endcsname
      \expandafter\ifx\csname @@wrsindex\endcsname\relax
        \def\@@wrsindex#1#2|#3|#4\\{%
          \ifx\\#3\\%
            \@@@wrsindex{#1}{{#2|hyperpage}{\thepage}}%
          \else
            \def\Hy@temp@A{#3}%
            \ifx\Hy@temp@A\HyInd@ParenLeft
              \@@@wrsindex{#1}{{#2|#3hyperpage}{\thepage}}%
            \else
              \ifx\Hy@temp@A\HyInd@ParenRight
                \@@@wrsindex{#1}{{#2|#3hyperpage}{\thepage}}%
              \else
                \@@@wrsindex{#1}{{#2|#3}{\thepage}}%
              \fi
            \fi
          \fi
        }%
      \fi
    \csname fi\endcsname
  \fi
}
\newcommand*{\AtWriteToIndex}[1]{%
  \expandafter\ifx\csname index@#1@writehook\endcsname\relax
    \expandafter\let\csname index@#1@writehook\endcsname\@empty
  \fi
  \expandafter\g@addto@macro\csname index@#1@writehook\endcsname
}
\newcommand*{\AtNextWriteToIndex}[1]{%
  \expandafter\ifx\csname index@#1@writehook@once\endcsname\relax
    \expandafter\gdef\csname index@#1@writehook@once\endcsname{%
      \expandafter\global\expandafter\let\expandafter
      \csname index@#1@writehook@once\endcsname\relax
    }%
  \fi
  \expandafter\g@addto@macro\csname index@#1@writehook@once\endcsname
}
\newcommand*{\printindex}{%
  \@ifstar {%
    \begingroup
      \let\printindex@@endhook=\printindex@endhook
      \let\printindex@endhook=\relax
      \printindices%
      \csname printindex@@endhook\endcsname
    \endgroup
  }{%
    \@ifnextchar [\@printindex%] brace check comment
    {%
      \@input@{\jobname.ind}%
      \csname printindex@endhook\endcsname
    }%
  }%
}
\newcommand*{\@printindex}{}
\def\@printindex[#1]{%
  \@ifnextchar [%
  {\@@printindex[{#1}]}%
  {\@@printindex[{#1}][\csname index@#1@name\endcsname]}%
}
\newcommand*{\@@printindex}{}
\def\@@printindex[#1][#2]{%
  \begingroup
    \edef\indexshortcut{#1}%
    \def\indexname{#2}%
    \let\index@preamble\relax
    \expandafter\let\expandafter\index@preamble
    \csname index@\indexshortcut @preamble\endcsname
    \if@splitidx
      \def\@tempa{idx}\def\@tempb{#1}%
      \ifx\@tempa\@tempb\let\@indexsuffix\@gobble\fi
    \fi
    \@input@{\jobname\@indexsuffix{#1}.ind}%
  \endgroup
  \csname printindex@endhook\endcsname
}
\begingroup
\catcode`\-12
\lowercase{\endgroup
  \newcommand*{\@indexsuffix}[1]{-#1}%
}
\newcommand*{\printindices}{%
  \ifx\@indices\@empty
    \printindex
  \else
    \begingroup
      \@for\@tempa:=\@indices\do{%
        \expandafter\printindex\expandafter[\@tempa]%
      }%
    \endgroup
  \fi
}
\newcommand*{\newindex}[2][\relax]{%
  \@ifundefined{index@#2@name}{%
    \if@verbindex
      \expandafter\gdef\csname index@#2@hook\endcsname{%
        \@onelevel@sanitize\@tempa
      }%
    \else
      \expandafter\gdef\csname index@#2@hook\endcsname{}%
    \fi
    \ifx\@indices\@empty
      \xdef\@indices{#2}%
    \else
      \xdef\@indices{\@indices,#2}%
    \fi
    \ifx \relax#1
      \expandafter\xdef\csname index@#2@name\endcsname{#2}%
    \else
      \expandafter\xdef\csname index@#2@name\endcsname{#1}%
    \fi
    \if@newidxcmd
      \expandafter\newcommand\expandafter*\csname #2\endcsname{}%
      \expandafter\gdef\csname #2\endcsname{%
        \sindex[#2]%
      }%
    \fi
    \if@splitidx
      \def\@tempa{#2}\def\@tempb{idx}%
      \ifx\@tempa\@tempb
        \global\let\@indexfile@idx=\@indexfile
      \else
        \expandafter\newwrite\csname @indexfile@#2\endcsname
        \expandafter\immediate\expandafter\openout
        \csname @indexfile@#2\endcsname=\jobname-#2.idx
      \fi
    \fi
  }{%
    \PackageError{splitidx}{%
      index `#2' already defined%
    }{%
      You have already defined an index with shortcut `#2'.\MessageBreak
      You can't define a new index with the same shortcut. If you'll continue
      \MessageBreak
      The new definition will be ignored.%
    }%
  }%
}
\if@splitidx
  \@onlypreamble\newindex
\fi
\newcommand*{\newprotectedindex}[2][\relax]{%
  \begingroup\@verbindextrue\newindex[{#1}]{#2}\endgroup
}
\newcommand*{\@indices}{}
\gdef\@indices{}
\newcommand{\extendtheindex}[4]{%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname splitindex@theindex\endcsname\relax
    \let\splitindex@theindex=\theindex
    \let\endsplitindex@theindex=\endtheindex
  \fi
  \renewcommand*{\theindex}{%
    #1\splitindex@theindex #2%
  }%
  \renewcommand*{\endtheindex}{%
    #3\endsplitindex@theindex #4%
  }%
}
\newcommand{\splitindex@setip}{}
\let\splitindex@setip\setindexpreamble
\let\setindexpreamble\relax
\newcommand{\setindexpreamble}[2][]{%
  \ifx \relax#1\relax
    \begingroup\expandafter\expandafter\expandafter\endgroup
    \expandafter\ifx\csname splitindex@setip\endcsname\relax
      \@namedef{index@preamble}{#2}%
    \else
      \splitindex@setip{#2}%
    \fi
  \else
    \@namedef{index@#1@preamble}{#2}%
  \fi
}
\newcommand{\useindexpreamble}[1][]{%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname index@preamble\endcsname\relax\else
    \ifx\index@preamble\@empty\else
      \index@preamble #1%
    \fi
  \fi
}
\newcommand*{\printsubindex}{%
  \begingroup
    \begingroup\expandafter\expandafter\expandafter\endgroup
    \expandafter\ifx\csname chapter\endcsname\relax
      \let\section\subsection
      \begingroup\expandafter\expandafter\expandafter\endgroup
      \expandafter\ifx\csname addsec\endcsname\relax\else
        \def\addsec{\setcounter{secnumdepth}{0}\subsection}%
      \fi
    \else
      \let\chapter\section
      \def\@makeschapterhead{\section*}
      \let\@makechapterhead\section
      \begingroup\expandafter\expandafter\expandafter\endgroup
      \expandafter\ifx\csname addchap\endcsname\relax\else
        \let\addchap\addsec
      \fi
    \fi
    \let\onecolumn\@firstoptofone
    \let\twocolumn\@firstoptofone
    \let\clearpage\relax
    \let\cleardoublepage\relax
    \def\markboth{\expandafter\markright\@gobble}%
    \ifx\@mkboth\@gobble\else\let\@mkboth\markboth\fi
    \let\thispagestyle\@gobble
    \let\printindex@endhook=\endgroup
    \printindex
}
\providecommand{\@firstoptofone}[1][]{#1}
\endinput
%%
%% End of file `splitidx.sty'.
