summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/splitindex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-03-05 16:52:20 +0000
committerKarl Berry <karl@freefriends.org>2009-03-05 16:52:20 +0000
commit36f6715604625a3e362534859befd7f94e2f4414 (patch)
treea6e5540dfdc072b17d86ae5667f8d8ceae901522 /Master/texmf-dist/source/latex/splitindex
parent58ad5c5ba60b9db988e2cb1c9301fcd77fcbc0c8 (diff)
rm splitindex, requires compilation
git-svn-id: svn://tug.org/texlive/trunk@12317 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/splitindex')
-rw-r--r--Master/texmf-dist/source/latex/splitindex/splitidx.dtx1505
-rw-r--r--Master/texmf-dist/source/latex/splitindex/splitidx.ins93
-rw-r--r--Master/texmf-dist/source/latex/splitindex/splitindex.c576
3 files changed, 0 insertions, 2174 deletions
diff --git a/Master/texmf-dist/source/latex/splitindex/splitidx.dtx b/Master/texmf-dist/source/latex/splitindex/splitidx.dtx
deleted file mode 100644
index 6b279faace6..00000000000
--- a/Master/texmf-dist/source/latex/splitindex/splitidx.dtx
+++ /dev/null
@@ -1,1505 +0,0 @@
-% \CheckSum{555}
-% \iffalse
-% ======================================================================
-% splitindex.dtx
-% Copyright (c) Markus Kohm, 2002-2006
-%
-% $Id: splitidx.dtx,v 1.17 2006/07/29 07:00:46 mjk Exp $
-%
-% This file is part of the `SplitIndex bundle'.
-% ---------------------------------------------
-%
-% This file can be redistributed and/or modified under the conditions
-% of the LaTeX Project Public License, either version 1.3a of this
-% license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3a or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has status 'maintained'.
-% Maintainer is Markus Kohm <komascript@gmx.info>.
-%
-% You are not allowed to redistribute this file without all the
-% other files of the `SplitIndex bundle'. The list of all files
-% belonging to the `SplitIndex bundle' is given in the file
-% `manifest.txt'.
-% ======================================================================
-%
-%<*dtx>
-% \fi
-\ProvidesFile{splitidx.dtx}[%
-% \iffalse
-%</dtx>
-%<driver>\ProvidesFile{splitidx.drv}[%
-%<package>\ProvidesPackage{splitidx}[%
-% \fi
- 2006/07/30 v1.0 multiple indices for LaTeX]
-% \iffalse
-%<*driver>
-\documentclass{ltxdoc}
-\usepackage{color,alltt}
-\newcommand*{\Prompt}{{\color{green}\textbf{\$}}}
-\newcommand*{\Package}{}\let\Package\textsf
-\newcommand*{\Class}{}\let\Class\textsf
-\newcommand*{\Program}{}\let\Program\textsf
-\newcommand*{\File}{}\let\File\texttt
-\newcommand*{\Cmdline}{}\let\Cmdline\texttt
-\providecommand*{\url}{\texttt}
-\CodelineIndex
-\RecordChanges
-\EnableCrossrefs
-\GetFileInfo{splitidx.dtx}
-\title{Creating More Than One Index Using \Package{splitidx} And
- \Program{SplitIndex}\thanks{This file is version \fileversion{} of file
- \File{\filename}. Nevertheless it should be stable.}}
-\author{Markus Kohm\thanks{Markus Kohm \textless komascript\textcircled{\tiny at}gmx.info\textgreater}}
-\date{\filedate}
-\begin{document}
-\maketitle
-\begin{abstract}
- With \Package{makeidx} there's a standard package at \LaTeX{} to create
- one index to each document. But some times more than one index is
- needed. There are different packages with different solutions and different
- problems to achieve multiple indices. Here is one more.
-\end{abstract}
-\tableofcontents
-\DocInput{splitidx.dtx}
-\end{document}
-%</driver>
-% \fi
-%
-% \DoNotIndex{\DeclareOption,\AtEndOfPackage,\renewcommand,\g@addto@macro}
-% \DoNotIndex{\renewcommand,\ProcessOptions,\relax,\newcommand,\emph}
-% \DoNotIndex{\providecommand,\@bsphack,\@esphack,\@sanitize,\typeout}
-% \DoNotIndex{\begingroup,\endgroup,\jobname,\ifx,\else,\fi,\expandafter}
-% \DoNotIndex{\csname,\endcsname,\protected@write,\AtBeginDocument}
-% \DoNotIndex{\ifHy@hyperindex,\@indexfile,\thepage,\Hy@temp@A}
-% \DoNotIndex{\HyInd@ParenLeft,\HyInd@ParenRight,\string,\@ifstar,\@input@}
-% \DoNotIndex{\@ifnextchar,\edef,\let,\@empty,\@for,\@tempa,\xdef,\def}
-% \DoNotIndex{\catcode,\lowercase,\do,\@ifundefined,\PackageError}
-% \DoNotIndex{\MessageBreak,\gdef,\@namedef,\setcounter,\@gobble.\-,\\}
-% \DoNotIndex{\@onlypreamble,\@tempb,\@wrindex,\immediate,\newif,\newwrite}
-% \DoNotIndex{\openout,\@gobble}
-%
-% \section{Introduction}
-%
-% First of all you have to know how index generation normally would be
-% done. Read \cite{makeindex} and e.g. \cite{makeindexmanual} if you
-% don't.
-%
-% Generally you load a package e.g. \Package{makeidx}, put \cs{index} commands
-% into your document, which are written as \cs{indexentry} commands to the raw
-% index file ``\File{\cs{jobname}.idx}''. Then you call an \emph{index
-% processor} like \Program{MakeIndex} or \Program{xindy}, which generates a
-% sorted index file ``\File{\cs{jobname}.ind}''. This will be included with a
-% command like \cs{printindex} at the end of your document.
-%
-% Most packages, which allows more than one index, open more than one raw
-% index file. Each of these files costs a write file handle. \TeX{} has only
-% 16 of these. \LaTeX{} itself needs some of these for e.g. \File{.aux},
-% \File{.toc}, \File{.lot}, \File{.lof} and maybe other more or less temporary
-% files depends on what you are doing. With package option \texttt{split}
-% package \Package{splitidx} works like those packages.
-%
-% Without option \texttt{split} the \Package{splitidx} package needs only one
-% raw index file like \Package{makeidx} would. This one raw index files
-% contains all the index entries for all the indices you defined. But to do so
-% \Package{splitidx} and the index processor need help. Before calling the
-% index processor the one raw index file has to be splitted into multiple raw
-% index files. Each of these contains the index entries of one index. This
-% splitting can be done with the \Program{splitindex} program.
-%
-% There is not only one \Program{SplitIndex} program, there are
-% \Program{SplitIndex} programs in different programming languages:
-% \begin{description}
-% \item[\Program{splitindex.pl}] This is written in perl. You need a perl
-% interpreter to run it. If you are a Unix user, you have a perl interpreter
-% and you can call \Program{splitindex.pl} like you would call a binary
-% program or a shell script from your shell. This is the reference
-% implementation. I prefers to use this\,---\,because it was the first, the
-% easiest and the shortest to be written.
-% \item[\Program{splitindex.jar}] This is written using Sun Java 1.4.1. You
-% can find the source at \File{splitindex.java}. I wrote it, because Java is
-% everywhere and may be installed everywhere and a lot of people are able to
-% understand Java source files. But if you don't have Sun Java 1.4 the start
-% of this program will result in errors\,---\,e.g.
-% \begin{quote}
-% \texttt{Exception in thread "main" java.util.zip.ZipException: No such
-% file or directory}
-% \end{quote}
-% if you try to start it with Sun Java 1.3.
-% \item[\Program{splitindex-Linux-i386}] This is a Linux-i386-ELF binary from
-% the C source file \File{splitindex.c}. It will be renamed to
-% \Program{splitindex} during installation, if you are using Linux-i386. At
-% section~\ref{C} you find a introduction in how to compile
-% \File{splitindex.c} yourself e.g. if you are using Linux-PPC. I wrote the
-% C source, because a lot of people like to have a binary and most software
-% authors understand C and some people want fast binaries instead of slow
-% Java bit code\,---\,even, if the Java program is fast enough.
-% \item[\Program{splitindex-OpenBSD-i386}] This is a OpenBSD-i386 binary from
-% the C source file \File{splitindex.c}. It will be renamed to
-% \Program{splitindex} during installation, if you are using
-% OpenBSD-i386. It is almost the same like
-% \Program{splitindex-Linux-i386}\,---\,but it doesn't understand long
-% option names.
-% \item[\Program{splitindex.exe}] This is a CygWin binary from the C source
-% file \File{splitindex.c}. A CygWin binary is a Windows (Win32) binary
-% using the CygWin DLL. At section~\ref{C} you find a introduction in how to
-% use a CygWin binary without installing a whole CygWin
-% environment\,---\,nevertheless it is nice to have a almost complete
-% CygWin.
-% \item[\Program{splitindex.tex}] This is a \TeX{} version of the
-% program. Yes, you are right: it is a program written in \TeX{}. It has not
-% the whole functionality of the other programs (see section~\ref{TeX}), but
-% it is system independent and you don't need to install a other program
-% like perl or Sun Java 1.4. It is not impossible to fix all the
-% disadvantages of this program\,---\,but it isn't easy and much more work
-% than all the other program.
-% \end{description}
-% Without the \TeX{} version of \Program{splitindex} all of these programs are
-% also able to call the index processor after creating the raw index files.
-%
-% And where is the lisp, the smalltalk, the prolog, the \dots{} version of
-% \Program{splitindex}? Hey, four languages are enough for me! If you need one
-% more, write it!
-%
-%
-% \section{Using the \Package{splitidx} package}
-% \label{package}
-%
-%
-% \subsection{Generating a raw index}
-%
-% You may use \Package{splitidx} as a drop-in-replacement for
-% \Package{makeidx}. If you do so, you just have to replace:
-% \begin{verbatim}
-% \usepackage{makeidx}
-% \end{verbatim}\vspace{-\baselineskip}
-% by
-% \begin{verbatim}
-% \usepackage{splitidx}
-% \end{verbatim}\vspace{-\baselineskip}
-%
-% \DescribeMacro{\makeindex}
-% To activate index generation you may use \cs{makeindex}, which is declared
-% by the \LaTeX{} kernel.
-% You may also load the package with option
-% \texttt{makeindex}:
-% \begin{verbatim}
-% \usepackage[makeindex]{splitidx}
-% \end{verbatim}\vspace{-\baselineskip}
-% which is almost the same like:
-% \begin{verbatim}
-% \usepackage{splitidx}\makeindex
-% \end{verbatim}\vspace{-\baselineskip}
-%
-% \DescribeMacro{\index}
-% After loading the package you may use command \cs{index}. You can find the
-% description of the argument and features of this command at
-% \cite{makeindex}. The \Program{splitindex} programs (see
-% section~\ref{program}) put all index entries, which are produced with
-% \cs{index} to the index with shortcut ``\texttt{idx}''.
-%
-% \DescribeMacro{\sindex}
-% The \Package{splitidx} package also defines the command \cs{sindex} with the
-% syntax:
-% \begin{quote}
-% \cs{sindex}\oarg{shortcut}\marg{index-entry}
-% \end{quote}
-% to be used to put an index
-% entry into the index with the optional given shortcut. If you omit optional
-% \meta{shortcut} the shortcut ``\texttt{idx}'' will be used.
-% If you use \cs{sindex} you need to split the raw index file into several raw
-% index files, before generating the index with an index processor like
-% \Program{MakeIndex}. See section~\ref{program} for more information about
-% splitting the raw index file.
-%
-% The shortcut is used not only to distinguish between the different
-% indices. It is also used as part of the name of the raw index file generated
-% by a \Program{splitindex} program (see section~\ref{program}) and the
-% corresponding index file generated by an index processor like
-% \Program{MakeIndex} (see \cite{makeindexmanual}). So you should not use
-% characters or symbols at \meta{shortcut} which are not allowed at
-% filenames. At file systems, which are not case sensitive, you should not mix
-% upper and lower case letters. Best would be, if you'll use only lower case
-% letters.
-%
-% Under some unfortunate circumstances you may be forced to put all your index
-% entries back to one index. The easiest way to do this without changing all
-% \cs{sindex} commands into \cs{index} commands is the package option
-% \texttt{allatone}. If you load the package with:
-% \begin{verbatim}
-% \usepackage[allatone]{splitidx}
-% \end{verbatim}\vspace{-\baselineskip}
-% or
-% \begin{verbatim}
-% \usepackage[allatone,makeindex]{splitidx}
-% \end{verbatim}\vspace{-\baselineskip}
-% \cs{sindex}\oarg{shortcut}\marg{indexentry} will result in
-% \cs{index}\marg{indexentry}.
-%
-% If you like, you may also declare that \cs{index} should be the same
-% like command \cs{sindex}. In this case, you may use package
-% option \texttt{useindex}, e.g.:
-% \begin{verbatim}
-% \usepackage[useindex]{splitidx}
-% \end{verbatim}\vspace{-\baselineskip}
-% This may be usefull using packages like \textsf{jurabib} that expects
-% \cs{index} to be the index command.
-%
-% \emph{Note: Currently only one of the options \texttt{allatone} and
-% \texttt{useindex} can be used at same time. If you are using both
-% \texttt{useindex} will be disabled! This may result in many error
-% messages!}
-%
-%
-% \subsection{Printing an index}
-%
-% \DescribeMacro{\newindex}
-% If you want to generate more than one index without shortcut, you should
-% declare this using \cs{newindex} with syntax:
-% \begin{quote}
-% \cs{newindex}\oarg{index name}\marg{shortcut}.
-% \end{quote}
-% The mandatory argument \meta{shortcut} is used to distinguish the different
-% indices. See description of \cs{sindex} for more information about this. The
-% optional argument \meta{index name} is the name of the index. This is also
-% the default heading of this index used from \cs{printindex} and
-% \cs{printsubindex}. If you omit \meta{index name} the shortcut will be used
-% as index name.
-%
-% Some people do not like to call an extra program like
-% \Program{splitindex}. For those the package option \texttt{split} has been
-% implemented. With this option \Package{splitidx} opens a new file for each
-% index, which is declared using \cs{newindex}. If you are using this option,
-% you have to declare all indices you want to use at the preamble of your
-% document. This also uses the default \File{idx} file for index entries to
-% index with shortcut \texttt{idx}. The number of index files, you can open is
-% limited, if you are using this option. This is because of the limitation of
-% output streams \TeX{} provides. With this option not only \cs{newindex} may
-% result in an error but also \cs{tableofcontents}, \cs{listoffigures},
-% \cs{listoftables} and each other command, which allocates an output stream.
-%
-% Some people do not like to write \cs{sindex[foo]}\marg{entry}. They want to
-% write \cs{foo}\marg{entry}. For those of you the package option
-% `\texttt{idxcommands}' has been implemented. This defines a command with the
-% name of the \meta{shortcut} for each declared index. If you are using this
-% option, you'll get an error, if a shortcut is the name of an already defined
-% command. And if you are using this option, the characters of the shortcuts
-% must be letters.
-%
-% \DescribeMacro{\newprotectedindex}
-% Using standard index package \textsf{makeidx} the \LaTeX{} kernel command
-% \cs{index} may expand the argument of \cs{index}. The kernel uses
-% \cs{@santize} to avoid this in some cases. But this fails, if the argument
-% was already read e.g. by another macro. So if you define a macro, that reads
-% an argument, does something with the argument and write it to the index this
-% may expand the argument. Try following:
-% \begin{verbatim}
-% \documentclass{article}
-% \usepackage{ngerman}
-% \usepackage{makeidx}\makeindex
-% \newcommand*{\Test}[1]{#1\index{#1}}
-% \begin{document}
-% \Test{"Anderung}
-% "Anderung\index{"Anderung}
-% \end{document}
-% \end{verbatim}\vspace{-\baselineskip}
-% This will result in two entries at the \texttt{.idx} file:
-% \begin{verbatim}
-% \indexentry{\active@dq \dq@prtct{A}nderung}{1}
-% \indexentry{"Anderung}{1}
-% \end{verbatim}\vspace{-\baselineskip}
-% The first one is something expanded that is not wanted. Package
-% \textsf{splitindx} behaves same by default. But if you are using
-% \cs{newprotectedindex} to define a new index, it uses a trick so avoid
-% expansion. If all indices should behave like this, you may simply use
-% package option \texttt{protected}.
-% \begin{verbatim}
-% \documentclass{article}
-% \usepackage{ngerman}
-% \usepackage[protected,useindex,makeindex]{makeidx}
-% \newcommand*{\Test}[1]{#1\index{#1}}
-% \begin{document}
-% \Test{"Anderung}
-% "Anderung\index{"Anderung}
-% \end{document}
-% \end{verbatim}\vspace{-\baselineskip}
-% Will result in two entries at the \texttt{.idx} file:
-% \begin{verbatim}
-% \indexentry{"Anderung}{1}
-% \indexentry{"Anderung}{1}
-% \end{verbatim}\vspace{-\baselineskip}
-% If you want to know more about the trick, see command
-% \cs{@onelevel@sanitize} at the \LaTeX{} kernel documentation,
-% \texttt{source2e}.
-%
-%
-% \DescribeMacro{\printindex}
-% \changes{v0.2a}{2003/01/05}{fix of documentation bug}
-% The \cs{printindex} command is used to print one index or all indices, which
-% are declared using \cs{newindex}. How it behaves depends on the syntax you
-% are using.
-%
-% With syntax
-% \begin{quote}
-% \cs{printindex}\oarg{shortcut}\oarg{index name}
-% \end{quote}
-% the index file with the optional shortcut will be loaded and titled with
-% optional given index name. If \meta{index name} is omitted the default index
-% name declared with \cs{newindex} will be used.
-%
-% If the both optional arguments, \meta{shortcut} and \meta{index name}, are
-% omitted and you are using simply
-% \begin{quote}
-% \cs{printindex}
-% \end{quote}
-% it behaves like \cs{printindex} from package \Package{makeidx}. You should
-% not use this, if you are using \cs{sindex} with optional argument.
-%
-% You may also print all indices, which were declared using \cs{newindex}. Use
-% syntax:
-% \begin{quote}
-% \cs{printindex*}
-% \end{quote}
-% to do so. The indices will be printed in the order you declared them using
-% \cs{newindex}.
-%
-% \cs{printindex} uses the default index output of the class and the
-% index processor you are using. Most this will be \texttt{theindex}
-% environment, but it needn't. But \cs{printindex} will fail to set the name
-% of the index if \cs{indexname} isn't use to print the name of the
-% index. This would be a failure of the class not of the \Package{splitidx}
-% package. I don't know any class with this failure.
-%
-%
-% \DescribeMacro{\printsubindex}
-% The \cs{printsubindex} command behaves like \cs{printindex} with same syntax
-% but it does some redefinitions before printing the index, to:
-% \begin{itemize}
-% \item use \cs{section} instead of \cs{chapter} level at classes, which have
-% \cs{chapter} and \cs{subsection} instead of \cs{section} level at classes,
-% which haven't \cs{chapter},
-% \item deactivate \cs{onecolumn}, \cs{twocolumn} and \cs{clearpage},
-% \cs{cleardoublepage} to start a new page at each index,
-% \item change the mark mechanism not to use \cs{markboth} but \cs{markright}
-% for setting up the running headline.
-% \end{itemize}
-% Using this you can print multiple indices at one chapter, if you are using a
-% class with \cs{chapter}, or at one section, if you are using a class without
-% \cs{chapter}.
-%
-%
-% \DescribeMacro{\setindexpreamble}
-% If you are using a KOMA-Script class, you'll know this command. Package
-% \Package{splitidx} redefines this command to syntax:
-% \begin{quote}
-% \cs{setindexpreamble}\oarg{shortcut}\marg{preamble}
-% \end{quote}
-% So you can define a preamble for each index. Note: Package
-% \Package{splitidx} doesn't print the preamble itself. But it lets
-% \cs{index@preamble} to be the preamble of the index with the actual
-% shortcut, before printing an index using \cs{printindex} or
-% \cs{printsubindex}.
-%
-%
-% \DescribeMacro{\useindexpreamble}
-% If you are defining your own index environment or if you extend
-% \texttt{theindex} environment using e.g. \cs{extendtheindex}, you may use
-% \cs{useindexpreamble} with syntax:
-% \begin{quote}
-% \cs{useindexpreamble}\oarg{additional commands}
-% \end{quote}
-% to print the preamble of the actual index, which was set using
-% \cs{setindexpreamble}. This is not related to the KOMA-Script classes, it
-% can also be used e.g. with the standard classes. The commands from optional
-% argument \meta{additional commands} are only used, if the preamble is
-% defined and not empty.
-%
-%
-% \DescribeMacro{\indexshortcut}
-% The macro \cs{indexshortcut} is only defined at \cs{printindex} and
-% \cs{printsubindex}. It expands to the shortcut of the actual index. So you
-% may use it at your own index environment or extending the \texttt{theindex}
-% environment using e.g. \cs{extendtheindex}.
-%
-%
-% \DescribeMacro{\extendtheindex}
-% Most classes define the environment \texttt{theindex} to be used for
-% printing the index. Using \cs{extendtheindex} with syntax
-% \begin{quote}
-% \cs{extendtheindex}\marg{before begin}\marg{after begin}^^A
-% \marg{before end}\mbox{\marg{after end}}
-% \end{quote}
-% you may extend this command. The commands from \meta{before begin} are used
-% at \cs{begin\{theindex\}} just after starting the group but before starting
-% the index. The commands from \meta{after begin} are used after
-% \cs{begin\{theindex\}}. The commands from \meta{before end} are used before
-% \cs{end\{theindex\}}. The commands from \meta{after end} are used at
-% \cs{end\{theindex\}} just after ending the index but just before ending the
-% group.
-%
-%
-% \subsection{Examples}
-% \label{examples}
-%
-% Let's see how you may get more than one index. The text of the example is
-% silly, so don't think about the text, think about the usage of
-% \Package{splitidx}.
-%
-% \begin{flushleft}\ttfamily
-% \cs{documentclass}\{article\} \percentchar \textit{ We use \Class{article}
-% class \dots}\\
-% \cs{usepackage}\{splitidx\} \percentchar \textit{ \dots\ and the
-% \Package{splitidx} package}\\
-% \cs{makeindex} \percentchar \textit{ And we want index generation}\\
-% ~\\
-% \percentchar \textit{ We define 4 indices:}\\
-% \cs{newindex}[General Index]\{idx\} \percentchar \textit{ Name and shortcut
-% of the 1st index}\\
-% \cs{newindex}[Index of Animals]\{ani\} \percentchar \textit{ \dots\ 2nd
-% index}\\
-% \cs{newindex}[Index of Fruits]\{fru\} \percentchar \textit{ \dots\ 3rd
-% index}\\
-% \cs{newindex}[Index of Vegetables]\{veg\} \percentchar \textit{ \dots\ 4th
-% index}\\
-% ~\\
-% \cs{begin}\{document\}\\
-% Apples\cs{sindex}[fru]\{apple\} \percentchar \textit{ an entry to
-% }fru\texttt{ index}\\
-% and oranges\cs{sindex}[fru]\{orange\} \percentchar \textit{ an entry to
-% }fru\texttt{ index}\\
-% are fruits\cs{sindex}\{fruits\}.\ \percentchar \textit{ an implicit entry
-% to }idx\textit{ index}\\
-% Tomatoes\cs{sindex}[veg]\{tomato\} \percentchar \textit{ an entry to
-% }veg\textit{ index}\\
-% are\\
-% vegetables\cs{index}\{vegetables\}.\ \percentchar \textit{ an implicit
-% entry to }idx\textit{ index}\\
-% Cats\cs{sindex}[ani]\{cat\} \percentchar \textit{ an entry to
-% }ani\textit{ index}\\
-% are animals\cs{sindex}[idx]\{animals\}.\ \percentchar \textit{ an explicite
-% entry to }idx\textit{ index}\\
-% ~\\
-% \cs{printindex*} \percentchar \textit{ print all indices}\\
-% \cs{end}\{document\}
-% \end{flushleft}
-% After processing the file above with \LaTeX{} you'll get a raw index file
-% with following contents:
-% \begin{verbatim}
-% \indexentry[fru]{apple}{1}
-% \indexentry[fru]{orange}{1}
-% \indexentry{fruits}{1}
-% \indexentry[veg]{tomato}{1}
-% \indexentry{vegetables}{1}
-% \indexentry[ani]{cat}{1}
-% \indexentry[idx]{animals}{1}
-% \end{verbatim}\vspace{-\baselineskip}
-% Section~\ref{program} shows, how you can process this raw index file to get
-% several raw index files and several index files. You will get four index
-% files. Each of it will be input with the single \cs{printindex*} command at
-% the example above. Each will produce a single section starting on an new
-% page with one column section headings ``General Index'', ``Index of
-% Animals'', ``Index of Fruits'' and ``Index of Vegetables''. Each index is
-% printed in twocolumn mode.
-%
-% Maybe you would like to have all indices being subsections at one
-% section. You can do this, if you replace the \cs{printindex*} command at the
-% example above by the following:
-% \begin{flushleft}\ttfamily
-% \cs{twocolumn}[\percentchar\textit{ set the title onecolumn}\\
-% \ \cs{section*}\{Indices\} \percentchar\textit{ the section with the
-% indices}\percentchar\\
-% \ \cs{markboth}\{Indices\}\{Indices\} \percentchar\textit{ setting up the
-% running headline }\percentchar\\
-% ]\percentchar\textit{ but the indices twocolumn}\\
-% \cs{printsubindex*} \percentchar\textit{ print all indices}
-% \end{flushleft}
-% Note that I've used \cs{printsubindex*} instead of \cs{printindex*} at this
-% modification. You don't need to setup the running headline, if you are using
-% page style \texttt{plain}, which is default at \Class{article} class. But if
-% you're using page style \texttt{headings} you should do this, if you are
-% using \cs{section*}. If you are using a KOMA-Script class, you can use
-% \cs{addsec} or \cs{addsec*} instead of \cs{section*} to not need manual
-% updating of the running headline.
-%
-% Maybe you want the general index to be the section, while the other indices
-% should be subsections of the general index. Maybe you'll try to replace the
-% above by the following:
-% \begin{flushleft}\ttfamily
-% \percentchar\textit{\#\#\#\#\# This will not do the thing you wanted!
-% \#\#\#\#\#}\\
-% \cs{printindex}[idx] \percentchar\textit{ print index }idx\textit{ as
-% section}\\
-% \cs{printsubindex}[ani] \percentchar\textit{ print index }ani\textit{ as
-% subsection}\\
-% \cs{printsubindex}[fru] \percentchar\textit{ print index }fru\textit{ as
-% subsection}\\
-% \cs{printsubindex}[veg] \percentchar\textit{ print index }veg\textit{ as
-% subsection}\\
-% \end{flushleft}
-% But this will result in a twocolumn section with general index \texttt{idx}
-% and three onecolumn subsections with the other indices and a page break
-% after the general index. Why? At the end of \texttt{theindex} environment of
-% \cs{printindex} the onecolumn mode, which was valid before \cs{printindex}
-% will be restored. If twocolumn mode was valid before \cs{printindex} a
-% \cs{clearpage} command will be included at the end of \texttt{theindex}.
-% So what's the solution? Remembering the \cs{extendtheindex} command you can
-% write:
-% \begin{flushleft}\ttfamily
-% \cs{begingroup} \percentchar\textit{ hold following extension local to this
-% group}\\
-% \ \cs{extendtheindex}\percentchar \textit{ some changes of
-% }theindex\textit{ environment}\\
-% \ \ \{\}\percentchar\textit{ no change before beginning}\\
-% \ \ \{\}\percentchar\textit{ no change after beginning}\\
-% \ \ \{\cs{let}\cs{onecolumn}\cs{relax} \percentchar\textit{ deactivate
-% \cs{onecolumn} before ending}\\
-% \ \ \ \cs{let}\cs{clearpage}\cs{relax} \percentchar\textit{ deactivate
-% \cs{clearpage} before ending}\\
-% \ \ \}\percentchar \textit{ changes before ending}\\
-% \ \ \{\}\percentchar\textit{ no change after ending}\\
-% \ \cs{printindex}[idx] \percentchar\textit{ print index }idx\textit{ as
-% section}\\
-% \cs{endgroup} \percentchar\textit{ end group with extended }theindex\textit{
-% environment}\\
-% \cs{printsubindex}[ani] \percentchar\textit{ print index }ani\textit{ as
-% subsection}\\
-% \cs{printsubindex}[fru] \percentchar\textit{ print index }fru\textit{ as
-% subsection}\\
-% \cs{printsubindex}[veg] \percentchar\textit{ print index }veg\textit{ as
-% subsection}\\
-% \cs{onecolumn} \percentchar\textit{ finish the indices}
-% \end{flushleft}
-% With this extension the whole index will be set twocolumn with no page break
-% before the first subsection. But you have to switch back to onecolumn mode
-% manually at the end of the indices.
-%
-% The example above may be modified, if you want a onecolumn index:
-% \begin{flushleft}\ttfamily
-% \cs{begingroup} \percentchar\textit{ hold following extension local to this
-% group}\\
-% \ \cs{makeatletter} \percentchar\textit{ allow }@\textit{ at macro names}\\
-% \ \cs{extendtheindex}\percentchar \textit{ some changes of
-% }theindex\textit{ environment}\\
-% \ \ \{\cs{let}\cs{twocolumn}\cs{@firstoptofone} \percentchar\textit{
-% deactivate \cs{twocolumn}}\\
-% \ \ \ \cs{let}\cs{onecolumn}\cs{@firstoptofone} \percentchar\textit{
-% deactivate \cs{twocolumn}}\\
-% \ \ \ \cs{let}\cs{clearpage}\cs{relax} \percentchar\textit{ deactivate
-% \cs{clearpage}}\\
-% \ \ \}\percentchar \textit{ changes before beginning}\\
-% \ \ \{\}\percentchar\textit{ no change after beginning}\\
-% \ \ \{\}\percentchar\textit{ no change before ending}\\
-% \ \ \{\}\percentchar\textit{ no change after ending}\\
-% \ \cs{makeatother} \percentchar\textit{ deactivate \cs{makeatletter}}\\
-% \ \cs{printindex} \percentchar\textit{ print index}\\
-% \cs{endgroup} \percentchar\textit{ end group with extended }theindex\textit{
-% environment}
-% \end{flushleft}
-% This not only works with splitted index. You may use this also with one
-% single index.
-%
-% I hope, that these examples were useful to understand, how to use
-% \Package{splitidx}. Next section will show you, how to generate the indices
-% from a single raw index.
-%
-%
-% \section{Splitting the index}
-% \label{program}
-%
-% At most you'll call one of the \Program{splitindex} programs with one
-% parameter, the name of the raw index file, to split the raw index file into
-% several raw index files and call the index processor
-% \Program{MakeIndex}. Some of you will also set options to use another index
-% processor e.g. \Program{xindy} or to set some options of the index processor
-% e.g. ``\Cmdline{-g}'' to use German sorting with \Program{MakeIndex}. Only
-% few of you will also change the parsing of the raw index file and the
-% generation if the filenames and contents of the several new raw index files.
-%
-% The names of the options and the syntax of the Arguments is same at all of
-% the programs except \Program{splitindex.tex} (see section~\ref{TeX}):
-% \begin{description}\setlength{\labelsep}{1em}
-% \item[\texttt{--help}]
-% \item[{\makebox[1.2em][l]{\texttt{-h}}}]\vspace{-2\itemsep}
-% Show information about usage, options and arguments and terminate without
-% processing a index file.
-% \item[\texttt{--makeindex} \meta{program name}]~
-% \item[\texttt{-m} \meta{program name}]\vspace{-2\itemsep}
-% Call \meta{program name}
-% instead of \Program{makeindex} to process each generated raw index
-% file. You may set this variable to an empty value. How this may be done
-% depends on the shell, which you are using. Using bash you may achieve an
-% empty value e.g. using \texttt{""} or \texttt{''}. An empty value means:
-% Don't call an index processor.
-% \item[\texttt{--identify} \meta{regular expression}]~
-% \item[\texttt{-i} \meta{regular expression}]\vspace{-2\itemsep}
-% Uses \meta{regular
-% expression} to identify the index short cut and the contents of the
-% raw index file with this shortcut. The default value is:
-% ``\verb|^(\\indexentry)\[([^]]*)\](.*)$|''. This means:
-% \begin{description}
-% \item[{\makebox[1em][l]{\texttt{\textasciicircum}}}]
-% Search from beginning of the line.
-% \item[\texttt{(\string\\indexentry)}]~\par
-% Search for ``\verb|\indexentry|'' and
-% set group 1 to this.
-% \item[{\makebox[1em][l]{\texttt{\string\[}}}]
-% Search for ``\verb|[|'' and ignore it.
-% \item[\texttt{([\textasciicircum]]*)}]~\par
-% Search for any character which is not ``]'' and set group 2 to this.
-% \item[{\makebox[1em][l]{\texttt{\string\]}}}]
-% Search for ``\verb|]|'' and ignore it.
-% \item[\texttt{(.*)\$}]~\par
-% Search for all characters till end of line and set group 3 to these.
-% \end{description}
-% The \meta{regular expression} is POSIX~1003.2 compatible.
-% \item[\texttt{--resultis} \meta{pattern}]~
-% \item[\texttt{-r} \meta{pattern}]\vspace{-2\itemsep}
-% Set the lines, which are written to the
-% generated raw index files after identification (see option
-% \texttt{--identify}) to \meta{pattern}. Each \texttt{\$}\meta{digit} at
-% \meta{pattern} will be replaced by the corresponding group, e.g. \verb|$1|
-% will be replaced by the first group (see \texttt{--identify}). The default
-% is: ``\verb|$1$3|'', which means: contents of group 1 and group 3.
-%
-% If the \meta{regular expression} of option \texttt{--identify} doesn't
-% match a line at the raw index file the line itself will be written.
-% \item[\texttt{--suffixis} \meta{pattern}]~
-% \item[\texttt{-s} \meta{pattern}]\vspace{-2\itemsep}
-% Set the suffix of the names of the generated raw index files after
-% identification (see option \texttt{--identify}) to \meta{pattern}. Each
-% \texttt{\$}\meta{digit} at \meta{pattern} will be replaced by the
-% corresponding group, e.g. \verb|$1| will be replaced by the first group
-% (see \texttt{--identify}). The default is: ``\verb|-$2|'', which means:
-% character `\texttt{-}' followed by contents of group 2.
-%
-% If the \meta{regular expression} of option \texttt{--ifentify} doesn't
-% match a line at the raw index file, all groups will be set to
-% ``\texttt{idx}''.
-% \item[\texttt{--verbose}]
-% \item[{\makebox[1.2em][l]{\texttt{-v}}}]\vspace{-2\itemsep}
-% Increase verbosity by one. More verbose means: tell the user more about,
-% what the program is doing.
-% \item[\texttt{--version}]
-% \item[{\makebox[1.2em][l]{\texttt{-V}}}]\vspace{-2\itemsep}
-% Show information about program version and terminate without processing a
-% index file.
-% \end{description}
-% The OpenBSD binary \Program{splitindex-OpenBSD-i386} doesn't understand the
-% long option names (\texttt{--makeindex}, \texttt{--identify} \dots). But you
-% can use the alternative short option names (\texttt{-m}, \texttt{-i} \dots).
-%
-% The first no-option-argument at the command line is the name if the raw
-% index file, which has to be processed. All arguments, which follow the
-% argument ``\texttt{--}'' are interpreted as no-optional-arguments. All but
-% the first no-option-arguments will be passed to the index processor.
-%
-% You will find some examples at the following subsections.
-%
-%
-% \subsection{Using \Program{splitindex.pl}}
-% \label{perl}
-%
-% This is the reference implementation. Let's use an example to demonstrate,
-% how it works. If you have following \LaTeX{} file ``\File{allabout.tex}'':
-% \begin{verbatim}
-% \documentclass{article}
-% \usepackage[makeindex]{splitidx}
-% \begin{document}
-% Apples\sindex[fru]{apple} and oranges\sindex[fru]{orange} are
-% fruits\sindex{fruits}.
-% Tomatos\sindex[veg]{tomato} are vegetables\sindex{vegetables}.
-% Cats\sindex[ani]{cat} are animals\sindex[idx]{animals}.
-% \end{document}
-% \end{verbatim}\vspace{-\baselineskip}
-% this generates a file ``File{allabout.idx}'':
-% \begin{verbatim}
-% \indexentry[fru]{apple}{1}
-% \indexentry[fru]{orange}{1}
-% \indexentry{fruits}{1}
-% \indexentry[veg]{tomato}{1}
-% \indexentry{vegetables}{1}
-% \indexentry[ani]{cat}{1}
-% \indexentry[idx]{animals}{1}
-% \end{verbatim}\vspace{-\baselineskip}
-%
-% This file can't be processed by a index processor like
-% \Program{MakeIndex}. If you want so split these raw index file into several
-% and run the default index processor, you do the following call (the
-% \Prompt{} is a symbol for the shell prompt):
-% \begin{quote}
-% \Prompt{}\verb|splitindex.pl allabout.idx|
-% \end{quote}
-% You may omit the extension ``\File{.idx}'':
-% \begin{quote}
-% \Prompt{}\verb|splitindex.pl allabout|
-% \end{quote}
-% Both commands will result in a file \File{allabout-fru.idx}:
-% \begin{verbatim}
-% \indexentry[fru]{apple}{1}
-% \indexentry[fru]{orange}{1}
-% \end{verbatim}\vspace{-\baselineskip}
-% a file \File{allabout-idx.idx}
-% \begin{verbatim}
-% \indexentry{fruits}{1}
-% \indexentry{vegetables}{1}
-% \indexentry{animals}
-% \end{verbatim}\vspace{-\baselineskip}
-% a file \File{allabout-veg.idx}:
-% \begin{verbatim}
-% \indexentry[veg]{tomato}{1}
-% \end{verbatim}\vspace{-\baselineskip}
-% and a file \File{allabout-ani.idx}:
-% \begin{verbatim}
-% \indexentry[ani]{cat}{1}
-% \end{verbatim}\vspace{-\baselineskip}
-% After generation of these files, it calls the default index processor using
-% the command lines:
-% \begin{verbatim}
-% makeindex allabout-fru.idx
-% makeindex allabout-idx.odx
-% makeindex allabout-veg.idx
-% makeindex allabout-ani.idx
-% \end{verbatim}\vspace{-\baselineskip}
-% These calls create the raw index files \File{allabout-fru.ind},
-% \File{allabout-idx.ind}, \File{allabout-veg.ind} and
-% \File{allabout-ani.ind}, which can be loaded to the document using
-% e.g. \cs{printindex} from package \Package{splitidx}.
-%
-% If you don't want \Program{splitindex} to call any index processor, use
-% \begin{quote}
-% \Prompt{}\verb|splitindex.pl -m "" allabout|
-% \end{quote}
-% instead of the shell command above.
-%
-% You may achieve the same files like above using (it's one input line not two
-% like shown here):
-% \begin{quote}\raggedright
-% \Prompt{}\verb|splitindex.pl -i '^\\indexentry\[([^]]*)\](.*)$'|
-% \verb|-s '-$1'| \verb|-r '\\indexentry$2' allabout|
-% \end{quote}
-%
-% If you want \Program{splitindex} to call \Program{makeindex} with additional
-% options ``\verb|-s foo.ist|'' to use the MakeIndex style file
-% \File{foo.ist}, you can do this call:
-% \begin{quote}
-% \Prompt{}\verb|splitindex.pl allabout -- -s foo.ist|
-% \end{quote}
-% As you see ``\verb|--|'' is used to tell \Program{splitindex} to not
-% interprete ``\verb|-s foo.ist|'' as option ``\verb|--suffixis foo.ist|''.
-% All \Program{splitindex} options must be put before ``\verb|--|'' but you
-% can put the raw file argument ``\verb|allabout|'' after that:
-% \begin{quote}
-% \Prompt{}\verb|splitindex.pl -- allabout -s foo.ist|
-% \end{quote}
-%
-% If you want so use index processor \Program{xindy} instead of default index
-% processor \Program{MakeIndex} you can do this call:
-% \begin{quote}
-% \Prompt{}\verb|splitindex.pl -m xindy allabout|
-% \end{quote}
-% If this is not at the standard \texttt{PATH} you may set the whole path:
-% \begin{quote}
-% \Prompt{}\verb|splitindex.pl -m /home/me/bin/xindy allabout|
-% \end{quote}
-% With most perl implementations perl module \verb|Getopt::Long| allows to
-% put options after no-option-arguments. So you may also write:
-% \begin{quote}
-% \Prompt{}\verb|splitindex.pl allabout -m /home/me/bin/xindy|
-% \end{quote}
-% with the same result.
-%
-%
-% \subsection{Using \Program{splitindex.jar}}
-% \label{Java}
-%
-% This should also be portable. If you are not using Sun Java 1.4.1 you may
-% try to recompile this using the shell command:
-% \begin{quote}
-% \Prompt{}\verb|javac splitindex.java|
-% \end{quote}
-% This should result in a new \File{splitindex.class}. But it will fail
-% e.g. with Sun Java 1.3, because regular expressions are needed, which are
-% not available at Sun Java 1.3.
-%
-% The call of \Program{splitindex.class} is almost the same like shown at
-% section~\ref{perl} for \Program{splitindex.pl}, but you have to replace
-% ``\verb|splitindex.pl|'' by ``\verb|java splitindex|''. So the last example
-% from section~\ref{perl} becomes:
-% \begin{quote}
-% \Prompt{}\verb|java splitindex allabout -m /home/me/bin/xindy|
-% \end{quote}
-%
-%
-% \subsection{Using \Program{splitindex} or \Program{splitindex.exe}}
-% \label{C}
-%
-% The Linux program \Program{splitindex} was compiled using glibc, so it works
-% same like \Program{splitindex.pl} and you may use not only:
-% \begin{quote}
-% \Prompt{}\verb|splitindex -m /home/me/bin/xindy allabout|
-% \end{quote}
-% but also:
-% \begin{quote}
-% \Prompt{}\verb|splitindex allabout -m /home/me/bin/xindy|
-% \end{quote}
-%
-% But the CygWin program \Program{splitindex.exe} was compiled using a
-% CygWin library. Because of this all options must be put before the first
-% no-option-argument. So you have to use:
-% \begin{quote}
-% \Prompt{}\verb|splitindex.exe -m /home/me/bin/xindy allabout|
-% \end{quote}
-% At:
-% \begin{quote}
-% \Prompt{}\verb|splitindex.exe allabout -m /home/me/bin/xindy|
-% \end{quote}
-% the arguments ``\verb|-m /home/me/bin/xindy|'' will be passed to the default
-% index processor \Program{MakeIndex}!
-%
-% You need the CygWin-DLL \File{cygwin1.dll} to run
-% \Program{splitindex.exe}. If you haven't already installed it, you may
-% download the DLL from \url{http://cygwin.com/snapshots}. You need
-% \Program{bzip2}, which can be found at \url{http://source.redhat.com/bzip2},
-% to decompress it. You may use \url{http://cygwin.com/setup.exe} to download
-% and install a minimal CygWin environment alternatively.
-%
-% The Linux-i386-ELF binary \Program{splitindex} was compiled and linked
-% using:
-% \begin{quote}\raggedright
-% \Prompt{}\verb|gcc -O3 -Wall -osplitindex splitindex.c|\\
-% \Prompt{}\verb|strip splitindex|\\
-% \end{quote}
-% The \Program{gcc} was:
-% \begin{verbatim}
-% gcc (GCC) 3.2
-% Copyright (C) 2002 Free Software Foundation, Inc.
-% \end{verbatim}\vspace{-\baselineskip}
-% The used \Program{glibc} is version 2.1.
-%
-% If you compile another binary e.g. for BSD, please contact me, so we may put
-% the new binary into the distribution or can build another binary
-% distribution.
-%
-%
-% \subsection{Using \Program{splitindex.tex}}
-% \label{TeX}
-%
-% The \TeX{} or \LaTeX{} program \Program{splitindex.tex} doesn't know any
-% options or arguments. It number of files, which can be generated, is limited
-% to to number of \TeX's free write handles. If there are other lines than
-% ``\verb|\indexentry|''-lines at the raw index file, running
-% \Program{splitindex.tex} will result in an error.
-%
-% You may use \Program{splitindex.tex} interactive:
-% \begin{quote}
-% \Prompt{}\verb|tex splitindex|
-% \end{quote}
-% or
-% \begin{quote}
-% \Prompt{}\verb|latex splitindex|
-% \end{quote}
-% If you do so, you will be asked for the name of the raw index file. You have
-% to omit the extension ``\File{.idx}'' answering that question.
-%
-% You may also use the \Program{splitindex.tex} not interactive e.g. if you
-% are working with a batch. To do so you have to define macro \cs{IDX} to the
-% name of the raw index file without extension ``\texttt{.idx}''. So the first
-% example of section~\ref{perl} would become:
-% \begin{quote}
-% \Prompt{}\verb|tex \def\IDX{allabout}\input splitindex|
-% \end{quote}
-% You may also use \LaTeX{} instead of \TeX:
-% \begin{quote}
-% \Prompt{}\verb|latex \def\IDX{allabout}\input splitindex|
-% \end{quote}
-%
-% The current version of \Program{splitindex.tex} doesn't call any index
-% processor. But maybe in future a version will be able to do so.
-%
-% \StopEventually{^^A
-% \begin{thebibliography}{99}
-% \bibitem{makeindex} \textsc{Leslie Lamport}: \textit{MakeIndex: An Index
-% Processor For \LaTeX}, 17 February 1987
-% \bibitem{makeindexmanual} \textsc{Pehong Chen}, \textsc{Rick P. C. Rodgers}:
-% \textit{MAKEINDEX(1L)}, Manual page, 10 December 1991
-% \end{thebibliography}
-% \PrintIndex\PrintChanges}
-%
-%
-% \section{Combining Indices}
-%
-% Now you should know, how to use package \Package{splitidx} and the
-% \Program{SplitIndex} programs to split the index. But what about combining
-% two or more indices to one, e.g. you don't want vegetables and fruits in the
-% same index? Try this:
-% \begin{flushleft}\ttfamily
-% \cs{documentclass}\{article\} \percentchar \textit{ We use \Class{article}
-% class \dots}\\
-% \cs{usepackage}\{splitidx\} \percentchar \textit{ \dots\ and the
-% \Package{splitidx} package}\\
-% \cs{makeindex} \percentchar \textit{ And we want index generation}\\
-% ~\\
-% \percentchar \textit{ We define 4 indices:}\\
-% \cs{newindex}[General Index]\{idx\} \percentchar \textit{ Name and shortcut
-% of the 1st index}\\
-% \cs{newindex}[Index of Animals]\{ani\} \percentchar \textit{ \dots\ 2nd
-% index}\\
-% \cs{newindex}[Index of Fruits And Vegetables]\{fru\} \percentchar
-% \textit{ \dots\ 3rd
-% index}\\
-% ~\\
-% \cs{begin}\{document\}\\
-% Apples\cs{sindex}[fru]\{apple\} \percentchar \textit{ an entry to
-% }fru\texttt{ index}\\
-% and oranges\cs{sindex}[fru]\{orange\} \percentchar \textit{ an entry to
-% }fru\texttt{ index}\\
-% are fruits\cs{sindex}\{fruits\}.\ \percentchar \textit{ an implicit entry
-% to }idx\textit{ index}\\
-% Tomatoes\cs{sindex}[veg]\{tomato\} \percentchar \textit{ an entry to
-% }veg\textit{ index}\\
-% are\\
-% vegetables\cs{index}\{vegetables\}.\ \percentchar \textit{ an implicit
-% entry to }idx\textit{ index}\\
-% Cats\cs{sindex}[ani]\{cat\} \percentchar \textit{ an entry to
-% }ani\textit{ index}\\
-% are animals\cs{sindex}[idx]\{animals\}.\ \percentchar \textit{ an explicite
-% entry to }idx\textit{ index}\\
-% ~\\
-% \cs{printindex*} \percentchar \textit{ print all indices}\\
-% \cs{end}\{document\}
-% \end{flushleft}
-% And do the following call after splitting the index using
-% \Program{SplitIndex}:
-% \begin{quote}\raggedright
-% \Prompt{}\verb|makeindex allabout-veg.idx allabout-fru.idx|\\
-% \end{quote}
-% Alternatively you can concatenate \File{allabout-fru.idx} to
-% \File{allabout-veg.idx} before running the index processor on
-% \File{allabout-veg.idx}.
-%
-%
-%
-% \section{Implementation of \Package{splitidx}}
-%
-% \begin{macrocode}
-%<*package>
-% \end{macrocode}
-%
-% \subsection{Options}
-%
-% The first option is used to activate index generation.
-% \begin{macrocode}
-\DeclareOption{makeindex}{\AtEndOfPackage{\makeindex}}
-% \end{macrocode}
-%
-% \changes{v0.9}{2006/05/07}{new option \texttt{useindex}}
-% With option \texttt{useindex} the original command \cs{index} behaves like
-% \cs{sindex}.
-% \begin{macrocode}
-\DeclareOption{useindex}{%
- \def\@se@nd@xc@d@{\let\index\sindex}%
- \AtEndOfPackage{\@se@nd@xc@d@}%
-}
-\let\@se@nd@xc@d@\relax
-% \end{macrocode}
-%
-% There is also an option to make \cs{sindex} ignores the optional argument and
-% behaves like \cs{index}.
-% \begin{macrocode}
-\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}}%
- }%
-}
-% \end{macrocode}
-%
-% \changes{v0.9}{2006/05/07}{new option \texttt{protected}}
-% Do not expand index arguments.
-% \begin{macrocode}
-\newif\if@verbindex\@verbindexfalse
-\DeclareOption{protected}{\@verbindextrue}
-% \end{macrocode}
-%
-% \changes{v0.2}{2002/11/15}{new option \texttt{idxcommands}}
-% With option \texttt{idxcommands} every \cs{newindex} also defines a new index
-% command.
-% \begin{macrocode}
-\newif\if@newidxcmd\@newidxcmdfalse
-\DeclareOption{idxcommands}{\@newidxcmdtrue}
-% \end{macrocode}
-%
-% \changes{v0.2}{2002/11/15}{new option \texttt{split}}
-% With option \texttt{split} each index uses its own index file.
-% \begin{macrocode}
-\newif\if@splitidx\@splitidxfalse
-\DeclareOption{split}{\@splitidxtrue}
-% \end{macrocode}
-%
-% Processing the options
-% \begin{macrocode}
-\ProcessOptions\relax
-% \end{macrocode}
-%
-%
-% \subsection{Setting an Index Entry}
-%
-% \begin{macro}{\see}
-% \begin{macro}{\seealso}
-% \begin{macro}{\seename}
-% \begin{macro}{\alsoname}
-% These are four standard macros, which are also defined at
-% \Package{makeidx}. Hey, these definitions are stolen from \Package{makeidx}!
-% No, no, I'm not a bad guy, read ``\File{legal.txt}'', which comes with
-% \Package{makeidx}.
-% \begin{macrocode}
-\newcommand*\see[2]{\emph{\seename} #1}
-\providecommand*\seealso[2]{\emph{\alsoname} #1}
-\providecommand\seename{see}
-\providecommand*\alsoname{see also}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\sindex}
-% \begin{macro}{\@wrsindex}
-% \changes{v0.9}{2006/03/07}{optionally do not expand the index argument}
-% \begin{macro}{\@@wrsindex}
-% This works similar to original \cs{index} but uses a splitted index. So it
-% allows an optional argument.
-% \begin{macrocode}
-\newcommand*{\sindex}[2][]{%
-}
-\g@addto@macro\makeindex{%
- \renewcommand*{\sindex}{%
- \@bsphack\begingroup
- \@sanitize
- \@wrsindex
- }%
- \typeout{Using splitted index at \jobname.idx}%
- \@se@nd@xc@d@
-}
-% \end{macrocode}
-% At the following \cs{@@wrsindex} is used as a hook. If it is defines, it is
-% used to write out the index entry. This hook may be used from
-% e.g. \Package{hyperref} to add \verb|hyperpage| to the font selection of the
-% page number. This only works with \verb+encap |+.
-% \changes{v1.0}{2006/07/30}{one level expansion of \cs{\@tempa} for
-% hyperref hook}
-% \begin{macrocode}
-\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{}{%
- \string\indexentry#2%
- }%
- \fi
- \else
- \protected@write\@indexfile{}{%
- \string\indexentry[#1]#2%
- }%
- \fi
- \endgroup
-}
-% \end{macrocode}
-% If \Package{hyperref} was loaded at \cs{begin\{document\}} and
-% \Package{hyperref}-option \texttt{hyperindex} isn't disabled, and the hook
-% is not used, define it:
-% \begin{macrocode}
-\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
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-% \subsection{Printing One Or More Indices}
-%
-% \begin{macro}{\printindex}
-% \begin{macro}{\printindex*}
-% This is used to print an index in the normal way. In most cases this uses
-% |theindex| environment, but it need not.
-% \begin{macrocode}
-\newcommand*{\printindex}{%
-% \end{macrocode}
-% The command may be called in the star version, which prints all defined
-% indices. This is same as \cs{printindices}.
-% \begin{macrocode}
- \@ifstar {%
- \begingroup
- \let\printindex@@endhook=\printindex@endhook
- \let\printindex@endhook=\relax
- \printindices%
- \csname printindex@@endhook\endcsname
- \endgroup
- }{%
-% \end{macrocode}
-% It may also be called with optional arguments to print one of the indices:
-% \begin{macrocode}
- \@ifnextchar [\@printindex%] brace check comment
-% \end{macrocode}
-% Or it is called without any parameter and so it is same as at
-% \Package{makeidx} package:
-% \begin{macrocode}
- {%
- \@input@{\jobname.ind}%
- \csname printindex@endhook\endcsname
- }%
- }%
-}
-% \end{macrocode}
-% \begin{macro}{\@printindex}
-% This is used to print one of the indices. The optional (here obligatory)
-% argument is the shortcut of the index.
-% \begin{macrocode}
-\newcommand*{\@printindex}{}
-\def\@printindex[#1]{%
-% \end{macrocode}
-% There can be one more optional argument, which is the title of the index. If
-% not, the default title \cs{index@\meta{shortcut}@name} is used.
-% \begin{macrocode}
- \@ifnextchar [%
- {\@@printindex[{#1}]}%
- {\@@printindex[{#1}][\csname index@#1@name\endcsname]}%
-}
-% \end{macrocode}
-% \begin{macro}{\@@pintindex}
-% \changes{v0.2}{2002/11/15}{with option \texttt{split} general index has no
-% suffix}
-% We use the default environment to print one of the indices, but we redefine
-% \cs{indexname} to the title of the wanted index, \cs{indexshortcut} to the
-% shortcut of the wanted index and \cs{index@preamble} to the preamble of the
-% wanted index. We do this in a group so it is local.
-% \begin{macrocode}
-\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
-}
-% \end{macrocode}
-% \begin{macro}{\@indexsuffix}
-% This generated the suffix from the shortcut. You may redefine this
-% function, if you need. I`m using a trick here, to define the macro with
-% proper catcodes but not to define it global. You may also use
-% \cs{@firstofone} instead of \cs{lowercase}.
-% \begin{macrocode}
-\begingroup
-\catcode`\-12
-\lowercase{\endgroup
- \newcommand*{\@indexsuffix}[1]{-#1}%
-}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\printindices}
-% This is used to print all defined indices in the order of their definition
-% and with their default titles. If the list is empty, is behaves like
-% \cs{printindex} without star and optional arguments.
-% \begin{macrocode}
-\newcommand*{\printindices}{%
- \ifx\@indices\@empty
- \printindex
- \else
- \begingroup
- \@for\@tempa:=\@indices\do{%
- \expandafter\printindex\expandafter[\@tempa]%
- }%
- \endgroup
- \fi
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\newindex}
-% \changes{v0.2}{2002/11/15}{optional definition of index-shortcut-command}
-% \changes{v0.2}{2002/11/15}{optional opening a new index file}
-% The definition of a new index has an obligatory argument, the shortcut for
-% this index, and an optional argument, the name of this index. If you omit
-% the optional argument the shortcut is used for the default name if the
-% index. The definition will be done global!
-% \begin{macrocode}
-\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
- }{%
-% \end{macrocode}
-% If the index is already defined, an error occurs:
-% \begin{macrocode}
- \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
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\newprotectedindex}
-% \changes{v0.9}{2006/07/03}{new command}
-% Same like \cs{newindex} but always define an index with protected arguments.
-% \begin{macrocode}
-\newcommand*{\newprotectedindex}[2][\relax]{%
- \begingroup\@verbindextrue\newindex[{#1}]{#2}\endgroup
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@indices}
-% This macro stores a list of the index shortcuts. This is needed by
-% e.g. \cs{printindices} and build by \cs{newindex}.
-% \begin{macrocode}
-\newcommand*{\@indices}{}
-\gdef\@indices{}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\extendtheindex}
-% Extend \verb|theindex| by some macros called before starting the index,
-% after starting the index, before stopping the index and after stopping the
-% index. This may be used to change index behaviour. One additional change is
-% done, which may be useful: before the index \cs{index@preamble} is set to
-% \cs{index@\meta{shortcut}@preamble}.
-% \begin{macrocode}
-\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%
- }%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\setindexpreamble}
-% Set one of the splitted index preambles or the original one.
-% \begin{macrocode}
-\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
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\useindexpreamble}
-% Use the index preamble and optional add additional information after it, if
-% it exists and if it is not empty:
-% \begin{macrocode}
-\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
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\printsubindex}
-% \begin{macro}{\printsubindex*}
-% Works like \cs{printindex} but changes some macros before to level down the
-% headings at the index generation.
-% \begin{macrocode}
-\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
-% \end{macrocode}
-% Also, \cs{onecolumn} and \cs{twocolumn} and even \cs{clearpage} must be
-% disabled. The macros \cs{onecolumn} and \cs{twocolumn} cannot be let
-% \cs{relax} because the have an optional argument which must be used.
-% \begin{macrocode}
- \let\onecolumn\@firstoptofone
- \let\twocolumn\@firstoptofone
- \let\clearpage\relax
- \let\cleardoublepage\relax
-% \end{macrocode}
-% And the mark mechanism must also use one down:
-% \begin{macrocode}
- \def\markboth{\expandafter\markright\@gobble}%
- \ifx\@mkboth\@gobble\else\let\@mkboth\markboth\fi
-% \end{macrocode}
-% And the page style shouldn't change too:
-% \begin{macrocode}
- \let\thispagestyle\@gobble
-% \end{macrocode}
-% Now, using \cs{printindex} enables all of it's features:
-% \begin{macrocode}
- \let\printindex@endhook=\endgroup
- \printindex
-}
-% \end{macrocode}
-% \begin{macro}{\@firstoptofone}
-% Read the optional argument and do it.
-% \begin{macrocode}
-\providecommand{\@firstoptofone}[1][]{#1}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macrocode}
-%</package>
-% \end{macrocode}
-%
-% \Finale
-%
-\endinput
-%
-% end of file `splitindex.dtx'
-%%% Local Variables:
-%%% mode: doctex
-%%% TeX-master: t
-%%% End:
diff --git a/Master/texmf-dist/source/latex/splitindex/splitidx.ins b/Master/texmf-dist/source/latex/splitindex/splitidx.ins
deleted file mode 100644
index a46c36533e2..00000000000
--- a/Master/texmf-dist/source/latex/splitindex/splitidx.ins
+++ /dev/null
@@ -1,93 +0,0 @@
-%%
-%% splitindex.ins
-%% Copyright (c) Markus Kohm, 2002
-%%
-%% $Id: splitidx.ins,v 1.2 2006/03/07 10:41:51 mjk Exp $
-%%
-%% This file is part of the `SplitIndex bundle'.
-%% ---------------------------------------------
-%%
-%% This file can be redistributed and/or modified under the conditions
-%% of the LaTeX Project Public License, either version 1.3a of this
-%% license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3a or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
-%% This work has status 'maintained'.
-%% Maintainer is Markus Kohm <komascript@gmx.info>.
-%%
-%% In particular, NO PERMISSION is granted to modify the contents of this
-%% file since it contains the legal notices that are placed in the files
-%% it generates.
-%%
-%% You are not allowed to redistribute this file without all the
-%% other files of the `SplitIndex bundle'. The list of all files
-%% belonging to the `SplitIndex bundle' is given in the file
-%% `manifest.txt'.
-%%
-%% This file will generate fast loadable files and documentation
-%% driver files from the doc files in this package when run through
-%% LaTeX or TeX.
-%%
-%%
-%% --------------- start of docstrip commands ------------------
-%%
-
-\input docstrip
-
-\preamble
-
-This is a generated file.
-
-Copyright (c) Markus Kohm, 2002
-
-This file was generated from file(s) of the `SplitIndex bundle'.
-----------------------------------------------------------------
-
-It may be distributed and/or modified under the conditions of
-the LaTeX Project Public License, either version 1.3a of this
-license or (at your option) any later version.
-The latest version of this license is in
- http://www.latex-project.org/lppl.txt
-and version 1.3a or later is part of all distributions of LaTeX
-version 2005/12/01 or later.
-
-This work has status 'maintained'.
-Maintainer is Markus Kohm <komascript@gmx.info>.
-
-This file may only be distributed together with a copy of the
-`SplitIndex bundle'. You may however distribute the `SpitIndex
-bundle' without such generated files.
-
-The list of all files belonging to the `SplitIndex bundle' is
-given in the file `manifest.txt'.
-
-\endpreamble
-
-\keepsilent
-\usedir{tex/latex/misc}
-
-\generate{\file{splitidx.sty}{\from{splitidx.dtx}{package}}}
-
-\Msg{*************************************************************}
-\Msg{*}
-\Msg{* To finish the installation you have to move `splitidx.sty'}
-\Msg{* files into a directory searched by TeX.}
-\Msg{* Using a TDS compatible TeX distribution, this would be e.g.}
-\Msg{* tex/latex/misc of your main or your local or your private}
-\Msg{* texmf path. If you don't know these paths, have a look}
-\Msg{* at your `texmf.cnf' or try:}
-\Msg{* \space\space kpsexpand \string\$TEXMFMAIN}
-\Msg{* \space\space kpsexpand \string\$TEXMFLOCAL}
-\Msg{* \space\space kpsexpand \string\$HOMETEXMF}
-\Msg{* You may also use another folder at your TEXINPUTS path.}
-\Msg{*}
-\Msg{* To produce the documentation run splitidx.dtx files}
-\Msg{* through LaTeX.}
-\Msg{*}
-\Msg{* Happy TeXing}
-\Msg{************************************************************}
-
-\endbatchfile
diff --git a/Master/texmf-dist/source/latex/splitindex/splitindex.c b/Master/texmf-dist/source/latex/splitindex/splitindex.c
deleted file mode 100644
index 41a092af734..00000000000
--- a/Master/texmf-dist/source/latex/splitindex/splitindex.c
+++ /dev/null
@@ -1,576 +0,0 @@
-/*
- * splitindex.c
- * Copyright (c) Markus Kohm, 2002
- *
- * $Id: splitindex.c,v 1.6 2003/01/05 10:50:07 mjk Exp $
- *
- * This file is part of the SplitIndex package
- *
- * This file can be redistributed and/or modified under the conditions
- * of the LaTeX Project Public License, either version 1.2 of this
- * license or (at your option) any later version.
- * The latest version of this license is in
- * http://www.latex-project.org/lppl.txt
- * and version 1.2 or later is part of all distributions of LaTeX
- * version 1999/12/01 or later.
- *
- * You are not allowed to redistribute this file without all the
- * other files of the SplitIndex package
- */
-
-#include <sys/types.h>
-#include <sys/wait.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <regex.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-enum {
- OPT_HELP = 'h', OPT_MAKEINDEX = 'm', OPT_IDENTIFY = 'i',
- OPT_RESULTIS = 'r', OPT_VERBOSE = 'v', OPT_SUFFIXIS = 's',
- OPT_VERSION = 'V'
-};
-
-#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined (NO_LONGOPT)
-
-#define HAS_LONGOPT 0
-#define HAPAR ""
-
-#else /* defined(__OpenBSD__) || defined(__FreeBSD__) || defined(NO_LONGOPT) */
-
-#define HAS_LONGOPT 1
-#define HAPAR "\n\t\t"
-
-#include <getopt.h>
-
-static const struct option long_options[] = {
- { "help", 0, NULL, OPT_HELP },
- { "makeindex", 1, NULL, OPT_MAKEINDEX },
- { "identify", 1, NULL, OPT_IDENTIFY },
- { "resultis", 1, NULL, OPT_RESULTIS },
- { "suffixis", 1, NULL, OPT_SUFFIXIS },
- { "verbose", 0, NULL, OPT_VERBOSE },
- { "version", 0, NULL, OPT_VERSION },
- { NULL, 0, NULL, 0 },
-};
-
-#endif
-
-static const char short_options[] = {
- OPT_HELP,
- OPT_MAKEINDEX, ':',
- OPT_IDENTIFY, ':',
- OPT_RESULTIS, ':',
- OPT_SUFFIXIS, ':',
- OPT_VERBOSE,
- OPT_VERSION,
-};
-
-int Verbose = 0;
-
-char *MakeIndex = "makeindex";
-char *Identify = "^(\\\\indexentry)\\[([^]]*)\\](.*)$";
-char *ResultIs = "$1$3";
-char *SuffixIs = "-$2";
-char *IDX = NULL;
-char *Jobname = NULL;
-char * const * MakeIndexArgs = NULL;
-char *prgname = "splitindex";
-int MakeIndexArgc = 0;
-
-static void show_version( void ) {
- printf( "splitindex 0.2a\n"
- "Copyright (c) 2002 Markus Kohm <kohm@gmx.de>\n" );
-}
-
-static void show_usage( FILE *out ) {
- fputs( "Usage: splitindex [OPTION]... RAWINDEXFILE [MAKEINDEXOPTION]...\n",
- out );
-}
-
-static void usage_error( const char *format, ... ) {
- if ( format != NULL ) {
- va_list ap;
- va_start( ap, format );
- vfprintf( stderr, format, ap );
- va_end( ap );
- }
- fputs( "Try `splitindex "
-#if HAS_LONGOPT
- "--help"
-#else
- "-h"
-#endif
- "' for more information.\n", stderr );
- exit( 1 );
-}
-
-static void show_help( void ) {
- show_version();
- printf( "\n" );
- show_usage( stdout );
- printf(
- "Split a single raw index file into multiple raw index files.\n"
- "Example: splitindex.pl foo.idx.\n"
- "\n"
- "Options:\n"
- " -h"
-#if HAS_LONGOPT
- ", --help "
-#else
- " "
-#endif
- "\tshow this help and terminate\n"
- " -m"
-#if HAS_LONGOPT
- ", --makeindex"
-#endif
- " PROGNAME " HAPAR
- "\tcall PROGNAME instead of default `%s'.\n",
- MakeIndex
- );
- printf(
- " -i"
-#if HAS_LONGOPT
- ", --identify"
-#endif
- " EXPRESSION " HAPAR
- "\tuse regular EXPRESSION to match entries\n"
- "\t\t\t(see also option --resultis and --suffixis).\n"
- "\t\t\tDefault is `%s'.\n",
- Identify
- );
- printf(
- " -r"
-#if HAS_LONGOPT
- ", --resultis"
-#endif
- " PATTERN " HAPAR
- "\tcreate line to be written from PATTERN after matching\n"
- "\t\t\tlines (see also option --identify).\n"
- "\t\t\tDefault is `%s'.\n",
- ResultIs
- );
- printf(
- " -s"
-#if HAS_LONGOPT
- ", --suffixis"
-#endif
- " PATTERN " HAPAR
- "\tcreate suffix to be used from PATTERN after matching\n"
- "\t\t\tlines (see also option --identify).\n"
- "\t\t\tDefault is `%s'.\n",
- SuffixIs
- );
- printf(
- " -v"
-#if HAS_LONGOPT
- ", --verbose "
-#else
- " "
-#endif
- "\tbe more verbose\n"
- "\t\t\t(can be used multiple to increase verbosity)\n"
- " -V"
-#if HAS_LONGOPT
- ", --version "
-#else
- " "
-#endif
- "\tshow version and terminate\n"
- );
- exit(0);
-}
-
-static void ScanArguments( int argc, char * const argv[] ) {
- int retVal;
- char *hs;
- if ( argc > 0 )
- prgname = argv[0];
-#if HAS_LONGOPT
- while ( ( retVal = getopt_long( argc, argv, short_options,
- long_options, NULL ) ) != - 1 ) {
-#else
- while ( ( retVal = getopt( argc, argv, short_options ) ) != - 1 ) {
-#endif
- switch( retVal ) {
- case OPT_HELP:
- show_help();
- break; /* should never be reached */
- case OPT_VERSION:
- show_version();
- exit( 0 );
- break; /* should never be reached */
- case OPT_MAKEINDEX:
- MakeIndex = optarg;
- break;
- case OPT_IDENTIFY:
- Identify = optarg;
- break;
- case OPT_RESULTIS:
- ResultIs = optarg;
- break;
- case OPT_SUFFIXIS:
- SuffixIs = optarg;
- break;
- case OPT_VERBOSE:
- Verbose++;
- break;
- case ':':
- case '?':
- usage_error( NULL );
- break; /* should never be reached */
- }
- }
- if ( optind < argc ) {
- IDX = argv[optind++];
- MakeIndexArgc = argc - optind;
- MakeIndexArgs = argv + optind;
- } else {
- usage_error( "missing raw index file\n" );
- return; /* should never be reached */
- }
-
- if ( ( Jobname = strdup( IDX ) ) == NULL ) {
- perror( prgname );
- exit( errno );
- }
-
- if ( ( ( hs = strrchr( Jobname, '.' ) ) != NULL )
- && !strcmp( hs, ".idx" ) )
- *hs = 0;
-}
-
-static char *regsub( const char *string, const char *replace,
- int nmatch, regmatch_t pmatch[] ) {
- int pass;
- int size, n;
- const char *hs;
- char c;
- char *retVal = NULL;
- char *ts;
-
- /* Two times parsing to get size and replace */
- for ( pass = size = 0; pass < 2; pass++ ) {
- ts = retVal;
- for ( hs = replace; *hs; hs++ ) {
- switch( *hs ) {
- case '$':
- if ( isdigit( hs[1] ) ) {
- n = *++hs - '0';
- if ( ( pmatch[n].rm_so >= 0 )
- && ( pmatch[n].rm_so < pmatch[n].rm_eo ) ) {
- /* maybe group n is not empty */
- if ( pass ) {
- strncpy( ts,
- string + pmatch[n].rm_so,
- pmatch[n].rm_eo - pmatch[n].rm_so );
- ts += pmatch[n].rm_eo - pmatch[n].rm_so;
- } else {
- size += pmatch[n].rm_eo - pmatch[n].rm_so;
- }
- }
- } else {
- if ( pass ) {
- *ts++ = '$';
- } else {
- size++;
- }
- }
- break;
- case '\\':
- switch( c = *++hs ) {
- case 0: c = '\\'; hs--; break;
- case 'b': c = '\b'; break;
- case 'f': c = '\f'; break;
- case 'n': c = '\n'; break;
- case 'r': c = '\r'; break;
- case 't': c = '\t'; break;
- }
- if ( pass ) {
- *ts++ = c;
- } else {
- size++;
- }
- break;
- default:
- if ( pass ) {
- *ts++ = *hs;
- } else {
- size++;
- }
- break;
- }
- }
- if ( pass ) {
- *ts = '\0';
- } else {
- if ( ( retVal = malloc( size + 1 ) ) == NULL ) {
- perror( prgname );
- exit( 1 );
- }
- }
- }
-
- return retVal;
-}
-
-static struct list {
- struct list *next;
- char *name;
- FILE *file;
-} *IDXfiles = NULL;
-
-static FILE *findsuffix( const char *name ) {
- struct list *run;
- for ( run = IDXfiles;
- run != NULL;
- run = run->next ) {
- const char *suffix = strchr( run->name, '\0' );
- suffix -= 4; /* .idx */
- suffix -= strlen( name );
- if ( ( suffix >= run->name )
- && !strncmp( suffix, name, strlen( name ) ) ) {
- return run->file;
- }
- }
- return NULL;
-}
-
-static struct list *addentry( char *name, FILE *file ) {
- struct list *newentry = malloc( sizeof( struct list ) );
- if ( !newentry ) {
- perror( prgname );
- exit( 1 );
- }
- newentry->name = name;
- newentry->file = file;
- if ( IDXfiles == NULL ) {
- newentry->next = NULL;
- } else {
- newentry->next = IDXfiles;
- }
- IDXfiles = newentry;
- return IDXfiles;
-}
-
-static FILE *newentry( const char *suffix ) {
- char *name;
- FILE *file;
-
- if ( ( name = malloc( strlen( Jobname ) + strlen( suffix ) + 5 ) ) == NULL ) {
- perror( prgname );
- exit( 1 );
- }
-
- strcpy( name, Jobname );
- strcat( name, suffix );
- strcat( name, ".idx" );
-
- if ( ( file = fopen( name, "w" ) ) == NULL ) {
- perror( name );
- exit( errno );
- }
-
- if ( Verbose > 1 )
- printf( "New index file %s\n", name );
- addentry( name, file );
- return file;
-}
-
-static void CloseAllIDX( void ) {
- struct list *run;
- for ( run = IDXfiles; run != NULL; run = run->next )
- if ( fclose( run->file ) ) {
- perror( run->name );
- exit( 1 );
- }
-}
-
-static void CallMakeIndex( void ) {
- char **argv;
- int idx;
- struct list *run, *next;
-
- if ( ( argv = calloc( MakeIndexArgc + 3, sizeof( char * ) ) ) == NULL ) {
- perror( prgname );
- exit( 0 );
- }
-
- for ( idx = 0; idx < MakeIndexArgc; idx++ )
- argv[idx+1] = MakeIndexArgs[idx];
-
- idx++;
- argv[0] = MakeIndex;
-
- for ( run = IDXfiles; run != NULL; run = next ) {
- pid_t fret;
- int status;
- argv[idx] = run->name;
-
- if ( ( fret = fork() ) == 0 ) {
- /* This is the child */
- if ( Verbose > 1 ) {
- int i;
- for ( i = 0; argv[i] != NULL; i++ )
- printf( "\"%s\" ", argv[i] );
- printf( "\n" );
- }
- if ( execvp( MakeIndex, argv ) ) {
- perror( MakeIndex );
- exit( 1 );
- }
- } else if ( fret == -1 ) {
- perror( prgname );
- exit( 1 );
- } else {
- /* Parent */
- waitpid( fret, &status, 0 );
- if ( ! WIFEXITED( status ) ) {
- fprintf( stderr, "%s terminated abnormally!\n", MakeIndex );
- exit( 1 );
- }
- }
-
- free( (void *)run->name );
- next = run->next;
- free( run );
- }
-
-
-}
-
-static void ProcessIDXFile( void ) {
- FILE *fIDX;
- char *line;
- regex_t preg;
- int retVal;
- int buffersize = 2050;
- regmatch_t pmatch[10];
-
- if ( ( line = malloc( buffersize ) ) == NULL ) {
- perror( prgname );
- exit( errno );
- }
-
- if ( ( retVal = regcomp( &preg, Identify, REG_EXTENDED ) ) != 0 ) {
- regerror( retVal, &preg, line, buffersize );
- fprintf( stderr, "Error at identify: %s\n", line );
- free( line );
- exit( 1 );
- }
-
- if ( ( fIDX = fopen( IDX, "r" ) ) == NULL ) {
- if ( !strcmp ( IDX, Jobname ) ) {
- if ( ( IDX = malloc( strlen( Jobname + 5 ) ) ) == NULL ) {
- perror( prgname );
- regfree( &preg );
- free( line );
- exit( errno );
- }
- strcpy( IDX, Jobname );
- strcat( IDX, ".idx" );
- if ( ( fIDX = fopen( IDX, "r" ) ) == NULL ) {
- fprintf( stderr,
- "Can read neither file %s nor file %s\n",
- Jobname, IDX );
- regfree( &preg );
- free( line );
- exit( 1 );
- }
- } else {
- fprintf( stderr,
- "Can't red file %s\n", IDX );
- regfree( &preg );
- free( line );
- exit( 1 );
- }
- }
-
- while ( fgets( line, buffersize, fIDX ) != NULL ) {
- char *hs;
- char *result, *suffix;
- FILE *f;
- while ( ( ( hs = strchr( line, '\n' ) ) == NULL )
- && ! feof( fIDX ) ) {
- if ( ( line = realloc( line, 2 * buffersize ) ) == NULL ) {
- perror( prgname );
- exit( errno );
- }
- if ( fgets( line + buffersize - 1, buffersize + 1, fIDX ) == NULL )
- break;
- buffersize *= 2;
- }
- if ( ferror( fIDX ) )
- break;
- if ( ( hs = strchr( line, '\n' ) ) != NULL ) // remove newline
- *hs = 0;
- if ( ( retVal = regexec( &preg, line, 10, pmatch, 0 ) ) == 0 ) {
- result = regsub( line, ResultIs, 10, pmatch );
- suffix = regsub( line, SuffixIs, 10, pmatch );
- } else {
- int i;
- result = strdup( line );
- for ( i = 0; i < 10; i++ ) {
- pmatch[i].rm_so = 0;
- pmatch[i].rm_eo = 3;
- }
- suffix = regsub( "idx", SuffixIs, 10, pmatch );
- }
- if ( !result || !suffix ) {
- perror( prgname );
- exit ( 1 );
- }
-
- if ( ( f = findsuffix( suffix ) ) == NULL )
- f = newentry( suffix );
- fprintf( f, "%s\n", result );
-
- free( suffix );
- free( result );
- }
-
- regfree( &preg );
- free( line );
- if ( ferror( fIDX ) ) {
- perror( IDX );
- fclose( fIDX );
- exit( errno );
- }
- fclose( fIDX );
-
- CloseAllIDX();
-
- CallMakeIndex();
-}
-
-int main( int argc, char * const argv[] ) {
- int retVal = 0;
-
- ScanArguments( argc, argv );
-
- if ( Verbose > 0 ) {
- show_version();
- if ( Verbose > 9 ) {
- int i;
- printf( "Identify: \"%s\"\n", Identify );
- printf( "ResultIs: \"%s\"\n", ResultIs );
- printf( "SuffixIs: \"%s\"\n", SuffixIs );
- printf( "IDX: \"%s\"\n", IDX );
- printf( "Jobname: \"%s\"\n", Jobname );
- printf( "MakeIndex: \"%s\"", MakeIndex );
- for ( i = 0; i < MakeIndexArgc; i++ )
- printf( " \"%s\"", MakeIndexArgs[i] );
- printf( "\n" );
- }
- }
-
- ProcessIDXFile();
-
- return retVal;
-}