% This macro source file is from the four volume series % "TeX in Practice" by Stephan von Bechtolsheim, published % 1993 by Springer-Verlag, New York. % Copyright 1993 Stephan von Bechtolsheim. % No warranty or liability is assumed. % This macro may be copied freely if no fees other than % media cost or shipping charges are charged and as long % as this copyright and the following source code itself % is not changed. Please see the series for further information. % % Version: 1.0 % Date: May 1, 1993 % % % This source code is documented in 29.1.5, p. III-492. % Original source in file "io2.TEX", starting line 209. \wlog{L: "ts-wind.tip" ["io2.TEX," l. 209, p. III-492]}% % This file DOES belong to format "texip." \InputD{verb-bas.tip} \InputD{cstostr.tip} \InputD{compst.tip} \newif\ifIndexSpecial \IndexSpecialfalse \catcode`\@ = 11 \newwrite\IdxStream \newwrite\IdxStreamSource \newif\if@IndexFilesOpen \@IndexFilesOpenfalse \def\OpenIndexFiles #1{% \if\EmptyStringConditional{#1}% \gdef\@IndexFileBaseName{\jobname}% \else \gdef\@IndexFileBaseName{#1}% \fi \if@IndexFilesOpen \message{\string\OpenIndexFiles: index files already open.}% \message{\string\OpenIndexFiles: will close old files, open new ones with basename "\@IndexFileBaseName".}% \immediate\closeout\IdxStream \immediate\closeout\IdxStreamSource \fi \@IndexFilesOpentrue \immediate\openout\IdxStream = \@IndexFileBaseName.idx \immediate\openout\IdxStreamSource = \@IndexFileBaseName.idx2 \SetIndexStream{\IdxStream}% } \def\CloseIndexFiles{% \if@IndexFilesOpen \immediate\closeout\IdxStream \immediate\closeout\IdxStreamSource \@IndexFilesOpenfalse \fi } \def\SetIndexStream #1{% \let\IdxStreamUse = #1% } \def\Index{% \begingroup \MkOthersNoCB \@Index } \xdef\@IndexSuffixMod{}% \def\@Index #1{% \let\PrintCounter = \relax \xdef\IndexTemp{% \write\IdxStreamUse{% \string\indexentry{#1\@IndexSuffixMod}% {\PrintCounter{SWPageNo}}}% }% \ifIndexSpecial \SideNoteText{I: #1}% \fi \xdef\@IndexSuffixMod{}% \endgroup \IndexTemp } \def\IndexP #1{% \Index{#1}% #1% } \def\IndexCS #1{% \CSToString{\@IndexCSTemp}{#1}% \expandafter\expandafter\expandafter \Index{% \@IndexCSTemp @% {% \string\tt \string\string \string#1% }% }% } \def\IndexCSX #1{% \CSToString{\@IndexCSTemp}{#1}% \expandafter\expandafter\expandafter \Index{% #1% @% {% \string\tt \string\string \Backslash#1% }% }% } \def\IndexCSP #1{% \IndexCS{#1}% {\tt\string#1}% } \def\IndexPrim #1{% \CSToString{\@IndexCSTemp}{#1}% \expandafter\expandafter\expandafter \Index{\@IndexCSTemp @% {\string\tt\string\string\string#1}|PRIMITIVE}% } \def\IndexPrimP #1{% \IndexPrim{#1}% {\tt\string #1}% } \def\IndexPar{\Index{par@\string\PrintParPrimitive}} \def\PrintParPrimitive{\BackslashTt{\tt par}} \def\IndexBye{\Index{bye@\string\PrintByePrimitive}} \def\PrintByePrimitive{\BackslashTt{\tt bye}} \def\IndexIf{\Index{if@\string\PrintIf|PRIMITIVE}} \def\PrintIf{{\tt\string\if}} \def\IndexElse{\Index{else@\string\PrintElse|PRIMITIVE}} \def\PrintElse{{\tt\string\else}} \def\IndexFi{\Index{fi@\string\PrintFi|PRIMITIVE}} \def\PrintFi{{\tt\string\fi}} \def\IndexIfCase{\Index{ifcase@\string\PrintIfCase|PRIMITIVE}} \def\PrintIfCase{{\tt\string\ifcase}} \def\IndexIfCat{\Index{ifcat@\string\PrintIfCat|PRIMITIVE}} \def\PrintIfCat{{\tt\string\ifcat}} \def\IndexIfX{\Index{ifx@\string\PrintIfX|PRIMITIVE}} \def\PrintIfX{{\tt\string\ifx}} \def\IndexIfOdd{\Index{ifodd@\string\PrintIfOdd|PRIMITIVE}} \def\PrintIfOdd{{\tt\string\ifodd}} \def\IndexIfHbox{\Index{ifhbox@\string\PrintIfHbox|PRIMITIVE}} \def\PrintIfHbox{{\tt\string\ifhbox}} \def\IndexIfVbox{\Index{ifvbox@\string\PrintIfVbox|PRIMITIVE}} \def\PrintIfVbox{{\tt\string\ifvbox}} \def\IndexIfVoid{\Index{ifvoid@\string\PrintIfVoid|PRIMITIVE}} \def\PrintIfVoid{{\tt\string\ifvoid}} \def\IndexIfNum{\Index{ifnum@\string\PrintIfNum|PRIMITIVE}} \def\PrintIfNum{{\tt\string\ifnum}} \def\IndexIfDim{\Index{ifdim@\string\PrintIfDim|PRIMITIVE}} \def\PrintIfDim{{\tt\string\ifdim}} \def\IndexIfHmode{\Index{ifhmode@\string\PrintIfHmode|PRIMITIVE}} \def\PrintIfHmode{{\tt\string\ifhmode}} \def\IndexIfVmode{\Index{ifvmode@\string\PrintIfVmode|PRIMITIVE}} \def\PrintIfVmode{{\tt\string\ifvmode}} \def\IndexIfMmode{\Index{ifvmode@\string\PrintIfMmode|PRIMITIVE}} \def\PrintIfMmode{{\tt\string\ifvmode}} \def\IndexIfInner{\Index{ifinner@\string\PrintIfInner|PRIMITIVE}} \def\PrintIfInner{{\tt\string\ifinner}} \def\IndexIfEof{\Index{ifeof@\string\PrintIfEof|PRIMITIVE}} \def\PrintIfEof{{\tt\string\ifeof}}% \def\IndexIfTrue{\Index{iftrue@\string\PrintIfTrue|PRIMITIVE}} \def\PrintIfTrue{{\tt\string\iftrue}}% \def\IndexIfFalse{\Index{iffalse@\string\PrintIfFalse|PRIMITIVE}} \def\PrintIfFalse{{\tt\string\iffalse}}% \def\IndexRepeat{\Index{repeat@\string\PrintRepeat}} \def\PrintRepeat{{\tt\string\repeat}}% \xdef\@IndexSuffixMod{}% \def\IndexPSet #1{% \CSToString{\@IndexPSetResult}{#1}% \xdef\@IndexSuffixMod{|IndexP\@IndexPSetResult}% } \def\IndexPit #1{{\it #1}} \def\IndexPbf #1{{\bf #1}} \catcode`\@ = 12