summaryrefslogtreecommitdiff
path: root/fonts/utilities/fontinst/source/fisource.sty
diff options
context:
space:
mode:
Diffstat (limited to 'fonts/utilities/fontinst/source/fisource.sty')
-rw-r--r--fonts/utilities/fontinst/source/fisource.sty691
1 files changed, 691 insertions, 0 deletions
diff --git a/fonts/utilities/fontinst/source/fisource.sty b/fonts/utilities/fontinst/source/fisource.sty
new file mode 100644
index 0000000000..35ae65d39f
--- /dev/null
+++ b/fonts/utilities/fontinst/source/fisource.sty
@@ -0,0 +1,691 @@
+% \iffalse
+%
+% Copyright 1999, 2000 the fontinst maintenance team and any individual
+% authors listed elsewhere in this file. All rights reserved.
+%
+% This file is part of the fontinst system version 1.9.
+% -----------------------------------------------------
+%
+% It may be distributed under the terms of the LaTeX Project Public
+% License, as described in lppl.txt in the base LaTeX distribution.
+% Either version 1.1 or, at your option, any later version.
+%
+% \fi
+%
+% \title{The \package{fisource} package}
+% \author{Lars Hellstr\"om}
+% \maketitle
+%
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{fisource}%
+ [2003/03/29 v2.16 Fontinst source documentation commands]
+% \end{macrocode}
+%
+% \section{Option processing}
+%
+% \begin{option}{warnfinale}
+% \changes{2.01}{2000/07/06}{Option added. (LH)}
+% Under development I find it quite a nuisance that |\Finale| raises
+% an error if the checksum isn't correct; a warning feels more
+% appropriate. Therefore the \texttt{warnfinale} option redefines
+% |\check@checksum| to emit a warning instead.
+% \begin{macrocode}
+\DeclareOption{warnfinale}{%
+ \@ifpackageloaded{doc}\@firstofone\AtEndOfPackage {%
+ \def\check@checksum{\relax
+ \ifnum\check@sum=\z@
+ \typeout{**********************************}%
+ \typeout{* This macro file has no checksum!}%
+ \typeout{* The checksum should be \the\bslash@cnt!}%
+ \typeout{**********************************}%
+ \else\ifnum \check@sum=\bslash@cnt
+ \typeout{*******************}%
+ \typeout{* Checksum passed *}%
+ \typeout{*******************}%
+ \else
+ \PackageWarning{doc}{Checksum not passed
+ (\the\check@sum<>\the\bslash@cnt)}%
+ \fi\fi
+ \global\check@sum\z@
+ }%
+ }%
+}
+% \end{macrocode}
+% \end{option}
+%
+% All other options are passed on to \package{xdoc}.
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{xdoc2}}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% \changes{2.00}{2000/07/06}{Use \package{xdoc1}. (LH)}
+% \changes{2.02}{2000/07/15}{Use \package{xdoc2}. (LH)}
+% \changes{2.10}{2001/02/27}{Use \package{docidx2e}. (LH)}
+% \begin{macrocode}
+\RequirePackage{xdoc2,docidx2e}
+% \end{macrocode}
+%
+% \section{Miscellanea}
+%
+% \begin{macrocode}
+\CodelineIndex
+\setcounter{IndexColumns}{2}
+\setcounter{tocdepth}{2}
+\DeclareRobustCommand\package[1]{\textsf{#1}}
+\DeclareRobustCommand\eTeX{\(\varepsilon\)-\kern-.125em\TeX}
+% \end{macrocode}
+%
+% \begin{macro}{\AllTeX}
+% \changes{2.13}{2001/08/26}{Command added. (LH)}
+% \begin{macro}{\La}
+% The |\AllTeX| command is for writing `(La)TeX' (but nicer). The
+% definition is taken from \texttt{tugboat.dtx}.
+% \begin{macrocode}
+\newcommand{\La}{%
+ L\kern-.36em
+ {%
+ \setbox0\hbox{T}%
+ \vbox to\ht0{\hbox{%
+ $\m@th$\csname S@\f@size\endcsname
+ \fontsize\sf@size\z@\math@fontsfalse\selectfont
+ A%
+ }\vss}%
+ }%
+}
+\DeclareRobustCommand\AllTeX{(\La\kern-.075em)\kern-.075em\TeX}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\missing}
+% \changes{2.10}{2001/02/27}{Redefined using
+% \cs{NewDescribeCommand}. (LH)}
+% \begin{macrocode}
+\NewDescribeCommand\missing{%
+ \XD@grab@marg\XD@grab@harmless@cs
+}{2}{%
+ \GenericDescribePrint{\small Not in \texttt{#1}:
+ \texttt{\Bslash#2}}%
+ \MakeSortKey\@tempa{#2}{}%
+ \IndexEntry{%
+ \LevelSorted{Not in #1:}{Not in \texttt{#1}:}%
+ \LevelSorted{\@tempa}{\texttt{\Bslash#2}}%
+ }{usage}{\thepage}%
+}
+% \newcommand\missing[2]{%
+% \marginpar{%
+% \raggedleft\leavevmode\strut
+% Not in \texttt{#1}: \texttt{\string#2}\strut
+% \index{Not in #1\actualchar Not in \string\texttt{#1}\levelchar
+% \string#2\actualchar\string\verb\verbatimchar
+% \string#2\verbatimchar\encapchar usage}%
+% }%
+% }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\newcommand\ambiguity[1]{\leavevmode
+ \textbf{#1\index{Ambiguity\encapchar usage}}%
+ \marginpar{\raggedleft\textbf{\huge A}}%
+}
+\newcommand\question[1]{\leavevmode
+ \textbf{#1\index{Question\encapchar usage}}%
+ \marginpar{\raggedleft\textbf{\huge ?}}%
+}
+\AtBeginDocument{\catcode`\_=11}
+\def\MakePrivateLetters{\catcode`\_=11\makeatletter}
+
+% \end{macrocode}
+%
+% \multchanges{\cs{meta}}{1.30}{2000/01/02}{\cs{Meta} command (robust
+% wrapper around \package{doc}'s \cs{meta}) added. (LH)}
+% \multchanges{\cs{meta}}{1.31}{2000/02/10}{Command redefined so that
+% it is robust itself. \cs{Meta} removed. (LH)}
+% \multchanges{\cs{meta@font@select}}{1.33}{2000/02/26}{Macro added.
+% (LH)}
+% \multchanges{\cs{meta}}{1.35}{2000/03/25}{Don't make \cs{setlanguage}
+% whatsits in restricted horizontal mode. (LH)}
+% \multchanges{\cs{meta}}{2.00}{2000/07/06}{Command definition removed,
+% since the command is already defined by \package{doc} or
+% \package{xdoc}. (LH)}
+%
+% \begin{macro}{\cs}
+% This is \package{ltxdoc}'s normal |\cs|, but with a twist to make
+% |\meta| produce better results when used in the argument.
+% \changes{1.33}{2000/02/26}{Redefinition added. (LH)}
+% \changes{2.00}{2000/07/06}{Use \cs{MetaNormalfont} and
+% \cs{PrintVisibleChar}. (LH)}
+% \begin{macrocode}
+\DeclareRobustCommand\cs[1]{%
+ \texttt{\MetaNormalfont\PrintVisibleChar{`\\}#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{isyntax}
+% |isyntax| is for ``informal'' syntax specifications, such as
+% \begin{quote}
+% A \meta{varchar command} can be one of\\
+% \begin{quote}
+% |\vartop|\marg{glyph}\\
+% |\varmid|\marg{glyph}\\
+% |\varbot|\marg{glyph}\\
+% |\varrep|\marg{glyph}
+% \end{quote}
+% \end{quote}
+% The implementation is based on that of the \texttt{verse}
+% environment.It usually works just as fine with \texttt{quote}, but
+% \texttt{isyntax} handles breaking long lines better (and more
+% elegantly).
+% \changes{1.37}{2000/05/14}{Increased \cs{rightskip} stretchability
+% and added setting of \cs{linepenalty}. (LH)}
+% \begin{macrocode}
+\newenvironment{isyntax}{%
+ \let\\\@centercr
+ \list{}{%
+ \itemsep \z@
+ \itemindent -1.5em%
+ \listparindent \itemindent
+ \advance \leftmargin 1.5em%
+ }%
+ \advance \rightskip \z@\@plus0.7\linewidth \relax
+ \linepenalty=100\relax
+ \item\relax
+}{\endlist}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{obsoletemacro}
+% \changes{2.00}{2000/07/06}{Environment removed since obsolete. (LH)}
+% The \texttt{obsoletemacro} environment is for getting the right
+% heading on |\changes| comments that refer to macros which have been
+% removed. It only updates the |\saved@macroname|.
+% \begin{macrocode}
+% \newenvironment{obsoletemacro}{\begingroup
+% \catcode`\\12
+% \MakePrivateLetters
+% \obsolete@macro
+% }{}
+% \def\obsolete@macro#1{\endgroup
+% \edef\saved@macroname{\string#1}%
+% }
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \section{\texttt{macro}-like environments}
+%
+% This subsection contains the definitions of a couple of environments
+% that, like \package{doc}'s \texttt{environment}, are for marking up the
+% document (what is defined and where). The definitions of these
+% environments are identical to that of \texttt{environment}, except
+% that the index entry texts are a little different.
+%
+% This section got a lot shorter in v\,2.00 thanks to \package{xdoc}.
+%
+% \begin{environment}{fiinteger}
+% \begin{environment}{fistring}
+% \multchanges{\notcs{\texttt{fiinteger} environment}^^A
+% \notcs{\texttt{fistring} environment}}{2.03}{2000/07/24}^^A
+% {Swapped last two arguments of \cs{NewMacroEnvironment} call
+% since \package{xdoc} changed.}
+% \begin{macrocode}
+\NewMacroEnvironment{fiinteger}{\XD@grab@harmless\relax}{1}%
+ {\MacroFont#1 \normalfont integer}%
+ {\XDMainIndex{\levelsorted{#1 I}{\texttt{#1} (integer)}}%
+ \XDMainIndex{\levelsame{integers:}\levelsorted{#1}{\texttt{#1}}}}%
+ {{#1}{\texttt{#1} integer}}{}
+% \end{macrocode}
+% \begin{macrocode}
+\NewMacroEnvironment{fistring}{\XD@grab@harmless\relax}{1}%
+ {\MacroFont#1 \normalfont string}%
+ {\XDMainIndex{\levelsorted{#1 S}{\texttt{#1} (string)}}%
+ \XDMainIndex{\levelsame{strings:}\levelsorted{#1}{\texttt{#1}}}}%
+ {{#1}{\texttt{#1} string}}{}
+% \end{macrocode}
+% \end{environment}\end{environment}
+%
+% \begin{environment}{PLproperty}
+% \changes{2.04}{2000/11/03}{Environment added. (LH)}
+% \changes{2.11}{2001/03/16}{Added \cs{DoNotIndexHarmless}. (LH)}
+% The \texttt{PLproperty} environment is for marking up definitions
+% of macros for interpreting properties in (V)PL files.
+% \begin{macrocode}
+\NewMacroEnvironment{PLproperty}{\XD@grab@harmless\relax}{1}%
+ {\MacroFont#1 \normalfont property}%
+ {\XDMainIndex{\levelsorted{#1}{\texttt{\Bslash#1}}}%
+ \XDMainIndex{%
+ \levelsame{PL properties:}\levelsorted{#1}{\texttt{#1}}%
+ }}%
+ {{#1}{\texttt{\Bslash#1}}}%
+ {\DoNotIndexHarmless{#1}}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{numPLproperty}
+% \changes{2.11}{2001/03/17}{Environment added. (LH)}
+% The \texttt{numPLproperty} environment is for marking up definitions
+% of macros that interpret a numbered family of (V)PL file properties,
+% such as \texttt{NUM} for \texttt{NUM1}, \texttt{NUM2}, and
+% \texttt{NUM3}. The syntax is
+% \begin{quote}
+% |\begin{numPLproperty}|\marg{base}\marg{num-list}
+% \end{quote}
+% In the above case the \meta{base} would be \texttt{NUM}. The
+% \meta{num-list} is a comma-separated list of digits (no existing
+% family of numbered properties have more than 5 members) that
+% specify what members of the family are handled by the macro being
+% defined.
+% \begin{macrocode}
+\NewMacroEnvironment{numPLproperty}{%
+ \XD@grab@harmless\relax\XD@grab@marg
+}{2}%
+ {\MacroFont#1$*$ \normalfont properties}%
+ {\XDMainIndex{\levelsorted{#1}{\texttt{\Bslash#1}}}%
+ \@for\@tempa:=#2\do{%
+ \XDMainIndex{%
+ \levelsame{PL properties:}%
+ \levelsorted{#1\@tempa}{\texttt{#1\@tempa}}%
+ }%
+ }}%
+ {{#1}{\texttt{\Bslash#1}}}%
+ {\DoNotIndexHarmless{#1}}
+% \end{macrocode}
+% \end{environment}
+%
+%
+% \multchanges{\notcs{\texttt{switch} environment}}{2.00}{2000/07/06}
+% {Removed since defined in \package{xdoc}. (LH)}
+%
+%
+% \section{Changes of change history formating}
+%
+% \multchanges{\cs{@changes}}{2.00}{2000/07/06}{Redefinition removed
+% since already done in \package{xdoc}. (LH)}
+%
+% \begin{macro}{\multchanges}
+% \changes{1.32}{2000/02/22}{\cs{flushleftspace} between \cs{cs}
+% items when typeset, instead of space. (LH)}
+% \changes{1.34}{2000/03/11}{\cs{notcs} marker allowed in
+% \meta{commands}. (LH)}
+% \changes{2.16}{2003/03/29}{Modified macro so that it is based on
+% \cs{changes@}. This means it is now compatible with \cs{uintver}.
+% (LH)}
+% The |\multchanges| commands is used to record a change to several
+% macros. Its syntax is
+% \begin{quote}
+% |\multchanges|\marg{commands}\marg{version}\marg{date}^^A
+% \marg{description}
+% \end{quote}
+% The three last arguments are as the arguments of |\changes|. The
+% \meta{commands} should be a nonempty sequence of commands, each
+% command either a |\cs| or a |\notcs|, and each command with one
+% argument. The change history entry generated by a
+% |\multchanges| will be for all the macros (or whatever) listed in
+% the first argument. |\cs| items will be typeset in typewriter font
+% with a leading backslash, whereas |\notcs| items will receive no
+% such special formatting.
+%
+% This method may have problems with active characters (since I've
+% ignored some things the standard |\changes| do to accomodate these),
+% but luckily \package{fontinst} hardly uses active characters
+% anyway. Furthermore I don't think the \package{doc} way of dealing
+% with them would be the right way here. Perhaps an active character
+% should rather be entered in the \meta{commands} argument as
+% |\active|\marg{code} or something?
+% \begin{macrocode}
+\newcommand*\multchanges[4]{%
+ \@bsphack
+ \begingroup
+ \begingroup
+ \def\cs##1{,\space##1}%
+ \let\notcs=\cs
+ \protected@xdef\@gtempa{%
+ \expandafter\@gobbletwo#1\@empty\@empty\@empty
+ }%
+ \edef\cs{,\noexpand\flushleftspace
+ \noexpand\protect
+ \expandafter\noexpand\csname cs \endcsname
+ }%
+ \def\notcs##1{,\noexpand\flushleftspace ##1}%
+ \protected@xdef\@gtempa{%
+ {\@gtempa}%
+ {\expandafter\@gobbletwo#1\@empty\@empty\@empty}%
+ }%
+ \endgroup
+ \let\saved@macroname=\@gtempa
+ \changes@{#2}{#3}{#4}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\flushleftspace}
+% The |\flushleftspace| command should typeset something which looks
+% like a space when not broken at, and as an \texttt{3em plus 1fil}
+% space when broken at. It also have to survive its use in
+% |\multchanges|.
+% \changes{1.32}{2000/02/22}{Command added. (LH)}
+% \changes{1.38}{2000/06/05}{Modified finite penalty. (LH)}
+% \begin{macrocode}
+\DeclareRobustCommand\flushleftspace{%
+ \nobreak \hskip 3em\@plus 1fil%
+ \penalty\@m \hskip -3em\@plus -1fil\ %
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\labelednumber}
+% This \package{xdoc} macro is redefined to put a ``filbreak''
+% space before every page number labelled with a macro name.
+% \changes{2.16}{2003/03/29}{Redefinition added. (LH)}
+% \begin{macrocode}
+\renewcommand*\labelednumber[2]{%
+ \hskip -1em\@plus -8em%
+ \vadjust{}\hskip 1em\@plus 8em%
+ #2\nolinebreak[2] (#1)%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{theglossary}
+% \begin{macrocode}
+% \ifhave@multicol
+% \renewenvironment{theglossary}{%
+% \begin{multicols}\c@GlossaryColumns
+% [\glossary@prologue][\GlossaryMin]%
+% \GlossaryParms \def\item{\@idxitem v\,}\ignorespaces}%
+% {\end{multicols}}
+% \else
+% \renewenvironment{theglossary}{%
+% \@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+% \columnseprule \z@ \columnsep 35\p@
+% \twocolumn[\glossary@prologue]%
+% \GlossaryParms \def\item{\@idxitem v\,}\ignorespaces}
+% {\if@restonecol\onecolumn\else\clearpage\fi}
+% \fi
+% \end{macrocode}
+%
+% If we want to use the glossary for some other information as well
+% (here I am thinking primarily on collecting |\missing| notices) then
+% perhaps we should insert the |v\,| in |\changes| instead. I would
+% guess the 64 character limit isn't at all as usual as it was when
+% the doc package documentation was written.
+%
+% \begin{macrocode}
+% \renewenvironment{theglossary}{%
+% % \penalty\z@\vskip\GlossaryMin\@plus\z@\@minus\GlossaryMin
+% % \penalty\z@\vskip-\GlossaryMin\@plus\z@\@minus-\GlossaryMin
+% \glossary@prologue
+% \GlossaryParms \let\item\@idxitem \ignorespaces
+% }{\par\bigskip}
+% \end{macrocode}
+% On second thoughts, the changes should be printed in one column.
+% They're usually very hard to linebreak in narrow columns.
+% \end{environment}
+%
+% \begin{macro}{\firstsubsubitem}
+% The idea with |\firstsubsubitem| is that it should be like |\efill|
+% |\subsubitem| if the paragraph is ended by a |\subsubitem| and like
+% \verb*"\ " if it isn't. This is achieved by grabbing the paragraph
+% into a macro and then prepend some suitable material to it when
+% typesetting.
+% \changes{1.36}{2000/04/10}{Grabbing paragraph as list of tokens,
+% rather than typeset text. (LH)}
+% \begin{macrocode}
+% \newcommand\firstsubsubitem{%
+% \begingroup
+% \let\par\@fssi@par
+% \let\subsubitem\@fssi@subsubitem
+% \protected@edef\@tempa{\iffalse}\fi
+% }
+% \end{macrocode}
+% \begin{macrocode}
+% \def\@fssi@subsubitem{%
+% \iffalse{\fi}%
+% \nobreak\hfill\vadjust{\nobreak}%
+% \penalty-\@M\vadjust{\penalty\@m}\nobreak\hskip -5pt\relax
+% \@tempa
+% \endgroup
+% \subsubitem
+% }
+% \end{macrocode}
+% \multchanges{\cs{@fssi@par}}{2000/06/05}{1.38}{Replaced simple space
+% by a more complicated sequence of penalties, vadjusts, and glue,
+% to make it more like \cs{flushleftspace}. (LH)}
+% \begin{macrocode}
+% \def\@fssi@par{%
+% \iffalse{\fi}%
+% \nobreak \hskip \z@ \@plus 0.4\linewidth
+% \vadjust{\nobreak}%
+% \penalty500\hskip \z@ \@plus -0.4\linewidth\hskip 5pt\relax
+% \penalty\z@\ \vadjust{\penalty\@m}%
+% \nobreak\hskip -5pt\relax
+% \@tempa
+% \endgroup
+% \par
+% }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\GlossaryParms}
+% \begin{macrocode}
+% \def\GlossaryParms{%
+% \parindent \z@
+% \columnsep 15pt
+% \parskip 0pt plus 1pt
+% \rightskip 15pt plus 15pt
+% \mathsurround \z@
+% \parfillskip=-\rightskip
+% \pretolerance=\tolerance
+% \small
+% \def\@idxitem{\par\hangindent 30pt v\,}%
+% \def\subitem{\par\hangindent 30pt\hspace*{15pt}}%
+% \def\subsubitem{\par\hangindent 30pt\hspace*{25pt}}%
+% \def\indexspace{\par\vspace{10pt plus 2pt minus 3pt}}%
+% }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{instance}{docindex}{changes}
+% \changes{2.10}{2001/02/27}{Redefining it. (LH)}
+% \changes{2.12}{2001/03/25}{Modified in the same way as the
+% \package{docindex} default was with v\,1.00. (LH)}
+% \changes{2.15}{2003/02/19}{Rewrote this redefinition. Something
+% was wrong with the old one, but it seems to have worked to
+% start again from the definition in \package{docindex}. (LH)}
+% \changes{2.16}{2003/03/29}{Added an insertion of `\texttt{v}\cs{,}'
+% to the version number headings. The way it is done is however a
+% hack; I should define a separate instance explicitly instead.
+% (LH)}
+%
+% Typesetting the list of changes is annoyingly slow. It should be
+% examined what takes all that time, but I suspect it is the
+% paragraph breaking (the parameters involved are rather absurd). I
+% suspect that in particular the |\multchanges| complicates things
+% more than they really need to. --- LH, 2004/12/15.
+% \begin{macrocode}
+\setcounter{GlossaryColumns}{1}
+\@namedef{TP@I{}{docindex}{changes}}#1#2{%
+ \begingroup
+ \def\DI@indexitem@i##1##2##3##4{%
+ \UseInstance{indexitem}{fixed1}{##1}{##2}{v\,##3}{##4}%
+ }%
+ \@letinstance\DI@indexitem@ii{indexitem}{fixed-r2a-nocomma}%
+ \@letinstance\DI@indexitem@iii{indexitem}{aloneaccept3}%
+ \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
+ \hbadness=\@M
+ \hfuzz=\maxdimen
+ \pretolerance=\m@ne
+ \tolerance=9999%
+ \emergencystretch=5em
+ \@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
+}
+% \@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}{aloneaccept3}%
+% \columnsep=10pt%
+% \parskip=0pt plus 1pt%
+% \def\DI@letter@skip{\z@skip}%
+% \let\DI@letter@format\@gobble
+% % \ifnum \c@GlossaryColumns>\@ne
+% % \begin{multicols}{\c@GlossaryColumns}[#1][\GlossaryMin]%
+% % \else
+% \enough@room{\GlossaryMin}%
+% #1\par
+% \addvspace\multicolsep
+% % \fi
+% \small
+% \emergencystretch=5em
+% \@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
+% \endgroup
+% }
+% \end{macrocode}
+% \end{instance}
+%
+%
+%
+% \section{Hack for removing ``Marginpar moved'' warning messages}
+%
+% Check if the definition matches the known. To be on the safe
+% side, only the known definition will be changed.
+%
+% \begin{macrocode}
+\def\@tempa{\@next\@marbox\@currlist{\@cons\@freelist\@marbox
+ \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne
+ \if@twocolumn
+ \if@firstcolumn \@tempcnta\m@ne \fi
+ \else
+ \if@mparswitch
+ \ifodd\c@page \else\@tempcnta\m@ne \fi
+ \fi
+ \if@reversemargin \@tempcnta -\@tempcnta \fi
+ \fi
+ \ifnum\@tempcnta <\z@ \global\setbox\@marbox\box\@currbox \fi
+ \@tempdima\@mparbottom
+ \advance\@tempdima -\@pageht
+ \advance\@tempdima\ht\@marbox
+ \ifdim\@tempdima >\z@
+ \@latex@warning@no@line {Marginpar on page \thepage\space moved}%
+ \else
+ \@tempdima\z@
+ \fi
+ \global\@mparbottom\@pageht
+ \global\advance\@mparbottom\@tempdima
+ \global\advance\@mparbottom\dp\@marbox
+ \global\advance\@mparbottom\marginparpush
+ \advance\@tempdima -\ht\@marbox
+ \global\setbox \@marbox
+ \vbox {\vskip \@tempdima
+ \box \@marbox}%
+ \global \ht\@marbox \z@
+ \global \dp\@marbox \z@
+ \kern -\@pagedp
+ \nointerlineskip
+ \hb@xt@\columnwidth
+ {\ifnum \@tempcnta >\z@
+ \hskip\columnwidth \hskip\marginparsep
+ \else
+ \hskip -\marginparsep \hskip -\marginparwidth
+ \fi
+ \box\@marbox \hss}%
+ \nointerlineskip
+ \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}}
+\ifx \@addmarginpar\@tempa
+% \end{macrocode}
+% It matched.
+% \begin{macrocode}
+ \def\@addmarginpar{\@next\@marbox\@currlist{\@cons\@freelist\@marbox
+ \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne
+ \if@twocolumn
+ \if@firstcolumn \@tempcnta\m@ne \fi
+ \else
+ \if@mparswitch
+ \ifodd\c@page \else\@tempcnta\m@ne \fi
+ \fi
+ \if@reversemargin \@tempcnta -\@tempcnta \fi
+ \fi
+ \ifnum\@tempcnta <\z@ \global\setbox\@marbox\box\@currbox \fi
+ \@tempdima\@mparbottom
+ \advance\@tempdima -\@pageht
+ \advance\@tempdima\ht\@marbox
+ \ifdim \@tempdima<\z@ \@tempdima\z@ \fi % Modification
+ \global\@mparbottom\@pageht
+ \global\advance\@mparbottom\@tempdima
+ \global\advance\@mparbottom\dp\@marbox
+ \global\advance\@mparbottom\marginparpush
+ \advance\@tempdima -\ht\@marbox
+ \global\setbox \@marbox
+ \vbox {\vskip \@tempdima
+ \box \@marbox}%
+ \global \ht\@marbox \z@
+ \global \dp\@marbox \z@
+ \kern -\@pagedp
+ \nointerlineskip
+ \hb@xt@\columnwidth
+ {\ifnum \@tempcnta >\z@
+ \hskip\columnwidth \hskip\marginparsep
+ \else
+ \hskip -\marginparsep \hskip -\marginparwidth
+ \fi
+ \box\@marbox \hss}%
+ \nointerlineskip
+ \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}}
+\else
+% \end{macrocode}
+% It didn't match. Inform the user of what is to come.
+% \begin{macrocode}
+ \typeout{Expect a lot of ``Marginpar moved'' warnings.}
+\fi
+\let\@tempa=\relax
+% \end{macrocode}
+%
+%
+% \section{Things not to index}
+%
+% \begin{macrocode}
+\DoNotIndex{\def,\let,\else,\fi,\then,\x_cs,\x_relax}
+\DoNotIndex{\csname,\endcsname,\string,\the,\expandafter,\noexpand}
+\DoNotIndexBy{@@}\DoNotIndexBy{@}\DoNotIndexBy{_}\DoNotIndexBy{FD@}
+% \end{macrocode}
+%
+\endinput
+