From 3f4907002980e385b2a84736f6ab63835e3e3681 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Mon, 24 Feb 2014 17:12:03 +0000
Subject: move {plain,generic}/misc/* files to new subdirs according to their
 upstreams

git-svn-id: svn://tug.org/texlive/trunk@33039 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/plain/makeindex/idxmac.tex | 200 +++++++++++++++++++++++
 1 file changed, 200 insertions(+)
 create mode 100644 Master/texmf-dist/tex/plain/makeindex/idxmac.tex

(limited to 'Master/texmf-dist/tex/plain/makeindex/idxmac.tex')

diff --git a/Master/texmf-dist/tex/plain/makeindex/idxmac.tex b/Master/texmf-dist/tex/plain/makeindex/idxmac.tex
new file mode 100644
index 00000000000..3782293b690
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/makeindex/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
-- 
cgit v1.2.3

