From 26ed61774040442728cbee707dc6e492b5085674 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 28 Mar 2009 00:35:49 +0000 Subject: splitindex is back, will fix man page tomorrow (25mar09) git-svn-id: svn://tug.org/texlive/trunk@12544 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/splitindex/splitidx.sty | 366 +++++++++++++++++++++ .../texmf-dist/tex/latex/splitindex/splitindex.tex | 189 +++++++++++ 2 files changed, 555 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/splitindex/splitidx.sty create mode 100644 Master/texmf-dist/tex/latex/splitindex/splitindex.tex (limited to 'Master/texmf-dist/tex/latex') 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 ^^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: -- cgit v1.2.3