summaryrefslogtreecommitdiff
path: root/indexing/makeindex/lib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /indexing/makeindex/lib
Initial commit
Diffstat (limited to 'indexing/makeindex/lib')
-rw-r--r--indexing/makeindex/lib/idxmac-amstex.tex323
-rw-r--r--indexing/makeindex/lib/idxmac.tex200
-rw-r--r--indexing/makeindex/lib/makeidx.doc9
-rw-r--r--indexing/makeindex/lib/makeidx.sty5
-rw-r--r--indexing/makeindex/lib/showidx.sty41
5 files changed, 578 insertions, 0 deletions
diff --git a/indexing/makeindex/lib/idxmac-amstex.tex b/indexing/makeindex/lib/idxmac-amstex.tex
new file mode 100644
index 0000000000..09d5c2e094
--- /dev/null
+++ b/indexing/makeindex/lib/idxmac-amstex.tex
@@ -0,0 +1,323 @@
+
+% /u/lex2/agw/ibc/ibc.sty, Thu Jul 9 10:02:23 1987, edit by agw
+
+\documentstyle{amsppt}
+
+\font\twelverm=cmr12
+\font\twelvebf=cmbx12
+
+\def\makeatletter{\catcode`\@=11\relax}
+\def\makeatother{\catcode`\@=12\relax}
+\makeatletter
+
+\def\B@{B } \def\D@{D }
+\def\askstyle{\immediate\write\sixt@@n{Do you want B(ook style)
+ or D(raft style)? (Type B or D, follow by <return>:) }\loop
+ \read\m@ne to\ans@
+ \xdef\next{\def\noexpand\Ans@{\ans@}}%
+ \uppercase\expandafter{\next}%
+ \ifx\Ans@\B@\badans@false\bookstyle\else
+ \ifx\Ans@\D@\badans@false\draftstyle\else
+ \badans@true\fi\fi
+ \ifbadans@\immediate\write\sixt@@n{Type B or D, follow by <return>: }%
+ \repeat}
+
+\def\bookstyle{\hsize=28truepc\vsize=46truepc}
+\def\draftstyle{\magnification 1200\parindent=10pt\baselineskip=15pt}
+\askstyle
+
+\newif\iftitle % for title pages of chapters
+\titlefalse % in case we start in the middle of a chapter
+
+\def\chapterbeg#1#2{
+ \global\titletrue
+ \vfill\eject
+ \null\vskip 8 truepc
+ \centerline{\twelverm Chapter #1}
+ \line{\hrulefill}
+ \centerline{\twelvebf #2}
+ \global\def\chaptertitle{#1. \lowercase{#2}}
+ \global\def\currentsectiontitle{\lowercase{#2}}
+ \message{#1. #2: }
+ \null\vskip 9 truepc
+}
+
+\def\unnumberedchapterbeg#1{
+ \global\titletrue
+ \null\vskip 8 truepc
+ \vskip 12 pt
+ \line{\hrulefill}
+ \centerline{\twelvebf #1}
+ \global\def\chaptertitle{\lowercase{#1}}
+ \global\def\currentsectiontitle{\lowercase{#1}}
+ \message{#1}
+ \null\vskip 9 truepc
+}
+
+\def\sectionbeg#1#2\medskip{
+ \vskip 2 truepc
+ \centerline{\bf #1. #2}
+ \nopagebreak\vskip 1truepc\nopagebreak
+ \global\def\currentsectiontitle{#1. \lowercase{#2}}
+ \message{#1. #2}
+}
+
+\newif\if@nobreak \@nobreakfalse
+\newif\ifignore
+\def\@makeother#1{\catcode`#112\relax}
+\def\newwrite{\alloc@7\write\chardef\sixt@@n}
+\newwrite\@unused
+\def\typeout#1{{\let\protect\string\immediate\write\@unused{#1}}}
+
+\newdimen\@savsk
+\newcount\@savsf
+
+\def\@bsphack{\@savsk\lastskip
+ \ifhmode\@savsf\spacefactor\fi}
+
+\def\@esphack{\relax\ifhmode\spacefactor\@savsf
+ {}\ifdim \@savsk >\z@ \global\ignoretrue \ignorespaces
+ \fi \fi}
+
+\def\@sanitize{\@makeother\ \@makeother\\\@makeother\$\@makeother\&%
+\@makeother\#\@makeother\^\@makeother\^^K\@makeother\_\@makeother\^^A%
+\@makeother\%\@makeother\~}
+
+\def\makeindex{\newwrite\@indexfile
+ \immediate\openout\@indexfile=\jobname.idx
+ \def\index{\@bsphack\begingroup\@sanitize\@wrindex\@indexfile}
+ \typeout{Writing index file \jobname.idx }}
+
+\def\thepage{\the\pageno}
+
+\def\@wrindex#1#2{\let\thepage\relax
+ \xdef\gtempa{\write#1{\string
+ \indexentry{#2}{\thepage}}}\endgroup\gtempa
+ \if@nobreak \ifvmode\@nobreak\fi\fi\@esphack}
+
+\def\index{\@bsphack\begingroup\@sanitize\@index}
+\def\@index#1{\endgroup\@esphack}
+
+\def\@idxitem{\par\hangindent 40pt}
+\def\subitem{\par\hangindent 40pt \hskip 20pt}
+\def\subsubitem{\par\hangindent 40pt \hskip 30pt}
+\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
+
+\def\beginindex{\begingroup\let\item\@idxitem\begindoublecolumns}
+\def\endindex{\enddoublecolumns\endgroup}
+
+\newbox\partialpage
+\newdimen\pagewidth \pagewidth=\hsize
+\newdimen\pageheight \pageheight=\vsize
+\newdimen\colwidth \colwidth=\pagewidth \divide\colwidth by 2
+\newdimen\twicecolheight \twicecolheight=\pageheight
+ \multiply\twicecolheight by 2
+ \advance\twicecolheight by 1truepc % well, a little more than twice
+\def\begindoublecolumns{\begingroup
+ \output={\global\setbox\partialpage=\vbox{\unvbox255\bigskip}}\eject
+ \raggedright
+ \output={\splitcolumns}
+ \hsize=\colwidth
+ \vsize=\twicecolheight
+ \let\item\@idxitem}
+\def\enddoublecolumns{\output={\balancecolumns}\eject
+ \endgroup \pagegoal=\vsize}
+\def\splitcolumns{\splittopskip=\topskip \splitmaxdepth=\maxdepth
+ \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage
+ \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+ \unvbox255 \penalty\outputpenalty
+ \doublecolumnout}
+\def\doublecolumnout{\shipout\vbox{%
+ \hsize=\pagewidth
+ \iftitle\else\makeheadline\fi%
+ \unvbox\partialpage
+ \wd0=\colwidth \wd2=\colwidth
+ \hbox to\pagewidth{\box0\hfil\box2}
+ \iftitle\makefootline\global\titlefalse\fi
+ \hsize=\colwidth}
+ \advancepageno
+ \global\def\sectiontitle{\currentsectiontitle}
+ \ifnum\outputpenalty>-\@MM \else\dosupereject\fi}
+
+\def\balancecolumns{\setbox0=\vbox{\unvbox255} \dimen@=\ht0
+ \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
+ \divide\dimen@ by2 \splittopskip=\topskip
+ {\vbadness=10000 \loop \global\setbox3=\copy0
+ \global\setbox1=\vsplit3 to\dimen@
+ \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat}
+ \setbox0=\vbox to\dimen@{\unvbox1}
+ \setbox2=\vbox to\dimen@{\unvbox3}
+ \doublecolumnout}
+
+\output={\ibcoutput}
+
+\def\leftheadline{\eightbf\folio\hfil\smc\chaptertitle}
+\def\rightheadline{\smc\sectiontitle\hfil\eightbf\folio}
+\headline={\ifodd\pageno\rightheadline\else\leftheadline\fi}
+
+\def\leftfootline{\eightbf\folio\hfil}
+\def\rightfootline{\eightbf\hfil\folio}
+\footline={\ifodd\pageno\rightfootline\else\leftfootline\fi}
+
+\def\ibcoutput{\shipout\vbox{%
+ \iftitle\else\makeheadline\fi
+ \pagebody
+ \iftitle\makefootline\global\titlefalse\fi}
+ \advancepageno
+ \global\def\sectiontitle{\currentsectiontitle}
+ \ifnum\outputpenalty>-\@MM \else\dosupereject\fi}
+
+\def\Y@{Y } \def\N@{N }
+\def\makingindex{\immediate\write\sixt@@n{Do you want to make an
+index? (Type Y or N, follow by <return>:) }\loop
+ \read\m@ne to\ans@
+ \xdef\next{\def\noexpand\Ans@{\ans@}}%
+ \uppercase\expandafter{\next}%
+ \ifx\Ans@\Y@\badans@false\makeindex\else
+ \ifx\Ans@\N@\badans@false\else
+ \badans@true\fi\fi
+ \ifbadans@\immediate\write\sixt@@n{Type Y or N, follow by <return>: }%
+ \repeat}
+\makingindex
+
+\makeatother
+
+% various abbreviations ... form Greg and Henryk
+
+\define\a{\operatorname{a}}
+\define\avg{\operatorname{avg}}
+\define\card{\operatorname{card}}
+\define\codim{\operatorname{codim}}
+\define\comp{\operatorname{comp}}
+\define\cost{\operatorname{cost}}
+\define\trace{\operatorname{trace}}
+\define\diam{\operatorname{diam}}
+\define\dist{\operatorname{dist}}
+\define\e{\varepsilon}
+\define\E{\operatorname{E}}
+\define\error{\operatorname{error}}
+\define\non{\operatorname{non}}
+\define\nor{\operatorname{nor}}
+\define\sspan{\operatorname{span}}
+\define\var{\operatorname{var}}
+\define\ER{\operatorname{ER}}
+\define\HH{\operatorname{H}}
+\define\ter{\operatorname{ter}}
+\define\pre{\operatorname{pre}}
+\define\prob{\operatorname{prob}}
+\define\prerel{\operatorname{pre-rel}}
+\define\rad{\operatorname{rad}}
+\define\ran{\operatorname{ran}}
+\define\wor{\operatorname{wor}}
+\define\rel{\operatorname{rel}}
+\define\REL{\operatorname{REL}}
+\define\per{\operatorname{per}}
+\define\sign{\operatorname{sign}}
+\define\infp{\operatornamewithlimits{inf\vphantom{p}}}
+\define\maxp{\operatornamewithlimits{max\vphantom{p}}}
+\define\Prob{\operatorname{Prob}}
+\def\reals{\operatorname{I\negthinspace\bold R}}
+\def\Re{\reals}
+\def\complexes{\operatorname{\bold C}}
+\define\ofi{\overline \phi }
+\define\ofig{\overline {\phi^*}}
+\define\ofis{\overline {\phi^s}}
+\define\on{\overline N }
+\define\norm{||Sf-\phi_n(N_n(f))||}
+\define\norg{||Sf-\phi_n^*\,(N_n(f))||}
+\define\nors{||Sf-\phi_n^s\,(N_n(f))||}
+\define\ong{\overline {N^*}}
+\define\ongg{\overline {N^{**}}}
+\define\nnn{N^{\non}}
+\define\kr{\operatorname{kr}}
+\define\mr{\operatorname{mr}}
+\define\gmr{\operatorname{gmr}}
+\def\bullet{\raise.5ex\hbox{\bf .}}
+\def\liminf{\mathop{\underline{\text{lim}}}}
+
+% various abbreviations ... from Art
+
+\def\epsilon{\varepsilon}
+\def\COMP{\operatorname{\hbox{\smc comp}}}
+\def\esssup{\operatornamewithlimits{ess\ sup}}
+\def\FEM{\operatorname{\hbox{\smc fem}}}
+\def\FEMQ{\operatorname{\hbox{\smc femq}}}
+\def\interior{\operatorname{int}}
+\def\lin{\operatorname{lin}}
+\def\range{\operatorname{ran}}
+\def\SPLINE{\operatorname{\hbox{\smc spline}}}
+\def\ter{\operatorname{ter}}
+\def\volume{\operatorname{vol}}
+\define\Lstd{\Lambda^{\operatorname{std}}}
+\define\MFEM{\operatorname{\hbox{\smc mfem}}}
+
+%\def\reals{\Bbb R}
+%\def\complexes{\Bbb C}
+\def\reals{\operatorname{I\negthinspace\bold R}}
+
+%---For remarks and the like
+\define\demonp#1{\demo\nofrills{#1\usualspace}}
+
+%---Start a new section
+\define\subsection#1{\par\vskip 1pc\noindent{\bf #1}
+ \nopagebreak\medskip\nopagebreak}
+
+%---Start and end the Notes & Remarks/Exercises (smaller type, single space)
+\define\startNRE{\bgroup\eightpoint\parindent=5pt}
+\define\endNRE{\egroup}
+\define\NR #1 {\noindent{\bf NR #1: }} % Notes and Remarks
+\define\Ex #1 {\noindent{\bf E #1: }} % Exercises
+
+% angle brackets for inner products
+\define\<{\langle}
+\define\>{\rangle}
+
+% Script letters and other useful control sequences
+\define\Sscr{{\Cal S}}
+\define\Tscr{{\Cal T}}
+\define\Sn{{\Cal S}_{n,k}}
+\define\Tn{{\Cal T}_n}
+\define\Snset{\{\Sn\}_{n=1}^\infty}
+\define\Tnset{\{\Tn\}_{n=1}^\infty}
+
+\define\phisn{\phi^{\operatorname{s}}_{n,k}}
+
+% Needed for References
+
+\define\BabAz{Babu\u ska and Aziz~[72]}
+\define\Bakhvalov{Bakhvalov~[77]}
+\define\Carasso{Carasso and Stone~[75]}
+\define\Ciarlet{Ciarlet~[78]}
+\define\CiarletRaviart{Ciarlet and Raviart~[72]}
+\define\Dunford{Dunford and Schwartz~[63]}
+\define\Dunn{Dunn~[67]}
+\define\Emel{Emelyanov and Ilin~[67]}
+\define\Fried{Fried~[73]}
+\define\Gehatia{Gehatia and Wiff~[70]}
+\define\Gelfand{Gel'fand and Vilenkin~[64]}
+\define\Hadamard{Hadamard~[52]}
+\define\Hammerlin{H\"ammerlin and Hoffman~[83]}
+\define\Kuo{Kuo~[75]}
+\define\Lattes{Lattes and Lions~[69]}
+\define\Morozov{Morozov~[85]}
+\define\OdRed{Oden and Reddy~[76]}
+\define\Pinkus{Pinkus~[85]}
+\define\Poggio{Poggio, Torre, and Koch~[85]}
+\define\Pour{Pour-El and Richards~[83]}
+\define\Rokhlin{Rokhlin~[86]}
+\define\Shilov{Shilov and Fan Dyk Tin~[67]}
+\define\Skorohod{Skorohod~[74]}
+\define\Tikhonov{Tikhonov~[63]}
+\define\TikhonovArsenin{Tikhonov and Arsenin~[77]}
+\define\GTOA{GOTA}
+\define\Twomey{Twomey~[77]}
+\define\GregVarying{Wasilkowski~[86]} %needed?
+\define\WWAvg{Wasilkowski and Wo\'zniakowski~[84]} %needed?
+\define\SecondOrder{Werschulz~[82]}
+\define\Fredholm{Werschulz~[85]}
+\define\Indef{Werschulz~[86a]}
+\define\IllPosed{Werschulz~[86b]}
+\define\Fembad{Werschulz~[87a]}
+\define\AprilAGW{Werschulz~[87b]}
+\define\Resid{Werschulz~[87c]}
+\define\Zen{Zeni\v sek~[72]}
diff --git a/indexing/makeindex/lib/idxmac.tex b/indexing/makeindex/lib/idxmac.tex
new file mode 100644
index 0000000000..3782293b69
--- /dev/null
+++ b/indexing/makeindex/lib/idxmac.tex
@@ -0,0 +1,200 @@
+%
+% idxmac.tex
+%
+% Most of the code in this file are excerpts from latex.tex and manmac.tex.
+% The actual style of the index environment \beginindex ... \endindex
+% at the end of this file is left empty.
+%
+%
+\def\makeatletter{\catcode`\@=11\relax}
+\def\makeatother{\catcode`\@=12\relax}
+\makeatletter
+\newif\if@filesw \@fileswtrue
+\newif\if@nobreak \@nobreakfalse
+\def\@makeother#1{\catcode`#112\relax}
+\def\newwrite{\alloc@7\write\chardef\sixt@@n}
+\newwrite\@unused
+\def\typeout#1{{\let\protect\string\immediate\write\@unused{#1}}}
+
+% ****************************************
+% * PAGE NUMBERING *
+% ****************************************
+%
+% Page numbers are produced by a page counter, used just like any other
+% counter. The only difference is that \c@page contains the number of
+% the next page to be output (the one currently being produced), rather
+% than one minus it. Thus, it is normally initialized to 1 rather than
+% 0. \c@page is defined to be \count0, rather than a count assigned by
+% \newcount.
+%
+% The user sets the pagenumber style with the \pagenumbering{FOO}
+% command, which sets the page counter to 1 and defines \thepage to be
+% \FOO. For example, \pagenumbering{roman} causes pages to be numbered
+% i, ii, etc.
+
+% Numbering commands for definitions of \theCOUNTER and \list arguments.
+% \fnsymbol produces the standard footnoting symbols: asterisk, dagger, etc.
+% They can be used only in math mode.
+
+\def\arabic#1{\@arabic{\@nameuse{c@#1}}}
+\def\roman#1{\@roman{\@nameuse{c@#1}}}
+\def\Roman#1{\@Roman{\@nameuse{c@#1}}}
+\def\alph#1{\@alph{\@nameuse{c@#1}}}
+\def\Alph#1{\@Alph{\@nameuse{c@#1}}}
+\def\fnsymbol#1{\@fnsymbol{\@nameuse{c@#1}}}
+
+\def\@arabic#1{\ifnum #1>0 \number #1\fi}
+\def\@roman#1{\romannumeral #1}
+\def\@Roman#1{\expandafter\uppercase\expandafter{\romannumeral #1}}
+\def\@alph#1{\ifcase#1\or a\or b\or c\or d\else\@ialph{#1}\fi}
+\def\@ialph#1{\ifcase#1\or \or \or \or \or e\or f\or g\or h\or i\or j\or
+ k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or
+ z\else\@ctrerr\fi}
+\def\@Alph#1{\ifcase#1\or A\or B\or C\or D\else\@Ialph{#1}\fi}
+\def\@Ialph#1{\ifcase#1\or \or \or \or \or E\or F\or G\or H\or I\or J\or
+ K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or
+ Z\else\@ctrerr\fi}
+\def\@fnsymbol#1{\ifcase#1\or *\or \dagger\or \ddagger\or
+ \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger
+ \or \ddagger\ddagger \else\@ctrerr\fi\relax}
+
+\countdef\c@page=0 \c@page=1
+\def\cl@page{}
+\def\pagenumbering#1{\global\c@page \@ne \gdef\thepage{\csname @#1\endcsname
+ \c@page}}
+\pagenumbering{arabic}
+
+% \@bsphack ... \@esphack
+% used by macros such as \index and \begin{@float} ... \end{@float}
+% that want to be invisible -- i.e.,
+% not leave any extra space when used in the middle of text. Such
+% a macro should begin with \@bsphack and end with \@esphack
+% The macro in question should not create any text, nor change the
+% mode.
+%
+% \@bsphack ==
+% BEGIN
+% \dimen\@savsk := \lastskip
+% if hmode then \@savsf := \spacefactor fi
+% END
+%
+% \@esphack ==
+% BEGIN
+% if hmode
+% then \spacefactor := \@savsf
+% if \dimen\@savsk > 0pt then \ignorespaces
+% \global\ignoretrue fi
+% fi
+% END
+%
+
+\newdimen\@savsk
+\newcount\@savsf
+
+\def\@bsphack{\@savsk\lastskip
+ \ifhmode\@savsf\spacefactor\fi}
+
+\def\@esphack{\relax\ifhmode\spacefactor\@savsf
+ {}\ifdim \@savsk >\z@ \global\ignoretrue \ignorespaces
+ \fi \fi}
+
+% The command \@sanitize changes the catcode of all special characters
+% except for braces to 'other'. It can be used for commands like
+% \index that want to write their arguments verbatim. Needless to
+% say, this command should only be executed within a group, or chaos
+% will ensue.
+
+\def\@sanitize{\@makeother\ \@makeother\\\@makeother\$\@makeother\&%
+\@makeother\#\@makeother\^\@makeother\^^K\@makeother\_\@makeother\^^A%
+\@makeother\%\@makeother\~}
+
+% ****************************************
+% * INDEX COMMANDS *
+% ****************************************
+%
+% \makeindex ==
+% BEGIN
+% if \@filesw = T
+% then open file \jobname.IDX as \indexfile
+% \index == BEGIN \@bsphack
+% \begingroup
+% re-\catcode special characters to 'other'
+% \wrindex
+% fi
+% END
+%
+% \wrindex{ITEM} ==
+% BEGIN
+% write of {\indexentry{ITEM}{page number}}
+% \endgroup
+% \@esphack
+% END
+
+% INITIALIZATION:
+%
+% \index == BEGIN \@bsphack
+% \begingroup
+% re-\catcode special characters (in case '%' there)
+% \index
+% END
+%
+% \index{ITEM} == BEGIN \endgroup \@esphack END
+%
+\def\makeindex{\if@filesw \newwrite\@indexfile
+ \immediate\openout\@indexfile=\jobname.idx
+ \def\index{\@bsphack\begingroup\@sanitize\@wrindex\@indexfile}
+ \typeout{Writing index file \jobname.idx }\fi}
+
+\def\@wrindex#1#2{\let\thepage\relax
+ \xdef\gtempa{\write#1{\string
+ \indexentry{#2}{\thepage}}}\endgroup\gtempa
+ \if@nobreak \ifvmode\@nobreak\fi\fi\@esphack}
+
+\def\index{\@bsphack\begingroup\@sanitize\@index}
+\def\@index#1{\endgroup\@esphack}
+
+\def\makeglossary{\if@@filesw \newwrite\@glossaryfile
+ \immediate\openout\@glossaryfile=\jobname.glo
+ \def\glossary{\@bsphack\begingroup\@sanitize\@wrindex\@glossaryfile}\typeout
+ {Writing glossary file \jobname.glo }\fi}
+
+\def\glossary{\@bsphack\begingroup\@sanitize\index}
+
+\newdimen\pagewidth
+\pagewidth=\hsize
+\newbox\partialpage
+\def\begindoublecolumns{\begingroup
+ \output={\global\setbox\partialpage=\vbox{\unvbox255\bigskip}}\eject
+ \output={\doublecolumnout} \hsize=14pc \vsize=89pc
+ \let\item\@idxitem}
+\def\enddoublecolumns{\output={\balancecolumns}\eject
+ \endgroup \pagegoal=\vsize}
+\def\doublecolumnout{\splittopskip=\topskip \splitmaxdepth=\maxdepth
+ \dimen@=44pc \advance\dimen@ by-\ht\partialpage
+ \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+ \onepageout\pagesofar
+ \unvbox255 \penalty\outputpenalty}
+\def\pagesofar{\unvbox\partialpage
+ \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}
+\def\balancecolumns{\setbox0=\vbox{\unvbox255} \dimen@=\ht0
+ \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
+ \divide\dimen@ by2 \splittopskip=\topskip
+ {\vbadness=10000 \loop \global\setbox3=\copy0
+ \global\setbox1=\vsplit3 to\dimen@
+ \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat}
+ \setbox0=\vbox to\dimen@{\unvbox1}
+ \setbox2=\vbox to\dimen@{\unvbox3}
+ \pagesofar}
+
+\def\@idxitem{\par\hangindent 40pt}
+\def\subitem{\par\hangindent 40pt \hskip 20pt}
+\def\subsubitem{\par\hangindent 40pt \hskip 30pt}
+\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
+
+\def\beginindex{\begingroup\let\item\@idxitem
+% Output opening routines go here
+}
+\def\endindex{
+% Output closing routines go here.
+\endgroup}
+\makeatother
diff --git a/indexing/makeindex/lib/makeidx.doc b/indexing/makeindex/lib/makeidx.doc
new file mode 100644
index 0000000000..6c501bd890
--- /dev/null
+++ b/indexing/makeindex/lib/makeidx.doc
@@ -0,0 +1,9 @@
+% MAKEIDX DOCUMENT-STYLE OPTION FOR ARTICLE STYLE
+% RELEASED 20 January 1987 -- for LaTeX version 2.09
+% Copyright (C) 1987 by Leslie Lamport, all rights reserved
+
+% Defines the \see and \printindex commands.
+
+\def\see#1#2{{\em see\/} #1}
+
+\def\printindex{\@input{\jobname.ind}}
diff --git a/indexing/makeindex/lib/makeidx.sty b/indexing/makeindex/lib/makeidx.sty
new file mode 100644
index 0000000000..ab41d11a23
--- /dev/null
+++ b/indexing/makeindex/lib/makeidx.sty
@@ -0,0 +1,5 @@
+% makeidx.sty 20-Jan-87
+
+\def\see#1#2{{\em see\/} #1}
+\def\printindex{\@input{\jobname.ind}}
+
diff --git a/indexing/makeindex/lib/showidx.sty b/indexing/makeindex/lib/showidx.sty
new file mode 100644
index 0000000000..4a6a57ff53
--- /dev/null
+++ b/indexing/makeindex/lib/showidx.sty
@@ -0,0 +1,41 @@
+% showidx.sty 29-Oct-85
+
+\newinsert\@margin
+\newinsert\indexbox
+\dimen\indexbox=\maxdimen
+\def\@showidx#1{\insert\indexbox{\small
+ \hsize\marginparwidth
+ \hangindent\marginparsep \parindent\z@
+ \everypar{}\let\par\@@par \parfillskip\@flushglue
+ \lineskip\normallineskip
+ \baselineskip .8\normalbaselineskip\sloppy
+ \raggedright \leavevmode
+ \vrule height .7\normalbaselineskip width \z@ #1\vrule
+ height \z@ depth .3\normalbaselineskip width \z@}}
+
+\def\@leftidx{\hskip-\marginparsep \hskip-\marginparwidth}
+\def\@rightidx{\hskip\columnwidth \hskip\marginparsep}
+\def\@mkidx{\vbox to 0pt{\hbox{\if@twocolumn
+ \if@firstcolumn \@leftidx \else \@rightidx \fi
+ \else \if@twoside \ifodd\c@page \@rightidx
+ \else \@leftidx \fi
+ \else \@rightidx \fi
+ \fi
+ \box\indexbox}\vss}}
+\def\raggedbottom{\def\@textbottom{\vskip
+ \z@ plus.0001fil}\let\@texttop\@mkidx}
+\def\flushbottom{\let\@textbottom\relax \let\@texttop\@mkidx}
+
+\def\@wrindex#1#2{\let\thepage\relax
+ \xdef\@gtempa{\write#1{\string
+ \indexentry{#2}{\thepage}}}\endgroup\@gtempa
+ \@showidx{#2}\if@nobreak \ifvmode\nobreak\fi\fi\@esphack}
+\def\@index#1{\@showidx{#1}\endgroup\@esphack}
+
+\def\index{\@bsphack\begingroup\@sanitize\catcode"20=10\relax\@index}
+\def\makeindex{\if@filesw \newwrite\@indexfile
+ \immediate\openout\@indexfile=\jobname.idx
+ \def\index{\@bsphack\begingroup\@sanitize
+ \catcode"20=10 \@wrindex\@indexfile}\typeout
+ {Writing index file \jobname.idx }\fi}
+\flushbottom