diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/splitindex/splitidx.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/splitindex/splitidx.sty | 366 |
1 files changed, 366 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/splitindex/splitidx.sty b/Master/texmf-dist/tex/latex/splitindex/splitidx.sty new file mode 100644 index 00000000000..53c585e9655 --- /dev/null +++ b/Master/texmf-dist/tex/latex/splitindex/splitidx.sty @@ -0,0 +1,366 @@ +%% +%% 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}[% + 2009/02/28 v1.1a 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}{% + \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}}% + }% +} +\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'. |