diff options
author | Karl Berry <karl@freefriends.org> | 2007-01-15 01:15:09 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2007-01-15 01:15:09 +0000 |
commit | fa943c88824be38c97f683bccd10b5c12ab7cead (patch) | |
tree | 94a0d956e86d497ebf5b202f87b5e8e2355a7cc6 /Master/texmf-dist/source/latex | |
parent | 76deb2cf858fd88a0efbb6ec51711fdffc35fff7 (diff) |
ltxindex update
git-svn-id: svn://tug.org/texlive/trunk@3493 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r-- | Master/texmf-dist/source/latex/ltxindex/ltxindex.dtx | 441 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/ltxindex/ltxindex.ins | 35 |
2 files changed, 476 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/ltxindex/ltxindex.dtx b/Master/texmf-dist/source/latex/ltxindex/ltxindex.dtx new file mode 100644 index 00000000000..aa3fa836565 --- /dev/null +++ b/Master/texmf-dist/source/latex/ltxindex/ltxindex.dtx @@ -0,0 +1,441 @@ +%\iffalse meta-comment +% ltxindex.dtx generated using /usr/local/bin/makedtx version 0.9b (c) Nicola Talbot +% Command line args: +% -src "ltxindex\.sty=>ltxindex.sty" +% -doc "README" +% ltxindex +% Created on 2006/11/26 15:10 +% +% ltxindex.sty, a LaTeX package to typeset indices with GNU's Texindex +% Copyright (C) 2004 by Richard Stallman, Robert J. Chassell, +% Michael Clarkson, \& Luis Rivera. +% +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 2, or (at your option) +% any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +% +%\fi +% +%\iffalse +%<ltxindex>\NeedsTeXFormat{LaTeX2e}[1995/06/01] +%<ltxindex>\ProvidesPackage{ltxindex} +%<ltxindex> [2004/06/30 v0.1b ltxindex: LaTeX indexing, texindex style] +%\fi +% +%\iffalse +%<*driver> +\documentclass{ltxdoc} +\usepackage{ltxindex} +\newcommand{\texindex}{\texttt{texindex}} +\newcommand{\ltxindex}{\textsf{ltxindex}} +\OnlyDescription +\begin{document} + \DocInput{ltxindex.dtx} +\end{document} +%</driver> +%\fi +% +% \CheckSum{541} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \changes{0.1}{2004/06/30}{First Release} +% \changes{0.1b}{2007/12/14}{Made a first dtx file} +% +% \GetFileInfo{ltxindex.sty} +% +% \title{\ltxindex: Making \LaTeX\ indexes with GNU's \texindex% +% \thanks{This file documents version~\fileversion, as of~\filedate. +% Please send comments and bug reports to jlrn77 at gmail dot com.}} +% \author{Luis Rivera} +% \date{December 14, 2006} +% \maketitle +% +% \ltxindex\ is a simple package to make indices for \LaTeX\ +% documents with \texindex\ instead of |makeindex|. +% Though missing some important functionality, \texindex\ seems much +% simpler to use; +% and if you don't need anything fancy, such an index may be useful. +% +% This package only implements the standard indices used by +% texinfo, and only defines the concept index (cp) by default. +% You can't define custom indices (yet), and you must set up the fn, ky, pg, +% tp, and vr indices on your own. +% +% \section{Usage} +% +% Call this package in the preamble: |\usepackage{ltxindex}| +% +% The package implements the following commands, +% +% |\cpindex|\marg{concept} indexes \emph{concept}, without typesetting it in the +% main text. +% +% |\cpsubindex|\marg{concept}\marg{subconcept} indexes \emph{subconcept} under +% \emph{concept}, without typesetting it in the main text. +% +% |\indexcp|\marg{concept} typesets \emph{concept} and puts it in the |cp| index. +% +% |\subindex|\marg{subconcept}\marg{concept} typesets \emph{subconcept} in the main +% document and puts it under \emph{concept} in the |cp| index. +% +% You may set up fnindex, kyindex, pgindex, tpindex, and vrindex with the +% command |\newindex|\marg{??}, where |??| is either fn, ky, pg, tp, or vr. +% This way, you enable commands |\??index|\marg{word}, which allows you to +% index \emph{word} in the appropriate index. +% Texinfo's shortcuts |\cindex|, |\findex|, |\kindex|, |\pindex|, |\tindex|, and +% |\vindex|, are also available. +% +% |\synindex|\marg{foo}\marg{bar} subsumes index \emph{foo} under index \emph{bar}. +% +% |\syncodeindex|\marg{foo}\marg{bar} is similar, but typesets all entries for +% index \emph{foo} in boldface. +% +% As in Texinfo, all these commands produce auxiliary files |<filename>.??| +% +% Once you're done with the main body of your document, you ask +% \LaTeX\ to typeset the index with the command |\printindex|\marg{??}, wherever +% you like. Make sure you precede it with some informative heading, +% like |\section*{Concept Index}|. In short: +% +% \begin{description} +% \item{Run} \LaTeX\ on filename to produce the |.aux| and |.??| files +% \item{Run} \texindex\ on every unsorted index file (|<filename>.??|) you created +% for your document (|<filename>.cp|, by default). \texindex\ will +% create a sorted index file for your index file (|<filename>.cps|, by +% default). +% \item{ReRun} \LaTeX\ to incorporate the indices. +% \item{ReRun} \texindex\ on every index file (to ensure right cross-references). +% \item{ReRun} \LaTeX\ to put everything in order. +% \end{description} +% +% You may avoid all this work in drafting and proofreading: +% the package prints ``(Index is empty)'' or ``(Index is nonexistent)'' +% in the appropriate places if the indices are unsorted or +% undefined. +% +% \section{Acknowledgements} +% +% As you may see by simple inspection of the code, I just ``borrowed'' +% the code from the old |latexinfo.sty|, available on CTAN, and patched +% it up to run as a \LaTeX\ package. +% Thus, all credits should go to Richard Stallman, Robert J. Chassell, +% \& Michael Clarkson. +% +% \section{To Do's and Warnings} +% +% \begin{itemize} +% \item Two column output is somewhat clumsy; you may have to edit the +% |.??s| file manually to add |\columnbreak|'s in the appropriate places. +% \item Devise a more general mechanism to create arbitrary indices. +% \item Write some macros to modify the appearance of the index (by means +% of some commands or package options). +% \item PDF is not supported at all. +% \item Documentation is wanting; I may improve it when I implement +% user-defined indexes. +% \item There is something odd about the license of this package. +% +% This package is distributed along the lines of the GNU General Public +% License version 2.0, in compliance with the original license for +% |latexinfo.sty|. +% +% There are additional conditions imposed on the use ---not the +% distribution--- of the package, due to the usage of the \textsf{multicol} +% package, by Frank Mittelbach. +% Even though \textsf{multicol} is a required file for any \LaTeX\ +% installation, you are \emph{morally} required to pay a license fee if you +% use it as a part of a proprietary or commercially distributed product +% based on or using \textsf{multicol}. The \ltxindex\ package is distributed +% `gratis', so as long as you distribute or use this package for a +% non-commercial or non-proprietary end product (document or software), +% you don't acquire this moral obligation. +% Otherwise, you are morally required to pay that fee, because of the usage +% of \textsf{multicol}. +% See the file |multicol.dtx| for details. +% +% Confused? Well, just comment out the lines containing the strings +% \begin{verbatim} +% \RequirePackage{multicol} +% \begin{multicols}{2} +% \end{multicols} +% \end{verbatim} +% The output will be ugly, but free from moral trouble. +% +% I may get around this odd situation when I implement another way of setting +% multiple columns independently of Mittelbach's package. +% \end{itemize} +% +%\StopEventually{} +% +%\section{The Code} +% +% This package may require the package \textsf{multicol} to typeset the index +% in a two column environment. This should be the default behavior, save +% the case documented above. +% \begin{macrocode} +\RequirePackage{multicol} +% \end{macrocode} +% Index generation facilities +% +% Define the texinfo user-accessible indexing commands for backwards +% compatability. +% +% \begin{macrocode} +\def\cindex{\cpindex} +\def\pindex{\pgindex} +\def\vindex{\vrindex} +\def\tindex{\tpindex} +\def\kindex{\kyindex} +\def\findex{\fnindex} +% \end{macrocode} +% +% |\newindex{foo}| defines an index named foo. +% It automatically defines |\fooindex| such that +% |\fooindex ...rest of line...| puts an entry in the index foo. +% It also defines |\fooindfile| to be the number of the output channel for +% the file that accumulates this index. The file's extension is foo. +% The name of an index should be no more than 2 characters long +% for the sake of vms. +% \begin{macrocode} +\def\newindex#1{\csname newindex#1\endcsname} +% \end{macrocode} +% +% Yes I know this could be done shorter, but safer?? +% +% \begin{macrocode} +\def\newindexcp{\if@filesw \newwrite\@cpindexfile + \immediate\openout\@cpindexfile=\jobname.cp + \def\cpindex{\@bsphack\begingroup + \def\protect####1{\string####1\space}\@sanitize + \@wrindex\@cpindexfile}% + \def\cpsubindex{\@bsphack\begingroup + \def\protect####1{\string####1\space}\@sanitize + \@wrsubindex\@cpindexfile}% + \def\cpindexbold{\@bsphack\begingroup + \def\protect####1{\string####1\space}\@sanitize + \@wrindexbold\@cpindexfile} + \typeout{Writing concepts index file \jobname.cp }% + \fi} + +\def\cpindex{\@bsphack\begingroup \@sanitize\@index} +\def\cpsubindex{\@bsphack\begingroup \@sanitize\@index} +\def\cpindexbold{\@bsphack\begingroup \@sanitize\@index} + +\def\@wrindex#1#2{\let\thepage\relax + \xdef\@gtempa{\write#1{\string \entry{#2}{\thepage}{#2}}}\endgroup + \def\@tempa{}\def\thing{#2}\ifx\thing\@tempa\relax\else\@gtempa\fi + \if@nobreak \ifvmode\nobreak\fi\fi\@esphack} + +\def\@wrindexbold#1#2{\let\thepage\relax \let\bf\relax + \xdef\@gtempa{\write#1{\string \entry{#2}{\b{\thepage}}{#2}}}\endgroup + \def\@tempa{}\def\thing{#2}\ifx\thing\@tempa\relax\else\@gtempa\fi + \if@nobreak \ifvmode\nobreak\fi\fi\@esphack} + +\def\@wrsubindex#1#2#3{\let\thepage\relax + \xdef\@gtempa{\write#1{\string \entry{#2 #3}{\thepage}{#2}{#3}}}\endgroup% + \@gtempa + \if@nobreak \ifvmode\nobreak\fi\fi\@esphack} + +\def\@index#1{\endgroup\@esphack} + +\def\pgindex{\@bsphack\begingroup \@sanitize\@index} +\def\newindexpg{\if@filesw \newwrite\@pgindexfile + \immediate\openout\@pgindexfile=\jobname.pg + \def\pgindex{\@bsphack\begingroup + \def\protect####1{\string####1\space}\@sanitize + \@wrindex\@pgindexfile} + \def\pgindexbold{\@bsphack\begingroup + \def\protect####1{\string####1\space}\@sanitize + \@wrindexbold\@pgindexfile} + \typeout{Writing index file \jobname.pg }\fi} + +\def\pgindex{\@bsphack\begingroup \@sanitize\@index} +\def\pgindexbold{\@bsphack\begingroup \@sanitize\@index} + +\def\newindexvr{\if@filesw \newwrite\@vrindexfile + \immediate\openout\@vrindexfile=\jobname.vr + \def\vrindex{\@bsphack\begingroup + \def\protect####1{\string####1\space}\@sanitize + \@wrindex\@vrindexfile} + \def\vrindexbold{\@bsphack\begingroup + \def\protect####1{\string####1\space}\@sanitize + \@wrindexbold\@vrindexfile} + \typeout{Writing variable index file \jobname.vr }\fi} + +\def\vrindex{\@bsphack\begingroup \@sanitize\@index} +\def\vrindexbold{\@bsphack\begingroup \@sanitize\@index} + +\def\newindextp{\if@filesw \newwrite\@tpindexfile + \immediate\openout\@tpindexfile=\jobname.tp + \def\tpindex{\@bsphack\begingroup + \def\protect####1{\string####1\space}\@sanitize + \@wrindex\@tpindexfile} + \def\tpindexbold{\@bsphack\begingroup + \def\protect####1{\string####1\space}\@sanitize + \@wrindexbold\@tpindexfile} + \typeout{Writing datatype index file \jobname.tp }\fi} + +\def\tpindex{\@bsphack\begingroup \@sanitize\@index} +\def\tpindexbold{\@bsphack\begingroup \@sanitize\@index} + +\def\newindexky{\if@filesw + \newwrite\@kyindexfile + \immediate\openout\@kyindexfile=\jobname.ky + \def\kyindex{\@bsphack\begingroup + \def\protect####1{\string####1\space}\@sanitize + \@wrindex\@kyindexfile}\typeout{Writing key index file \jobname.ky} + \fi} + +\def\kyindex{\@bsphack\begingroup \@sanitize\@index} +\def\kyindexbold{\@bsphack\begingroup \@sanitize\@index} + +\def\newindexfn{\if@filesw \newwrite\@fnindexfile + \immediate\openout\@fnindexfile=\jobname.fn + \def\fnindex{\@bsphack\begingroup + \def\protect####1{\string####1\space}\@sanitize + \@wrindex\@fnindexfile} + \def\fnindexbold{\@bsphack\begingroup + \def\protect####1{\string####1\space}\@sanitize + \@wrindexbold\@fnindexfile} + \typeout{Writing function index file \jobname.fn }\fi} + +\def\fnindex{\@bsphack\begingroup \@sanitize\@index} +\def\fnindexbold{\@bsphack\begingroup \@sanitize\@index} +% \end{macrocode} +% +% |\synindex{foo}{bar}| makes index foo feed into index bar. +% +% \begin{macrocode} +\def\synindex#1#2{\expandafter\xdef \csname @#1index\endcsname{% + \noexpand\csname @#2index\endcsname}% +\expandafter \chardef \csname @#1indexfile\endcsname=\csname @#2indexfile\endcsname} +% \end{macrocode} +% +% |\syncodeindex{foo}{bar}| similar, but put all entries made for index foo +% inside bold. +% +% \begin{macrocode} +\def\syncodeindex#1#2{% +\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname +\expandafter\let\csname#1indfile\endcsname=\synindexfoo +\expandafter\xdef\csname#1index\endcsname{% % Define \xxxindex +\csname#1boldindex\endcsname{#2}}% +} +% \end{macrocode} +% +% Define the macros used in formatting output of the sorted index material. +% This is what you call to cause a particular index to get printed. +% Write |\section*{Function Index}| to |\printindex{fn}| +% +% \begin{macrocode} +\newskip\secondaryindent +\secondaryindent=0.5cm +% \end{macrocode} +% +% In case index foo is undefined, or sorted index |foo.??s| is empty... +% +% \begin{macrocode} +\ifx\putwordIndexNonexistent\undefined + \gdef\putwordIndexNonexistent{(Index is nonexistent)} +\fi +\ifx\putwordIndexIsEmpty\undefined + \gdef\putwordIndexIsEmpty{(Index is empty)} +\fi +% \end{macrocode} +% +% The command |\printindex| typesets the index in the appropriate place. +% This is the piece of code where the \textsf{multicol} package is used, +% and some replacement is needed. +% +% \begin{macrocode} +\def\printindex#1{ +\def\indexbackslash{\rawbackslashxx} +\tolerance=9500 \advance\baselineskip -1pt +\openin 1 \jobname.#1s +\ifeof 1 + \putwordIndexNonexistent + \else + \read 1 to \temp + \ifeof 1 + \putwordIndexIsEmpty + \else + \begin{multicols}{2} + \input \jobname.#1s + \end{multicols} + \fi +\fi +\closein 1 +} +% \end{macrocode} +% +% These macros are used by the sorted index file itself. +% Change them to control the appearance of the index. +% +% \begin{macrocode} +\def\Dotsbox{\hbox to 1em{\hss.\hss}} % Used by index macros +\def\pline{\hbox to\hsize} + +\def\initial#1{% +{\bigbreak\pline{\large\bf#1\hfill}\kern 2pt\penalty3000}} + +\def\entry #1#2{ +{\parfillskip=0in \parskip=0in \parindent=0in \small +\hangindent=1in \hangafter=1% +\noindent\hbox{#1}\leaders\Dotsbox\hskip 0pt plus 1filll\relax #2\par +}} + +\def\primary #1{\pline{\small#1\hfil}} + +\def\secondary #1#2{ +{\parfillskip=0in \parskip=0in \small +\hangindent =1in \hangafter=1 +\noindent\hskip\secondaryindent\hbox{#1}\leaders\Dotsbox\hskip 0pt plus 1filll#2\par +}} +% \end{macrocode} +% +% Args are the skip and penalty (usually negative) +% +% \begin{macrocode} +\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} +% \end{macrocode} +% +% Now we set up the default concept index... +% +% \begin{macrocode} +\newindex{cp} +% \end{macrocode} +% +% ...and two useful macros to save typing time +% +% \begin{macrocode} +\newcommand{\indexcp}[1]{#1\cpindex{#1}} +\newcommand{\subindexcp}[2]{#1\cpsubindex{#2}{#1}} +% \end{macrocode} +% +% et voil\`a! +% +%\Finale diff --git a/Master/texmf-dist/source/latex/ltxindex/ltxindex.ins b/Master/texmf-dist/source/latex/ltxindex/ltxindex.ins new file mode 100644 index 00000000000..b3744de7e7d --- /dev/null +++ b/Master/texmf-dist/source/latex/ltxindex/ltxindex.ins @@ -0,0 +1,35 @@ +% ltxindex.ins generated using /usr/local/bin/makedtx version 0.9b 2006/11/26 15:10 +\input docstrip +\keepsilent +\usedir{tex/latex/ltxindex} +\preamble + + ltxindex.sty, a LaTeX package to typeset indices with GNU's Texindex + Copyright (C) 2004 by Richard Stallman, Robert J. Chassell, + Michael Clarkson, \& Luis Rivera. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + WARNING!!! This code is fairly experimental. + +\endpreamble + +\askforoverwritefalse + +\generate{\file{ltxindex.sty}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{ltxindex.dtx}{ltxindex,package}} +} + +\endbatchfile |