summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/splitindex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-03-28 00:35:49 +0000
committerKarl Berry <karl@freefriends.org>2009-03-28 00:35:49 +0000
commit26ed61774040442728cbee707dc6e492b5085674 (patch)
tree85c365b3b8cc847e68a312c73b9f8cc1ca083916 /Master/texmf-dist/tex/latex/splitindex
parent87a534fcd4ae6214e3b7f9f91977abfee4582fcf (diff)
splitindex is back, will fix man page tomorrow (25mar09)
git-svn-id: svn://tug.org/texlive/trunk@12544 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/splitindex')
-rw-r--r--Master/texmf-dist/tex/latex/splitindex/splitidx.sty366
-rw-r--r--Master/texmf-dist/tex/latex/splitindex/splitindex.tex189
2 files changed, 555 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'.
diff --git a/Master/texmf-dist/tex/latex/splitindex/splitindex.tex b/Master/texmf-dist/tex/latex/splitindex/splitindex.tex
new file mode 100644
index 00000000000..0d7c4ecce52
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/splitindex/splitindex.tex
@@ -0,0 +1,189 @@
+% ======================================================================
+% splitindex.tex
+% Copyright (c) Markus Kohm, 2002-2009
+%
+% $Id: splitindex.tex,v 1.3 2009-03-20 14:55:11 mjk Exp $
+%
+% This file is part 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.
+%
+% 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.
+% ======================================================================
+
+% Set newlinechar
+\newlinechar`\^^J
+
+% Tell program information
+\message{splitindex.tex 0.1^^J%
+ Copyright (c) 2002 Markus Kohm <kohm@gmx.de>^^J^^J}
+
+% Change \catcode of At to be a letter
+\catcode`\@11\relax
+
+% New end processing command (one of these should do the job)
+\def\endprocessing{%
+ \csname @@end\endcsname
+ \csname end\endcsname
+ \csname endinput\endcsname
+}
+
+% Check out, if we are using LaTeX or plainTeX:
+\let\@earlyend\relax
+\def\@tempa{LaTeX2e}
+\expandafter\ifx\csname fmtname\endcsname\@tempa
+\else
+ \def\@tempa{plain}
+ \expandafter\ifx\csname fmtname\endcsname\@tempa
+ \def\newwrite{\alloc@7\write\chardef\sixt@@n}% not longer \outer
+ \chardef\@inputcheck=0\relax
+ \else
+ \message{Unkown format \csname fmtname\endcsname^^J
+ You have to use plainTeX or LaTeX2e to run
+ splitindex.tex!^^J}
+ \let\@earlyend\endprocessing
+ \fi
+\fi
+\@earlyend
+
+% Is \idx defined to the name of the raw index file?
+\expandafter\ifx\csname idx\endcsname\relax
+% no it isn't
+ \message{Enter the name of the idx file to be processed: }%
+ \advance\endlinechar\@M
+ \read\m@ne to\idx
+ \advance\endlinechar-\@M
+\fi
+
+% Sorry to late for log file
+\def\setjobname#1.idx#2\\{\def\jobname{#1}}
+\expandafter\setjobname\idx.idx\\
+
+\let\@earlyend\relax
+\openin\@inputcheck\idx %
+\ifeof\@inputcheck
+ \ifx\jobname\idx
+ \openin\@inputcheck\jobname.idx %
+ \ifeof\@inputcheck
+ \message{Error: Neither file `\idx' nor file `\jobname.idx' found!^^J}%
+ \let\@earlyend\endprocessing
+ \else
+ \xdef\idx{\jobname.idx}%
+ \fi
+ \else
+ \message{Error: File `\idx' not found!^^J}%
+ \let\@earlyend\endprocessing
+ \fi
+\fi
+\@earlyend
+
+\message{Read from file: \idx^^J%
+ Write to files: \jobname-*.idx^^J}
+
+% We are ready to do the processing
+
+% First we have to do the tricky splitting of the input line.
+% We do not allow lines which don't start with \indexentry.
+% We do not support other index file definitions but with an
+% optional argument of \indexentry.
+% We need some catcode changes to read and split the line. So
+% we do this part of the processing at a group.
+\newtoks\verbatim@line
+\begingroup
+\catcode`\^^M\active
+
+\begingroup
+\catcode`\|=0
+\catcode`\\=12
+|gdef|splitidxline\indexentry#1{%
+ |if #1[%
+ |expandafter|@splitidxline%
+ |else%
+ |expandafter |@splitidxline |expandafter i|expandafter d%
+ |expandafter x|expandafter ]|expandafter#1%
+ |fi%
+}
+|endgroup
+
+\gdef\@splitidxline#1]#2^^M{%
+ \idxwrite{#1}{\string\indexentry#2}%
+}
+
+\gdef\processidxline{%\message{\the\verbatim@line}%
+ \expandafter\splitidxline\verbatim@line^^M
+}
+\endgroup
+
+% Now, we can do the main job: writing to the index files
+\def\idxwrite#1#2{%
+ \expandafter\ifx\csname write@#1\endcsname\relax
+ % We need a new file
+ \message{New index file: \jobname-#1.idx^^J}%
+ \expandafter\newwrite\csname write@#1\endcsname
+ \immediate\openout\csname write@#1\endcsname \jobname-#1.idx %
+ % FixMe: Don't close by end TeX run but use \closeout
+ \fi
+ \immediate\write\csname write@#1\endcsname{#2}%
+}
+
+% Read the file verbatim and process the lines
+\newif\ifnoteof
+\newtoks\par@tok\par@tok{\par}
+\def\@makeother#1{\catcode`#112\relax}
+\def\processidxfile{
+ \immediate\openin\@inputcheck \idx %
+ \noteoftrue
+ \loop
+ \ifeof\@inputcheck \noteoffalse\fi
+ \ifnoteof
+ \begingroup
+ \let\do\@makeother\dospecials
+ \immediate\read\@inputcheck to \verbatim@line
+ \if\par@tok\verbatim@line\else
+ \processidxline
+ \fi
+ \endgroup
+ \repeat
+}
+
+\processidxfile
+
+% Trick to end processing in TeX and LaTeX
+\endprocessing
+%%% Local Variables:
+%%% mode: tex
+%%% TeX-master: t
+%%% End: