diff options
Diffstat (limited to 'Master/texmf-dist/source/fontinst/base/xdoc/docindex.dtx')
-rw-r--r-- | Master/texmf-dist/source/fontinst/base/xdoc/docindex.dtx | 2100 |
1 files changed, 0 insertions, 2100 deletions
diff --git a/Master/texmf-dist/source/fontinst/base/xdoc/docindex.dtx b/Master/texmf-dist/source/fontinst/base/xdoc/docindex.dtx deleted file mode 100644 index 47139d32b12..00000000000 --- a/Master/texmf-dist/source/fontinst/base/xdoc/docindex.dtx +++ /dev/null @@ -1,2100 +0,0 @@ -% \CheckSum{893} -% \iffalse -%<*driver> -\documentclass{ltxdoc} -\usepackage{xdoc2} - -\makeatletter -\NewMacroEnvironment{templatetype}{\XD@grab@harmless\relax}{1}% - {\MacroFont#1\ \normalfont type}% - {\XDMainIndex{\LevelSorted{#1}{\texttt{#1} template type}}}% - {{#1}{\texttt{#1} template type}}% - {}% -\NewMacroEnvironment*{template}{% - \XD@grab@harmless\relax\XD@grab@harmless\relax -}{2}% - {\XDParToMargin{\MacroFont #1\textnormal{\slash}#2 \normalfont - template}}% - {\XDMainIndex{ - \LevelSorted{#1}{\texttt{#1} template type}% - \LevelSorted{#2}{\texttt{#2} template}% - }}% - {{#1/#2}{\texttt{#1}\slash\texttt{#2} template}}% - {\def\XD@template@sort{% - \LevelSorted{#1}{\texttt{#1} template type}% - \LevelSorted{#2}{\texttt{#2} template}% - }}% -\NewMacroEnvironment*{instance}{% - \XD@grab@harmless\relax\XD@grab@harmless\relax -}{2}% - {\XDParToMargin{\MacroFont #1\textnormal{\slash}#2 \normalfont - instance}}% - {\XDMainIndex{ - \LevelSorted{#1}{\texttt{#1} template type}% - \LevelSorted{#2}{\texttt{#2} instance}% - }}% - {{#1/#2}{\texttt{#1}\slash\texttt{#2} instance}}% - {}% -\NewMacroEnvironment*{collectioninstance}{% - \XD@grab@harmless\relax\XD@grab@harmless\relax\XD@grab@harmless\relax -}{3}% - {\XDParToMargin{\MacroFont #2\textnormal{\slash}#3 \normalfont - instance (\texttt{#1} collection)}}% - {\XDMainIndex{ - \LevelSorted{#2}{\texttt{#2} template type}% - \LevelSorted{#3}{\texttt{#3} instance}% - \LevelSorted{#1}{\texttt{#1} collection}% - }}% - {{#2/#3/#1}% - {\texttt{#2}\slash\texttt{#3} instance (\texttt{#1} collection)}}% - {}% -\@namedef{XD@harmless\string\break}{% - \toks@=\expandafter{\the\toks@ \protect\nolinebreak[3]}% - \XD@harmless@ -} -\newcommand\keyvalitem[2]{% - \item[#1 (#2)% - \IndexEntry{\XD@template@sort - \LevelSorted{#1}{\textit{#1} keyval (#2)}% - }{usage}{\thepage}% - ]% -} -\newcommand{\xrefoff}{\scan@allowedfalse} -\newcommand{\xrefon}{\scan@allowedtrue} -\makeatother - -\newenvironment{syntax}{% - \let\\=\break - \list{}{% - \setlength\topsep{\medskipamount}% - \setlength\partopsep{0pt}% - \setlength\itemsep{0pt plus 1pt}% - \setlength\parsep{\itemsep}% - \setlength\leftmargin{3em}% - \setlength\listparindent{1em}% - \setlength\itemindent{-2em}% - \setlength\labelwidth{0pt}% - \setlength\labelsep{0pt}% - \csname @endparpenalty\endcsname=500 - \def\makelabel##1{\mbox{\meta{##1}${}\longrightarrow{}$}}% - }% - \addtolength\rightskip{0pt plus 1fil}% - \linepenalty=300% -}{\endlist} -\newcommand\branch{\({}\mid{}\)\ignorespaces} - -\DeclareRobustCommand{\package}[1]{\textsf{#1}} -\DeclareRobustCommand{\program}[1]{\textsf{#1}} -\DeclareRobustCommand\LaTeXplus{\LaTeXe$*$} - -\DoNotIndex{\addvspace,\@backslashchar,\begin,\begingroup,\bgroup} -\DoNotIndex{\csname,\DeclareInstance,\DeclareOption} -\DoNotIndex{\DeclareTemplate,\DeclareTemplateType,\def} -\DoNotIndex{\DoParameterAssignments,\edef,\egroup,\@eha} -\DoNotIndex{\@empty,\end,\endcsname,\endgroup,\endinput,\expandafter} -\DoNotIndex{\@firstofone,\@firstoftwo,\global,\@gobble,\hb@xt@,\hfil} -\DoNotIndex{\hsize,\hspace,\IfNoValueTF,\@ifpackageloaded} -\DoNotIndex{\@ifpackagewith,\@ifundefined,\ignorespaces,\@input@} -\DoNotIndex{\jobname,\leftskip,\let,\MessageBreak,\@namedef,\@ne} -\DoNotIndex{\NeedsTeXFormat,\newcommand,\nobreak,\@nobreakfalse} -\DoNotIndex{\nopagebreak,\normalsize,\NoValue,\number,\outer} -\DoNotIndex{\p@,\PackageError,\PackageInfo,\PackageWarningNoLine} -\DoNotIndex{\pagestyle,\par,\parfillskip,\parindent,\parskip} -\DoNotIndex{\@plus,\ProcessOptions,\protect,\protected@edef} -\DoNotIndex{\providecommand,\ProvidesPackage,\relax,\renewcommand} -\DoNotIndex{\RequirePackage,\rightskip,\romannumeral,\@secondoftwo} -\DoNotIndex{\small,\space,\textbf,\thispagestyle,\thr@@,\tw@} -\DoNotIndex{\vadjust,\vspace,\z@,\z@skip} -\DoNotIndex{\iffalse,\ifnum,\ifx,\else,\fi} % \fi \fi -\DoNotIndexBy{@} -\DoNotIndexBy{DI@} - -\CodelineIndex -\EnableCrossrefs -\RecordChanges -\setcounter{IndexColumns}{2} -\setcounter{StandardModuleDepth}{2} - - -\begin{document} -\DocInput{docindex.dtx} -\PrintChanges -\PrintIndex -\end{document} -%</driver> -% \fi -% -% \title{The \package{docindex} package} -% \author{Lars Hellstr\"om} -% \date{8 July 2003} -% \maketitle -% -% \begin{abstract} -% The \package{docindex} package implements template-based formatting -% of indices and lists of changes\slash glossaries. In addition to this, -% the control structures employed also provide for a couple of new -% features, such as automatic collapsing of trivial index levels. -% \end{abstract} -% -% \tableofcontents -% -% -% \section{Introduction} -% -% In automatically generated indices with multi-level entries, such as the -% list of changes of a \package{doc} document, it often happens that some -% entries are uniquely identified by their primary level sort keys, -% although there are sort keys and text for additional levels. If then -% the formatting is designed for entries that are uniquely identified -% only when their secondary or tertiary sort keys are considered, one -% ends up with a couple of entries that look rather peculiar (building -% a tree which never branches) and usually take up much more space than -% they need to. The remedy for this is of course to make the formatting -% smart enough to recognise this situation when it occurs and flexible -% enough to format the text is a more suitable manner. -% -% An example of this is that if a document contains the index -% entries\footnote{I'm using the default \program{makeindex} -% metacharacters in these examples, but the style file provided for -% this package actually uses the same metacharacters as those style files -% provided by the \package{doc} package---hence the `\package{doc}' -% in `\package{docindex}'. } -% \begin{quote} -% |\index{Bernoulli!Jacob}\index{Bernoulli!Johann}| -% \end{quote} -% then it is probably reasonable to format this as -% \begin{quote} -% Bernoulli,\\ -% \vadjust{}\quad Jacob\\ -% \vadjust{}\quad Johann -% \end{quote} -% but if the index entries instead were -% \begin{quote} -% |\index{Jacobi!Carl}\index{Bernoulli!Jacob}| -% \end{quote} -% then it is probably better to format this as -% \begin{quote} -% Bernoulli, Jacob\\ -% Jacobi, Carl -% \end{quote} -% than as -% \begin{quote} -% Bernoulli,\\ -% \vadjust{}\quad Jacob\\ -% Jacobi,\\ -% \vadjust{}\quad Carl -% \end{quote} -% -% The \program{makeindex} program has some features in this direction, -% but they only allow dependence on the previous item in the index, not -% the next item, which is what you need to know when deciding whether -% `Jacob' should go on the same line as `Bernoulli'. Therefore -% \package{docindex} pretty much ignores these features in -% \program{makeindex} and instead sees to that each command that is to -% typeset an index item knows what kind of items were before and after it. -% -% Another reason for writing this package was to try out the template -% mechanisms as provided by the \LaTeXplus\ \package{template} -% package.\footnote{\LaTeXplus\ is the name of the \LaTeX\ version after -% \LaTeXe. Rather than being a completely different kernel\slash format, -% \LaTeXplus\ is (will be) implemented as a collection of \LaTeXe\ -% packages which replace parts of the kernel. More information and -% package code can be found on the \LaTeX-project website~^^A -% \cite{LaTeX-project}.} My impression is that this experiment turned -% out strikingly well. I have always found the more layout-oriented -% aspects of \TeX\ programming a bit cumbersome, but the separation of -% layout details from control structures that becomes natural when -% employing template mechanisms seems to have made it much easier. I'm -% not sure why this is so, but it could be as simple as that the layout -% settings are no longer diluted in the control structures. In any -% case, I would recommend people creating new \LaTeXe\ packages to -% employ template mechanisms in at least the initial development -% versions of the package, for the following reasons: (i) it reduces the -% work of updating the package for \LaTeXplus, (ii) it furthers the -% development of \LaTeXplus, and (iii) it might actually become a -% better package. -% -% A third reason for writing the \package{docindex} package was to get -% the \LaTeX\ document ``back in control'' of how the index is formatted. -% Certainly it is the document which has the final say about what -% the command in the \texttt{.ind} file actually do, but the traditional -% \program{makeindex} style files that are used place severe restrictions -% on the formatting of the index simply because they control where the -% commands are put. \package{docindex} tries to reduce these -% restrictions by making all texts in the index arguments of commands. -% Certainly there is a lot more that could be done in this direction---in -% particular, the (page) numbers in the index could be coded as a -% |\do|-type list rather than as an explicitly comma-separated list as is -% done now---but what is in \package{docindex} at the moment seems to -% satisfy all my current needs. -% -% -% \section{Usage} -% -% \subsection{Straightforward usage} -% -% To make use of the \package{docindex} package in formatting the index -% and list of changes of a \package{doc}-type \LaTeX\ document, you must -% do the following: -% \begin{enumerate} -% \item Load the \package{docindex} package (or probably -% rather the \package{docidx2e} package---see below). -% \item Make sure that the index entries does not use any commands, -% such as |\verb|, that rely on changing catcodes or otherwise -% need to be executed before the entire entry text has been -% tokenized. -% \item Generate the \texttt{.ind} and \texttt{.gls} files using -% \texttt{docindex.ist} as style file for \program{make\-index}. -% \end{enumerate} -% (Item~2 may seem like a monumental task if one considers what the -% indices of \package{doc} documents traditionally looks like---there's -% a |\verb| for every macro name in the index---but it is really not -% that bad. \package{docindex} loads the \package{xdoc} package~^^A -% \cite{xdoc} which redefines \texttt{macro}, the cross-referencing -% mechanism, etc.\ so that the index entries generated by these no -% longer uses |\verb|. What is left for you to deal with are merely -% the possible uses of |\verb| in explicit |\index| or |\SortIndex| -% commands.) -% -% What advantages are there then for the normal user in having -% \package{docindex} formatting the index and list of changes, as -% opposed to using the default mechanisms in the \package{doc} package? -% I can only think of two: the index or list of changes may be typeset in -% a single column and the same \program{makeindex} style file can be -% used for both index and list of changes. Neither advantage is -% significant. Instead the advantage of \package{docindex} lies in that -% it becomes much simpler to change the formatting, which is rather an -% advantage for advanced users which have special needs, and -% in particular one can do this without having to supply e.g.\ extra -% \program{makeindex} style files. -% -% Another important point is that what you will want to use is probably -% not the \LaTeXplus\ \package{docindex} package, but the ``downgraded'' -% \LaTeXe\ version \package{docidx2e}, as the former uses the -% \package{galley2} package which currently wrecks pretty much all -% justification in all existing document classes. \package{docidx2e} -% provides the same features as \package{docindex}, but configuring it -% is somewhat more cumbersome since \package{template} won't do most of -% the coding for you. It is however rather straightforward to convert -% a definition using the \package{docindex} package to something which -% achieves the same results with the \package{docidx2e} package. -% -% -% \subsection{Multiple indices} -% -% The \package{docindex} package makes it comparatively simple to -% include several indices in the same document: all one has to do is -% use an instance or template of type \texttt{docindex} for each index -% one wishes to typeset. The syntax for using such an instance is -% \begin{quote} -% |\UseInstance{docindex}|\marg{instance}\marg{prologue}^^A -% \marg{epilogue} -% \end{quote} -% The \meta{prologue} and \meta{epilogue} are texts which will be -% printed just before and after the index, respectively, and either may -% be empty. The text for the index itself is read from another file, -% the name and extentsion of which are specified by the instance. The -% \texttt{std} template prints the \meta{prologue} and \meta{epilogue} -% in one-column mode, whereas the index itself can be printed in one- or -% multicolumn mode (the default is three columns). -% -% The \package{doc} commands |\PrintIndex| and |\PrintGlossary| are -% redefined to be -% \begin{quote} -% |\UseInstance{docindex}{index}{\index@prologue}{}| -% \end{quote} -% and -% \begin{quote} -% |\UseInstance{docindex}{changes}{\glossary@prologue}{}| -% \end{quote} -% respectively. The \texttt{index} and \texttt{changes} instances of -% type \texttt{docindex} give the same formatting as the \package{doc} -% defaults. (The \package{docidx2e} definitions even use the -% \package{doc} package parameters where applicable, but in -% \package{docindex} it is much simpler to redefine the instance from -% scratch.) -% -% The format of the sorted index files (\texttt{.ind}, \texttt{.gls}, -% etc.) that a \texttt{docindex} instance inputs is rather complicated -% and I would suggest that the generation of these files is left to the -% \program{makeindex} program, but the complete syntax is described in -% Subsection~\ref{Ssec:ist}. The syntax of the unsorted index files -% (\texttt{.idx}, \texttt{.glo}, etc.) is simpler; there are only a few -% things that are different from the index files of the \package{doc} -% package. -% -% The foremost difference is that the index entries should begin not -% with |\indexentry| or |\glossaryentry|, but with |\docindexentry|. The -% \package{xdoc} package provides hooks with which one can change these -% texts in entries generated using the |\index| and |\glossary| commands -% (as well as higher-level commands built on these, such as the -% |\SortIndex| and |\changes| commands) and \package{docindex} will use -% these hooks unless it gets passed the \describeoption{oldkeywords} -% \texttt{oldkeywords} option. If you are creating a third unsorted -% index file then you will have to make sure that the command for writing -% to that file uses |\docindexentry| in the right place. -% -% The other difference concerns the composite page numbers. The string -% which separates the parts of a composite page number is not a -% hyphen `|-|', but the string `|\+|'. (The |\+| command is locally -% defined for the typesetting of each index by the \texttt{docindex} -% template being used, and the default is to typeset a hyphen.) Again -% the \package{xdoc} package provides a hook for this, and this hook is -% used by \package{docindex} unless it gets passed the -% \texttt{oldkeywords} option. -% -% It also deserves to be listed which the metacharacters are that are -% the same as in \package{doc} indices. The level separator is `|>|', -% the sort~key\slash item~text separator is `|=|', and the quote -% character is `|!|'. All other \program{makeindex} metacharacter -% parameters have their default values. -% -% -% -% \subsection{Configuration} -% -% Configuration of the layout provided by the \package{docindex} -% package is primarily done by redefining the \texttt{index} and -% \texttt{changes} instances of type \texttt{docindex}, since these are -% the instances that are used by the |\PrintIndex| and |\PrintChanges| -% commands. -% -% The index in the \texttt{source2e.tex} file (the main driver for the -% \LaTeXe\ source) differs from the default in three respects: it is set -% in two columns rather than three, there is no seperator character -% between the parts of a composite page number, and the pagestyle is set -% to \texttt{docindex} during the index. This is set up by the -% redefinition -%\begin{verbatim} -%\DeclareInstance{docindex}{index}{std}{ -% columns=2, page-compositor={}, pagestyle=docindex -%} -%\end{verbatim} -% (There are however also some changes of parameters related to -% linebreaking; more on that in connection to configuration of the -% \texttt{changes} instance below.) -% -% Another kind of modification can be found in the \package{tclldoc} -% package~\cite{tclldoc}. Here the primary level in the index is used for -% names of procedures and variables, whereas the secondary level for the -% namespace of the same (the same name may have different definitions -% in different namespaces). If there is only one namespace for a given -% name then it is probably overkill to format them as two different -% index items, but better to join them. This can be achieved through -% the redefinition -%\begin{verbatim} -%\DeclareInstance{docindex}{index}{std}{% -% item1=fixed-r1a, item2=aloneaccept2 -%}% -%\end{verbatim} -% An item handled by the \texttt{fixed-r1a} instance (of type -% \texttt{indexitem}) always tries to join with the following item but -% rejects to join with the preceeding one. An item handled by the -% \texttt{aloneaccept2} instance accepts to join with the preceeding -% item if neither that nor the following item is a secondary level item. -% Thus an item for a name will join with the following item for a -% namespace if there is only one such item. As the reader no doubt -% realises, this also solves the problem with the Bernoullis that was -% described in the introduction. -% -% \pagebreak[1] -% -% As for configuring the list of changes formatting, it is instructive -% to start by considering its default definition: -%\begin{verbatim} -%\DeclareInstance{docindex}{changes}{std}{ -% file-extension = gls, -% item2 = fixed-r2a-nocomma, -% item3 = fixed-a3r, -% columns = 2, -% letter-format = , -% letter-skip = 0pt -%} -%\end{verbatim} -% In the list of changes a secondary level item (which contains the name -% of the macro or whatever which was changed) is joined with the -% following tertiary level item (which details the change that was made). -% There are two columns and letter groups are not given any special -% formatting. -% -% The definition of \texttt{changes} that would be used for -% \texttt{source2e.tex} differs from the above in only one keyval, -% namely \textit{body-setup}, but that contains quite a lot of material. -% To begin with there is the default |\small| which selects the font. -% Then there is a |\makeatletter| which is needed because some |\changes| -% entries in the \LaTeX\ sources include commands (e.g.~|\TeX|) that -% (when written to file) expand to other commands whose names include the -% |@| character. If these are to be tokenized correctly, |@| must be a -% letter when the \texttt{.gls} file is being inputted. Last, but not -% least, there is a modification of the linebreaking parameters: -%\begin{verbatim} -%\UseTemplate{linebreak}{TeX}{ -%\end{verbatim} -% The file \texttt{source2e.tex} explicitly sets \textit{hbadness} and -% \textit{hfuzz} to make \TeX\ shut up about over- and underfull hboxes. -%\begin{verbatim} -% hbadness=10000, hfuzz=\maxdimen, -%\end{verbatim} -% In addition to this, there are a couple of parameters that are set by -% the \texttt{multicols} environment to values quite different from the -% defaults of the \texttt{TeX} template and thus must be set too. Here -% they are shown with their default values. The value of -% \textit{emergency\-stretch} could probably be increased. -%\begin{verbatim} -% pretolerance=-1, tolerance=9999, emergencystretch=8pt -%} -%\end{verbatim} -% Summing that up, we arrive at the following definition of the -% \texttt{changes} instance for \texttt{source2e.tex}. -%\begin{verbatim} -%\DeclareInstance{docindex}{changes}{std}{ -% file-extension = gls, -% item2 = fixed-r2a-nocomma, -% item3 = fixed-a3r, -% columns = 2, -% letter-format = , -% letter-skip = 0pt, -% body-setup = \small\makeatletter -% \UseTemplate{linebreak}{TeX}{ -% hbadness=10000, hfuzz=\maxdimen, -% pretolerance=-1, tolerance=9999, emergencystretch=8pt -% } -%} -%\end{verbatim} -% -% Another example can be found in the \package{fisource} -% package\footnote{It should probably rather be made a document class, -% but I haven't found it that necessary to change that aspect of it.}^^A -% ~(v\,2.10 or later), which sets up formatting for the \program{fontinst} -% source. There the list of changes should be set in one column, with -% items from the tertiary level being joined with their parent -% secondary level items iff the tertiary item is the only one having -% that particular parent item. This is achieved through the definition -%\begin{verbatim} -%\DeclareInstance{docindex}{changes}{std}{% -% file-extension = gls, -% item2 = fixed-r2a-nocomma, -% item3 = aloneaccept3, -% columns = 1, -% letter-format = {}, -% letter-skip = 0pt -% } -%\end{verbatim} -% where the difference to the default definition is in the values for -% the \textit{item3} and \textit{columns} keys. -% -% For details on what they various keys mean, see the declaration of -% the \texttt{std} template of type \texttt{docindex} on -% page~\pageref{docindex:std}. -% -% With the \package{docidx2e} package, configuration follows the same -% logic, even though it is much more technical as one has to define -% the instances without the help of a template. The default instance -% definitions for the \package{docidx2e} package are the -% \begin{quote} -% |\@namedef{TP@I{}{docindex}{index}}#1#2{|\dots|}|\\ -% |\@namedef{TP@I{}{docindex}{changes}}#1#2{|\dots|}| -% \end{quote} -% that begin on pages~\pageref{p:index-instance} -% and~\pageref{p:changes-instance} respectively. -% -% -% -% -% -% \StopEventually{ -% % \begin{thebibliography}{9} -% \bibitem{xindex} -% Achim Blumensath: \textit{The \package{xindex} package}; -% \textsc{http:}/\slash -% \texttt{www-mgi.\nolinebreak[3]informatik.\nolinebreak[3]^^A -% rwth-aachen.de}\slash \texttt{\textasciitilde blume}/. -% \bibitem{makeindex-paper} -% Pehong Chen, Michael A. Harrison: -% \textit{Index Preparation and Processing}, -% Software: practice \& experience, vol. \textbf{19}, no. 9 (1988), -% 897--915; -% Computer Science Tech. Report 87/347, University of California, -% Berkeley, March 1987; -% \textsc{ctan:}\discretionary{}{}{\thinspace}\texttt{indexing}^^A -% \slash\texttt{makeindex}\slash\texttt{paper}\slash -% \texttt{ind.tex}. -% \bibitem{tclldoc} -% Lars Hellstr\"om: -% \textit{The \package{tclldoc} package and class}, -% v\,2.20 or newer; -% \textsc{ctan}:\discretionary{}{}{\thinspace}\texttt{macros}\slash -% \texttt{latex}\slash \texttt{contrib}\slash -% \texttt{tclldoc}\slash \texttt{tclldoc.dtx}. -% Note: At the time of writing, this has not yet been uploaded -% to CTAN. -% \bibitem{xdoc} -% Lars Hellstr\"om: -% \textit{The \package{xdoc} package --- experimental -% reimplementations of features from \package{doc}, -% second~prototype}, 2000--2003; -% \textsc{ctan}:\discretionary{}{}{\thinspace}\texttt{macros}\slash -% \texttt{latex}\slash \texttt{contrib}\slash \texttt{xdoc}\slash -% \texttt{xdoc2.dtx}. -% \bibitem{xindy} -% Roger Kehr: -% \textit{\program{xindy} --- A Flexible Indexing System}; -% \textsc{ctan}:\discretionary{}{}{\thinspace}\texttt{indexing}^^A -% \slash\texttt{xindy}/. -% \bibitem{LaTeX-project} -% The \LaTeX3 Project: \textit{The \LaTeX\ Project Home Page}; -% \textsc{http:}/\slash\texttt{www.latex-project.org}/. -% \bibitem{multicol} -% Frank Mittelbach: \textit{An environment for multicolumn output}; -% \textsc{ctan}:\discretionary{}{}{\thinspace}\texttt{macros}\slash -% \texttt{latex}\slash \texttt{required}\slash \texttt{tools}\slash -% \texttt{multicol.dtx}. -% \bibitem{doc} -% Frank Mittelbach, B.~Hamilton Kelly, Andrew Mills, Dave Love, and -% Joachim \mbox{Schrod}: \textit{The \package{doc} and -% \package{shortvrb} Packages}, The \LaTeX3 Project; ^^A , 1993~ff. -% \textsc{ctan}:\discretionary{}{}{\thinspace}\texttt{macros}\slash -% \texttt{latex}\slash \texttt{base}\slash \texttt{doc.dtx}. -% \end{thebibliography} -% } -% -% -% -% -% \section{Implementation} -% -% \subsection{\package{docstrip} modules} -% -% This file contains a number of \package{docstrip} module directives, -% and many of these guard code that is not going to be used. In part -% this mirrors the development of the code (and may get cleared up -% eventually), but most of this duplication has to do with making the -% code work in many different set-ups (some of which involve other -% packages whose interface is rapidly changing). -% -% The modules which control \LaTeX\ code are: -% \begin{description} -% \item[\textsf{pkg}] -% Main guard for code that is to end up in some \LaTeX\ package. -% \item[\textsf{template}] -% Guard for code which uses features of the \package{template} -% package. This code will end up in the \package{docindex} package, -% whereas the equivalent code which avoids using templates ends up -% in the \package{docidx2e} package. -% \item[\textsf{default}] -% This code protects the default values for template keys. The -% syntax for this is changing, so the default values are currently -% being assigned in the template bodies instead. -% \end{description} -% -% The modules which control \program{makeindex} style files are: -% \begin{description} -% \item[\textsf{ist}] -% Code for the main style file \texttt{docindex.ist}. -% \item[\textsf{idx}] -% Code for a style file which is like the main one, but the input -% parameters are set to the same values as in the standard \LaTeX\ -% \texttt{gind.ist}. -% \item[\textsf{glo}] -% Code for a style file which is like the main one, but the input -% parameters are set to the same values as in the standard \LaTeX\ -% \texttt{gglo.ist}. -% \end{description} -% -% -% \subsection{Initial stuff} -% -% \begin{macrocode} -%<*pkg> -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage -%<template> {docindex} -%<!template> {docidx2e} - [2001/04/11 v1.00 doc index formatting package] -% \end{macrocode} -% -% Since the \texttt{multicols} environment is used by the \texttt{std} -% template of type \texttt{docindex}, the \package{multicol} package -% must have been loaded. -% \begin{macrocode} -\RequirePackage{multicol} -% \end{macrocode} -% This will probably change in \package{docindex} once I get around to -% check how this kind of thing is implemented in the \LaTeXplus\ output -% routine. -% -% Since the \texttt{docindex} pagestyle may be used the \package{xdoc} -% package must have been loaded. This also loads the \package{doc} -% package which contains the definition of |\pfill|. -% \begin{macrocode} -\RequirePackage{xdoc2}[2001/03/26] -% \end{macrocode} -% -% -% \begin{option}{oldkeywords} -% The \texttt{oldkeywords} option tells the \package{docindex} -% package to not change the index entry keywords from the \package{doc} -% defaults. The code for this option appears further down. -% \begin{macrocode} -\DeclareOption{oldkeywords}{} -% \end{macrocode} -% \end{option} -% -% \begin{option}{usedocindexps} -% The \texttt{usedocindexps} option tells the \package{docindex} -% package to set the pagestyle to \texttt{docindex} (defined by -% \package{xdoc}) when typesetting the index. The code for this option -% appears further down. -% \begin{macrocode} -\DeclareOption{usedocindexps}{} -% \end{macrocode} -% \end{option} -% -% \begin{macrocode} -\ProcessOptions\relax -%</pkg> -% \end{macrocode} -% -% -% -% \subsection{Index style files} -% \label{Ssec:ist} -% -% The \program{makeindex} style files uses four commands. The most -% important command is \DescribeMacro{\indexitem}|\indexitem|, which -% has the two syntaxes -% \begin{quote} -% |\indexitem|\marg{level}\marg{text}\marg{next level}\\ -% |\indexitem|\marg{level}\marg{text}|{9}|\marg{numbers}^^A -% \marg{next level} -% \end{quote} -% The \meta{level} is an integer in the range 1--3, the \meta{next level} -% is an integer in the range 0--3, the \meta{text} is the item text, -% and the \meta{numbers} is a list of (page or the like) numbers. The -% reason for this dual syntax is limitations of \program{makeindex}: -% there is no way of making the text inserted after an item depend on -% whether there are any page numbers for this item, so one cannot make -% \meta{numbers} a straightforward optional argument. -% -% The level numbers specify at what level the item is. Level~1 -% corresponds to |\item|, level~2 corresponds to |\subitem|, and -% level~3 corresponds to |\subsubitem|. The \meta{next level} number -% may also be 0, and that denotes non-|\indexitem| material such as a -% space between letter groups or the end of the index. The purpose of -% the \meta{next level} argument is to let the formatting of an item -% depend on what level the next item has, a feature that -% \program{makeindex} alone doesn't provide. Since \program{makeindex} -% only supports putting text in front of things, each new item must -% begin by inserting the closing brace on the second last argument and -% the very last argument of the \emph{previous} item before it can do -% anything for itself. This leads to the following contents of the -% \program{makeindex} |item_|\textellipsis\ parameters. -% -% \xrefoff -% \begin{macrocode} -%<*ist|idx|glo> -item_0 "}{1}\n\\indexitem{1}{" -item_1 "}{2}\n \\indexitem{2}{" -item_01 "}{2}\n \\indexitem{2}{" -item_x1 "}{2}\n \\indexitem{2}{" -item_2 "}{3}\n \\indexitem{3}{" -item_12 "}{3}\n \\indexitem{3}{" -item_x2 "}{3}\n \\indexitem{3}{" -% \end{macrocode} -% \SpecialIndex{\indexitem} ^^A I can't believe I'm using this! -% \begin{macrocode} -delim_0 "}{9}{" -delim_1 "}{9}{" -delim_2 "}{9}{" -delim_n ", " -delim_r "--" -%</ist|idx|glo> -% \end{macrocode} -% \xrefon -% -% -% \begin{macro}{\indexitem} -% \begin{macro}{\DI@indexitem} -% \begin{macro}{\DI@indexitem@} -% \begin{macro}{\DI@last@level} -% The |\indexitem| command (and its subsidiary macros |\DI@indexitem| -% and |\DI@indexitem@| only handle argument grabbing and some -% elementary processing of level numbers. The formatting of the item -% is instead handled by the |\DI@indexitem@|\meta{level}, where -% \meta{level} is the roman numeral |i|, |ii|, or |iii|, family of -% control sequences. |\indexitem| itself doesn't grab any arguments, -% instead it inserts the contents of |\DI@last@level| as an -% additional argument in front of |\DI@indexitem|. The actual -% argument structures of the other macros are -% \begin{quote} -% |\DI@indexitem|\marg{last}\marg{this}\marg{text}^^A -% \marg{next/\texttt{9}}\\ -% |\DI@indexitem@|\marg{cmd}\marg{last}|{9}|\marg{text}^^A -% |\NoValue|\marg{figures}\marg{next} -% \end{quote} -% where \meta{this} is the level of this item, \meta{next} is the -% level of the next item, \meta{text} is the item text, and -% \meta{figures} are the (page) numbers for this item. Several of the -% arguments of |\DI@indexitem@| are immediately gobbled; they are -% only used when the original |\indexitem| did not have a -% \meta{numbers} argument. -% -% The |\DI@last@level| macro stores the level of the last item before -% the current. It is set and used by |\DI@indexitem@|. -% \begin{macrocode} -%<*pkg> -\newcommand\indexitem{% - \relax - \expandafter\DI@indexitem \expandafter{\DI@last@level}% -}% -% \end{macrocode} -% \begin{macrocode} -\def\DI@indexitem#1#2#3#4{% - \edef\DI@last@level{\number#2\expandafter}% - \ifnum #4=9 - \expandafter\expandafter \expandafter\DI@indexitem@ - \fi - \csname DI@indexitem@\romannumeral#2\expandafter\endcsname - {#1}{#4}{#3}\NoValue -} -% \end{macrocode} -% \begin{macrocode} -\def\DI@indexitem@#1#2#3#4#5#6#7{#1{#2}{#7}{#4}{#6}} -% \end{macrocode} -% \begin{macrocode} -\def\DI@last@level{0} -%</pkg> -% \end{macrocode} -% \end{macro}\end{macro}\end{macro}\end{macro} -% -% The \describecsfamily{DI@indexitem@\meta{level}}|\DI@indexitem@|^^A -% \meta{level}, where \meta{level} is the lower case roman numeral form -% of the level number, family of control sequences have the syntax -% \begin{quote} -% |\DI@indexitem@|\meta{level}\,\marg{previous}\marg{next}^^A -% \marg{text}\marg{figures} -% \end{quote} -% where \meta{previous} and \meta{next} are the levels of the previous -% and following index items, \meta{text} is the entry text of this -% item, and \meta{figures} are the (page) numbers for this item, if it -% has any, or the token |\NoValue|, if it hasn't. -% -% -% \xrefoff -% \begin{macrocode} -%<*ist|idx|glo> -group_skip "}{0}\n%^^A\n\\indexnewletter{0}{" -heading_prefix "" -heading_suffix "" -headings_flag 1 -%</ist|idx|glo> -% \end{macrocode} -% \SpecialIndex{\indexnewletter} -% \xrefon -% -% -% \begin{macro}{\indexnewletter} -% \changes{v\,1.00}{2001/04/05}{Made it \cs{outer}. (LH)} -% The |\indexnewletter| command is placed in front of a new letter -% group. It has the syntax -% \begin{quote} -% |\indexnewletter|\marg{first}\marg{letter}\marg{next} -% \end{quote} -% where \meta{first} is a flag (|1| if this |\indexnewletter| -% is at the very beginning of the index, |0| otherwise), \meta{letter} -% is the letter name (according to the \program{makeindex} program; it -% can be e.g.\ the string `Symbols') and \meta{next} is the level of -% the next item (I think this will always be |1| with -% \program{makeindex}). The command takes care of declining an offer -% to join with the previous index item, inserts some vertical space -% if the \meta{first} is |0|, print the \meta{letter} using -% |\DI@letter@format|, and doesn't offer to join with the following -% item. -% \begin{macrocode} -%<*pkg> -\@ifundefined{indexnewletter}{}{% - \PackageInfo -%<template> {docindex} -%<!template> {docidx2e} - {Command \protect\indexnewletter\space redefined} -} -\outer\def\indexnewletter#1#2#3{% - \DI@item@nojoin - \ifnum #1=\z@ \vspace{\DI@letter@skip}\fi - \DI@letter@format{#2}% - \def\DI@last@level{0}% - \let\DI@item@join\@firstofone - \let\DI@item@nojoin\@empty -} -%</pkg> -% \end{macrocode} -% \end{macro} -% -% The index style files also need to set some parameters which aren't -% directly connected to the commands provided by the \package{docindex} -% package. First there's the input style parameters:\xrefoff -% \begin{macrocode} -%<*ist|idx|glo> -actual '=' -quote '!' -level '>' -% \end{macrocode} -% Then the page precedence should be changed. This is mainly for the -% convenience of use with documents that |\DocInclude| files, since -% these by default number the files using letters. -% \begin{macrocode} -page_precedence "naArR" -% \end{macrocode} -% In \texttt{docindex.ist}, both the \texttt{keyword} and the -% |page_compositor| strings are different from their standard values. It -% turns out to be hard to use a normal command as page compositor, -% because \program{makeindex} always rejects spaces and braces in the -% page number even if they is in the |page_compositor| parameter! -% \begin{macrocode} -%<ist>keyword "\\xdocindexentry" -%<ist>page_compositor "\\+" -% \end{macrocode} -% \SpecialIndex{\+} -% Finally, in the style file for the list of changes, the keyword must -% be changed to |\glossaryentry|. -% \begin{macrocode} -%<glo>keyword "\\glossaryentry" -%</ist|idx|glo> -% \end{macrocode} -% \xrefon -% -% -% \begin{option}{oldkeywords} -% \begin{macro}{\XD@index@keyword} -% \begin{macro}{\XD@glossary@keyword} -% \begin{macro}{\XD@page@compositor} -% \changes{v\,1.00}{2001/04/05}{Changed it from \cs{PageCompositor-} to -% \cs{+}. (LH)} -% To make the contents of the \texttt{.idx} and \texttt{.glo} files -% compatible with the input parameter settings of -% \texttt{docindex.ist}, some macros used by the \package{xdoc} -% package must be redefined. This can however be stopped if the -% \texttt{oldkeywords} option is passed to the \package{docindex} -% package. -% \begin{macrocode} -%<*pkg> -\@ifpackagewith -%<template> {docindex} -%<!template> {docidx2e} - {oldkeywords}{}{ - \edef\XD@index@keyword{\@backslashchar xdocindexentry} - \let\XD@glossary@keyword\XD@index@keyword - \def\XD@page@compositor{\@backslashchar +} -} -% \end{macrocode} -% \end{macro}\end{macro}\end{macro}\end{option} -% -% \changes{v\,1.00}{2001/03/25}{The index file is no longer a -% \texttt{thedocindex} environment---the layout must instead be set -% by the command which \cs{input}s the index. Introduced the -% \cs{docindexguard} command to handle situations with incompatible -% index styles. (LH)} -% -% \begin{macro}{\docindexguard} -% \begin{macro}{\DI@ind@setup} -% The first line of every \texttt{docindex} style sorted index file is -% \begin{quote} -% |\docindexguard{\endinput}| -% \end{quote} -% If the index file is inputted as a classical sorted index file then -% this will produce an undefined command error and no more lines in -% the index will be read. If the index file is inputted using the -% conventions of the \package{docindex} package then the -% |\docindexguard| will instead gobble the |\endinput| so that the -% file will be read. -% -% One can also have the opposite problem: a classical style index file -% is being input using \package{docindex} conventions. It is to -% overcome this problem that the |\DI@ind@setup| command has been -% introduced. Classical style index files begin by a |\begin| -% command, so that command is temporarily redefined to print a warning -% message and |\endinput| the file. Should the first command instead -% be |\docindexguard| then everything will be reset to normal. To -% accomplish this, |\DI@ind@setup| opens a group which should be -% closed by the initial |\docindexguard| or |\begin|. -% \begin{macrocode} -\def\DI@ind@setup{\bgroup - \def\docindexguard##1{\egroup}% - \def\begin##1{% - \egroup - \PackageWarningNoLine -%<template> {docindex}% -%<!template> {docidx2e}% - {Ignoring old style index file} - \endinput - }% -} -%</pkg> -% \end{macrocode} -% \end{macro}\end{macro} -% -% \xrefoff -% \begin{macrocode} -%<*idx|glo|ist> -preamble "\\docindexguard{\\endinput}\n%^^A\n\\indexnewletter{1}{" -postamble "}{0}\n\\endinput" -%</idx|glo|ist> -% \end{macrocode} -% \SpecialIndex{\docindexguard} -% \SpecialIndex{\indexnewletter} -% \xrefon -% -% In summary, this is the BNF syntax for a sorted index file that is to -% be typeset using \package{docindex}: -% \begin{syntax} -% \item[sorted index file] -% \meta{guard}\meta{lettergroups}|\endinput| -% \item[guard] |\docindexguard{\endinput}| -% \item[lettergroups] \meta{lettergroup}\branch -% \meta{lettergroup}\meta{lettergroups} -% \item[lettergroup] \meta{heading}\meta{items} -% \item[heading] -% |\indexnewletter|\marg{first}\marg{letter}\marg{next} -% \item[items] \meta{empty}\branch \meta{item}\meta{items} -% \item[item] |\indexitem|\marg{level}\marg{text}\marg{next}\branch -% |\indexitem|\marg{level}\marg{text}|{9}|\marg{numbers}\marg{next} -% \end{syntax} -% A \meta{level} is |1|, |2|, or |3|. A \meta{next} is |0|, |1|, |2|, or -% |3|. Within a \meta{lettergroup}, the \meta{next} of one \meta{item} -% or the \meta{heading} must equal the \meta{level} of the next -% \meta{item} and the \meta{next} of the last item must be |0|. The -% \meta{first} should be |1| in the first \meta{lettergroup} and |0| in -% all the others. -% -% -% \subsection{Template mechanisms} -% -% The \package{docindex} package loads the \package{xhj} and -% \package{galley2} packages to gain access to the \texttt{justification} -% type templates. This indirectly loads the \package{xparse} and -% \package{template} packages. -% \begin{macrocode} -%<*pkg> -%<template>\RequirePackage{xhj,galley2} -% \end{macrocode} -% -% Since the \package{docidx2e} package doesn't use the template mechanisms -% provided by the \package{template} package, but still is to follow the -% logic of the \package{docindex} package which does use these -% mechanisms, it becomes convenient to define fakes for a couple of -% \package{template} commands. First \package{docidx2e} checks if the -% real \package{template} package has been loaded and emits a warning if -% it has. -% \begin{macrocode} -%<*!template> -\@ifpackageloaded{template}{ - \PackageWarningNoLine{docidx2e}{The docidx2e package is only meant% - \MessageBreak for use when LaTeX2e* packages like - template\MessageBreak are not available.} -}{} -% \end{macrocode} -% -% Before continuing with the definitions, some of the data structures -% used by the \package{template} mechanisms must be explained. A -% template \emph{instance} is really only a macro; what makes instances -% different from macros in general is that they usually aren't -% explicitly programmed. Instead they are formed by combining two -% different pieces of code: one which is the code part of some template, -% and one which is a piece of code which sets the \emph{container} -% macros\slash registers\slash parameters for the key values of this -% template. In general, the first piece of code contains the -% programming-like aspects of what the instance does, whereas the latter -% contains those that have to do with lauout and design. The advantage -% of this model is that it lets you implement many layouts without -% requiring you to know everything about \LaTeX\ programming that it -% would take to implement everything using macros. -% -% Instances are stored in control sequences of the form -% \begin{quote} -% \describecsfamily{TP@I{\meta{collection}}\break -% {\meta{type}}\break{\meta{name}}} -% |\TP@I|\marg{collection}\marg{type}\marg{name} -% \end{quote} -% The \meta{type} is the primary distinction between instances; for each -% type there exists a specification of what all instances of that type -% must do, and all instances of a type must be interchangeable. In -% particular, all instances of a given template type must have the same -% argument structure. The \meta{name} is simply the name used to -% identify the instance (amongst all other instances of that type). -% Finally, the \meta{collection} is something which can be used in -% circumstances where one needs to quickly switch between different -% definitions of an instance. If they have different \meta{collection}s -% then they can exist simutaneously; which of them is used is determined -% by which collection is currently active. -% -% Collections are active on a ``per type'' basis; which collection is -% active for instances of type \meta{type} is determined by the -% contents of the \describecsfamily{TP@T{\meta{type}}} -% |\TP@T|\marg{type} control sequences, which are macros with the -% structure -% \begin{quote} -% \marg{collection}\marg{arguments} -% \end{quote} -% If there is no instance with the requested name in the currently -% active collection then the instance with the same name from the -% normal collection (whose name is the empty string) will be used. The -% \meta{arguments} part of the macro is simply the number of arguments -% of instances of this type; it is only used when declaring templates. -% -% \begin{macro}{\UseCollection} -% The |\UseCollection| command sets the active collection for a given -% type. It has the syntax -% \begin{quote} -% |\UseCollection|\marg{type}\marg{collection} -% \end{quote} -% This macro was used up to v\,1.00 of \package{docindex} but a change -% in the package logic made it unnecessary. -% \begin{macrocode} -% \providecommand*\UseCollection[2]{% -% \expandafter\edef \csname TP@T{#1}\endcsname{% -% {#2}% -% {\expandafter\expandafter \expandafter\@secondoftwo -% \csname TP@T{#1}\endcsname}% -% }% -% } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@letinstance} -% The |\@letinstance| macro |\let|s the (currently used) instance -% with given name and type to the \meta{target} control sequence. It -% has the syntax -% \begin{quote} -% |\@letinstance|\marg{target}\marg{type}\marg{name} -% \end{quote} -% \begin{macrocode} -\def\@letinstance#1#2#3{% - \expandafter\let \expandafter#1% - \csname TP@I% - {\expandafter\expandafter \expandafter\@firstoftwo - \csname TP@T{#2}\endcsname}% - {#2}{#3}% - \endcsname - \ifx \relax#1% - \expandafter\let \expandafter#1\csname TP@I{}{#2}{#3}\endcsname - \fi -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\UseInstance} -% The |\UseInstance| calls the (currently used) instance with given -% name and type. Its syntax is -% \begin{quote} -% |\UseInstance|\marg{type}\marg{name}\,\meta{arguments of instance} -% \end{quote} -% \begin{macrocode} -\providecommand*\UseInstance[2]{% - \@letinstance\@tempa{#1}{#2}% - \ifx \relax\@tempa - \PackageError{docidx2e}{Instance #2 of type #1 undefined}\@eha - \else - \expandafter\@tempa - \fi -} -%</!template> -% \end{macrocode} -% \end{macro} -% -% -% -% \subsection{Templates for index item formatting} -% -% \begin{templatetype}{justification} -% In \package{docidx2e}, we have to provide a dummy definition of -% |\TP@T{justification}|. -% \begin{macrocode} -%<!template>\@namedef{TP@T{justification}}{{}{0}} -% \end{macrocode} -% \end{templatetype} -% -% \changes{v\,1.00}{2001/04/08}{Using \texttt{single} template rather -% than the \texttt{std} template for the \texttt{indexitem}$n$ -% instances of type \texttt{justification}. (LH)} -% \begin{instance}{justification}{indexitem1} -% \begin{instance}{justification}{indexitem2} -% \begin{instance}{justification}{indexitem3} -% The \texttt{indexitem}\meta{level} instances of the -% \texttt{justification} template set up paragraph indentation etc.\ -% for a paragraph containing an index item at that level. The layout -% is the same as that used by the \package{doc} package, but it is -% not specified in quite the same way. -% \begin{macrocode} -%<*template> -\DeclareInstance{justification}{indexitem1}{single}{ - leftskip=30pt, rightskip=15pt, startskip=-30pt, parfillskip=-15pt, - linefillskip=0pt plus 1fil, parindent=0pt -} -\DeclareInstance{justification}{indexitem2}{single}{ - leftskip=30pt, rightskip=15pt, startskip=-15pt, parfillskip=-15pt, - linefillskip=0pt plus 1fil, parindent=0pt -} -\DeclareInstance{justification}{indexitem3}{single}{ - leftskip=30pt, rightskip=15pt, startskip=-5pt, parfillskip=-15pt, - linefillskip=0pt plus 1fil, parindent=0pt -} -%</template> -%<*!template> -\@namedef{TP@I{}{justification}{indexitem1}}{% - \leftskip=30\p@ - \rightskip=15\p@ - \parindent=-30\p@ - \parfillskip=-\rightskip -} -\@namedef{TP@I{}{justification}{indexitem2}}{% - \leftskip=30\p@ - \rightskip=15\p@ - \parindent=-15\p@ - \parfillskip=-\rightskip -} -\@namedef{TP@I{}{justification}{indexitem3}}{% - \leftskip=30\p@ - \rightskip=15\p@ - \parindent=-5\p@ - \parfillskip=-\rightskip -} -%</!template> -% \end{macrocode} -% \end{instance}\end{instance}\end{instance} -% -% -% -% \subsubsection{The \texttt{indexitem} template type} -% -% \begin{templatetype}{indexitem} -% \begin{macro}{\DI@item@nojoin} -% \begin{macro}{\DI@item@join} -% The argument structure of a template of type \texttt{indexitem} is -% \begin{quote} -% \marg{previous}\marg{next}\marg{text}\marg{figures} -% \end{quote} -% \meta{previous} and \meta{next} are the level codes of the index -% item before and after the current item, \meta{text} is the item text -% of the current index item, and \meta{figures} are the (page) numbers -% for this item, if it has any, or the token |\NoValue|, if it hasn't. -% -% Templates of this type format and typeset one item in an index. In -% doing so they may do pretty much anything as long as the other items -% aren't affected: they may start and end paragraphs, change the -% paragraph justification, \textellipsis -% -% There is however one area in which the rules are rather strict, and -% that has to do with when two items can be joined. In a case where -% item A is followed by item B, item A can propose to item B that they -% should be joined and item B can then accept or decline this offer. -% Technically the offer consists of defining the two macros -% |\DI@item@join| and |\DI@item@nojoin|. If item B accepts the offer -% it will execute |\DI@item@join| and if it declines the offer it -% will execute |\DI@item@nojoin|. A typical definition of -% |\DI@item@join| might be to insert a punctuation mark and a typical -% definition of |\DI@item@nojoin| might be to end the current paragraph. -% -% There is however also a third case, namely that no offer was given. -% In this case |\DI@item@nojoin| should be |\let| to |\@empty| and -% |\DI@item@join| should be |\let| to |\@firstofone|. The reason for -% this last rule is that |\DI@item@join| has the syntax -% \begin{quote} -% |\DI@item@join|\marg{no-join recovery code} -% \end{quote} -% where the \meta{no-join recovery code} is code that item B needs to -% have executed if there is no join although item B would have -% accepted it. |\DI@item@nojoin|, on the other hand, takes no -% argument. -% \begin{macrocode} -%<template>\DeclareTemplateType{indexitem}{4} -%<!template>\@namedef{TP@T{indexitem}}{{}{4}} -\let\DI@item@join=\@firstofone -\let\DI@item@nojoin=\@empty -% \end{macrocode} -% \end{macro}\end{macro}\end{templatetype} -% -% \begin{template}{indexitem}{fixed} -% The \texttt{fixed} template of type \texttt{indexitem} formats an -% item as the items in \package{doc}'s \texttt{theindex} environment. -% It is fixed in that it ignores the levels of the surrounding items. -% -% The keys for this template are: -% \begin{description} -% \keyvalitem{justification-setup}{i} -% This is a template instance of type \texttt{justification}. It -% sets the justification for the paragraph containing the item, -% unless the item is being joined with the preceeding item. -% \keyvalitem{pre-join}{b} -% A switch for whether the item should accept to be joined with -% the item before. True means ``accept'', false means ``decline'' -% (which is the default). -% \keyvalitem{nofig-action}{f1} -% If the \meta{figures} argument is |\NoValue| then the \meta{text} -% argument is passed on to this macro for the actual formatting. -% The default expansion is precisely the \meta{text}. -% \keyvalitem{fig-action}{f2} -% If the \meta{figures} argument is not |\NoValue| then the -% \meta{text} and \meta{figures} arguments are passed on (in that -% order) to this macro for the actual formatting. The default -% expansion is -% \begin{quote} -% \meta{text}|\pfill|\meta{figures} -% \end{quote} -% \keyvalitem{post-join}{b} -% A switch for whether the item should offer to join with the -% following item. True means ``make offer'', false (which is the -% default) means ``don't make offer''. Making the offer is -% furthermore conditioned by that the \meta{figures} argument is -% |\NoValue|. -% \keyvalitem{nojoin-extra}{f0} -% Extra code which is inserted after the normal code for an item -% if the item neither has any figures nor offers to join with the -% following item. The default value is a space of length -% \textit{linefillskip} followed by a |\nopagebreak|.^^A -% \changes{v\,0.03}{2001/02/24}{Added the \textit{nojoin-extra} -% key. (LH)}^^A -% \changes{v\,0.03}{2001/02/25}{Added \cs{nopagebreak} from -% \cs{efill} to default for \textit{nojoin-extra} key. (LH)} -% \keyvalitem{join-extra}{f0} -% Extra text which is inserted after the normal text of the item -% if there is a join, by default a comma and a space. -% \keyvalitem{offjoin-extra}{f0} -% Extra code which is inserted after the normal text of the item -% if a join is offered but declined. The default value is a space -% of length \textit{linefillskip} followed by a |\nopagebreak| -% (larger than the one from \textit{nojoin-extra}; if not for -% this, the default could have been taken to be -% |\DI@nojoin@extra|). -% \end{description} -% -% Note that the contents of the \textit{nojoin-extra}, -% \textit{join-extra}, and \textit{offjoin-extra} keys must be robust -% as they may be subjected to a |\protected@edef|. -% \changes{v\,0.03}{2001/02/24}{\cs{protected@edef}ing the macros -% \cs{DI@item@join} and \cs{DI@item@nojoin}. (LH)} -% -% \begin{macrocode} -%<*template> -\DeclareTemplate{indexitem}{fixed}{4}{ - justification-setup =i{justification} \DI@item@justification, - pre-join =b -%<default> {false} - DI@prejoin@, - nofig-action =f1 -%<default> {#1} - \DI@nofig, - fig-action =f2 -%<default> {#1\pfill#2} - \DI@hasfig, - post-join =b -%<default> {false} - DI@postjoin@, - nojoin-extra =f0 -%<default> {\hspace*{\justification@g} -%<default> \protect\nopagebreak[2]} - \DI@nojoin@extra, - join-extra =f0 -%<default> {,\space} - \DI@join@extra, - offjoin-extra =f0 -%<default> {\hspace*{\justification@g} -%<default> \protect\nopagebreak[4]} - \DI@offjoin@extra -}{% -%<*!default> - \let\ifDI@prejoin@\iffalse - \let\DI@nofig\@firstofone - \def\DI@hasfig##1##2{##1\pfill##2}% - \let\ifDI@postjoin@\iffalse - \def\DI@nojoin@extra{% - \hspace*{\justification@g}\protect\nopagebreak[2]% - }% - \def\DI@join@extra{,\space}% - \def\DI@offjoin@extra{% - \hspace*{\justification@g}\protect\nopagebreak[4]% - }% -%</!default> - \DoParameterAssignments - \ifDI@prejoin@ - \DI@item@join{\DI@item@justification}% - \else - \DI@item@nojoin\DI@item@justification - \fi - \let\DI@item@join\@firstofone - \let\DI@item@nojoin\@empty - \IfNoValueTF{#4}{% - \DI@nofig{#3}% - \ifDI@postjoin@ - \protected@edef\DI@item@join##1{\DI@join@extra}% - \protected@edef\DI@item@nojoin{\DI@offjoin@extra\protect\par}% - \else - \DI@nojoin@extra\par - \fi - }{% - \DI@hasfig{#3}{#4}% - \par - }% - \ignorespaces -} -% \end{macrocode} -% \end{template} -% -% \begin{instance}{indexitem}{fixed1} -% \begin{instance}{indexitem}{fixed2} -% \begin{instance}{indexitem}{fixed3} -% The \texttt{fixed1}, \texttt{fixed2}, and \texttt{fixed3} instances -% of type \texttt{indexitem} are simply the \texttt{fixed} template -% with different values assigned to the \textit{justification-setup} -% key. -% \begin{macrocode} -\DeclareInstance{indexitem}{fixed1}{fixed} - {justification-setup = indexitem1} -\DeclareInstance{indexitem}{fixed2}{fixed} - {justification-setup = indexitem2} -\DeclareInstance{indexitem}{fixed3}{fixed} - {justification-setup = indexitem3} -%</template> -%<*!template> -\@namedef{TP@I{}{indexitem}{fixed1}}#1#2#3#4{% - \@letinstance\DI@item@justification{justification}{indexitem1}% - \DI@item@nojoin - \DI@item@justification - \ifx \NoValue#4% - #3\nobreak\hfil\nopagebreak[2]% - \else - #3\pfill#4% - \fi - \let\DI@item@join\@firstofone - \let\DI@item@nojoin\@empty - \par -} -\@namedef{TP@I{}{indexitem}{fixed2}}#1#2#3#4{% - \@letinstance\DI@item@justification{justification}{indexitem2}% - \DI@item@nojoin - \DI@item@justification - \ifx \NoValue#4% - #3\nobreak\hfil\nopagebreak[2]% - \else - #3\pfill#4% - \fi - \let\DI@item@join\@firstofone - \let\DI@item@nojoin\@empty - \par -} -\@namedef{TP@I{}{indexitem}{fixed3}}#1#2#3#4{% - \@letinstance\DI@item@justification{justification}{indexitem3}% - \DI@item@nojoin - \DI@item@justification - \ifx \NoValue#4% - #3\nobreak\hfil\nopagebreak[2]% - \else - #3\pfill#4% - \fi - \let\DI@item@join\@firstofone - \let\DI@item@nojoin\@empty - \par -} -%</!template> -% \end{macrocode} -% \end{instance}\end{instance}\end{instance} -% -% \begin{instance}{indexitem}{fixed-r1a} -% \begin{instance}{indexitem}{fixed-r2a-nocomma} -% \begin{instance}{indexitem}{fixed-a3r} -% The \texttt{fixed-r1a}, \texttt{fixed-r2a-nocomma}, and -% \texttt{fixed-a3r} instances of type \texttt{indexitem} are again -% based on the \texttt{fixed} template, but here they always accept -% (or offer) to join with one neighbouring item, whereas they always -% reject to join with the other. As before, they differ in their -% values of the \textit{justification-setup} key, and the -% \texttt{-nocomma} is because that instance only inserts a space, -% not a comma and a space, when items are joined. -% \begin{macrocode} -%<*template> -\DeclareInstance{indexitem}{fixed-r1a}{fixed} - {justification-setup = indexitem1, post-join = true} -\DeclareInstance{indexitem}{fixed-r2a-nocomma}{fixed} - {justification-setup = indexitem2, - post-join = true, join-extra = {\space}} -\DeclareInstance{indexitem}{fixed-a3r}{fixed} - {justification-setup = indexitem3, pre-join = true} -%</template> -%<*!template> -\@namedef{TP@I{}{indexitem}{fixed-r1a}}#1#2#3#4{% - \@letinstance\DI@item@justification{justification}{indexitem1}% - \DI@item@nojoin - \DI@item@justification - \ifx \NoValue#4% - #3% - \def\DI@item@join##1{, }% - \def\DI@item@nojoin{\nobreak\hfil\nopagebreak[4]\par}% - \else - #3\pfill#4\par - \let\DI@item@join\@firstofone - \let\DI@item@nojoin\@empty - \fi - \ignorespaces -} -\@namedef{TP@I{}{indexitem}{fixed-r2a-nocomma}}#1#2#3#4{% - \@letinstance\DI@item@justification{justification}{indexitem2}% - \DI@item@nojoin - \DI@item@justification - \ifx \NoValue#4% - #3% - \def\DI@item@join##1{ }% - \def\DI@item@nojoin{\nobreak\hfil\nopagebreak[4]\par}% - \else - #3\pfill#4\par - \let\DI@item@join\@firstofone - \let\DI@item@nojoin\@empty - \fi - \ignorespaces -} -\@namedef{TP@I{}{indexitem}{fixed-a3r}}#1#2#3#4{% - \@letinstance\DI@item@justification{justification}{indexitem3}% - \DI@item@join{\DI@item@justification}% - \ifx \NoValue#4% - #3\hfil\nopagebreak[2]% - \else - #3\pfill#4% - \fi - \let\DI@item@join\@firstofone - \let\DI@item@nojoin\@empty - \par -} -%</!template> -% \end{macrocode} -% \end{instance}\end{instance}\end{instance} -% -% -% \begin{template}{indexitem}{aloneaccept} -% The \texttt{aloneaccept} template of type \texttt{indexitem} formats -% an item as the items in \package{doc}'s \texttt{theindex} environment. -% It accepts to be joined with the preceeding item if and only if -% both that and the following item are at a lower level than the item -% itself is. -% -% The keys for this template are: -% \begin{description} -% \keyvalitem{justification-setup}{i} -% This is a template instance of type \texttt{justification}. It -% sets the justification for the paragraph containing the item, -% unless the item is being joined with the preceeding item. -% \keyvalitem{ownlevel}{C} -% This is the (nominal) level of this item; it will accept a join -% with the preceeding item if and only if the levels of both that -% and the following item are different from this number. -% \changes{v\,1.00}{2001/03/25}{Changed condition for accepting a -% join from ``neighbouring item levels are lower'' to -% ``neighbouring item levels are not equal to''. (LH)} -% The default is 2. -% \keyvalitem{nofig-action}{f1} -% If the \meta{figures} argument is |\NoValue| then the \meta{text} -% argument is passed on to this macro for the actual formatting. -% The default expansion is the \meta{text} followed by a space of -% linefillskip. -% \keyvalitem{fig-action}{f2} -% If the \meta{figures} argument is not |\NoValue| then the -% \meta{text} and \meta{figures} arguments are passed on (in that -% order) to this macro for the actual formatting. The default -% expansion is -% \begin{quote} -% \meta{text}|\pfill|\meta{figures} -% \end{quote} -% \keyvalitem{post-join}{b} -% A switch for whether the item should offer to join with the -% following item. True means ``make offer'', false (which is the -% default) means ``don't make offer''. Making the offer is -% furthermore conditioned by that the \meta{figures} argument is -% |\NoValue|. -% \keyvalitem{nojoin-extra}{f0} -% Extra code which is inserted after the normal code for an item -% if the item neither has any figures nor offers to join with the -% following item. The default value is a space of length -% \textit{linefillskip}. -% \changes{v\,0.03}{2001/02/24}{Added the \textit{nojoin-extra} -% key. (LH)} -% \keyvalitem{join-extra}{f0} -% Extra text which is inserted after the normal text of the item -% if there is a join, by default a comma and a space. -% \keyvalitem{offjoin-extra}{f0} -% Extra code which is inserted after the normal text of the item -% if a join is offered but declined, by default the -% \textit{nojoin-extra} code followed by a |\nopagebreak|. -% \end{description} -% -% Note that the contents of the \textit{nojoin-extra}, -% \textit{join-extra}, and \textit{offjoin-extra} keys must be robust -% as they may be subjected to a |\protected@edef|. -% \changes{v\,0.03}{2001/02/24}{\cs{protected@edef}ing the macros -% \cs{DI@item@join} and \cs{DI@item@nojoin}. (LH)} -% -% \begin{macrocode} -%<*template> -\DeclareTemplate{indexitem}{aloneaccept}{4}{ - justification-setup =i{justification} \DI@item@justification, - ownlevel =C -%<default> {2} - \DI@this@level, - nofig-action =f1 -%<default> {#1} - \DI@nofig, - fig-action =f2 -%<default> {#1\pfill#2} - \DI@hasfig, - post-join =b -%<default> {false} - DI@postjoin@, - nojoin-extra =f0 -%<default> {\hspace*{\justification@g}} - \DI@nojoin@extra, - join-extra =f0 -%<default> {,\space} - \DI@join@extra, - offjoin-extra =f0 -%<default> {\DI@nojoin@extra\protect\nopagebreak[4]} - \DI@offjoin@extra -}{% -%<*!default> - \def\DI@this@level{2}% - \let\DI@nofig\@firstofone - \def\DI@hasfig##1##2{##1\pfill##2}% - \let\ifDI@postjoin@\iffalse - \def\DI@nojoin@extra{\hspace*{\justification@g}}% - \def\DI@join@extra{,\space}% - \def\DI@offjoin@extra{\DI@nojoin@extra\protect\nopagebreak[4]}% -%</!default> - \DoParameterAssignments - \ifnum \DI@this@level=#1 - \DI@item@nojoin \DI@item@justification - \else\ifnum \DI@this@level=#2 - \DI@item@nojoin \DI@item@justification - \else - \DI@item@join{\DI@item@justification}% - \fi\fi - \let\DI@item@join\@firstofone - \let\DI@item@nojoin\@empty - \IfNoValueTF{#4}{% - \DI@nofig{#3}% - \ifDI@postjoin@ - \protected@edef\DI@item@join##1{\DI@join@extra}% - \protected@edef\DI@item@nojoin{\DI@offjoin@extra\protect\par}% - \else - \DI@nojoin@extra \par - \fi - }{% - \DI@hasfig{#3}{#4}% - \par - }% - \ignorespaces -} -%</template> -% \end{macrocode} -% \end{template} -% -% \begin{instance}{indexitem}{aloneaccept2} -% \begin{instance}{indexitem}{aloneaceept3} -% The \texttt{aloneaccept2} and \texttt{aloneaccept3} instances of type -% \texttt{indexitem} are simply the \texttt{aloneaccept} template -% with the levels fixed to two and three, respectively. -% \begin{macrocode} -%<*template> -\DeclareInstance{indexitem}{aloneaccept2}{aloneaccept} - {justification-setup = indexitem2, ownlevel = 2} -\DeclareInstance{indexitem}{aloneaccept3}{aloneaccept} - {justification-setup = indexitem3, ownlevel = 3} -%</template> -%<*!template> -\@namedef{TP@I{}{indexitem}{aloneaccept2}}#1#2#3#4{% - \@letinstance\DI@item@justification{justification}{indexitem2}% - \ifnum #1=\tw@ - \DI@item@nojoin \DI@item@justification - \else\ifnum #2=\tw@ - \DI@item@nojoin \DI@item@justification - \else - \DI@item@join{\DI@item@justification}% - \fi\fi - \ifx \NoValue#4% - #3\nobreak\hfil\vadjust{}% - \else - #3\pfill #4% - \fi - \let\DI@item@join\@firstofone - \let\DI@item@nojoin\@empty - \par -} -\@namedef{TP@I{}{indexitem}{aloneaccept3}}#1#2#3#4{% - \@letinstance\DI@item@justification{justification}{indexitem3}% - \ifnum #1=\thr@@ - \DI@item@nojoin \DI@item@justification - \else\ifnum #2=\thr@@ - \DI@item@nojoin \DI@item@justification - \else - \DI@item@join{\DI@item@justification}% - \fi\fi - \ifx \NoValue#4% - #3\nobreak\hfil\vadjust{}% - \else - #3\pfill #4% - \fi - \let\DI@item@join\@firstofone - \let\DI@item@nojoin\@empty - \par -} -%</!template> -% \end{macrocode} -% \end{instance}\end{instance} -% -% -% \subsubsection{The \texttt{docindex} template type} -% -% \begin{templatetype}{docindex} -% A template of type \texttt{docindex} takes care of typesetting an -% index found in a file (which is |\input|ted as part of this -% process), hence using an instance of type \texttt{docindex} is -% the same kind of action that the |\printindex| and |\printglossary| -% commands make. -% -% The template decides from which file the index should be read. It -% takes two arguments: the index prologue and the index epilogue. -% These are two pieces of text (which may just as well include a -% sectioning command) that are printed just before and after the -% index. Either argument may be empty. Immediately after the file -% containing the body of the index has been inputted, the template -% must execute |\DI@item@nojoin| to make sure that the last item is -% properly typeset. -% -% Templates of type \texttt{docindex} must begin by opening a group -% and end by closing it. They must furthermore locally define the -% following macros before any part of the index is typeset. -% \begin{description} -% \item[\cs{DI@indexitem@i}, \cs{DI@indexitem@ii}, and -% \cs{DI@indexitem@iii}] -% Handlers for index items at level 1, 2, and 3 respectively. -% These handlers must conform to the specification for -% \texttt{indexitem} instances. -% \item[\cs{DI@letter@skip}, \cs{DI@letter@format}] -% These are described in the comments to the |\indexnewletter| -% command. -% \item[\cs{+}] -% The command for typesetting the separator between two parts of -% a composite (page) number. This is a parameterless macro. -% \end{description} -% -% \begin{macrocode} -%<template>\DeclareTemplateType{docindex}{2} -%<!template>\@namedef{TP@T{docindex}}{{}{2}} -% \end{macrocode} -% \end{templatetype} -% -% \begin{template}{docindex}{std} -% The \texttt{std} template of type \texttt{docindex} typesets an -% index while providing all the formatting parameters of the -% \package{doc} index and list of changes (and a few more). -% \changes{v\,1.00}{2001/04/08}{The \mbox{\textit{-font}} keyvals -% renamed to \mbox{\textit{-setup}}, but the type stayed the -% same (f0). (LH)} -% -% \label{docindex:std} -% The keys of the template are: -% \begin{description} -% \keyvalitem{file-name}{n} -% The base name of the file in which the index is stored, by -% default the |\jobname|.\changes{v\,1.00}{2001/03/25}{Added -% \textit{file-name} and \textit{file-extension} keys, removed -% the \textit{default-prologue} and \textit{default-epilogue} -% keys. (LH)} -% \keyvalitem{file-extension}{n} -% The extension of the file in which the index is stored, by -% default \texttt{ind}. -% \keyvalitem{item1}{i} -% \texttt{indexitem} instance for level 1 items, by default -% \texttt{fixed1}. -% \keyvalitem{item2}{i} -% \texttt{indexitem} instance for level 2 items, by default -% \texttt{fixed2}. -% \keyvalitem{item3}{i} -% \texttt{indexitem} instance for level 3 items, by default -% \texttt{fixed3}. -% \keyvalitem{columns}{C} -% The number of columns in the index, by default 3. -% \keyvalitem{reserved-height}{L} -% The minimal amount of vertical space that must be left on the -% current page if the index is to start on it, by default -% 80\,pt.^^A -% \changes{v\,1.00}{2001/03/25}{Made \textit{reserved-height} work -% even when \textit{columns} is 1 by using the -% \package{multicol} macro \cs{enough@room}. (LH)} -% \keyvalitem{column-sep}{l} -% The horizontal separation between columns in the index, by -% default 10\,pt. (This may seem strange in comparison with -% \package{doc}, since |\IndexParms| contains the command -% |\columnsep=15pt|, but \package{doc} doesn't execute -% |\IndexParms| until \LaTeX\ is already in multi-column mode, and -% then it is too late for the changed value to have any effect.) -% \keyvalitem{prologue-setup}{f0} -% Various commands setting layout parameters (e.g.\ the font) for -% the prologue; by default empty. -% \keyvalitem{body-setup}{f0} -% Various commands setting layout parameters (e.g.\ the font) for -% the body of the index; by default |\small|. -% \keyvalitem{epilogue-setup}{f0} -% Various commands setting layout parameters (e.g.\ the font) for -% the epilogue; by default |\normalsize| (to counter the |\small| -% in the \textit{body-setup}). -% \keyvalitem{letter-skip}{L} -% The skip inserted before a new letter group, by default 10\,pt -% plus 2\,pt minus 3\,pt. -% \keyvalitem{letter-format}{f1} -% The macro which formats new letter groups; the argument is the -% heading for the group, as generated by \program{makeindex}. By -% defaults it typesets the argument in boldface, centered on a -% line. -% \keyvalitem{pagestyle}{n} -% If this is nonempty then the pagestyle by that name will be -% selected for the index. By default it is empty. -% \keyvalitem{parskip}{l} -% The value of |\parskip| to use inside the index, by default -% 0\,pt plus 1\,pt. This key value is likely to change as the -% \LaTeXplus\ interfaces for galleys evolve. -% \changes{v\,0.03}{2001/02/27}{Added \textit{parskip} keyval. (LH)} -% \keyvalitem{page-compositor}{f0} -% The text that is typeset to separate two parts of a composite -% (page) number, by default a hyphen. -% \changes{v\,1.00}{2001/04/05}{Added \textit{page-compositor} -% keyval. (LH)} -% \end{description} -% -% \begin{macrocode} -%<*template> -\DeclareTemplate{docindex}{std}{2}{ - file-name =n -%<default> {\jobname} - \DI@file@name, - file-extension =n -%<default> {ind} - \DI@file@ext, - item1 =i{indexitem} -%<default> {fixed1} - \DI@indexitem@i, - item2 =i{indexitem} -%<default> {fixed2} - \DI@indexitem@ii, - item3 =i{indexitem} -%<default> {fixed3} - \DI@indexitem@iii, - reserved-height =L -%<default> {80pt} - \DI@reserved@height, - columns =C -%<default> {3} - \DI@columns, - column-sep =l -%<default> {10pt} - \columnsep, - prologue-setup =f0 -%<default> {} - \DI@prologue@setup, - body-setup =f0 -%<default> {\small} - \DI@body@setup, - epilogue-setup =f0 -%<default> {\normalsize} - \DI@epilogue@setup, - letter-skip =L -%<default> {10pt plus 2pt minus 3pt} - \DI@letter@skip, - letter-format =f1 -%<default> {\UseInstance{justification}{center}% -%<default> \textbf{#1}\nopagebreak\csname par\endcsname} - \DI@letter@format, - pagestyle =n -%<default> {} - \DI@pagestyle, - parskip =l -%<default> {0pt plus 1pt} - \parskip, - page-compositor =f0 -%<default> {-} - \+ -}{% - \begingroup -%<*!default> - \def\DI@file@name{\jobname}% - \def\DI@file@ext{ind}% - \@letinstance\DI@indexitem@i{indexitem}{fixed1}% - \@letinstance\DI@indexitem@ii{indexitem}{fixed2}% - \@letinstance\DI@indexitem@iii{indexitem}{fixed3}% - \def\DI@reserved@height{80pt}% - \def\DI@columns{3}% - \columnsep=10pt% - \let\DI@prologue@setup\@empty - \def\DI@body@setup{\small}% - \def\DI@epilogue@setup{\normalsize}% - \def\DI@letter@skip{10pt plus 2pt minus 3pt}% - \def\DI@letter@format##1{% - \UseInstance{justification}{center}% - \textbf{##1}\nopagebreak\par - }% - \parskip=\z@\@plus\p@ - \let\DI@pagestyle\@empty - \def\+{-}% -%</!default> - \DoParameterAssignments - \IfFileExists{\DI@file@name.\DI@file@ext}{% - \ifnum \DI@columns>\@ne - \begin{multicols}{\DI@columns}% - [\DI@prologue@setup #1][\DI@reserved@height]% - \else - \enough@room{\DI@reserved@height}% - \DI@prologue@setup #1\par - \addvspace\multicolsep - \fi - \ifx \DI@pagestyle\@empty \else \pagestyle{\DI@pagestyle}\fi - \DI@body@setup - \DI@ind@setup - \input{\DI@file@name.\DI@file@ext}% - \DI@item@nojoin - \ifx \DI@pagestyle\@empty \else - \expandafter\thispagestyle \expandafter{\DI@pagestyle}% - \fi - \ifnum \DI@columns>\@ne - \end{multicols}% - \else - \enough@room\postmulticols - \addvspace\multicolsep - \fi - \DI@epilogue@setup #2\par - }{\typeout{No file \DI@file@name.\DI@file@ext.}}% - \endgroup -} -% \end{macrocode} -% \end{template} -% -% -% \begin{instance}{docindex}{index} -% \begin{option}{usedocindexps} -% The \texttt{index} instance of the \texttt{docindex} template type -% prints the normal index (as opposed to the list of changes). There -% are two different definitions of the instance: one which sets the -% pagestyle in the index, and one which does not; which one is used -% depends on whether the \texttt{usedocindexps} option has been -% passed to the package or not. -% \begin{macrocode} -\@ifpackagewith{docindex}{usedocindexps}{% - \DeclareInstance{docindex}{index}{std}{pagestyle=docindex}% -}{% - \DeclareInstance{docindex}{index}{std}{}% -} -%</template> -% \end{macrocode} -% -% The implementations of the \texttt{index} instance in -% \package{docidx2e} are slightly off in that they use \package{doc} -% parameters for various settings in the extent such parameters exist. -% \changes{v\,0.03}{2001/02/24}{Added \cs{@nobreakfalse} in -% \package{docidx2e} implementation; the first item in the index -% does not directly follow a \cs{section}-type heading. (LH)} -% \label{p:index-instance} -% \begin{macrocode} -%<*!template> -\@ifpackagewith{docidx2e}{usedocindexps}{% - \@namedef{TP@I{}{docindex}{index}}#1#2{% - \begingroup - \@letinstance\DI@indexitem@i{indexitem}{fixed1}% - \@letinstance\DI@indexitem@ii{indexitem}{fixed2}% - \@letinstance\DI@indexitem@iii{indexitem}{fixed3}% - \columnsep=10pt% - \parskip=0pt plus 1pt% - \def\DI@letter@skip{10pt plus 2pt minus 3pt}% - \def\DI@letter@format##1{% - \par - \hb@xt@\hsize{\hfil\textbf{##1}\hfil}% - \nopagebreak - }% - \def\+{-}% - \IfFileExists{\jobname.ind}{% - \ifnum \c@IndexColumns>\@ne - \begin{multicols}{\c@IndexColumns}[#1][\IndexMin]% - \else - \enough@room{\IndexMin}% - #1\par - \addvspace\multicolsep - \fi - \pagestyle{docindex}% - \small - \@nobreakfalse - \DI@ind@setup - \input{\jobname.ind}% - \DI@item@nojoin - \thispagestyle{docindex} - \ifnum \c@IndexColumns>\@ne - \end{multicols}% - \else - \enough@room\postmulticols - \addvspace\multicolsep - \fi - \normalsize #2\par - }{\typeout{No file \jobname.ind.}}% - \endgroup - } -}{% - \@namedef{TP@I{}{docindex}{index}}#1#2{% - \begingroup - \@letinstance\DI@indexitem@i{indexitem}{fixed1}% - \@letinstance\DI@indexitem@ii{indexitem}{fixed2}% - \@letinstance\DI@indexitem@iii{indexitem}{fixed3}% - \columnsep=10pt% - \parskip=0pt plus 1pt% - \def\DI@letter@skip{10pt plus 2pt minus 3pt}% - \def\DI@letter@format##1{% - \par - \hb@xt@\hsize{\hfil\textbf{##1}\hfil}% - \nopagebreak - }% - \def\+{-}% - \IfFileExists{\jobname.ind}{% - \ifnum \c@IndexColumns>\@ne - \begin{multicols}{\c@IndexColumns}[#1][\IndexMin]% - \else - \enough@room{\IndexMin}% - #1\par - \addvspace\multicolsep - \fi - \small - \@nobreakfalse - \DI@ind@setup - \input{\jobname.ind}% - \DI@item@nojoin - \ifnum \c@IndexColumns>\@ne - \end{multicols}% - \else - \enough@room\postmulticols - \addvspace\multicolsep - \fi - \normalsize #2\par - }{\typeout{No file \jobname.ind.}}% - \endgroup - } -} -%</!template> -% \end{macrocode} -% \end{option}\end{instance} -% -% -% \begin{instance}{docindex}{changes} -% The \texttt{changes} instance of the \texttt{docindex} template -% type typesets a \package{doc} list of changes. -% \changes{v\,0.03}{2001/02/24}{Added \cs{@nobreakfalse} in -% \package{docidx2e} implementation; the first item in the index -% does not directly follow a \cs{section}-type heading. (LH)} -% \changes{v\,1.00}{2001/04/07}{Added \cs{makeatletter} in -% \package{docidx2e} implementation; it doesn't hurt and it is -% sometimes necessary (when commands that expand to private -% control sequences are used in the argument of \cs{changes}). -% (LH)} -% \begin{macrocode} -%<*template> -\DeclareInstance{docindex}{changes}{std}{ - file-extension = gls, - item2 = fixed-r2a-nocomma, - item3 = fixed-a3r, - columns = 2, - letter-format = {}, - letter-skip = \z@skip -} -%</template> -% \end{macrocode} -% \label{p:changes-instance} -% \begin{macrocode} -%<*!template> -\@namedef{TP@I{}{docindex}{changes}}#1#2{% - \begingroup - \@letinstance\DI@indexitem@i{indexitem}{fixed1}% - \@letinstance\DI@indexitem@ii{indexitem}{fixed-r2a-nocomma}% - \@letinstance\DI@indexitem@iii{indexitem}{fixed-a3r}% - \columnsep=10pt% - \parskip=0pt plus 1pt% - \def\DI@letter@skip{\z@skip}% - \let\DI@letter@format\@gobble - \def\+{-}% - \IfFileExists{\jobname.gls}{% - \ifnum \c@GlossaryColumns>\@ne - \begin{multicols}{\c@GlossaryColumns}[#1][\GlossaryMin]% - \else - \enough@room{\GlossaryMin}% - #1\par - \addvspace\multicolsep - \fi - \small - \makeatletter - \@nobreakfalse - \DI@ind@setup - \input{\jobname.gls}% - \DI@item@nojoin - \ifnum \c@GlossaryColumns>\@ne - \end{multicols}% - \else - \enough@room\postmulticols - \addvspace\multicolsep - \fi - \normalsize #2\par - }{\typeout{No file \jobname.gls.}} - \endgroup -} -%</!template> -% \end{macrocode} -% \end{instance} -% -% \begin{macro}{\PrintIndex} -% \begin{macro}{\PrintChanges} -% The |\PrintIndex| and |\PrintChanges| commands are redefined to use -% the respective instances of template type \texttt{docindex}. -% \begin{macrocode} -\renewcommand\PrintIndex{% - \UseInstance{docindex}{index}{\index@prologue}{}% - \global\let\PrintIndex\@empty -} -\renewcommand\PrintChanges{% - \UseInstance{docindex}{changes}{\glossary@prologue}{}% - \global\let\PrintChanges\@empty -} -%</pkg> -% \end{macrocode} -% \end{macro}\end{macro} -% -% -% \section{Notes and acknowledgements} -% -% The exact descriptions of the parameters of the \program{makeindex} -% program is the paper \cite{makeindex-paper} by Chen and Harrison, but -% I have seen claims that there are parameters not listed there -% (presumably becuase they were added after this paper was written). -% \texttt{docindex.ist} does not change any such undocumented -% parameter, however. -% -% There are other index sorting programs than \package{makeindex} -% around, such as for example \program{x\r{\i}ndy}~\cite{xindy}. -% Should someone create index style files for such systems that are -% equivalent (or superior, for that matter) to \texttt{docindex.ist} -% then I would be happy to add them to the \package{docindex} -% distribution. -% -% Most of the actual layout parameter settings used by the -% \package{docindex} package are not of my design, but copied from -% various other \LaTeX\ packages such as~\cite{multicol,doc} (mainly by -% Frank Mittelbach). I have however tried to sort out which parameters -% are actually in force under the various conditions---something which -% turned out to be less obvious than I originally suspected. -% -% The idea to have the \texttt{docindex} type templates input the sorted -% index file (rather than simply setting up the formatting of it as was -% the case in v\,0.03) was taken from the \package{xindex} -% package~\cite{xindex} by Achim Blumensath. -% -% \hbadness=10000 -% -% \Finale -% -% -\endinput
\ No newline at end of file |