% This is the inputd format source code file in a flat version % This file is generated based on running initex with all files % belonging to this format. Do NOT change this file, because % it is automatically generated directly from all the .tip % files. The same copyright which applies to the individual .tip % files applies to this file too, obviously % 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. \input plain.tex \def\InputD #1{} \def\InputDList{} \catcode`\@ = 11 \def\NameDef #1{% \expandafter\def\csname #1\endcsname } \def\NameEdef #1{% \expandafter\edef\csname #1\endcsname } \def\NameGdef #1{% \expandafter\gdef\csname #1\endcsname } \def\NameXdef #1{% \expandafter\xdef\csname #1\endcsname } \def\NameNewDef #1{% \if\NameDefinedConditional{#1}% \errmessage{\string\NameNewDef: "#1" already defined.}% \fi \NameDef{#1}% } \def\NameReDef #1{% \if\NameDefinedConditional{#1}% \else \errmessage{\string\NameReDef: "#1" never defined before.}% \fi \NameDef{#1}% } \def\NameUse #1{\csname #1\endcsname} \def\NameUseFlagUndefined #1{% \if\NameDefinedConditional{#1}% \NameUse{#1}% \else \errmessage{\string\NameUseFlagUndefined: token "#1" is undefined.}% \fi } \newif\if@NameDefined \def\NameDefinedConditional #1{% TT\fi \expandafter\ifx\csname #1\endcsname \relax \@NameDefinedfalse \else \@NameDefinedtrue \fi \if@NameDefined } \catcode`\@ = 12 \NameDef{@InputD-namedef.tip}{} \def\AbsoluteDimension #1#2{% \ifdim #1 < 0pt #2 = -#1\relax \else #2 = #1\relax \fi } \NameDef{@InputD-absdimen.tip}{} \def\AbsoluteValue #1#2{% \ifnum #1<0 #2 = -#1\relax \else #2 = #1\relax \fi } \NameDef{@InputD-absval.tip}{} \def\DefineAcronym #1#2#3{% \def #1{% #2 (#3)% \gdef#1{#2}% }% } \NameDef{@InputD-acronym.tip}{} \catcode`\@ = 11 \newcount\@DoLoopNesting \@DoLoopNesting = 0 \newcount\@DoLoopLimit \newcount\@DoLoopLimitTwo \newcount\@DoLoopLimitThree \def\DoLoop #1#2#3#4#5{% \global\advance\@DoLoopNesting by 1 \ifnum\@DoLoopNesting > 3 \errmessage{\string\DoLoop: nesting beyond three levels is not supported.}% \fi \ifnum #3 = 0 \errmessage{\string\DoLoop: step value (parameter 3) is 0!}% \else \ifcase\@DoLoopNesting \or \@DoLoop{#1}{#2}{#3}{#4}{#5}% {\@DoLoopLimit}{\DoLoopBody}% \or \@DoLoop{#1}{#2}{#3}{#4}{#5}% {\@DoLoopLimitTwo}{\DoLoopBodyTwo}% \or \@DoLoop{#1}{#2}{#3}{#4}{#5}% {\@DoLoopLimitThree}{\DoLoopBodyThree}% \fi \fi \global\advance\@DoLoopNesting by -1 } \def\@DoLoop #1#2#3#4#5#6#7{% \ifnum #3 > 0 #6 = #4% \advance#6 by 1 #1 = #2% \@DoLoopBodyPositive{#1}{#3}{#5}% {#6}{#7}% \else #6 = #4% \advance#6 by -1 #1 = #2% \@DoLoopBodyNegative{#1}{#3}{#5}% {#6}{#7}% \fi \@DoLoopIterate{#7}% } \def\@DoLoopBodyPositive #1#2#3#4#5{% \def #5{% \ifnum #1 < #4\relax #3% \advance #1 by #2% }% } \def\@DoLoopBodyNegative #1#2#3#4#5{% \def #5{% \ifnum #1 > #4\relax #3% \advance #1 by #2% }% } \def\@DoLoopIterate #1{% #1\relax \def\@DoLoopNext{\@DoLoopIterate{#1}}% \else \def\@DoLoopNext{\relax}% \fi \@DoLoopNext } \catcode`\@ = 12 \NameDef{@InputD-doloop.tip}{} \catcode`\@ = 11 \newcount\AdvanceByTabStopsCount \def\AdvanceByTabStops #1{% \def\@MakeTabChars{}% \DoLoop{\AdvanceByTabStopsCount}{2}{1}{#1}% {\edef\@MakeTabChars{\@MakeTabChars&}}% \@MakeTabChars } \catcode`\@ = 12 \NameDef{@InputD-advtabst.tip}{} \newtoks\AfterEveryPar \AfterEveryPar = {} \catcode`\@ = 11 \def\SetUpAfterEveryPar{% \def\par{% \ifhmode \ifinner \else \endgraf \the\AfterEveryPar \fi \fi }% } \catcode`\@ = 12 \NameDef{@InputD-aevpar.tip}{} \catcode`\@ = 11 \newif\if@InRange \def\InRangeConditional #1#2#3{% TT\fi \@InRangetrue \ifnum #1<#2\relax \@InRangefalse \fi \ifnum #1>#3\relax \@InRangefalse \fi \if@InRange } \def\CheckRange #1#2#3#4{% \ifnum #1 < #2\relax \errmessage{Value \number#1 \space out of range #2..#3: #4}% \fi \ifnum #1>#3\relax \errmessage{Value \number#1 \space out of range #2..#3: #4}% \fi } \def\CheckZeroOneRange #1#2{% \CheckRange{#1}{0}{1}{#2}% } \catcode`\@ = 12 \NameDef{@InputD-rangetst.tip}{} \catcode`\@ = 11 \def\Sunday{0} \def\Monday{1} \def\Tuesday{2} \def\Wednesday{3} \def\Thursday{4} \def\Friday{5} \def\Saturday{6} \def\ProvideDayOfWeek #1#2#3{% \CheckRange{#1}{0}{6}% {\string\ProvideDayOfWeek: day of week outside of 0 .. 6 range.}% \ifcase #1\relax \def#3{Sunday}\or \def#3{Monday}\or \def#3{Tuesday}\or \def#3{Wednesday}\or \def#3{Thursday}\or \def#3{Friday}\or \def#3{Saturday}% \fi \ifnum #2 = 0 \else \def\@ProvideDayOfWeek ##1##2##3##4;{% \def#3{##1##2##3}% }% \expandafter\@ProvideDayOfWeek#3;% \fi } \def\PrintDayOfWeek #1#2{% \ProvideDayOfWeek{#1}{#2}{\@PrintDayOfWeek}% \@PrintDayOfWeek } \catcode`\@ = 12 \NameDef{@InputD-dateofw.tip}{} \def\CheckLegalMonth #1{% \CheckRange{#1}{1}{12}% {\string\CheckLegalMonth: month #1 out of range.}% } \NameDef{@InputD-legmonth.tip}{} \def\CheckLegalYear #1{% \ifnum #1 < \EarliestYearDate \errmessage{\string\CheckLegalYear: year #1 < \the\EarliestYearDate\space encountered, illegal.}% \fi } \NameDef{@InputD-legyear.tip}{} \catcode`\@ = 11 \newcount\@IModNCount \newcount\@IModNCountCopy \def\IModN #1#2#3{% \@IModNCount = #1\relax \@IModNCountCopy = #1\relax \ifnum \@IModNCount < 0 \errmessage{\string\IModN: \string#1 (value \the\@IModNCount) is negative.}% \fi \ifnum #2< 1 \errmessage{\string\IModN: \string#2 (value #2) is negative or zero.}% \fi \divide\@IModNCount by #2\relax \multiply\@IModNCount by #2\relax #3 = \@IModNCountCopy \advance #3by -\@IModNCount } \catcode`\@ = 12 \NameDef{@InputD-imodn.tip}{} \catcode`\@ = 11 \newif\if@LeapYear \def\LeapYearConditional #1{% TT\fi {% \count0 = #1\relax \IModN{\count0}{4}{\count1}% \ifnum\count1 = 0 \global\@LeapYeartrue \IModN{\count0}{100}{\count2}% \IModN{\count0}{400}{\count3}% \ifnum\count2 = 0 \global\@LeapYearfalse \fi \ifnum\count3 = 0 \global\@LeapYeartrue \fi \else \global\@LeapYearfalse \fi }% \if@LeapYear } \catcode`\@ = 12 \NameDef{@InputD-isleapyr.tip}{} \def\NumberOfDaysInMonth #1#2#3{% \CheckLegalYear{#1}% \CheckLegalMonth{#2}% \ifcase #2\relax \or #3 = 31 \or #3 = 28 \if\LeapYearConditional{#1}% #3 = 29 \fi \or #3 = 31 \or #3 = 30 \or #3 = 31 \or #3 = 30 \or #3 = 31 \or #3 = 31 \or #3 = 30 \or #3 = 31 \or #3 = 30 \or #3 = 31 \fi } \NameDef{@InputD-ndaysmo.tip}{} \catcode`\@ = 11 \newcount\@TempCheckDate \def\CheckDate #1#2#3{% \CheckLegalYear{#1}% \CheckLegalMonth{#2}% \NumberOfDaysInMonth{#1}{#2}{\@TempCheckDate}% \CheckRange{#3}{1}{\@TempCheckDate}% {\string\CheckDate: provided date #1-#2-#3 is illegal.}% } \catcode`\@ = 12 \NameDef{@InputD-legdate.tip}{} \def\CopyDate #1#2#3#4#5#6{% #4 = #1\relax #5 = #2\relax #6 = #3\relax } \NameDef{@InputD-copydate.tip}{} \catcode`\@ = 11 \newcount\@TempNextDay \def\NextDay #1#2#3#4#5#6{% \CheckDate{#1}{#2}{#3}% \CopyDate{#1}{#2}{#3}{#4}{#5}{#6}% \advance #6 by 1 \NumberOfDaysInMonth{#1}{#2}{\@TempNextDay}% \ifnum #6 > \@TempNextDay #6 = 1 \advance #5 by 1 \ifnum #5 = 13 #5 = 1 \advance #4 by 1 \fi \fi } \catcode`\@ = 12 \NameDef{@InputD-nextday.tip}{} \def\NumberOfDaysInYear #1#2{% \if\LeapYearConditional{#1}% #2 = 366 \else #2 = 365 \fi } \NameDef{@InputD-numdyr.tip}{} \catcode`\@ = 11 \def\ProvideMonth #1#2#3{% \CheckLegalMonth{#1}% \ifcase #1\relax \or \def#3{January}\or \def#3{February}\or \def#3{March}\or \def#3{April}\or \def#3{May}\or \def#3{June}\or \def#3{July}\or \def#3{August}\or \def#3{September}\or \def#3{October}\or \def#3{November}\or \def#3{December}% \fi \ifnum #2 = 1 \def\@TempProvideMonth ##1##2##3##4\@Del{% \xdef#3{##1##2##3}% }% \expandafter\@TempProvideMonth#3\@Del \fi } \def\PrintMonth #1#2{% {% \ProvideMonth{#1}{#2}{\@PrintMonth}% \@PrintMonth }% } \def\PrintCurrentMonth{% \PrintMonth{\month}{0}% } \catcode`\@ = 12 \NameDef{@InputD-prmonth.tip}{} \catcode`\@ = 11 \newcount\@YearTemp \newcount\@YearTop \newcount\@MonthTemp \newcount\@MonthTop \newcount\@TempAD \def\ArbitraryDayOfWeek #1#2#3#4{% \CheckDate{#1}{#2}{#3}% #4 = \DayOfWeekOfEarliestDate \@YearTop = #1\relax \advance\@YearTop by -1 \DoLoop{\@YearTemp}{\EarliestYearDate}{1}{\@YearTop}{% \NumberOfDaysInYear{\@YearTemp}{\@TempAD}% \advance #4 by \@TempAD }% \IModN{#4}{7}{#4}% \@MonthTop = #2\relax \advance\@MonthTop by -1 \DoLoop{\@MonthTemp}{1}{1}{\@MonthTop}{% \NumberOfDaysInMonth{#1}{\@MonthTemp}{\@TempAD}% \advance #4 by \@TempAD }% \IModN{#4}{7}{#4}% \advance #4 by #3\relax \advance #4 by -1 \IModN{#4}{7}{#4}% } \catcode`\@ = 12 \NameDef{@InputD-arbday.tip}{} \catcode`\@ = 11 \newcount\@TempEarliest \newcount\EarliestYearDate \EarliestYearDate = 1583 \newcount\DayOfWeekOfEarliestDate \DayOfWeekOfEarliestDate = \Saturday \def\VerifyInitDate{% {% \ArbitraryDayOfWeek{2000}{1}{1}{\@TempEarliest}% \ifnum\@TempEarliest = \Saturday \message{\string\VerifyInitDate: initialization correct (initialization year: \the\EarliestYearDate).}% \else \errmessage{\string\VerifyInitDate: January 1 of 2000 is a Saturday! Computation reports it is day \the\@TempEarliest\space. Initialization error.}% \fi }% } \catcode`\@ = 12 \NameDef{@InputD-earliest.tip}{} \catcode`\@ = 11 \newcount\@TempPrevDay \def\PrevDay #1#2#3#4#5#6{% \CheckDate{#1}{#2}{#3}% \CopyDate{#1}{#2}{#3}{#4}{#5}{#6}% \advance #6 by -1 \ifnum #6 = 0 \advance #5 by -1 \ifnum #5 = 0 #5 = 12 \advance #4 by -1 \fi \NumberOfDaysInMonth{#4}{#5}{#6}% \fi } \catcode`\@ = 12 \NameDef{@InputD-prevday.tip}{} \catcode`\@ = 11 \def\NextMonth #1#2#3#4{% \CheckDate{#1}{#2}{1}% #3 = #1\relax #4 = #2\relax \advance #4 by 1 \ifnum #4 = 13 #4 = 1 \advance #3 by 1 \fi } \catcode`\@ = 12 \NameDef{@InputD-nextmon.tip}{} \catcode`\@ = 11 \def\PrevMonth #1#2#3#4{% \CheckDate{#1}{#2}{1}% #3 = #1\relax #4 = #2\relax \advance #4 by -1 \ifnum #4 = 0 #4 = 12 \advance #3 by -1 \fi } \catcode`\@ = 12 \NameDef{@InputD-prevmon.tip}{} \catcode`\@ = 11 \newcount\@LeadingZCount \def\LeadingZ #1{% \@LeadingZCount = #1\relax \ifnum \@LeadingZCount < 10 0% \fi \the\@LeadingZCount } \catcode`\@ = 12 \NameDef{@InputD-leadingz.tip}{} \newcount\Hour \newcount\Minute \def\PrintMilTime{% \Hour = \time \divide\Hour by 60 \Minute = \Hour \multiply\Minute by 60 \advance\Minute by -\time \Minute = -\Minute \LeadingZ{\the\Hour}:\LeadingZ{\the\Minute}% } \NameDef{@InputD-pmtime.tip}{} \def\TodayX{% \PrintCurrentMonth~\the\day, \the\year } \newcount\TodayYCount \def\TodayY{% {% \ArbitraryDayOfWeek{\year}{\month}{\day}{\TodayYCount}% \PrintDayOfWeek{\TodayYCount}{0}, }% \TodayX } \def\TodayZ{% \TodayY, \PrintMilTime } \NameDef{@InputD-todayx.tip}{} \catcode`\@ = 11 \newcount\@InitialDayOfMonth \newcount\@MCDays \newcount\@MonthlyCalendarBodyTemp \def\MonthlyCalendarBody #1#2#3{% {% \CheckDate{#1}{#2}{1}% \ArbitraryDayOfWeek{#1}% {#2}{1}{\@InitialDayOfMonth}% \gdef #3{}% \DoLoop{\@MonthlyCalendarBodyTemp}% {1}{1}{\@InitialDayOfMonth}% {\xdef#3{#3&}} \NumberOfDaysInMonth{#1}{#2}{\@MCDays}% \DoLoop{\@MonthlyCalendarBodyTemp}{1}{1}{\@MCDays}{% \xdef#3{#3\the\@MonthlyCalendarBodyTemp}% \ifnum\@InitialDayOfMonth = \Saturday \xdef#3{#3\cr}% \else \xdef#3{#3&}% \fi \advance\@InitialDayOfMonth by 1 \IModN{\@InitialDayOfMonth}{7}{\@InitialDayOfMonth}% }% }% \xdef#3{#3\crcr}% } \newcount\@MonthlyCalendarCount \def\MonthlyCalendar #1#2#3{% {% \MonthlyCalendarBody{#1}{#2}{\TableBody}% \vtop{ \hsize = #3\relax \ProvideMonth{#2}{0}{\MonthNameTemp}% \@MonthlyCalendarCount = #1\relax \centerline{\MyStrut\MonthNameTemp\space \the\@MonthlyCalendarCount}% \smallskip \hrule \smallskip \tabskip = 0pt \halign to \hsize{ % So \hfil##\relax \tabskip = 0pt plus 1fil& \hfil##& % Mo \hfil##& % Tu \hfil##& % We \hfil##& % Th \hfil##& % Fr \hfil##\relax \tabskip = 0pt \cr \omit\hfil So\hfil& \omit\hfil Mo\hfil& \omit\hfil Tu\hfil& \omit\hfil We\hfil& \omit\hfil Th\hfil& \omit\hfil Fr\hfil& \omit\hfil Sa\hfil\cr \TableBody }% \smallskip \hrule }% }% }% \catcode`\@ = 12 \NameDef{@InputD-mocal.tip}{} \def\ThreeMonthlyCalendars #1#2#3{% \hbox{% \count0 = #1 \count1 = #2 \MonthlyCalendar{\count0}{\count1}{#3}% \hskip 10pt \NextMonth{\count0}{\count1}{\count0}{\count1}% \MonthlyCalendar{\count0}{\count1}{#3}% \NextMonth{\count0}{\count1}{\count0}{\count1}% \hskip 10pt \MonthlyCalendar{\count0}{\count1}{#3}% } } \NameDef{@InputD-mocal3.tip}{} \def\YearlyCalendar #1#2#3{% \vbox{% \dimen0 = #2\relax \ifdim\dimen0 = 0.0pt \dimen0 = \hsize \fi \dimen1 = #3\relax \ifdim\dimen1 = 0.0pt \dimen1 = \dimen0 \divide\dimen1 by 3 \advance\dimen1 by -5pt \fi \hsize = \dimen0 \centerline{\Large\bf Year #1} \bigskip \line{% \MonthlyCalendar{#1}{1}{\dimen1}% \hfil \MonthlyCalendar{#1}{2}{\dimen1}% \hfil \MonthlyCalendar{#1}{3}{\dimen1}% }% \bigskip \line{% \MonthlyCalendar{#1}{4}{\dimen1}% \hfil \MonthlyCalendar{#1}{5}{\dimen1}% \hfil \MonthlyCalendar{#1}{6}{\dimen1}% }% \bigskip \line{% \MonthlyCalendar{#1}{7}{\dimen1}% \hfil \MonthlyCalendar{#1}{8}{\dimen1}% \hfil \MonthlyCalendar{#1}{9}{\dimen1}% }% \bigskip \line{% \MonthlyCalendar{#1}{10}{\dimen1}% \hfil \MonthlyCalendar{#1}{11}{\dimen1}% \hfil \MonthlyCalendar{#1}{12}{\dimen1}% }% } } \NameDef{@InputD-yearcal.tip}{} \catcode`\@ = 11 \newcount\@ComputeMondayOfDateDay \newcount\@ComputeMondayOfDateDayTwo \def\ComputeMondayOfDate #1#2#3#4#5#6{% #4 = #1\relax #5 = #2\relax #6 = #3\relax \ArbitraryDayOfWeek{#4}{#5}{#6}{\@ComputeMondayOfDateDay}% \ifnum\@ComputeMondayOfDateDay = \Sunday \@ComputeMondayOfDateDay = 6 \else \advance\@ComputeMondayOfDateDay by -1 \fi \DoLoop{\@ComputeMondayOfDateDayTwo} {\@ComputeMondayOfDateDay}{-1}{1}% {\PrevDay{#4}{#5}{#6}{#4}{#5}{#6}}% } \catcode`\@ = 12 \NameDef{@InputD-mondofda.tip}{} \catcode`\@ = 11 \newcount\@NextOrPrevWeekSameDayCount \def\@NextOrPrevWeekSameDay #1#2#3#4#5#6#7{% #4 = #1\relax #5 = #2\relax #6 = #3\relax \DoLoop{\@NextOrPrevWeekSameDayCount}{1}{1}{7}% {#7{#4}{#5}{#6}{#4}{#5}{#6}}% } \def\NextWeekSameDay #1#2#3#4#5#6{% \@NextOrPrevWeekSameDay {#1}{#2}{#3}{#4}{#5}{#6}{\NextDay}% } \def\PrevWeekSameDay #1#2#3#4#5#6{% \@NextOrPrevWeekSameDay {#1}{#2}{#3}{#4}{#5}{#6}{\PrevDay}% } \catcode`\@ = 12 \NameDef{@InputD-norpweek.tip}{} \catcode`\@ = 11 \newcount\@WeekOfYearCounter \newcount\@WeekOfYearYear \newcount\@WeekOfYearMonth \newcount\@WeekOfYearDay \newcount\@WeekOfYearCopy \def\WeekOfYear #1#2#3#4{% \@WeekOfYearCopy = #1\relax \ComputeMondayOfDate{#1}{#2}{#3}% {\@WeekOfYearYear}{\@WeekOfYearMonth}{\@WeekOfYearDay}% \def\@WeekOfYearCounter{#4}% \@WeekOfYearCounter = 1 \@WeekOfYear } \newif\if@YearStop \def\@WeekOfYear{% \@YearStopfalse \ifnum\@WeekOfYearCopy > \@WeekOfYearYear \@YearStoptrue \else \ifnum\@WeekOfYearMonth = 1 \ifnum\@WeekOfYearDay = 1 \@YearStoptrue \fi \fi \fi \if@YearStop \def\@WeekOfYearNext{\relax}% \else \def\@WeekOfYearNext{\@WeekOfYear}% \expandafter\advance\@WeekOfYearCounter by 1 \PrevWeekSameDay{\@WeekOfYearYear}{\@WeekOfYearMonth}% {\@WeekOfYearDay}% {\@WeekOfYearYear}{\@WeekOfYearMonth}% {\@WeekOfYearDay}% \fi \@WeekOfYearNext } \catcode`\@ = 12 \NameDef{@InputD-weekofyr.tip}{} \NameDef{@InputD-alldate.tip}{} \def\AlwaysBaselineskip{% \lineskiplimit = -\maxdimen } \NameDef{@InputD-alwbase.tip}{} \def\angt #1{% \leavevmode \hbox{$\langle$}% {\rm #1}% \hbox{$\rangle$}% } \NameDef{@InputD-angt.tip}{} \newif\ifShowX \ShowXfalse \def\ShowX #1{% \ifShowX {% \nonstopmode \show #1% }% \fi } \NameDef{@InputD-showx.tip}{} \catcode`\@ = 11 \newif\if@TestSubString \def\SubStringConditional #1#2{% TT\fi \edef\@MainString{#1}% \edef\@SubStringConditionalTemp{{#1}{#2}}% \expandafter\@SubStringConditional\@SubStringConditionalTemp } \def\@SubStringConditional #1#2{% \def\@TestSubS ##1#2##2\@Del{% \def\@TestTemp{##1}% }% \ShowX{\@TestSubS}% \@TestSubS #1#2\@Del \ShowX{\@TestTemp}% \ifx\@MainString\@TestTemp \@TestSubStringfalse \else \@TestSubStringtrue \fi \if@TestSubString } \catcode`\@ = 12 \NameDef{@InputD-testsubs.tip}{} \catcode`\@ = 11 \def\RecursionMacroEnd #1#2#3{% #1\relax \def\@RecursionMacroEndNext{#2}% \else \def\@RecursionMacroEndNext{#3}% \fi \@RecursionMacroEndNext } \catcode`\@ = 12 \NameDef{@InputD-endrec.tip}{} \catcode`\@ = 11 \def\ReplaceSubStrings #1#2#3#4{% \def\@ReplaceResult{#1}% \edef\@ReplaceMain{#2}% \edef\@ReplaceSub{#3}% \edef\@ReplaceSubRep{#4}% \@ReplaceSubStrings } \def\@ReplaceSubStrings{% \RecursionMacroEnd {\if\SubStringConditional{\@ReplaceMain}{\@ReplaceSub}}% {\@ReplaceSubStringsDo}{\@ReplaceSubStringsDone}% } \def\@ReplaceSubStringsDoX{% \def\@ReplaceSubStringsDoA ##1% }% \def\@ReplaceSubStringsDo{% \expandafter\@ReplaceSubStringsDoX \@ReplaceSub ##2\@EndReplaceSubStrings{% \edef\@ReplaceMain{##1\@ReplaceSubRep ##2}% }% \ShowX{\@ReplaceSubStringsDoA}% \ShowX{\@ReplaceMain}% \expandafter\@ReplaceSubStringsDoA\@ReplaceMain \@EndReplaceSubStrings \ShowX{\@ReplaceMain}% \@ReplaceSubStrings } \def\@ReplaceSubStringsDone{% \expandafter\edef\@ReplaceResult{\@ReplaceMain}% } \catcode`\@ = 12 \NameDef{@InputD-restring.tip}{} \catcode`\@ = 11 \def\StringsEqualConditional #1#2{% TT\fi \edef\@StringsEqualOneConditional{#1}% \edef\@StringsEqualTwoConditional{#2}% \ifx\@StringsEqualOneConditional\@StringsEqualTwoConditional } \def\EmptyStringConditional #1{% TT\fi \if\StringsEqualConditional{#1}{}% } \def\EmptyStringConditionalISpaces #1{% TT\fi \ReplaceSubStrings{\@EmptyStringConditionalISpaces}{#1}% { }{}% \if\EmptyStringConditional {\@EmptyStringConditionalISpaces}% } \catcode`\@ = 12 \NameDef{@InputD-compst.tip}{} \catcode`\@ = 11 \def\@EmptyRefList{} \def\EmptyListConditional #1{% TT\fi \ifx#1\@EmptyRefList } \newtoks\@AppendTokOne \newtoks\@AppendTokTwo \def\LeftAppendElement #1#2{% \edef\@AppendTemp{\noexpand\\{#2}}% \@AppendTokOne = \expandafter{\@AppendTemp}% \@AppendTokTwo = \expandafter{#1}% \edef#1{\the\@AppendTokOne \the\@AppendTokTwo}% } \def\RightAppendElement #1#2{% \edef\@AppendTemp{\noexpand\\{#2}}% \@AppendTokOne = \expandafter{\@AppendTemp}% \@AppendTokTwo = \expandafter{#1}% \edef#1{\the\@AppendTokTwo \the\@AppendTokOne}% } \def\CarOfList #1#2{% \def\@CarTemp \\##1##2\@EndCarList{\def#2{##1}}% \expandafter\@CarTemp#1\@EndCarList } \def\CdrOfList #1#2{% \def\@CdrTemp \\##1##2\@EndCdrList{\def#2{##2}}% \expandafter\@CdrTemp#1\@EndCdrList } \def\DropFirstElementOfList #1{% \if\EmptyListConditional{#1}% \errhelp = {\string\DropFirstElementOfList: list is empty. No first element to drop.}% \errmessage{\string\DropFirstElementOfList: List \noexpand#1 is empty.}% \else \def\@DropFirstElementTemp \\##1##2\@EndCdrList{\def#1{##2}}% \expandafter\@DropFirstElementTemp#1\@EndCdrList \fi } \def\CarCarOfList #1#2{% \let\@CarCarOfListList = #1% \DropFirstElementOfList{\@CarCarOfListList}% \CarOfList{\@CarCarOfListList}{#2} } \def\ForEveryListElement #1#2{% \let\@ForEveryList = #1% \let\@ForEveryListElementMacro = #2% \@ForEveryListElement } \def\@ForEveryListElement{% \if\EmptyListConditional{\@ForEveryList}% \let\@ForEveryListElementNext = \relax \else \CarOfList{\@ForEveryList}{\@ForEveryListElementElement}% \@ForEveryListElementMacro{\@ForEveryListElementElement}% \DropFirstElementOfList{\@ForEveryList}% \let\@ForEveryListElementNext = \@ForEveryListElement \fi \@ForEveryListElementNext } \newif\if@MemberList \def\MemberOfListConditional #1#2{% TT\fi \@MemberListfalse {% \def\\##1{% \if\StringsEqualConditional{#2}{##1}% \global\@MemberListtrue \fi }% #1% }% \if@MemberList } \def\ReverseList #1#2{% \def\@ReverseListOut{}% \ForEveryListElement{#1}{\@ReverseList}% \let#2 = \@ReverseListOut } \def\@ReverseList #1{% \LeftAppendElement{\@ReverseListOut}{#1}% } \def\LastElementOfList #1#2{% \ReverseList{#1}{#1}% \CarOfList{#1}{#2}% \ReverseList{#1}{#1}% } \def\DropLastElementOfList #1{% \ReverseList{#1}{#1}% \DropFirstElementOfList{#1}% \ReverseList{#1}{#1}% } \def\NumberOfListElements #1#2{% \let\@NumberOfListElementsList = #1% \def\@NumberOfListElementsCount{#2}% \@NumberOfListElementsCount = 0 \@NumberOfListElements } \def\@NumberOfListElements{% \if\EmptyListConditional{\@NumberOfListElementsList}% \let\@NumberOfListElementsNext = \relax \else \advance\@NumberOfListElementsCount by 1 \DropFirstElementOfList{\@NumberOfListElementsList}% \let\@NumberOfListElementsNext = \@NumberOfListElements \fi \@NumberOfListElementsNext } \newcount\@NumberOfListElCCount \def\NumberOfListElementsNumConditional #1{% 0=0\fi \NumberOfListElements{#1}{\@NumberOfListElCCount}% \ifnum\@NumberOfListElCCount } \def\CombineTwoLists #1#2#3{% \def\@CombineTwoLists{\def\@CombineTwoListsResult}% \expandafter\expandafter\expandafter \expandafter\expandafter\expandafter \expandafter\@CombineTwoLists \expandafter\expandafter\expandafter{\expandafter#1#2}% \let #3 = \@CombineTwoListsResult } \catcode`\@ = 12 \NameDef{@InputD-list-mac.tip}{} \catcode`\@ = 11 \def\IndexLastElement #1#2{% \NumberOfListElements{#1}{#2}% \advance #2 by -1 } \newcount\@ArrayIndexCheckCount \def\ArrayIndexCheck #1#2{% \IndexLastElement{#1}{\@ArrayIndexCheckCount}% \ifnum\@ArrayIndexCheckCount = -1 \errmessage{\string\ArrayIndexCheck: array \string#2 is empty.}% \else \CheckRange{#2}{0}{\@ArrayIndexCheckCount}% {\string\ArrayIndexCheck: index \number#2 out of range in list \string#1}% \fi } \newcount\@AccessArrayElementLimit \newcount\@AccessArrayElementCount \def\AccessArrayElement #1#2#3{% \ArrayIndexCheck{#1}{#2}% \let\@AccessArrayElementList = #1% \@AccessArrayElementLimit = #2\relax \DoLoop{\@AccessArrayElementCount}% {1}{1}{\@AccessArrayElementLimit}% {\DropFirstElementOfList{\@AccessArrayElementList}}% \CarOfList{\@AccessArrayElementList}{#3}% } \newcount\@ModifyArrayElementCount \newcount\@ModifyArrayElementLimit \def\ModifyArrayElement #1#2#3{% \ArrayIndexCheck{#1}{2}% \IndexLastElement{#1}{\@ModifyArrayElementLimit}% \let\@ModifyArrayList = #1% \def\@ModifyArrayRet{}% \DoLoop{\@ModifyArrayElementCount}% {0}{1}{\@ModifyArrayElementLimit}% {% \CarOfList{\@ModifyArrayList}% {\@ModifyArrayElement}% \DropFirstElementOfList{\@ModifyArrayList}% \ifnum\@ModifyArrayElementCount = #2\relax \RightAppendElement{\@ModifyArrayRet}{#3}% \else \RightAppendElement {\@ModifyArrayRet}% {\@ModifyArrayElement}% \fi }% \let #1 = \@ModifyArrayRet } \newcount\@InsertArrayElementCount \newcount\@InsertArrayElementCountTwo \def\InsertArrayElement #1#2#3{% \ifnum\NumberOfListElementsNumConditional{#1}=0 \errmessage{\string\InsertArrayElement: empty array}% \fi \ifnum\NumberOfListElementsNumConditional{#1}=#2 \else \ArrayIndexCheck{#1}{#2}% \fi \def\@InsertArrayElementListPre{}% \ifnum #2>0 \@InsertArrayElementCount = #2\relax \advance\@InsertArrayElementCount by -1 \ExtractSubArray{#1}{0}{\@InsertArrayElementCount}% {\@InsertArrayElementListPre}% \fi \def\@InsertArrayElementListPost{}% \IndexLastElement{#1}{\@InsertArrayElementCount}% \ifnum #2 > \@InsertArrayElementCount \else \ExtractSubArray{#1}{#2}{\@InsertArrayElementCount}% {\@InsertArrayElementListPost}% \fi \RightAppendElement{\@InsertArrayElementListPre}{#3}% \CombineTwoLists {\@InsertArrayElementListPre}% {\@InsertArrayElementListPost}% {\@InsertArrayElementListPre}% \let #1 = \@InsertArrayElementListPre } \newcount\@DeleteArrayElementCount \newcount\@DeleteArrayElementLimit \def\DeleteArrayElement #1#2{% \ArrayIndexCheck{#1}{#2}% \let\@DeleteArrayElementList = #1% \IndexLastElement{#1}{\@DeleteArrayElementLimit}% \ifnum\@DeleteArrayElementLimit = -1 \errmessage{\string\DeleteArrayElement: empty array.}% \fi \def\@DeleteArrayElementResultList{}% \DoLoop{\@DeleteArrayElementCount}% {0}{1}{\@DeleteArrayElementLimit}% {% \CarOfList{\@DeleteArrayElementList}% {\@DeleteArrayElement}% \DropFirstElementOfList{\@DeleteArrayElementList}% \ifnum\@DeleteArrayElementCount = #2\relax \else \RightAppendElement {\@DeleteArrayElementResultList}% {\@DeleteArrayElement}% \fi }% \let #1=\@DeleteArrayElementResultList } \newcount\@DeleteArrayElementRangeCount \newcount\@DeleteArrayElementRangeLimit \def\DeleteArrayElementRange #1#2#3{% \ArrayIndexCheck{#1}{#2}% \ArrayIndexCheck{#1}{#3}% \ifnum #2>#3 \errmessage{\string\DeleteArrayElementRange: first index larger than second. Makes no sense}% \fi \@DeleteArrayElementRangeLimit = #3\relax \advance\@DeleteArrayElementRangeLimit by -#2% \advance\@DeleteArrayElementRangeLimit by 1 \DoLoop{\@DeleteArrayElementRangeCount}{1}{1}% {\@DeleteArrayElementRangeLimit}% {\DropArrayElement{#1}{#2}}% } \newcount\@ShowArrayCount \newcount\@ShowArrayLimit \def\ShowArray #1{% \wlog{\string\ShowArray: begin}% \IndexLastElement{#1}{\@ShowArrayLimit}% \ifnum\@ShowArrayLimit = -1 \wlog{** empty array **}% \else \DoLoop{\@ShowArrayCount}{0}{1}{\@ShowArrayLimit}{% \AccessArrayElement{#1}{\@ShowArrayCount}% {\@ShowArrayElement}% \wlog{Index \the\@ShowArrayCount: "\@ShowArrayElement"}% }% \fi \wlog{\string\ShowArray: end}% \wlog{}% } \def\@TokenToListDoneMacro{\@TokensToListDone}% \def\TokensToTeXList #1#2{% \def#1{}% \def\@TokensToListName{#1}% \@TokensToList #2\@TokensToListDone } \def\@TokensToList #1{% \def\@TokensToListMacArgOne{#1}% \ifx\@TokensToListMacArgOne\@TokenToListDoneMacro \let\@TokensToListNext = \relax \else \expandafter\RightAppendElement\@TokensToListName{#1}% \let\@TokensToListNext = \@TokensToList \fi \@TokensToListNext } \newcount\@ExtractArrayCount \newcount\@ExtractArrayLimit \newif\if@ExtractCopy \def\ExtractSubArray #1#2#3#4{% \ArrayIndexCheck{#1}{#2}% \ArrayIndexCheck{#1}{#3}% \ifnum #3<#2 \errmessage{\string\ExtractSubArray: first index > second index, error}% \fi \def\@ExtractSubArrayResult{}% \IndexLastElement{#1}{\@ExtractArrayLimit}% \DoLoop{\@ExtractArrayCount}{0}{1}{\@ExtractArrayLimit}% {% \@ExtractCopytrue \ifnum\@ExtractArrayCount < #2\relax \@ExtractCopyfalse \fi \ifnum\@ExtractArrayCount > #3\relax \@ExtractCopyfalse \fi \if@ExtractCopy \AccessArrayElement {#1}% {\@ExtractArrayCount}% {\@SubArrayElement}% \RightAppendElement {\@ExtractSubArrayResult}% {\@SubArrayElement}% \fi }% \let #4 = \@ExtractSubArrayResult } \catcode`\@ = 12 \NameDef{@InputD-arraymac.tip}{} \def\ZeroBox #1{% \wd#1 = 0pt \ht#1 = 0pt \dp#1 = 0pt } \def\ZeroBoxOut #1{% \ZeroBox{#1}% \box#1% } \NameDef{@InputD-box-zero.tip}{} \catcode`\@ = 11 \newbox\@PrintAtPositionBox \def\PrintAtPosition #1#2#3#4{% \setbox\@PrintAtPositionBox = \hbox{% \hskip #1\relax \lower #2\hbox{% #3% }% }% #4 = \dp\@PrintAtPositionBox \ZeroBoxOut{\@PrintAtPositionBox}% } \catcode`\@ = 12 \def\SetUpPrintAtPosition{% \nopagenumbers \topskip = 0pt \offinterlineskip } \NameDef{@InputD-atpos.tip}{} \catcode`\@ = 11 \def\NewEnvironment #1{% \wlog{\string\NewEnvironment: new environment #1.}% \NameNewDef{@@B-#1}{% \bgroup \def\@CurEnvName{#1}% \NameUse{@Begin#1}% }% \NameNewDef{@@E-#1}{% \NameUse{@End#1}% \if\StringsEqualConditional{#1}{\@CurEnvName}% \else \errmessage{Ending environment: mismatch in environment names: specified: #1, expected: \@CurEnvName}% \fi \egroup }% } \def\B #1{% \NameUse{@@B-#1}% } \def\E #1{% \NameUse{@@E-#1}% } \catcode`\@ = 12 \NameDef{@InputD-be-env.tip}{} \catcode`\@ = 11 \newbox\@BulletBox \setbox\@BulletBox = \hbox{% \hskip -2.3pt \lower 2.5pt \hbox{$\bullet$}% } \ZeroBox{\@BulletBox} \catcode`\@ = 12 \NameDef{@InputD-box-bul.tip}{} \catcode`\@ = 11 \newbox\@BoxingBox \newbox\@BaseLineLeaders \catcode`\@ = 12 \NameDef{@InputD-box-bb.tip}{} \newdimen\BoxRuleThickness \BoxRuleThickness = 0.4pt \NameDef{@InputD-box-thck.tip}{} \catcode`\@ = 11 \newif\ifBulletAndBaseLine \BulletAndBaseLinetrue \def\RulesOutSide #1#2#3{% {% \setbox 0 = \hbox{% \ifBulletAndBaseLine \copy\@BulletBox \fi \hskip -\BoxRuleThickness \vrule width \BoxRuleThickness height #1 depth #2% \hskip #3% \vrule width \BoxRuleThickness height #1 depth #2% \dimen0 = #3% \advance \dimen0 by 2\BoxRuleThickness \hskip -\dimen0 \dimen2 = #1% \advance\dimen2 by \BoxRuleThickness \vrule width \dimen0 height \dimen2 depth -#1% \hskip -\dimen0 \dimen2 = #2% \advance\dimen2 by \BoxRuleThickness \vrule width \dimen0 height -#2 depth \dimen2 }% \ZeroBoxOut{0}% }% } \def\RulesInSide #1#2#3{% {% \setbox 0 = \hbox{% \ifBulletAndBaseLine \copy\@BulletBox \fi \vrule width \BoxRuleThickness height #1 depth #2% \hskip #3% \hskip -\BoxRuleThickness \hskip -\BoxRuleThickness \vrule width \BoxRuleThickness height #1 depth #2% \hskip -#3% \dimen2 = #1% \advance\dimen2 by -\BoxRuleThickness \vrule width #3 height #1 depth -\dimen2 \hskip -#3% \dimen2 = #2% \advance\dimen2 by -\BoxRuleThickness \vrule width #3 height -\dimen2 depth #2% }% \ZeroBoxOut{0}% }% } \def\RulesOnSide #1#2#3{% {% \setbox 0 = \hbox{% \ifBulletAndBaseLine \copy\@BulletBox \fi \hskip -0.5\BoxRuleThickness \vrule width \BoxRuleThickness height #1 depth #2% \hskip #3% \hskip -\BoxRuleThickness \vrule width \BoxRuleThickness height #1 depth #2% \hskip -#3% \hskip -\BoxRuleThickness \dimen0 = #3% \advance\dimen0 by \BoxRuleThickness \dimen2 = #1% \advance\dimen2 by 0.5\BoxRuleThickness \dimen4 = #1% \advance\dimen4 by -0.5\BoxRuleThickness \dimen4 = -\dimen4 \vrule width \dimen0 height \dimen2 depth \dimen4 \hskip -\dimen0 \dimen2 = #2% \advance\dimen2 by -0.5\BoxRuleThickness \dimen2 = -\dimen2 \dimen4 = #2% \advance\dimen4 by 0.5\BoxRuleThickness \vrule width \dimen0 height \dimen2 depth \dimen4 }% \ZeroBoxOut{0}% }% } \catcode`\@ = 12 \NameDef{@InputD-boxing5.tip}{} \catcode`\@ = 11 \def\BoxingE #1{% \hbox{% \setbox\@BoxingBox = #1% \setbox\@BaseLineLeaders = \hbox to \wd\@BoxingBox{% \xleaders\hbox to 4pt{% \hskip 1pt \vrule depth 0.4pt height 0.4pt width 2pt \hfil }% \hfil }% \ZeroBox{\@BaseLineLeaders}% \ifBulletAndBaseLine \box\@BaseLineLeaders \fi \RulesOnSide {\ht\@BoxingBox}% {\dp\@BoxingBox}% {\wd\@BoxingBox}% \box\@BoxingBox }% } \catcode`\@ = 12 \NameDef{@InputD-boxing6.tip}{} \catcode`\@ = 11 \newbox\@VcenterXBox \newdimen\@VcenterDimen \def\VcenterX{% \hbox\bgroup \mathsurround = 0pt \futurelet\@VCenterXToken\@VCenterXA } \def\@VCenterXA{% \ifx\@VCenterXToken\bgroup \let\@VcenterXNext = \@VcenterXOrdinary \else \ifx\@VCenterXToken t% \let\@VcenterXNext = \@VcenterXTo \else \let\@VcenterXNext = \@VcenterXSpread \fi \fi \@VcenterXNext } \def\@VcenterXOrdinary{% \def\@VcenterCommand{\vcenter}% \afterassignment\@VcenterXB \let\@VcenterDrop = } \def\@VcenterXTo to{% \def\@VcenterCommand{to}% \afterassignment\@VcenterXToSpread \@VcenterDimen = } \def\@VcenterXSpread spread{% \def\@VcenterCommand{spread}% \afterassignment\@VcenterXToSpread \@VcenterDimen = } \def\@VcenterXToSpread{% \edef\@VcenterCommand{% \vcenter\@VcenterCommand \the\@VcenterDimen }% \afterassignment\@VcenterXB \let\@VcenterDrop = } \def\@VcenterXB{% \setbox\@VcenterXBox = \hbox\bgroup $% \@VcenterCommand\bgroup \aftergroup\@VcenterXC } \def\@VcenterXC{% $% \egroup \box\@VcenterXBox \egroup } \catcode`\@ = 12 \NameDef{@InputD-vcentx.tip}{} \catcode`\@ = 11 \newdimen\@BoxRDimen \newbox\@BoxRBox \newcount\@BoxRNumber \def\HboxR{% \hbox\bgroup \def\@WhichBox{\hbox}% \def\@WhichBoxDimen{}% \@BoxRaa } \def\VboxR{% \vbox\bgroup \def\@WhichBox{\vbox}% \def\@WhichBoxDimen{}% \@BoxRaa } \def\VtopR{% \vtop\bgroup \def\@WhichBox{\vtop}% \def\@WhichBoxDimen{}% \@BoxRaa } \def\VcenterXR{% \hbox\bgroup \def\@WhichBox{\VcenterX}% \def\@WhichBoxDimen{}% \@BoxRaa } \def\BoxR{% \hbox\bgroup \def\@WhichBox{\hbox}% \def\@WhichBoxDimen{}% \afterassignment\@BoxRB \@BoxRNumber = } \def\@BoxRB{% \HboxR{\box\@BoxRNumber}% \egroup } \def\CopyR{% \hbox\bgroup \def\@WhichBox{\hbox}% \def\@WhichBoxDimen{}% \afterassignment\@CopyRbb \@BoxRNumber = } \def\@CopyRbb{% \HboxR{\copy\@BoxRNumber}% \egroup } \def\@BoxRaa{% \futurelet\@BoxRSymbol\@BoxRA } \def\@BoxRA{% \ifx\@BoxRSymbol\bgroup \let\@BoxitNext = \@BoxRb \else \if\@BoxRSymbol t% \let\@BoxitNext = \@BoxRbTo \else \let\@BoxitNext = \@BoxRbSpread \fi \fi \@BoxitNext } \def\@BoxRb{% \afterassignment\@BoxRbTwo \let\@BoxDrop = } \def\@BoxRbTwo{% \setbox\@BoxRBox = \expandafter\@WhichBox\@WhichBoxDimen\bgroup \aftergroup\@BoxRbThree } \def\@BoxRbThree{% \BoxingE{\box\@BoxRBox}% \egroup } \def\@BoxRbTo to{% \def\@WhichBoxDimen{to}% \afterassignment\@BoxRbMoreSpreadTo \@BoxRDimen = } \def\@BoxRbSpread spread{% \def\@WhichBoxDimen{spread}% \afterassignment\@BoxRbMoreSpreadTo \@BoxRDimen = } \def\@BoxRbMoreSpreadTo{% \edef\@WhichBoxDimen{\@WhichBoxDimen \the\@BoxRDimen}% \afterassignment\@BoxRbTwo \let\@BoxDrop = } \catcode`\@ = 12 \NameDef{@InputD-boxing7.tip}{} \def\BoxLarger #1#2{% \vbox{% \vskip #2 \hbox{% \hskip #2% \hbox{#1}% \hskip #2% }% \vskip #2 }% } \NameDef{@InputD-box-larg.tip}{} \def\EmptyBox #1#2#3{% \hbox{% \setbox 0 = \hbox{}% \ht0 = #1% \dp0 = #2% \wd0 = #3% \box 0% }% } \NameDef{@InputD-emptybox.tip}{} \catcode`\@ = 11 \newbox\@EmptyRuledBox \def\EmptyRuledBox #1#2#3{% \setbox\@EmptyRuledBox = \hbox{}% \ht\@EmptyRuledBox = #1\relax \dp\@EmptyRuledBox = #2\relax \wd\@EmptyRuledBox = #3\relax \HboxR{\box\@EmptyRuledBox}% } \catcode`\@ = 12 \NameDef{@InputD-emprubox.tip}{} \def\EliminateRuledBoxes{% \let\HboxR = \hbox \let\VboxR = \vbox \let\VtopR = \vtop \let\VcenterXR = \VcenterX \let\BoxR = \box \let\CopyR = \copy } \NameDef{@InputD-boxrelim.tip}{} \def\LineR{\HboxR to \hsize} \def\LeftlineR #1{\LineR{#1\hss}} \def\RightlineR #1{\LineR{\hss#1}} \def\CenterlineR #1{\LineR{\hss#1\hss}} \NameDef{@InputD-linesr.tip}{} \NameDef{@InputD-box-mac.tip}{} \catcode`\@ = 11 \newdimen\@BigLetDown \newdimen\@BigLetDimen \newcount\@BigLetCount \newbox\@BigLetBox \newdimen\BigLetSep \BigLetSep = 2pt \newdimen\BigLetH \BigLetH = 2pt \def\BigLetPar #1{% \par \setbox\@BigLetBox = \hbox{#1\hskip\BigLetSep}% \setbox\@BigLetBox = \vtop{% \dimen0 = \baselineskip \offinterlineskip \hbox{} \vskip -0.7\dimen0 \box\@BigLetBox \vbox to \BigLetH{} }% \@BigLetDimen = \dp\@BigLetBox \advance\@BigLetDimen by 0.7\baselineskip \advance\@BigLetDimen by 1.0\baselineskip \divide\@BigLetDimen by \baselineskip \@BigLetCount = \@BigLetDimen \dp\@BigLetBox = 0pt \hangafter = -\@BigLetCount \hangindent = \wd\@BigLetBox \noindent \hskip -\hangindent \box \@BigLetBox \ignorespaces } \catcode`\@ = 12 \NameDef{@InputD-bletpar.tip}{} \def\BoxingA #1{% \vbox{% \hrule \hbox{% \vrule #1% \vrule }% \hrule }% } \NameDef{@InputD-boxing1.tip}{} \def\BoxingB #1{% \vbox{% \hrule height \BoxRuleThickness \hbox{% \vrule width \BoxRuleThickness #1% \vrule width \BoxRuleThickness }% \hrule height \BoxRuleThickness }% } \NameDef{@InputD-boxing2.tip}{} \catcode`\@ = 11 \def\BoxingC #1{% \vbox{% \hrule height \BoxRuleThickness \hbox{% \vrule width \BoxRuleThickness \copy\@BulletBox #1% \vrule width \BoxRuleThickness }% \hrule height \BoxRuleThickness }% } \catcode`\@ = 12 \NameDef{@InputD-boxing3.tip}{} \catcode`\@ = 11 \def\BoxingD #1{% \vbox{% \setbox\@BoxingBox = #1% \setbox\@BaseLineLeaders = \hbox to \wd\@BoxingBox{% \xleaders\hbox to 4pt{% \hskip 1pt \vrule depth 0.4pt height 0.4pt width 2pt \hfil }% \hfil }% \ZeroBox{\@BaseLineLeaders}% \hrule height \BoxRuleThickness \hbox{% \vrule width \BoxRuleThickness \copy\@BulletBox \box\@BaseLineLeaders \box\@BoxingBox \vrule width \BoxRuleThickness }% \hrule height \BoxRuleThickness }% } \catcode`\@ = 12 \NameDef{@InputD-boxing4.tip}{} \catcode`\@ = 11 \def\newcountOF{\alloc@0\count\countdef\insc@unt} \def\newdimenOF{\alloc@1\dimen\dimendef\insc@unt} \def\newskipOF{\alloc@2\skip\skipdef\insc@unt} \def\newmuskipOF{\alloc@3\muskip\muskipdef\@cclvi} \def\newboxOF{\alloc@4\box\chardef\insc@unt} \def\newhelpOF#1#2{\newtoksOF#1#1\expandafter{\csname#2\endcsname}} \def\newtoksOF{\alloc@5\toks\toksdef\@cclvi} \def\newreadOF{\alloc@6\read\chardef\sixt@@n} \def\newwriteOF{\alloc@7\write\chardef\sixt@@n} \def\newfamOF{\alloc@8\fam\chardef\sixt@@n} \def\newifOF#1{\count@\escapechar \escapechar\m@ne \expandafter\expandafter\expandafter \edef\@if#1{true}{\let\noexpand#1=\noexpand\iftrue}% \expandafter\expandafter\expandafter \edef\@if#1{false}{\let\noexpand#1=\noexpand\iffalse}% \@if#1{false}\escapechar\count@} % the condition starts out false \def\newlanguageOF{\alloc@9\language\chardef\@cclvi} \catcode`\@ = 12 \NameDef{@InputD-newoutfr.tip}{} \edef\FourSpaces{\space\space\space\space} \edef\EightSpaces{\FourSpaces\FourSpaces} \NameDef{@InputD-mspaces.tip}{} \catcode`\@ = 11 \newcount\@BoxRQStart \newcount\@BoxRQEnd \newcount\@BoxRQLength \newcount\@BoxRQCount \newcount\@BoxRQLast \newcount\@BoxRQFirst \def\@LoadBRQCounters #1{% \if\NameDefinedConditional{@BoxRQ-Start-#1}% \@BoxRQStart = \NameUse{@BoxRQ-Start-#1}% \@BoxRQEnd = \NameUse{@BoxRQ-End-#1}% \@BoxRQLength= \NameUse{@BoxRQ-Length-#1}% \@BoxRQCount = \NameUse{@BoxRQ-Count-#1}% \@BoxRQLast = \NameUse{@BoxRQ-Last-#1}% \@BoxRQFirst = \NameUse{@BoxRQ-First-#1}% \else \errmessage{\string\@LoadBRQCounters: no queue "#1".}% \fi } \def\@RestoreBRQCounters #1{% \NameXdef{@BoxRQ-Start-#1}{\the\@BoxRQStart}% \NameXdef{@BoxRQ-End-#1}{\the\@BoxRQEnd}% \NameXdef{@BoxRQ-Length-#1}{\the\@BoxRQLength}% \NameXdef{@BoxRQ-Count-#1}{\the\@BoxRQCount}% \NameXdef{@BoxRQ-Last-#1}{\the\@BoxRQLast}% \NameXdef{@BoxRQ-First-#1}{\the\@BoxRQFirst}% } \newcount\@BoxRQTempA \newcount\@BoxRQTempB \def\SetUpBoxRegisterQueue #1#2{% \@BoxRQStart = \count14 \advance\@BoxRQStart by 1 \@BoxRQTempA = \@BoxRQStart \DoLoop{\@BoxRQTempB}{1}{1}{#2}% {\newboxOF\@WhoCaresBoxRegisterIndexA \advance\@BoxRQTempA by 1 } \advance\@BoxRQTempA by -1 \@BoxRQEnd = \@BoxRQTempA \wlog{\string\SetUpBoxRegisterQueue: queue "#1."}% \wlog{\EightSpaces Box registers \the\@BoxRQStart\space through \the\@BoxRQEnd\space allocated.}% \wlog{\EightSpaces (#2 registers).}% \@BoxRQCount = 0 \@BoxRQLength = #2 \@RestoreBRQCounters{#1}% } \def\AddBoxToQueue #1#2{% \@LoadBRQCounters{#1}% \wlog{\string\AddBoxToQueue: length: \the\@BoxRQLength, count: \the\@BoxRQCount}% \ifnum\@BoxRQCount = \@BoxRQLength \errmessage{\string\AddBoxToQueue: Queue "#1" is full.}% \else \ifnum\@BoxRQCount = 0 \@BoxRQLast = \@BoxRQStart \@BoxRQFirst = \@BoxRQStart \fi \global\setbox\@BoxRQLast = #2% \advance\@BoxRQLast by 1 \ifnum\@BoxRQLast > \@BoxRQEnd \@BoxRQLast = \@BoxRQStart \fi \advance\@BoxRQCount by 1 \@RestoreBRQCounters{#1}% \fi } \def\CopyFirstElementFromQueue #1#2{% \@LoadBRQCounters{#1}% \ifnum\@BoxRQCount = 0 \errmessage{\string\CopyFirstElementFromQueue: empty "#1"}% \else \setbox #2 = \copy\@BoxRQFirst \fi } \def\DropFirstBoxOfQueue #1{% \@LoadBRQCounters{#1}% \ifnum\@BoxRQCount = 0 \errmessage{\string\DropFirstBoxOfQueue: "#1" is empty.}% \else \advance\@BoxRQCount by -1 \ifnum\@BoxRQCount = 0 \else \advance\@BoxRQFirst by 1 \ifnum\@BoxRQFirst > \@BoxRQEnd \@BoxRQFirst = \@BoxRQStart \fi \fi \fi \@RestoreBRQCounters{#1}% } \def\EmptyBoxRegisterQueueConditional #1{% TT\fi \@LoadBRQCounters{#1}% \ifnum\@BoxRQCount = 0 } \catcode`\@ = 12 \NameDef{@InputD-boxrqu.tip}{} \def\CenterlineP #1{% \centerline{#1\unskip .} } \NameDef{@InputD-centerlp.tip}{} \def\BeginCenter{% \par \begingroup \rightskip = 1in plus 4em \leftskip = \rightskip \spaceskip = .3333em \xspaceskip = .5em \parfillskip = 0pt \noindent } \def\EndCenter{% \par \endgroup } \NameDef{@InputD-centerng.tip}{} \def\CenterOrParagraph #1{% {% \par \setbox 0 = \hbox{#1}% \ifdim\wd0 > \hsize \noindent #1\par \else \centerline{\box0}% \fi }% } \NameDef{@InputD-centpar.tip}{} \def\hboxE #1{% {% \setbox0 = \hbox{#1}% \setbox1 = \hbox{}% \wd1 = \wd0 \ht1 = \ht0 \dp1 = \dp0 \HboxR{\box 1}% }% } \NameDef{@InputD-charbo.tip}{} \catcode`\@ = 11 \newdimen\@AdvanceBoxD \def\AdvanceBoxDimension #1#2{% \@AdvanceBoxD = #1\relax \advance\@AdvanceBoxD by #2\relax #1 = \@AdvanceBoxD } \catcode`\@ = 12 \NameDef{@InputD-chboxd.tip}{} \catcode`\@ = 11 \def\ClearBoxReg #1{% \setbox #1 = \box\voidb@x } \catcode`\@ = 12 \NameDef{@InputD-clearb.tip}{} \def\InitialCollectInfo{% \gdef\Collect{}% } \InitialCollectInfo \long\def\AddInfo #1{% \xdef\Collect{\Collect #1}% } \NameDef{@InputD-collect.tip}{} \newtoks\CollectTokens \CollectTokens = {} \def\AddInfo #1{% \expandafter\expandafter\expandafter \CollectTokens\expandafter{% \the\CollectTokens #1} } \NameDef{@InputD-coltok.tip}{} \catcode`\@ = 11 \def\MakeOther #1{\catcode `#1 = 12 } \def\MakeActive #1{\catcode `#1 = \active\relax} \def\MakeEolActive{\MakeActive{\^^M}} \def\MakeTabActive{\MakeActive{\^^I}} \def\MkOthersNoCB{% \MakeOther{\ }% \MakeOther{\\}% \MakeOther{\$}% \MakeOther{\&}% \MakeOther{\#}% \MakeOther{\^}\MakeOther{\^^K}% \MakeOther{\_}\MakeOther{\^^A}% \MakeOther{\%}% \MakeOther{\~}% } \def\MkOthers{% \MakeOther{\{}% \MakeOther{\}}% \MkOthersNoCB } {\catcode`\^^I = 11 \gdef\@TabAsLiteral{^^I}% } \catcode`\[ = 1 \catcode`\] = 2 [ \catcode`\{ = 12 \catcode`\} = 12 \gdef\LeftBraceText[{] \gdef\RightBraceText[}] ] \catcode`\[ = 12 \catcode`\] = 12 \def\AcuteAccentText{\'{}} \def\AcuteAccentTt{{\tt\AcuteAccentText}} \def\AmpersandText{\char`\&} \def\AmpersandTt{{\tt\AmpersandText}} \def\ApostropheText{'{}} \def\ApostropheTt{{\tt\ApostropheText}} \def\AtSignText{@} \def\AtSignTt{{\tt\AtSignText}} {% \catcode`| = 0 |catcode`\\ = 12 |gdef|Backslash{\} } \def\BackslashTt{{\tt\char`\\}} \def\CaretText{\char`\^{}} \def\CaretTt{{\tt\CaretText}} \def\DollarSignText{\$} \def\DollarSignTt{{\tt\DollarSignText}} { \catcode`\# = 12 \gdef\PoundSign{#} } \def\pounds{{\it\char'44 }} \def\DoubleQuoteTt{{\tt"}} \def\EmDashText{{}---{}} \def\EmDashTt{{\tt\EmDashText}} \def\EnDashText{{}--{}} \def\EnDashTt{{\tt\EnDashText}} \def\ExclamationPointText{!} \def\ExclamationPointTt{{\tt\ExclamationPointText}} \def\GreaterThanSign{>} \def\GreaterThanSignTt{{\tt\GreaterThanSign}} \def\HyphenText{-} \def\HyphenTt{{\tt\HyphenText}} \def\OpenExclamationText{>} \def\OpenExclamationTt{{\tt\OpenExclamationText}} \def\LeftBraceTt{{\tt\LeftBraceText}} \def\LeftBracketText{[} \def\LeftBracketTt{{\tt\LeftBracketText}} \def\LeftParenthesisText{(} \def\LeftParenthesisTt{{\tt\LeftParenthesisText}} \def\LeftQuoteText{`{}} \def\LeftQuoteTt{{\tt\LeftQuoteText}} \def\LessThanSign{<} \def\LessThanSignTt{{\tt\LessThanSign}} \def\MinusSignText{-} \def\MinusSignTt{{\tt\MinusSignText}} \def\OpenQuestionText{<} \def\OpenQuestionTt{{\tt\OpenQuestionText}} \def\PlusSignText{+} \def\PlusSignTt{{\tt\PlusSignText}} \def\PercentSignText{\%} \def\PercentSignTt{{\tt\PercentSignText}} { \catcode`\% = 12 \gdef\PercentSignPure{%} } \def\PeriodText{.} \def\PeriodTt{{\tt\PeriodText}} \def\PoundSignText{\#} \def\PoundSignTt{{\tt\PoundSignText}} \def\QuestionMarkText{?} \def\QuestionMarkTt{{\tt\QuestionMarkText}} \def\RightBraceTt{{\tt\RightBraceText}} \def\RightBracketText{]} \def\RightBracketTt{{\tt\RightBracketText}} \def\RightQuoteText{'{}} \def\RightQuoteTt{{\tt\RightQuoteText}} \def\RightParenthesisText{)} \def\RightParenthesisTt{{\tt\RightParenthesisText}} \def\SpaceText{ } \def\VisibleSpaceTt{{\tt\char"20}} \def\TildeText{\char`\~{}} \def\TildeTt{{\tt\TildeText}} \def\UnderscoreText{\char`\_} \def\UnderscoreTt{{\tt\UnderscoreText}} \def\VerbControlSpace{\ } \catcode`\@ = 12 \NameDef{@InputD-verb-bas.tip}{} \catcode`\@ = 11 \newread\@FileExistsS \newif\if@FileExistsAnswer \def\FileExistsConditional #1{% TT\fi \openin\@FileExistsS = #1 \ifeof\@FileExistsS \@FileExistsAnswerfalse \else \closein\@FileExistsS \@FileExistsAnswertrue \fi \if@FileExistsAnswer } \catcode`\@ = 12 \NameDef{@InputD-fexist.tip}{} \catcode`\@ = 11 \newcount\@CompareFilesResult \newread\@ReadCompareOne \newread\@ReadCompareTwo \def\CompareFilesConditional #1#2{% TT\fi \if\FileExistsConditional{#1}% \else \errmessage{\string\CompareFilesConditional: first file "#1" does not exist.}% \fi \if\FileExistsConditional{#2}% \else \errmessage{\string\CompareFilesConditional: second file "#2" does not exist.}% \fi \global\@CompareFilesResult = 0 \begingroup \MkOthers \openin\@ReadCompareOne = #1 \openin\@ReadCompareTwo = #2 \@CompareFiles } \def\@CompareFiles{% \read\@ReadCompareOne to \@CompareOneString \read\@ReadCompareTwo to \@CompareTwoString \ifeof\@ReadCompareOne \ifeof\@ReadCompareOne \global\@CompareFilesResult = 1 \else \global\@CompareFilesResult = 2 \fi \else \ifeof\@ReadCompareOne \global\@CompareFilesResult = 2 \else \ifx\@CompareOneString\@CompareTwoString \else \global\@CompareFilesResult = 2 \fi \fi \fi \RecursionMacroEnd {\ifnum \@CompareFilesResult = 0\relax}% {\@CompareFiles}{\@EndCompareFiles}% } \def\@EndCompareFiles{% \endgroup \closein\@ReadCompareOne \closein\@ReadCompareTwo \ifnum\@CompareFilesResult = 1 } \catcode`\@ = 12 \NameDef{@InputD-comfiles.tip}{} \catcode`\@ = 11 \newwrite\GenericOStream \newif\if@GenericOStreamOpen \@GenericOStreamOpenfalse \def\OpenGenericOStream #1{% \if@GenericOStreamOpen \errmessage{\string\OpenGenericOStream: generic output stream currently open.}% \else \global\@GenericOStreamOpentrue \immediate\openout\GenericOStream = #1% \fi } \def\CloseGenericOStream{% \if@GenericOStreamOpen \global\@GenericOStreamOpenfalse \immediate\closeout\GenericOStream \else \errhelp{Stream not in use.}% \errmessage{\string\CloseGenericOStream: stream is NOT open for output.}% \fi } \catcode`\@ = 12 \NameDef{@InputD-genostr.tip}{} \catcode`\@ = 11 \newread\@StringsEqualConditionalCatInput \def\StringsEqualConditionalCat #1#2{% TT\fi \edef\@StringsEqualOneConditionalCat{#1}% \edef\@StringsEqualTwoConditionalCat{#2}% \OpenGenericOStream{compst.tmp}% \immediate\write\GenericOStream{% \@StringsEqualOneConditionalCat{#1}% }% \immediate\write\GenericOStream{% \@StringsEqualTwoConditionalCat{#1}% }% \CloseGenericOStream \openin\@StringsEqualConditionalCatInput = compst.tmp \read\@StringsEqualConditionalCatInput to \@StringsEqualOneConditionalCatR \read\@StringsEqualConditionalCatInput to \@StringsEqualTwoConditionalCatR \closein\@StringsEqualConditionalCatInput \ifx \@StringsEqualOneConditionalCatR \@StringsEqualTwoConditionalCatR } \catcode`\@ = 12 \NameDef{@InputD-compstca.tip}{} \catcode`\@ = 11 \newif\if@LetterConditional \newcount\@LetterConditionalCounter \def\@LetterConditional #1#2;{% \@LetterConditionalCounter = `#1\relax } \def\LetterConditional #1{% TT\fi \@LetterConditionalfalse \edef\@LetterConditionalString{#1}% \expandafter\@LetterConditional\@LetterConditionalString ; \if\InRangeConditional{\@LetterConditionalCounter}{`\a}{`\z}% \@LetterConditionaltrue \fi \if\InRangeConditional{\@LetterConditionalCounter}{`\A}{`\Z}% \@LetterConditionaltrue \fi \if@LetterConditional } \catcode`\@ = 12 \NameDef{@InputD-condltr.tip}{} \catcode`\@ = 11 \def\@TestTrail #1 #2\@Del{% \def\@RemTspTemp{#1}% } \def\RemTsp #1#2{% \edef\@RemTspTempOne{#2#2 }% \expandafter\@TestTrail\@RemTspTempOne\@Del \if\StringsEqualConditional{#2#2}{\@RemTspTemp}% \def#1{#2}% \else \edef\@RemTspTempA{\noexpand\edef\noexpand#1{\@RemTspTemp}}% \@RemTspTempA \fi } \def\@TestLead #1 #2\@Del{\def\@RemLspOne{#1}} \def\RemLsp #1#2{% \edef\@TempRemLsp{#2#2\space}% \expandafter\@TestLead\@TempRemLsp\@Del \if\EmptyStringConditional{\@RemLspOne}% \expandafter\@RemLspThree #2\@Del{#1}% \else \def#1{#2}% \fi } \edef\@RemLspTwo{% \def\noexpand\@RemLspThree\space ##1\noexpand\@Del##2{% \def##2{##1}% }% } \@RemLspTwo \catcode`\@ = 12 \NameDef{@InputD-remtlsp.tip}{} \newcount\StringLengthResult \catcode`\@ = 11 \newbox\@StringLengthBoxA \newbox\@StringLengthBoxB \def\StringLength #1{% \setbox\@StringLengthBoxA = \hbox{\tt #1}% \setbox\@StringLengthBoxB = \hbox{\tt A}% \StringLengthResult = \wd\@StringLengthBoxA \divide\StringLengthResult by \wd\@StringLengthBoxB } \catcode`\@ = 12 \NameDef{@InputD-strleng.tip}{} \catcode`\@ = 11 \def\ConvertArgsToListAndAppend #1#2{% \def\@Co{#1}% \@ItemRec #2,\@Delimiter } \def\@ItemRec #1,{% \RemLsp{\@ItemTemp}{#1}% \expandafter\RightAppendElement\@Co{\@ItemTemp}% \futurelet\@ItemRecTok\@ItemRecOne } \def\@ItemRecOne{% \RecursionMacroEnd{\ifx\@ItemRecTok\@Delimiter}% {\@ItemRecEnd}{\@ItemRec}% } \def\@ItemRecEnd\@Delimiter{} \catcode`\@ = 12 \NameDef{@InputD-conval.tip}{} \catcode`\@ = 11 \def\arabic #1{\number#1} \def\roman #1{% \romannumeral #1% } \def\Roman #1{% \ifcase #1\or I\or II\or III\or IV\or V\or VI\or VII\or VIII\or IX\or X\or XI\or XII\or XIII\or XIV\or XV\or XVI\or XVII\or XVIII\or XIX\or XX\or XXI\or XXII\or XXIII\or XXIV\or XV% \else \errmessage{\string\Roman: argument \number#1 out of range, larger than 25.}% \fi } \def\alph #1{% \ifcase #1% \or a\or b\or c\or d\or e\or f\or g\or h\or i% \else \@Morealph{#1}% \fi } \def\@Morealph #1{% \ifcase #1% \or \or \or \or \or \or \or \or \or \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 \errmessage{\string\@Morealph: argument too large.}% \fi } \def\Alph #1{% \ifcase #1% \or A\or B\or C\or D\or E\or F\or G\or H\or I% \else \@MoreAlph{#1}% \fi } \def\@MoreAlph #1{% \ifcase #1% \or \or \or \or \or \or \or \or \or \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 \errmessage{\string\@MoreAlph: argument too large.}% \fi } \catcode`\@ = 12 \NameDef{@InputD-printco.tip}{} \catcode`\@ = 11 \def\NewCounter #1#2#3#4{% \wlog{\string\NewCounter: allocating new counter "#1."}% \if\NameDefinedConditional{@C-#1}% \errmessage{\string\NewCounter: counter "#1" was allocated previously.}% \fi \expandafter\newcountOF\csname @C-#1\endcsname \ReassignCounter{#1}{#2}{#3}{#4}% \NameDef{@ResetC-#1}{}% } \def\ReassignCounter #1#2#3#4{% \if\NameDefinedConditional{@C-#1}% \else \errmessage{\string\ReassignCounter: counter "#1" not defined before.}% \fi \NameDef{@TheC-#1}{% \expandafter\expandafter\expandafter#2% \expandafter{\csname @C-#1\endcsname}% }% \NameDef{@TheArabicC-#1}{% \expandafter\the\csname @C-#1\endcsname }% \NameDef{@PriC-#1}{#3}% \NameDef{@RefC-#1}{#4}% } \def\TheCounter #1{% \NameUse{@TheC-#1}% } \def\TheArabicCounter #1{% \NameUse{@TheArabicC-#1}% } \def\PrintCounter #1{% \NameUse{@PriC-#1}% } \def\RefCounter #1{% \NameUse{@RefC-#1}% } \let\RefCounterTwo = \RefCounter \def\CounterToRegister #1#2{% #1 = \csname @C-#2\endcsname\relax } \def\AddCounterToResetList #1#2{% {% \def\@ResetCounter{\noexpand\@ResetCounter}% \expandafter\xdef\csname @ResetC-#2\endcsname{% \csname @ResetC-#2\endcsname\@ResetCounter{#1}% }% }% } \def\StepCounter #1{% \global\expandafter\advance\csname @C-#1\endcsname by 1 \NameUse{@ResetC-#1}% } \def\SetCounter #1#2{% \global\expandafter\csname @C-#1\endcsname = #2\relax } \def\AssignCounterToReg #1#2{% #2 = \expandafter\csname @C-#1\endcsname \relax } \def\@ResetCounter #1{% \global\csname @C-#1\endcsname = 0 } \catcode`\@ = 12 \NameDef{@InputD-counters.tip}{} \newcount\ReturnNumberOfLinesInFile \catcode`\@ = 11 \newcount\@CharCodeNumberOfLines { \catcode`\^^M = \active % \gdef\@SetUpLineCounting{% \gdef {\global\advance\ReturnNumberOfLinesInFile by 1 }% }% } \def\NumberOfLinesInFile #1{% \begingroup \global\ReturnNumberOfLinesInFile = 0 \DoLoop{\@CharCodeNumberOfLines}{0}{1}{127}% {\catcode\@CharCodeNumberOfLines = 9 } \@SetUpLineCounting \catcode`\^^M = \active \input #1 \endgroup \ifnum\ReturnNumberOfLinesInFile = 1 \if\CompareFilesConditional{#1}{nul}% \ReturnNumberOfLinesInFile = 0 \fi \fi } \catcode`\@ = 12 \NameDef{@InputD-countl.tip}{} \def\CenterRightLines #1#2{ \setbox 0 = \hbox{#1} \dimen0 = \hsize \advance\dimen0 by -\wd0 \divide\dimen0 by 2 \rightline{#1\hskip\dimen0} \rightline{#2\hskip\dimen0} } \NameDef{@InputD-crline.tip}{} \catcode`\@ = 11 \newcount\@CreateArrayCount \def\CCreateArray #1#2#3{% \NameEdef{#1-low}{\number#2}% \NameEdef{#1-high}{#3}% \ifnum #3<#2 \errmessage{\string\CCreateArray: low array boundary \number#2 is larger than upper array boundary \number#3}% \fi \DoLoop{\@CreateArrayCount}{#2}{1}{#3}{% \NameDef{#1-\the\@CreateArrayCount}{}% } } \newcount\@ConvertStringIntoArrayLength \newcount\@ConvertStringIntoArrayCount \def\ConvertStringIntoArray #1#2{% \def\@ConvertArrayName{#1}% \edef\@ConvertArrayString{#2}% \StringLength{\@ConvertArrayString}% \@ConvertStringIntoArrayLength = \StringLengthResult \advance\@ConvertStringIntoArrayLength by -1 \CCreateArray{\@ConvertArrayName}% {0}{\the\@ConvertStringIntoArrayLength}% \@ConvertStringIntoArrayCount = 0 \expandafter\@ConvertStringIntoArray \@ConvertArrayString\@ConvertEnd } \def\@ConvertStringIntoArray #1#2\@ConvertEnd{% \CLoadArrayElementEdef{\@ConvertArrayName}% {\the\@ConvertStringIntoArrayCount}{#1}% \if\EmptyStringConditional{#2}% \def\@ConvertStringIntoArrayNext{}% \else \advance\@ConvertStringIntoArrayCount by 1\relax \def\@ConvertStringIntoArrayNext{% \@ConvertStringIntoArray #2\@ConvertEnd% }% \fi \@ConvertStringIntoArrayNext } \def\CCheckIndex #1#2{% \expandafter\ifx\csname #1-low\endcsname\relax \errmessage{\string\CCheckIndex: no array #1.}% \fi \ifnum #2<\NameUse{#1-low}% \errmessage{Index #2 for array #1 too small.}% \fi \ifnum #2>\NameUse{#1-high}% \errmessage{Index #2 for array #1 too large.}% \fi } \def\CArrayAccess #1#2#3{% \CCheckIndex{#1}{#2}% \edef#3{\NameUse{#1-#2}}% } \newcount\@CArrayAccessIntervalCount \def\CArrayAccessInterval #1#2#3#4{% \CCheckIndex{#1}{#2}% \CCheckIndex{#1}{#3}% \ifnum #2>#3\relax \errmessage{\string\CArrayAccessInterval: low index (\PoundSignText 2) > high index (PoundSignText 3).}% \fi \def#4{}% \DoLoop {\@CArrayAccessIntervalCount}{#2}{1}{#3}{% \CArrayAccess{#1}{\the\@CArrayAccessIntervalCount}% {\@CArrayAccessInterval}% \edef#4{#4\@CArrayAccessInterval}% }% } \def\CLoadArrayElement #1#2#3{% \CCheckIndex{#1}{#2}% \NameDef{#1-#2}{#3}% } \def\CLoadArrayElementEdef #1#2#3{% \CCheckIndex{#1}{#2}% \NameEdef{#1-#2}{#3}% } \newcount\@CShowArrayCount \def\CShowArray #1{% \DoLoop {\@CShowArrayCount}% {\NameUse{#1-low}}% {1}% {\NameUse{#1-high}}% {\wlog{Index \the\@CShowArrayCount: \NameUse{#1-\the\@CShowArrayCount}}}% } \catcode`\@ = 12 \NameDef{@InputD-csar.tip}{} \newcount\BackslashCharCode \BackslashCharCode = `\\ \edef\mac #1{% {% \noexpand\tt \char\the\BackslashCharCode\space #1% }% } \NameDef{@InputD-cssprint.tip}{} \def\CSToString #1#2{% {% \escapechar = -1 \xdef#1{\string #2}% }% } \NameDef{@InputD-cstostr.tip}{} \catcode`\@ = 11 \newread\@CatIn \def\CSToStringCat #1#2{% {% \escapechar = -1 \OpenGenericOStream{cstostrc.tmp}% \immediate\write\GenericOStream{\string#2\%}% \CloseGenericOStream \openin\@CatIn = cstostrc.tmp \global\read\@CatIn to #1% \closein\@CatIn }% } \catcode`\@ = 12 \NameDef{@InputD-cstostrc.tip}{} \catcode`\@ = 11 \newif\if@ControlSequenceConditional \def\ControlSequenceConditional #1{% TT\fi {% \escapechar = -1 \xdef\@ControlSequenceConditionalOne{\string#1}% \escapechar = `:\relax \xdef\@ControlSequenceConditionalTwo{\string#1}% }% \ifx\@ControlSequenceConditionalOne \@ControlSequenceConditionalTwo \@ControlSequenceConditionalfalse \else \@ControlSequenceConditionaltrue \fi \if@ControlSequenceConditional } \catcode`\@ = 12 \NameDef{@InputD-ctestcs.tip}{} \catcode`\@ = 11 \long\def\DoLongFutureLet #1#2#3#4{% \def\@FutureLetDecide{% #1#2\@FutureLetToken \def\@FutureLetNext{#3}% \else \def\@FutureLetNext{#4}% \fi \@FutureLetNext }% \futurelet\@FutureLetToken\@FutureLetDecide } \def\DoFutureLet #1#2#3#4{\DoLongFutureLet{#1}{#2}{#3}{#4}} \catcode`\@ = 12 \NameDef{@InputD-futlet.tip}{} \catcode`\@ = 11 \def\DblArg #1{% \def\@DblArgTemp{#1}% \DoFutureLet{\ifx}{[}{\@DblArgTemp}{\@DblArgB}% } \def\@DblArgB #1{\@DblArgTemp[#1]{#1}} \catcode`\@ = 12 \NameDef{@InputD-dblarg.tip}{} \catcode`\@ = 11 \def\GobbleDoMore #1#2{% \def\@GobbleDoMore ##1#1{}% \expandafter#2\@GobbleDoMore } \catcode`\@ = 12 \NameDef{@InputD-gobblemo.tip}{} \catcode`\@ = 11 \def\DefaultArg #1#2#3{% \def\@DefaultArgMacro{#1}% \edef\@EmptyOtherArg{#2}% \edef\@DefaultArgDefault{#3}% \@DefaultArg #2\@DefaultArgEnd } \def\@DefaultArg{% \futurelet\@DefaultArgSymbol\@DefaultArgOne } \def\@DefaultArgOne{% \ifx\@DefaultArgSymbol\@DefaultArgEnd \expandafter\edef\@DefaultArgMacro{\@DefaultArgDefault}% \else \expandafter\edef\@DefaultArgMacro{\@EmptyOtherArg}% \fi \GobbleDoMore{\@DefaultArgEnd}{\relax}% } \catcode`\@ = 12 \NameDef{@InputD-defauarg.tip}{} \def\DicEntry #1{% \par \hangafter = 1 \hangindent = 5pt \noindent {\bf #1}% \mark{#1}% \hskip 1em plus .2em minus .2em \ignorespaces } \NameDef{@InputD-dicentry.tip}{} \catcode`\@ = 11 \newif\if@PrefixResult \newcount\@LengthPrefixString \newcount\@LengthMainString \def\PrefixConditional #1#2{% TT\fi \StringLength{#1}% \@LengthMainString = \StringLengthResult \StringLength{#2}% \@LengthPrefixString = \StringLengthResult \ifnum\@LengthMainString < \@LengthPrefixString \@PrefixResultfalse \else \@PrefixConditionalTwo{#1}{#2}% \fi \if@PrefixResult } \def\@PrefixConditionalTwo #1#2{% \edef\@PrefixBoth{#1#2}% \edef\@PrefixTemp{% \def\noexpand\@TestPrefix ####1#2####2\noexpand\@Del{% \noexpand\if\noexpand\EmptyStringConditional{####1}% }% }% \ShowX\@PrefixTemp \@PrefixTemp \ShowX{\@TestPrefix}% \expandafter\@TestPrefix\@PrefixBoth\@Del \@PrefixResulttrue \else \@PrefixResultfalse \fi } \catcode`\@ = 12 \NameDef{@InputD-isprefix.tip}{} \catcode`\@ = 11 \def\DropPrefix #1#2#3{% \if\PrefixConditional{#1}{#2}% \edef\@PrefixConditionalTemp{% \def\noexpand\@PrefixConditionalTempTwo #2####1% \noexpand\@Del{% \def\noexpand #3{####1}}% }% \@PrefixConditionalTemp \ShowX{\@PrefixConditionalTemp}% \expandafter\@PrefixConditionalTempTwo #1\@Del \else \wlog{\string\DropPrefix: "#2" is NOT a prefix of "#1"}% \edef#3{#1}% \fi } \catcode`\@ = 12 \NameDef{@InputD-droppre.tip}{} { \catcode`\p = 12 \catcode`\t = 12 \NameGdef{DropPoints}#1pt{\NameGdef{DropPointsResult}{#1}} } \NameDef{@InputD-droppt.tip}{} \def\DumpOneReg #1{% \wlog{Parameter "\string#1", value = \the#1}% } \def\DumpAllRegs{% \wlog{\string\DumpAllRegs: Counter parameters first.}% \DumpOneReg{\time}% \DumpOneReg{\day}% \DumpOneReg{\month}% \DumpOneReg{\year}% \DumpOneReg{\pretolerance}% \DumpOneReg{\tolerance}% \DumpOneReg{\doublehyphendemerits}% \DumpOneReg{\finalhyphendemerits}% \DumpOneReg{\adjdemerits}% \DumpOneReg{\linepenalty}% \DumpOneReg{\looseness}% \DumpOneReg{\linepenalty}% \DumpOneReg{\hyphenpenalty}% \DumpOneReg{\exhyphenpenalty}% \DumpOneReg{\binoppenalty}% \DumpOneReg{\relpenalty}% \DumpOneReg{\clubpenalty}% \DumpOneReg{\widowpenalty}% \DumpOneReg{\displaywidowpenalty}% \DumpOneReg{\brokenpenalty}% \DumpOneReg{\predisplaypenalty}% \DumpOneReg{\postdisplaypenalty}% \DumpOneReg{\interlinepenalty}% \DumpOneReg{\floatingpenalty}% \DumpOneReg{\outputpenalty}% \DumpOneReg{\pausing}% \DumpOneReg{\tracingonline}% \DumpOneReg{\tracinglostchars}% \DumpOneReg{\tracingmacros}% \DumpOneReg{\tracingstats}% \DumpOneReg{\tracingparagraphs}% \DumpOneReg{\tracingpages}% \DumpOneReg{\tracingoutput}% \DumpOneReg{\tracingcommands}% \DumpOneReg{\tracingrestores}% \DumpOneReg{\mag}% \DumpOneReg{\uchyph}% \DumpOneReg{\lefthyphenmin}% \DumpOneReg{\righthyphenmin}% \DumpOneReg{\defaultskewchar}% \DumpOneReg{\escapechar}% \DumpOneReg{\endlinechar}% \DumpOneReg{\newlinechar}% \DumpOneReg{\fam}% \DumpOneReg{\hbadness}% \DumpOneReg{\vbadness}% \DumpOneReg{\badness}% \DumpOneReg{\showboxdepth}% \DumpOneReg{\showboxbreadth}% \DumpOneReg{\deadcycles}% \DumpOneReg{\maxdeadcycles}% \DumpOneReg{\holdinginserts}% \DumpOneReg{\hangafter}% \DumpOneReg{\globaldefs}% \DumpOneReg{\delimiterfactor}% \DumpOneReg{\inputlineno}% \DumpOneReg{\language}% \wlog{\string\DumpAllRegs: Dimension parameters next.}% \DumpOneReg{\hfuzz}% \DumpOneReg{\vfuzz}% \DumpOneReg{\overfullrule}% \DumpOneReg{\lineskiplimit}% \DumpOneReg{\maxdepth}% \DumpOneReg{\splitmaxdepth}% \DumpOneReg{\boxmaxdepth}% \DumpOneReg{\delimitershortfall}% \DumpOneReg{\nulldelimiterspace}% \DumpOneReg{\scriptspace}% \DumpOneReg{\mathsurround}% \DumpOneReg{\predisplaysize}% \DumpOneReg{\displaywidth}% \DumpOneReg{\displayindent}% \DumpOneReg{\parindent}% \DumpOneReg{\hangindent}% \DumpOneReg{\hoffset}% \DumpOneReg{\voffset}% \wlog{\string\DumpAllRegs: Glue parameters last.}% \DumpOneReg{\baselineskip}% \DumpOneReg{\lineskip}% \DumpOneReg{\topskip}% \DumpOneReg{\splittopskip}% \DumpOneReg{\parskip}% \DumpOneReg{\leftskip}% \DumpOneReg{\rightskip}% \DumpOneReg{\emergencystretch}% \DumpOneReg{\abovedisplayskip}% \DumpOneReg{\abovedisplayshortskip}% \DumpOneReg{\belowdisplayskip}% \DumpOneReg{\belowdisplayshortskip}% \wlog{\string\DumpAllRegs: done.}% }% \NameDef{@InputD-dumppars.tip}{} \catcode`\@ = 11 \def\GenAeol #1{% \edef #1{% \bgroup \noexpand\MakeEolActive \noexpand\@GenAeolOne{% \csname\string #1-2\endcsname}% }% \NameDef{\string #1-2}##1% } { \MakeEolActive \gdef\@GenAeolOne #1#2 {% \egroup% #1{#2}% }% } \catcode`\@ = 12 \NameDef{@InputD-genaeol.tip}{} \catcode`\@ = 11 \newif\if@VerbFirstLineSuppress \def\OpenVerbWrFile #1#2#3{% \immediate\openout #3 = #1.#2 \wlog{\string\OpenVerbWrFile: opened "#1.#2" for literal writing.}% } \def\CloseVerbWrFile #1{% \immediate\closeout #1 \wlog{\string\CloseVerbWrFile: closed file for literal writing.}% } \def\BeginVerbWr #1#2{% \begingroup \def\@VerbWrStream{#1}% \CSToStringCat{\@EndVerbWrSt}{#2}% \wlog{\string\BeginVerbWr: begin}% \MkOthers \MakeEolActive \@VerbWrTabHandling \@VerbFirstLineSuppresstrue \expandafter\expandafter\expandafter \@BeginVerbWrY\expandafter{\@EndVerbWrSt}% } { \catcode `| = 0 \catcode`\\ =12 |gdef|@BeginVerbWrY #1{% |def|@BeginVerbWrX ##1\#1{% |@BeginVerbWr ##1% |@VerbWrDoneToken |@VerbWrDone } |@BeginVerbWrX } } \def\@VerbWrTabHandling{% \MakeTabActive \@VerbWrTabHandlingOne } {\MakeTabActive \gdef\@VerbWrTabHandlingOne{\def^^I{\@TabAsLiteral}}% } \def\@BeginVerbWr{% \DoFutureLet{\ifx}% {\@VerbWrDoneToken}% {\GobbleDoMore {\@VerbWrDoneToken}{\relax}}% {\@BeginVerbWrTwo}% } \GenAeol{\@BeginVerbWrTwo}{% \if@VerbFirstLineSuppress \@VerbFirstLineSuppressfalse \else \immediate\write\@VerbWrStream{#1}% \fi \@BeginVerbWr } \def\@VerbWrDone{% \endgroup \wlog{\string\@VerbWrDone: done}% } \catcode`\@ = 12 \NameDef{@InputD-verbwr.tip}{} \catcode`\@ = 11 \def\@DefEndNoteFileExt{eno} \newwrite\@EndNoteStream \newcount\@EndNoteCounter \def\StartEndNoteWriting #1#2#3#4{% \@EndNoteCounter = 0 \DefaultArg{\@EndNoteBaseName}{#1}{\jobname}% \DefaultArg{\@EndNoteFileExt}{#2}{\@DefEndNoteFileExt}% \edef\@EndNoteFileName{\@EndNoteBaseName.\@EndNoteFileExt}% \wlog{\string\StartEndNoteWriting: output will be written to file "\@EndNoteFileName".} \edef\@EndNoteBefore{\string#3}% \edef\@EndNoteAfter{\string#4}% \OpenVerbWrFile{\@EndNoteBaseName}{\@EndNoteFileExt}% {\@EndNoteStream}% } \def\BeginEndNote{% \advance\@EndNoteCounter by 1 \ifnum\@EndNoteCounter > 1 \immediate\write\@EndNoteStream{\@EndNoteAfter}% \fi \immediate\write\@EndNoteStream{\@EndNoteBefore}% \BeginVerbWr{\@EndNoteStream}{\EndEndNote} } \def\EndEndNoteWriting{% \immediate\write\@EndNoteStream{\@EndNoteAfter}% \CloseVerbWrFile{\@EndNoteStream}% } \def\ReadInEndNotes{% \input \@EndNoteFileName } \catcode`\@ = 12 \NameDef{@InputD-endn-mac.tip}{} \catcode`\@ = 11 \newdimen \Delta@XY \newskip\@ParListBeforeAfter \newskip\@ParListBetweenLabels \newskip\@ParListAfterLabel \newcount\@LabeledParNesting \@LabeledParNesting = 0 \newcount\@LabelCounter \def\BeginAList #1#2#3#4#5#6#7{% \par \bgroup \advance\leftskip by #1 \advance\rightskip by #2 \advance \@LabeledParNesting by 1 \@LabelCounter = 0 \Delta@XY = #3 \ifdim\Delta@XY < 0pt \errmessage{\string\BeginAList: negative Delta{xy}, made positive.}% \fi \@ParListBeforeAfter = #4 \@ParListBetweenLabels = #5 \@ParListAfterLabel = #6 \SetParIndent{#7} } \def\EndAList{% \par \vskip\@ParListBeforeAfter \egroup } \def\@GenLabel #1{% \par \advance\@LabelCounter by 1 \ifnum\@LabelCounter = 1 \parskip = \@ParListBeforeAfter \else \parskip = \@ParListBetweenLabels \fi \noindent \hbox to 0pt{#1}% \parskip = \@ParListAfterLabel \ignorespaces } \def\ItemLL #1{% \@GenLabel{% \hskip -\Delta@XY #1% \hfil }% } \def\ItemLR #1{% \@GenLabel{% \hss #1% \hskip\Delta@XY }% } \def\ItemRL #1{% \@GenLabel{% \hskip\Delta@XY #1% \hss }% } \def\ItemRR #1{% \@GenLabel{% \hfil #1% \hskip -\Delta@XY }% } \catcode`\@ = 12 \NameDef{@InputD-parv-1.tip}{} \catcode`\@ = 11 \newcount\@EnumerateListDepth \@EnumerateListDepth = 0 \NewCounter{Enumerate1}{\arabic}% {\TheCounter{Enumerate1}.}{\TheCounter{Enumerate1}} \NewCounter{Enumerate2}{\alph}% {(\TheCounter{Enumerate2})}% {\TheCounter{Enumerate1}.\TheCounter{Enumerate2}} \NewCounter{Enumerate3}{\roman}% {\TheCounter{Enumerate3}.}% {\RefCounter{Enumerate2}.\TheCounter{Enumerate3}} \NewCounter{Enumerate4}{\Alph}% {\TheCounter{Enumerate4}.}% {\RefCounter{Enumerate3}.\TheCounter{Enumerate4}} \def\BeginEnumerate{% \begingroup \global\advance\@EnumerateListDepth by 1 \ifcase\@EnumerateListDepth \errmessage{\string\BeginEnumerate: no level zero.}% \or \SetCounter{Enumerate1}{0}% \@BeginEnumerateLevelOne \def\Label ##1{\@Label{##1}{\RefCounter{Enumerate1}}{1}}% \def\Item{% \StepCounter{Enumerate1}% \ItemLR{\PrintCounter{Enumerate1}}% }% \or \SetCounter{Enumerate2}{0}% \@BeginEnumerateLevelTwo \def\Label ##1{\@Label{##1}{\RefCounter{Enumerate2}}{1}}% \def\Item{% \StepCounter{Enumerate2}% \ItemLR{\PrintCounter{Enumerate2}}% }% \or \SetCounter{Enumerate3}{0}% \@BeginEnumerateLevelThree \def\Label ##1{\@Label{##1}{\RefCounter{Enumerate3}}{1}}% \def\Item{% \StepCounter{Enumerate3}% \ItemLR{\PrintCounter{Enumerate3}}% }% \or \SetCounter{Enumerate4}{0}% \@BeginEnumerateLevelFour \def\Label ##1{\@Label{##1}{\RefCounter{Enumerate4}}{1}}% \def\Item{% \StepCounter{Enumerate4}% \ItemLR{\PrintCounter{Enumerate4}}% }% \else \errmessage{\string\BeginEnumerate: maximum nesting level of 4 exceeded.}% \fi } \def\EndEnumerate{% \EndAList \endgroup \global\advance\@EnumerateListDepth by -1 } \catcode`\@ = 12 \NameDef{@InputD-enumlist.tip}{} \def\ErrMessage #1{% \errmessage{#1}% \end } \NameDef{@InputD-errmess.tip}{} \def\PrintEven #1{% \ifodd #1\relax \else Number #1 is even. \fi } \NameDef{@InputD-evenprin.tip}{} \everypar = {% \EvalEveryPars \ClearEveryPars } \def\EvalEveryParsCE{% \EveryParC \EveryParD \EveryParE } \def\EvalEveryPars{% \EveryParA \EveryParB \EvalEveryParsCE \EveryParZ } \def\ClearEveryPars{% \gdef\EveryParA{}% \gdef\EveryParB{}% \gdef\EveryParC{}% \gdef\EveryParD{}% \gdef\EveryParE{}% } \def\ClearEveryParsAll{% \ClearEveryPars \gdef\EveryParZ{}% } \ClearEveryParsAll \NameDef{@InputD-everypar.tip}{} \def\FigureBox #1#2{% \BoxingA{% \EmptyBox{#1}{0pt}{#2}% }% } \NameDef{@InputD-figbox.tip}{} \def\OverallSize #1#2{% #1 = \ht#2\relax \advance#1 by \dp#2\relax } \NameDef{@InputD-sumhd.tip}{} \def\LogPageTG #1{% \wlog{\string\LogPageTG [#1]:}% \wlog{\string\pagetotal: \the\pagetotal, \string\pagegoal: \the\pagegoal}% } \NameDef{@InputD-lpagetg.tip}{} \newdimen\FreePageSpace \def\ComputeFreeSpaceOnPage{% \par \LogPageTG{\string\ComputeFreeSpaceOnPage}% \ifdim\pagetotal = 0pt \FreePageSpace = \vsize \else \FreePageSpace = \pagegoal \advance\FreePageSpace by -\pagetotal \fi } \def\FreeSpaceConditional{% 0pt = 0pt \fi \ComputeFreeSpaceOnPage \ifdim\FreePageSpace } \NameDef{@InputD-freespac.tip}{} \def\FigureInPar #1#2#3#4#5{% \par \message{\string\FigureInPar: start}% {% \setbox 0 = \vbox{#1} \OverallSize{\dimen0}{0}% \advance\dimen0 by #2 \advance\dimen0 by #3 \advance\dimen0 by #4 \advance\dimen0 by #4 \advance\dimen0 by \parskip \message{\string\FigureInPar: available space: \the\FreePageSpace}% \setbox 0 = \HboxR{\EmptyBox{#2}{0pt}{\hsize}}% \ifdim\FreeSpaceConditional < \dimen0 \message{\string\FigureInPar: insufficient space: make it a \string\topinsert.}% #1\unskip \space #5% \par \topinsert \box0 \endinsert \else \message{\string\FigureInPar: Sufficient space: put it here.}% #1\unskip \space \vadjust{% \vskip #4 \box0 \vskip #4 }% #5\par \fi } } \NameDef{@InputD-figinpar.tip}{} \catcode`\@ = 11 \def\FirstLineSpecial #1{% \par \begingroup #1 \def\@FLDTemp{}% \dimen0 = \parindent \setbox0 = \hbox{ }% \advance\dimen0 by -\wd0 \@FLDOne } \def\@FLDOne #1 {% \wlog{\string\@FLDOne: called with "#1".}% \xdef\@FLDTempa{#1\ }% \@FLDTwo } \def\@FLDTwo{% \wlog{\string\@FLDTwo: called}% \setbox0 = \hbox{\@FLDTempa}% \advance\dimen0 by \wd0 \ifdim\dimen0 < \hsize \edef\@FLDTemp{\@FLDTemp\@FLDTempa}% \let\@FLDNext = \@FLDOne \else \leavevmode \@FLDTemp \unskip \break \aftergroup\@FLDTempa \let\@FLDNext = \endgroup \fi \@FLDNext } \catcode`\@ = 12 \NameDef{@InputD-firstldi.tip}{} \def\ReportCharSize #1#2{% {% \count0 = #2\relax \setbox 0 = \hbox{#1\char\count0}% \wlog{\string\ReportCharSize: Font \string#1, character code \the\count0}% \wlog{ht / dp / wd: \the\ht0 \space / \the\dp0 \space / \the\wd0}% }% } \NameDef{@InputD-fo-char.tip}{} \def\CharactersPerPica #1{% \setbox0 = \hbox{% #1\relax This paragraph has 423 characters. We know that because we counted it. It is very simple to count, because the Emacs editor we are using has a function ``advance by one character.'' And with the prefix command (that's Emacs terminology) you can execute ``advance by one character'' 423~times. Now, let's hope that this text is representative of ordinary text so that our average number of characters per pica is correct. }% {% \count1 = \wd0 \divide\count1 by 100 \count0 = 423 \multiply\count0 by 65536 \multiply\count0 by 12 \divide\count0 by \count1 \count2 = \count0 \divide\count2 by 100 \IModN{\count0}{100}{\count3}% \the\count2.\LeadingZ{\count3}% }% } \NameDef{@InputD-font-cpp.tip}{} \def\FormLine #1#2#3{% {% \setbox0 = \hbox{#2}% \dimen0 = #1% \advance\dimen0 by -\wd0 \hbox{% \box0 \hbox to 0pt{% \vrule width \dimen0 height 0.4pt depth 0pt \hss }% \raise 3pt \hbox to \dimen0 {\hfil #3\hfil}% }% }% } \NameDef{@InputD-formline.tip}{} \catcode`\@ = 11 \def\@OctPrintFontTable#1{% \hbox{% \rm\'{}% \kern-.2em \it #1\/% \kern.05em }% } \def\@HexPrintFontTable#1{% \hbox{\rm\H{}\tt#1}% } \def\@OddLineFontTable#1{% \cr \noalign{\nointerlineskip} \multispan{19}\hrulefill& \setbox0 = \hbox{% \lower 2.3pt\hbox{% \@HexPrintFontTable{#1x}% }% }% \smash{\box0}% \cr \noalign{\nointerlineskip} } \def\@EvenLineFontTable{\cr\noalign{\hrule}} \def\@FontTableStrut{\lower4.5pt\vbox to 14pt{}} \def\BeginFontTable #1{% $$ \postdisplaypenalty = 0 \global\count@=0 #1 \halign to\hsize\bgroup \@FontTableStrut##\relax \tabskip = 0pt plus 10pt& &\hfil##\hfil&\vrule##% \cr \lower6.5pt\null &&& \@OctPrintFontTable0&& \@OctPrintFontTable1&& \@OctPrintFontTable2&& \@OctPrintFontTable3&& \@OctPrintFontTable4&& \@OctPrintFontTable5&& \@OctPrintFontTable6&& \@OctPrintFontTable7& \@EvenLineFontTable } \def\EndFontTable{% \raise 11.5pt\null &&& \@HexPrintFontTable 8&& \@HexPrintFontTable 9&& \@HexPrintFontTable A&& \@HexPrintFontTable B&& \@HexPrintFontTable C&& \@HexPrintFontTable D&& \@HexPrintFontTable E&& \@HexPrintFontTable F& \cr \egroup $$% } \def\:{% \setbox0 = \hbox{% \char\count@ }% \ifdim\ht0 > 7.5pt \@RepositionFontTable \else \ifdim\dp0 > 2.5pt \@RepositionFontTable \fi \fi \box0 \global\advance\count@ by 1 } \def\@RepositionFontTable{% \setbox0 = \hbox{% $ \vcenter{% \kern 2pt \box0 \kern 2pt } $% }% } \def\NormalFontTable{% &\@OctPrintFontTable{00x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable0 &\@OctPrintFontTable{01x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{02x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable1 &\@OctPrintFontTable{03x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{04x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable2 &\@OctPrintFontTable{05x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{06x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable3 &\@OctPrintFontTable{07x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{10x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable4 &\@OctPrintFontTable{11x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{12x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable5 &\@OctPrintFontTable{13x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{14x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable6 &\@OctPrintFontTable{15x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{16x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable7 &\@OctPrintFontTable{17x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable } \def\MoreFontTable{% &\@OctPrintFontTable{20x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable8 &\@OctPrintFontTable{21x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{22x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable9 &\@OctPrintFontTable{23x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{24x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable A &\@OctPrintFontTable{25x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{26x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable B &\@OctPrintFontTable{27x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{30x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable C &\@OctPrintFontTable{31x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{32x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable D &\@OctPrintFontTable{33x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{34x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable E &\@OctPrintFontTable{35x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable &\@OctPrintFontTable{36x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&&\@OddLineFontTable F &\@OctPrintFontTable{37x}&&\:&&\:&&\:&&\:&&\:&&\:&& \:&&\:&\@EvenLineFontTable } \catcode`\@ = 12 \NameDef{@InputD-fotable.tip}{} \catcode`\@ = 11 \def\ForEachToken #1#2{% \def\@ForEachTokenMacro{#2}% \expandafter\@ForEachToken\the#1\@ForEachTokenDel } \def\@ForEachToken #1{% \if\StringsEqualConditional{\string\@ForEachTokenDel}{\string#1}% \let\@ForEachTokenNext = \relax % Done. \else \@ForEachTokenMacro{#1}% % Call macro and continue. \let\@ForEachTokenNext = \@ForEachToken \fi \@ForEachTokenNext } \catcode`\@ = 12 \NameDef{@InputD-fotok.tip}{} \def\frac #1#2{% {#1 \over #2}% } \NameDef{@InputD-frac.tip}{} \newdimen\CurrentFontSize \def\DefineFontSizeGroup #1#2{% \wlog{\string\DefineFontSizeGroup: defining group "#1" (#2 pt)}% \NameDef{FontSize#1}{% \def\rm{\fam = 0 \NameUse{#1rm}}% \def\bf{\fam = \bffam \NameUse{#1bf}}% \def\it{\fam = \itfam \NameUse{#1it}}% \def\tt{\fam = \ttfam \NameUse{#1tt}}% \def\sc{\NameUse{#1sc}}% \def\sl{\fam = \slfam \NameUse{#1sl}}% \CurrentFontSize = #2pt \baselineskip = \LineSpaceMultFactor\CurrentFontSize \rm } } \def\LineSpaceMultFactor{1.2} \NameDef{@InputD-fsized.tip}{} \catcode`\@ = 11 \def\FutureLetNoSpace #1#2{% \def\@FutureLetTokenA{#1}% \def\@FutureLetTokenB{#2}% \@FutureLetOne } \def\@FutureLetOne{% \DoFutureLet{\ifx}{ }% {\@FutureLetThree}{\@FutureLetOk}% } \edef\@FutureLetNoSpaceTemp{% \def\noexpand\@FutureLetThree\space{\noexpand\@FutureLetOne}% } \@FutureLetNoSpaceTemp \def\@FutureLetOk{% \expandafter\futurelet\@FutureLetTokenA\@FutureLetTokenB } \long\def\DoLongFutureLetNoSpace #1#2#3#4{% \def\@FutureLetDecideNoSpace{% #1#2\@FutureLetTokenNoSpace \def\@FutureLetNextNoSpace{#3}% \else \def\@FutureLetNextNoSpace{#4}% \fi \@FutureLetNextNoSpace }% \FutureLetNoSpace{\@FutureLetTokenNoSpace}% {\@FutureLetDecideNoSpace}% } \def\DoFutureLetNoSpace #1#2#3#4{% \DoLongFutureLetNoSpace{#1}{#2}{#3}{#4}% } \catcode`\@ = 12 \NameDef{@InputD-funospac.tip}{} \def\ParLookAhead #1#2{% \DoLongFutureLetNoSpace{\ifx}{\par}% {#1}{#2}% } \NameDef{@InputD-futpar.tip}{} \catcode`\@ = 11 \newskip\@MaxVskipGlue \def\MaxVskip #1{% \par \@MaxVskipGlue = #1\relax \ifdim\lastskip < \@MaxVskipGlue \ifdim\lastskip = 0pt \else \vskip -\lastskip \fi \vskip\@MaxVskipGlue \fi } \catcode`\@ = 12 \NameDef{@InputD-vsmax.tip}{} \newdimen\NormalParIndent \def\SetParIndent #1{% \NormalParIndent = #1% \parindent = #1% } \def\SuppressNextParIndent{% \global\parindent = 0pt \gdef\EveryParA{% \global\parindent = \NormalParIndent % \hskip-\parindent }% } \def\CancelSuppressNextParIndent{% \global\parindent = \NormalParIndent \gdef\EveryParA{}% } \NameDef{@InputD-parin.tip}{} \newtoks\EveryHeading \EveryHeading = {} \catcode`\@ = 11 \newcount\@GenericHeadingCount \newcount\@GenericHeadingIndent \def\LineBreakHeading{% \errmessage{% \string\LineBreakHeading/\string\LineBreakToc: can only be used inside a heading.}% } \let\LineBreakToc = \LineBreakHeading \def\IgnoreInRunnningHead #1{% #1% } \def\GenericHeading #1#2#3#4#5{% \par \the\EveryHeading \@GenericHeadingCount = #1 \@GenericHeadingIndent = #5 \MaxVskip{#2}% \ifdim\leftskip = 0pt \else \message{\string\GenericHeading: \noexpand\leftskip is non-zero, forgotten to terminate a list?}% \fi \begingroup \interlinepenalty = 10000 \parindent = 0pt \parskip = 0pt \ifnum #4 = 1 \hyphenpenalty = 10000 \fi \ifnum #3 = 1 \rightskip = 0pt plus 50pt \fi \@GenericHeading } \def\@GenericHeading #1#2#3#4#5#6#7{% #3% \def\LineBreakHeading{\hfil\break}% \def\LineBreakToc{ }% \ifdim #4 > 0pt \ifnum\@GenericHeadingIndent = 0 \hangindent = #4 \hangafter = 1 \leavevmode \hbox to #4{#5\hfil}% \else \leavevmode \hbox to #4{#5\hfil}% \fi \else \setbox0 = \hbox{#5\hskip -#4} \ifnum\@GenericHeadingIndent = 0 \hangindent = \wd0 \hangafter = 1 \leavevmode \box0 \else \leavevmode \box0 \fi \fi #6% \if\NameDefinedConditional{WriteToAuxSpecial}% \def\LineBreakToc{\hfil\break}% \def\LineBreakHeading{ }% \WriteToAuxSpecial{toc}{\the\@GenericHeadingCount}% {#5}{#7}{\PrintCounter{PageNo}}% \fi \par \endgroup \nobreak \vskip #1 \ifnum #2 = 0 \SuppressNextParIndent \fi } \catcode`\@ = 12 \NameDef{@InputD-genhead.tip}{} \newcount\ResultNumberOfLines \def\GetNumberOfLines #1#2{% {% \setbox 0 = \vbox{% \hsize = #2 #1 \par \global\ResultNumberOfLines = \prevgraf }% }% } \NameDef{@InputD-getnuml.tip}{} \def\GobbleOne #1{} \def\GobbleTwo #1#2{} \def\GobbleThree#1#2#3{} \def\GobbleFour #1#2#3#4{} \def\GobbleFive #1#2#3#4#5{} \def\GobbleSix #1#2#3#4#5#6{} \def\GobbleSeven#1#2#3#4#5#6#7{} \def\GobbleEight#1#2#3#4#5#6#7#8{} \def\GobbleNine #1#2#3#4#5#6#7#8#9{} \NameDef{@InputD-gobble.tip}{} \catcode`\@ = 11 \newdimen\@ScaleLength \def\SetScale #1{% \@ScaleLength = #1 } \SetScale{1mm} \newdimen\@LineThickness \def\SetLineThickness #1{% \@LineThickness = #1 } \SetLineThickness{0.3mm} \newbox\@GraphDataBox \def\SetGraphDataBox #1{% \dimen0 = #1% \setbox\@GraphDataBox = \hbox{% \hskip -0.5\dimen0 \vrule height 0.5\dimen0 depth 0.5\dimen0 width 1.0\dimen0 }% \ZeroBox{\@GraphDataBox}% } \SetGraphDataBox{2mm} \def\DrawDataBox (#1,#2){% {% \setbox0 = \hbox{% \hskip #1\@ScaleLength \raise #2\@ScaleLength\copy\@GraphDataBox }% \ZeroBoxOut{0}% }% } \def\DrawHLine (#1,#2)#3{% {% \setbox0 = \hbox{% \hskip #1\@ScaleLength \raise #2\@ScaleLength \hbox{% \vrule height 0.5\@LineThickness depth 0.5\@LineThickness width #3\@ScaleLength }% }% \ZeroBoxOut{0}% }% } \def\DrawVLine (#1,#2)#3{% {% \setbox0 = \hbox{% \hskip #1\@ScaleLength \hskip -0.5\@LineThickness \raise #2\@ScaleLength \hbox{% \vrule height #3\@ScaleLength depth 0pt width \@LineThickness }% }% \ZeroBoxOut{0}% }% } \catcode`\@ = 12 \NameDef{@InputD-graphmac.tip}{} \def\Hex #1{% {% \count0 = #1% \count1 = #1% \divide\count0 by 16 \count2 = \count0 \multiply \count2 by -16 \advance \count1 by \count2 \ifnum \count0 > 0 \Hex{\count0}% \fi \HexDigit{\count1}% }% } \def\HexDigit #1{% {% \count0 = #1\relax \ifnum \count0 < 10 \number\count0 % or \the\count0 \else \advance\count0 by -10 \advance\count0 by `A \char\count0 \fi }% } \NameDef{@InputD-hex.tip}{} \newif\ifEvenConditionalResult \def\EvenConditional #1{% TT\fi \ifodd #1\relax \EvenConditionalResultfalse \else \EvenConditionalResulttrue \fi \ifEvenConditionalResult } \NameDef{@InputD-ifeven.tip}{} \catcode`\@ = 11 \newif\if@Def \def\XDefinedConditional #1{% TT\fi \ifx #1\@AlwaysUndefinedToken \@Deffalse \else \@Deftrue \fi \if@Def } \catcode`\@ = 12 \NameDef{@InputD-ifx-def.tip}{} \catcode`\@ = 11 \def\IfXConditional #1#2{% TT\fi \def\@IfXConditionalOne{#1}% \def\@IfXConditionalTwo{#2}% \ifx\@IfXConditionalOne\@IfXConditionalTwo } \catcode`\@ = 12 \NameDef{@InputD-ifx-mac.tip}{} \def\InputAt #1{% \catcode`\@ = 11 \input #1 \catcode`\@ = 12 } \NameDef{@InputD-input-at.tip}{} \catcode`\@ = 11 \def\InputC #1{% \if\FileExistsConditional{#1}% \input #1 \else \message{\string\InputC: there is no file "#1".}% \fi } \def\InputCWithAt #1{% \catcode`@ = 11 \InputC{#1}% \catcode`@ = 12 } \catcode`\@ = 12 \NameDef{@InputD-inputc.tip}{} \catcode`\@ = 11 \def\ReverseString #1#2{% \def\@ReverseStringName{#1}% \def\@ReversedString{}% \edef\@ReverseTemp{#2}% \ShowX\@ReverseTemp \expandafter\@ReverseString\@ReverseTemp\@Del } \def\@ReverseString #1{% \ifx #1\@Del \expandafter\edef\@ReverseStringName{\@ReversedString}% \let\@ReverseStringNext = \relax \else \edef\@ReversedString{#1\@ReversedString}% \let\@ReverseStringNext = \@ReverseString \def\@ReverseStringNext{\@ReverseString}% \fi \@ReverseStringNext } \catcode`\@ = 12 \NameDef{@InputD-reverses.tip}{} \catcode`\@ = 11 \def\SuffixConditional #1#2{% TT\fi \ReverseString{\@MainSuffixString}{#1}% \ReverseString{\@SuffixSuffixString}{#2}% \if\PrefixConditional{\@MainSuffixString}{\@SuffixSuffixString}% } \catcode`\@ = 12 \NameDef{@InputD-issuffix.tip}{} \catcode`\@ = 11 \newcount\@ItemListDepth \@ItemListDepth = 0 \def\BeginItemize{% \begingroup \global\advance\@ItemListDepth by 1 \ifcase\@ItemListDepth\or \@BeginItemizeLevelOne \def\Item{\ItemLL{$\bullet$}}% \or \@BeginItemizeLevelTwo \def\Item{\ItemLL{--}}% \or \@BeginItemizeLevelThree \def\Item{\ItemLL{*}}% \or \@BeginItemizeLevelFour \def\Item{\ItemLL{+}}% \else \errmessage{\string\BeginItemize: maximum nesting of 4 exceeded.}% \fi } \def\EndItemize{% \EndAList \endgroup \global\advance\@ItemListDepth by -1 } \catcode`\@ = 12 \NameDef{@InputD-itemizel.tip}{} \def\hang{% \hangindent = \parindent } \def\item{% \par \hang \textindent } \def\itemitem{% \par \indent \hangindent = 2\parindent \textindent } \def\textindent #1{% \indent \llap{#1\enspace}% \ignorespaces } \def\itemitemitem{% \par \indent \indent \hangindent = 3\parindent \textindent } \NameDef{@InputD-itemplan.tip}{} \catcode`\@ = 11 \def\WordsToTeXList #1#2\EndWordsToTeXList{% \def\@WordsToTeXListName{#1}% \expandafter\def\@WordsToTeXListName{}% \@WordsToTeXListNextName #2 \EndWordsToTeXList } \def\@WordsToTeXListNextName #1 {% \if\EmptyStringConditional{#1}% \else \expandafter\RightAppendElement\@WordsToTeXListName{#1}% \fi \DoFutureLet{\ifx}{\EndWordsToTeXList}% {\@WordsToTeXListEnd}{\@WordsToTeXListNextName}% } \def\@WordsToTeXListEnd\EndWordsToTeXList{} \catcode`\@ = 12 \NameDef{@InputD-wtolist.tip}{} \catcode`\@ = 11 \newdimen\@MaximumCurrentLineWidth \newdimen\@LineWidthLastLine \newdimen\@LineWidthMinDiff \newbox\@IPCurrentLineBox \newbox\@IPCurrentLineBoxTry \def\InvertedPyramid #1#2#3{% \WordsToTeXList{\IVList}#3\EndWordsToTeXList \def\LineLengthList{#1}% \@LineWidthLastLine = 0pt \@LineWidthMinDiff = #2 \CarOfList{\IVList}{\@IVListTemp} \DropFirstElementOfList{\IVList} \setbox\@IPCurrentLineBox = \hbox{\@IVListTemp}% \CarOfList{\LineLengthList}{\@IVListTemp}% \@MaximumCurrentLineWidth = \@IVListTemp \DropFirstElementOfList{\LineLengthList}% \ForEveryListElement{\IVList}{\@IVListTypeset}% \ifvoid\@IPCurrentLineBox \errmessage{\string\InvertedPyramid: empty \string\@IPCurrentLineBox}% \else \centerline{\box\@IPCurrentLineBox}% \fi } \def\@IVListTypeset #1{% \setbox\@IPCurrentLineBoxTry = \hbox{\copy\@IPCurrentLineBox \space#1}% \ifdim\wd\@IPCurrentLineBoxTry < \@MaximumCurrentLineWidth \setbox\@IPCurrentLineBox = \box\@IPCurrentLineBoxTry \else \@LineWidthLastLine = \wd\@IPCurrentLineBox \centerline{\box\@IPCurrentLineBox}% \setbox\@IPCurrentLineBox = \hbox{#1}% \CarOfList{\LineLengthList}{\@IVListTemp}% \@MaximumCurrentLineWidth = \@IVListTemp \DropFirstElementOfList{\LineLengthList}% \dimen0 = \@LineWidthLastLine \advance\dimen0 by -\@MaximumCurrentLineWidth \ifdim\dimen0 < \@LineWidthMinDiff \@MaximumCurrentLineWidth = \@LineWidthLastLine \advance\@MaximumCurrentLineWidth by -\@LineWidthMinDiff \fi \fi } \catcode`\@ = 12 \NameDef{@InputD-ivpyr.tip}{} \catcode`\@ = 11 \newcount\@ValueOfDecimalPosition \newcount\@ValueOfDecimalPositionLoopCount \def\ValueOfDecimalPosition #1#2#3{% \CheckRange{#2}{0}{9}{\string\ValueOfDecimalPosition: \#2 must be in the range 0 .. 9}% \AbsoluteValue{#1}{\@ValueOfDecimalPosition}% \DoLoop{\@ValueOfDecimalPositionLoopCount}{1}{1}{#2}% {\global\divide\@ValueOfDecimalPosition by 10}% \IModN{\@ValueOfDecimalPosition}{10}{#3}% } \catcode`\@ = 12 \NameDef{@InputD-valdecpo.tip}{} \catcode`\@ = 11 \newcount\@LargestDecimalPlaceCount \def\LargestDecimalPlace #1#2{% \AbsoluteValue{#1}{\@LargestDecimalPlaceCount}% \wlog{We make progress}% #2 = 0 \@LargestDecimalPlaceMore{#2}% } \def\@LargestDecimalPlaceMore #1{% \wlog{One round: \the#1}% \ifnum\@LargestDecimalPlaceCount < 10 \def\@LargestDecimalPlaceMoreNext{}% \else \advance #1 by 1 \divide\@LargestDecimalPlaceCount by 10 \def\@LargestDecimalPlaceMoreNext{% \@LargestDecimalPlaceMore{#1}% }% \fi \@LargestDecimalPlaceMoreNext } \catcode`\@ = 12 \NameDef{@InputD-largdp.tip}{} \catcode`\@ = 11 \def\\{% \hfil\break \hbox{}% \DoFutureLet{\ifx}{[}{\@HfilBreakHskip}{\ignorespaces}% } \def\@HfilBreakHskip [#1]{% \hskip #1% \ignorespaces } \catcode`\@ = 12 \NameDef{@InputD-lbpar.tip}{} \catcode`\@ = 11 \def\LoadCountZeroToNine #1#2#3#4#5#6#7#8#9{% \count0 = #1\relax \count1 = #2\relax \count2 = #3\relax \count3 = #4\relax \count4 = #5\relax \count5 = #6\relax \count6 = #7\relax \count7 = #8\relax \count8 = #9\relax \@LoadCountNine } \def\@LoadCountNine #1{% \count9 = #1\relax } \catcode`\@ = 12 \NameDef{@InputD-lc0to9.tip}{} \def\RightLeaderLine #1{% \line{\leaders\hrule\hss #1}% } \def\LeftLeaderLine #1{% \line{#1\leaders\hrule\hss}% } \def\CenterLeaderLine #1{% \line{\leaders\hrule\hss #1\leaders\hrule\hss}% } \NameDef{@InputD-leadline.tip}{} \def\LeftDisplay #1$${% \leftline{% \hskip 20pt $ \displaystyle {#1} $% }% $$ } \NameDef{@InputD-leftdm.tip}{} \def\LoadFontOnDemand #1#2{% \def #1{% \global\font#1 = #2\relax #1% \message{\string\LoadFontOnDemand: font \string#1 (#2) loaded on demand.}% }% } \NameDef{@InputD-lfondem.tip}{} \catcode`\@ = 11 \newif\if@Defined \def\DefinedConditional #1{% TT\fi \ifx\@UndefinedToken #1% \@Definedfalse \else \@Definedtrue \fi \if@Defined } \catcode`\@ = 12 \NameDef{@InputD-testdef.tip}{} \def\FormatIsLaTeXConditional{% TT\fi \if\DefinedConditional{\documentstyle}% } \NameDef{@InputD-loadedla.tip}{} \def\BeginMath{% \ifmath \ifinner \errmessage{\string\BeginMath: already in math mode, \string\BeginMath ignored.}% \else \errmessage{\string\BeginMath: in display math mode, terminated and math mode started.}% $$ $ \fi \else $\relax \fi } \def\EndMath{% \ifmath \ifinner $% \else \errmessage{\string\EndMath: you are in display math mode! Should have used \string\EndDisplayMath!}% $$ \fi \else \errmessage{\string\EndMath: already in math mode, \string\EndMath ignored.}% \fi } \def\BeginDisplayMath{% \ifmath \ifinner \errmessage{\string\BeginDisplayMath: in inline math mode, terminate it, start display math.}% $ $$ \else \errmessage{\string\BeginDisplayMath: already in math mode, \string\BeginDisplayMath ignored.}% \fi \else $$ \fi } \def\EndDisplayMath{% \ifmath \ifinner \errmessage{\string\EndDisplayMath: inline math mode in effect, did you intend to write \string\EndMath?}% $% \else $$ \fi \else \errmessage{\string\EndDisplayMath: not in math mode, \string\EndDisplayMath ignored.}% \fi } \NameDef{@InputD-mathenv.tip}{} \def\MaxDimen #1#2#3#4{% \ifdim #2<#3\relax #4#1 = #3\relax \else #4#1 = #2\relax \fi } \def\MinDimen #1#2#3#4{% \ifdim #2<#3\relax #4#1 = #2\relax \else #4#1 = #3\relax \fi } \NameDef{@InputD-maxmindi.tip}{} \def\ModuloOneAdvanceNumCond #1#2{% 0=0\fi \global\advance #1 by 1 \ifnum #1 = #2\relax \global #1 = 0 \fi \ifnum #1% } \NameDef{@InputD-modonead.tip}{} \def\MultiRowDel #1#2{% {% \mathsurround = 0pt \setbox 0 = \hbox{% $% \vcenter{% \hbox{% $ \left#1% \vrule height #2 depth #2 width 0pt \right. $% }% }% $% }% \ht0 = 0pt \dp0 = 0pt \box 0 }% } \def\MultiRowDel #1#2{% {% \mathsurround = 0pt \setbox 0 = \hbox{% $ \left#1% \vrule height #2 depth #2 width 0pt \right. $% }% \ht0 = 0pt \dp0 = 0pt \box 0 }% } \NameDef{@InputD-mrdel.tip}{} \catcode`\@ = 11 \newbox\@NBox \def\NaturalHeight #1#2{% \setbox\@NBox = \vbox{\unvcopy #2} #1 = \ht\@NBox } \def\NaturalDepth #1#2{% \setbox\@NBox = \vbox{\unvcopy #2} #1 = \dp\@NBox } \catcode`\@ = 12 \NameDef{@InputD-nathd.tip}{} \catcode`\@ = 11 \def\NextCharTest #1#2#3{% \def\@NextCharTestYes #1{#2}% \def\@NextCharTestNo {#3}% \DoFutureLet{\ifx}{#1}{\@NextCharTestYes}{\@NextCharTestNo}% } \catcode`\@ = 12 \NameDef{@InputD-nctest.tip}{} \catcode`\@ = 11 \def\pagecontents{% \wlog{\noexpand\pagecontents from op-pagec.tip called.}% \NameUse{@ShowPlainLists}% \ifvoid\topins \wlog{\string\pagecontents: no topinserts.}% \if\NameDefinedConditional{@TopInsertSize}% \ifdim\@TopInsertSize < 20pt \global\@TopInsertSize = 0pt \fi \fi \else \NameUse{ChangeBarPush}% \NameUse{@UpdateTopInsertSize}% \unvbox\topins \NameUse{ChangeBarPop}% \fi \dimen@ = \dp 255 \unvbox 255 \ifvoid\footins \else \@PrintFootnotePlain \fi \ifr@ggedbottom \kern -\dimen@ \vfil \fi } \def\@PrintFootnotePlain{% \vskip\skip\footins \footnoterule \unvbox\footins } \catcode`\@ = 12 \NameDef{@InputD-op-pagec.tip}{} \catcode`\@ = 11 \def\endinsert{% \egroup \if@mid \dimen@ = \ht0 \advance\dimen@ by \dp0 \advance\dimen@ by 12pt \advance\dimen@ by \pagetotal \ifdim\dimen@ > \pagegoal \@midfalse \p@gefalse \fi \fi \NameUse{MidInsertFix}% \if@mid \bigskip \box 0 \bigbreak \else \insert\topins{% \penalty 100 \splittopskip = 0pt \splitmaxdepth = \maxdimen \floatingpenalty = 0 \ifp@ge \dimen@ = \dp0 \vbox to \vsize{ \unvbox 0 \kern -\dimen@ }% \NameUse{MidInsertFixPage}% \else \NameUse{EndInsertTopInsFix}% \NameUse{MidInsertFixTop}% \box 0 \nobreak \bigskip \fi } \fi \endgroup } \catcode`\@ = 12 \NameDef{@InputD-op-endin.tip}{} \catcode`\@ = 11 \newdimen\@TopInsertSize \@TopInsertSize = 0pt \def\ReportTopInsertSize #1{% \wlog{\string\@TopInsertSize: "#1"}% \wlog{\EightSpaces The value of \noexpand\@TopInsertSize is \the\@TopInsertSize}% } \def\MidInsertFix{% \ReportTopInsertSize{\string\MidInsertFix}% \ifdim\@TopInsertSize > 0pt \@midfalse \p@gefalse \fi } \def\MidInsertFixPage{% \ReportTopInsertSize{\string\MidInsertFixPage[1]}% \global\advance\@TopInsertSize by \vsize \ReportTopInsertSize{\string\MidInsertFixPage[2]}% } \def\MidInsertFixTop{% \ReportTopInsertSize{\string\MidInsertFixTop[1]}% \global\advance\@TopInsertSize by \ht0 \global\advance\@TopInsertSize by \dp0 \ReportTopInsertSize{\string\MidInsertFixTop[2]}% } \def\@UpdateTopInsertSize{% \ReportTopInsertSize{\string\@UpdateTopInsertSize[1]}% \global\advance\@TopInsertSize by -\ht\topins \global\advance\@TopInsertSize by -\dp\topins \ReportTopInsertSize{\string\@UpdateTopInsertSize[2]}% } \catcode`\@ = 12 \NameDef{@InputD-new-midi.tip}{} \catcode`\@ = 11 \def\NewDef #1{% \ifx #1\@UndefinedToken \else \errhelp = {\string\NewDef: The name of the macro to be defined which you provided is already in use. Use \show to find out what the name is used for. The macro definition will nevertheless be executed.}% \errmessage{\string\NewDef: "\string#1" already defined.}% \fi \def #1% } \def\ReDef #1{% \ifx #1\@UndefinedToken \errhelp = {\string\ReDef: The name of the macro to be redefined which you provided has never been used before. The macro definition will nevertheless be executed. }% \errmessage{\string\ReDef: "\string#1" never defined before.}% \fi \def #1% } \catcode`\@ = 12 \NameDef{@InputD-newdef.tip}{} \def\NewFont #1{% \if\DefinedConditional{#1}% \errmessage{\string\NewFont: intended font name "\string#1" already used.} \fi \font #1% } \NameDef{@InputD-newfont.tip}{} \catcode`\@ = 11 \let\@input = \input \def\input{% \DoFutureLet{\ifx}{\bgroup}{\@InputA}{\@input}% } \def\@InputA #1{\@input #1} \catcode`\@ = 12 \NameDef{@InputD-newinput.tip}{} \def\NewPage{% \vfill \eject } \NameDef{@InputD-newpage.tip}{} \def\NewLineMessage #1{% {% \newlinechar = `\|% \message{|#1}% }% } \NameDef{@InputD-nlm.tip}{} \def\NewPageRightHand{% \vfill\supereject \ifodd\count0 \else \hbox{} \vfill\eject \fi } \def\ShouldBeRightHandPage{% \ifodd\count0 \else \errmessage{\string\ShouldBeRightHandPage: current page number is \the\count0. Should be odd and NOT EVEN.}% \NewPageRightHand \fi } \def\NewPageLeftHand{% \vfill\supereject \ifodd\count0 \hbox{} \vfill\eject \fi } \NameDef{@InputD-npright.tip}{} \catcode`\@ = 11 \def\@OneDigitNumberText #1#2{% \ifcase #2\relax \ifnum #1=0 \else zero% \fi \or one\or two\or three\or four\or five\or six\or seven\or eight\or nine% \else \errmessage{\string\@OneDigitNumberText: number \number#2 out of range.}% \fi } \newcount\@NumberToConvert \newcount\@NumberToConvertTwo \newcount\@NumberToConvertAndFlag \def\NumberToText #1{% \@NumberToConvert = #1\relax \ifnum\@NumberToConvert < 0 minus \@NumberToConvert = -\@NumberToConvert \fi \CheckRange{\@NumberToConvert}{0}{999999}% {\string\NumberToText: numbers >= 1.000.000 not handled.}% \@NumberToConvertAndFlag = 0 \ifnum\@NumberToConvert > 999 \@NumberToConvertTwo = \@NumberToConvert \divide\@NumberToConvert by 1000 \@NumberToText \space thousand and \IModN{\@NumberToConvertTwo}{1000}{\@NumberToConvert}% \fi \CheckRange{\@NumberToConvert}{0}{999}% {\string\NumberToText: internal error 1}% \@NumberToText } \newcount\@NumberToTextTmp \def\@NumberToText{% \ifnum\@NumberToConvert > 99 \ValueOfDecimalPosition{\@NumberToConvert}{2}% {\@NumberToTextTmp}% \@OneDigitNumberText{1}{\@NumberToTextTmp}% \space hundred and \IModN{\@NumberToConvert}{100}{\@NumberToConvert}% \fi \ValueOfDecimalPosition{\@NumberToConvert}{1}% {\@NumberToTextTmp}% \ifnum\@NumberToTextTmp > 1 \ifcase\@NumberToTextTmp \errmessage{\string\@NumberToText: internal error 1.}% \or \errmessage{\string\@NumberToText: internal error 2.}% \or twenty\or thirty\or forty\or fifty\or sixty\or seventy\or eighty\or ninety% \else \errmessage{\string\@NumberToText: internal error 4.}% \fi \IModN{\@NumberToConvert}{10}{\@NumberToTextTmp}% \@OneDigitNumberText{0}{\@NumberToTextTmp}% \else \ifnum\@NumberToTextTmp = 1 \advance\@NumberToConvert by -10 \ifcase\@NumberToConvert ten\or eleven\or twelve\or thirteen\or fourteen\or fifteen\or sixteen\or seventeen\or eighteen\or nineteen% \fi \else \@OneDigitNumberText{1}{\@NumberToConvert}% \fi \fi } \catcode`\@ = 12 \NameDef{@InputD-ntotext.tip}{} \catcode`\@ = 11 \newcount\@NumberConditionalCounter \def\@NumberConditional #1#2;{% \@NumberConditionalCounter = `#1\relax } \def\NumberConditional #1{% TT\fi \edef\@NumberConditionalString{#1}% \expandafter\@NumberConditional\@NumberConditionalString ; \if\InRangeConditional{\@NumberConditionalCounter}{`\0}{`\9}% } \catcode`\@ = 12 \NameDef{@InputD-numcond.tip}{} \catcode`\@ = 11 \newcount\@WhileNesting \@WhileNesting = 0 \def\WhileNum #1#2{% \global\advance\@WhileNesting by 1 \edef\@WhileArgOne{{\the\@WhileNesting}}% \expandafter\@WhileNum\@WhileArgOne{#1}{#2}% \global\advance\@WhileNesting by -1 } \def\@WhileNum #1#2#3{% \ifnum #2\relax #3\relax \NameDef{@WhileNum-#1}{\@WhileNum{#1}{#2}{#3}}% \else \NameDef{@WhileNum-#1}{}% \fi \NameUse{@WhileNum-#1}{}% } \catcode`\@ = 12 \NameDef{@InputD-numwhile.tip}{} \catcode`\@ = 11 \def\ObeyLines{% \catcode`\^^M = \active \@EnableActiveEndOfLine } { \catcode`\^^M=\active % Lines must end with '%'. \gdef\@EnableActiveEndOfLine{% \def {\leavevmode\par}% }% } \catcode`\@ = 12 \NameDef{@InputD-oblines.tip}{} \catcode`\@ = 11 \def\ObeySpaces{% \catcode`\ = \active \@InitActiveSpace } {\catcode`\ = \active \gdef\@InitActiveSpace{\edef {\VerbControlSpace}}} \catcode`\@ = 12 \NameDef{@InputD-obspaces.tip}{} \def\Oct #1{% {% \count4 = #1% \count0 = \count4 \divide\count0 by 8 \ifnum \count0 > 0 \Oct{\count0}% \fi \count2 = \count0 \multiply \count2 by -8 \advance \count4 by \count2 \the\count4 }% } \NameDef{@InputD-oct.tip}{} \def\PrintOdd #1{% \ifodd #1\relax Number #1 is odd. \fi } \NameDef{@InputD-oddprin.tip}{} \def\PrintOddEven #1{% \ifodd #1\relax The number #1 is odd. \else The number #1 is even. \fi } \NameDef{@InputD-oeprin.tip}{} \catcode`\@ = 11 \def\OptArgX #1#2{% \let\@OptArgXTemp = #1% \def\@OptArgXDefault{[#2]}% \DoLongFutureLet{\ifx}{[}{\@OptArgXTemp}{\@OptArgXB}% } \def\@OptArgXB{\expandafter\@OptArgXTemp\@OptArgXDefault} \catcode`\@ = 12 \NameDef{@InputD-optargx.tip}{} \def\ParFl #1#2\par{% \par $$ \vbox{ \setbox 0 = \hbox{#1} \hsize = \wd0 \noindent \unhbox 0 \space #2 } $$ \par } \NameDef{@InputD-par-fl.tip}{} \def\PickFirstOfTwo #1#2{#1} \def\PickSecondOfTwo #1#2{#2} \NameDef{@InputD-pickfs.tip}{} \catcode`\@ = 11 \newif\if@LabelsOk \def\@LabelRefPrefix{@REF-} \def\@LabelIsDefined #1{% TT\fi \if\NameDefinedConditional{\@LabelRefPrefix#1}% } \def\@NewLabel #1#2#3{% \if\@LabelIsDefined{#1}% \wlog{\string\@NewLabel: warning: label "#1" already defined.}% \fi \NameGdef{\@LabelRefPrefix #1}{{#2}{#3}}% } \let\Saved@NewLabel = \@NewLabel \def\Ref #1{% \@ref{0}{#1}% \if\StringsEqualConditional{\@TheExpandedLabel}{??}% {??}% \else \@TheExpandedLabel \fi \@PrintAfterLabel } \def\PageRef #1{% \@ref{1}{#1}% \if\StringsEqualConditional{\@TheExpandedLabel}{??}% {??}% \else \@TheExpandedLabel \fi \@PrintAfterLabel } \def\@MostRecentLabel{} \def\@ref #1#2{% \xdef\@PrintAfterLabel{}% \DefaultArg{\@ThisLabel}{#2}{\@MostRecentLabel}% \if\StringsEqualConditional{\@ThisLabel}{.}% \xdef\@ThisLabel{\@MostRecentLabel}% \xdef\@PrintAfterLabel{.}% \fi \if\StringsEqualConditional{\@ThisLabel}{,}% \xdef\@ThisLabel{\@MostRecentLabel}% \xdef\@PrintAfterLabel{,}% \fi \if\StringsEqualConditional{\@ThisLabel}{)}% \xdef\@ThisLabel{\@MostRecentLabel}% \xdef\@PrintAfterLabel{)}% \fi \if\StringsEqualConditional{\@ThisLabel}{;}% \xdef\@ThisLabel{\@MostRecentLabel}% \xdef\@PrintAfterLabel{;}% \fi \xdef\@MostRecentLabel{\@ThisLabel}% \if\@LabelIsDefined{\@ThisLabel}% \edef\@CrefTemp{\NameUse{\@LabelRefPrefix\@ThisLabel}}% \ifcase #1\relax \edef\@TheExpandedLabel{% \expandafter\PickFirstOfTwo\@CrefTemp}% \or \edef\@TheExpandedLabel{% \expandafter\PickSecondOfTwo\@CrefTemp}% \fi \else \def\@TheExpandedLabel{??} \wlog{\string\@ref: Label \@ThisLabel\space undefined.}% \fi } \catcode`\@ = 12 \NameDef{@InputD-part-cr.tip}{} \def\PrintInDollar #1{% {% \ifnum #1 < 0 $-$% \count0 = -#1\relax \else \count0 = #1\relax \fi \count2 = \count0 \divide\count0 by 100 \the\count0.% \multiply\count0 by 100 \advance\count2 by -\count0 \ifnum\count2 < 10 0% \fi \the\count2 }% } \NameDef{@InputD-pdollars.tip}{} \catcode`\@ = 11 \def\PartSourceFileNameExtension{tex} \def\AuxFileNameExtension{aux} \def\TocFileNameExtension{toc} \def\LofFileNameExtension{lof} \def\LotFileNameExtension{lot} \def\TmpFileNameExtension{tmp} \newwrite\@PartAuxStream \newwrite\@TmpFileStream \def\i@write{\immediate\write} \def\i@openout{\immediate\openout} \def\i@closeout{\immediate\closeout} \def\@ip@write{\i@write\@PartAuxStream} \def\@p@write{\write\@PartAuxStream} \def\@IgnoreAuxStuff{% \let\@NewLabel = \GobbleThree \let\@SetCounter = \GobbleTwo \let\@ForSpecialFile = \GobbleFive } \def\@ReadInAuxFiles{% {% \def\\##1{\InputCWithAt{##1.aux}}% \@AllPartsOfDocumentList }% } \catcode`\@ = 12 \NameDef{@InputD-pm-bas.tip}{} \catcode`\@ = 11 \def\WriteAuxFileComment #1{% \@p@write{\PercentSignPure\space #1.}% } \catcode`\@ = 12 \NameDef{@InputD-pm-auxco.tip}{} \catcode`\@ = 11 \NewCounter{PageNo}{\arabic}{\TheCounter{PageNo}}% {\TheCounter{PageNo}} \NewCounter{SWPageNo}{\arabic}% {\TheCounter{SWPageNo}}{\TheCounter{SWPageNo}} \def\@PageNumbersToCounterRegs{% \CounterToRegister{\global\pageno}{PageNo}% } \SetCounter{PageNo}{1} \@PageNumbersToCounterRegs \def\advancepageno{% \StepCounter{PageNo}% \StepCounter{SWPageNo}% \@PageNumbersToCounterRegs } \def\folio{% \PrintCounter{PageNo}% } \catcode`\@ = 12 \NameDef{@InputD-pm-pagen.tip}{} \catcode`\@ = 11 \def\WriteCountersToAuxFile{% \@WriteCounter{ChapterNo}% \@WriteCounter{SectionNo}% \@WriteCounter{PageNo}% } \def\@WriteCounter #1{% \@ip@write{% \noexpand\@SetCounter {#1}% {\expandafter\the\csname @C-#1\endcsname}}% } \catcode`\@ = 12 \NameDef{@InputD-pm-wrc.tip}{} \def\BoldfaceFake #1#2{% \hbox{% \hbox to #2{#1\hss}% \hbox to #2{#1\hss}% \hbox {#1}% % Last time print text with reg. width. }% } \NameDef{@InputD-poorbold.tip}{} \def\PrintAlph #1{% {% \count0 = #1% \advance\count0 by -1 \advance\count0 by `\a \char\count0 }% } \NameDef{@InputD-pralph.tip}{} \def\ShowBoxAll #1{% {% \nonstopmode \showboxdepth = 10000 \showboxbreadth = 10000 \showbox #1% }% } \def\ShowBoxDepthOne #1{% {% \nonstopmode \showboxdepth = 1 \showboxbreadth = 10000 \showbox #1% }% } \def\ShowBoxDepthTwo #1{% {% \nonstopmode \showboxdepth = 2 \showboxbreadth = 10000 \showbox #1% }% } \NameDef{@InputD-shboxes.tip}{} \def\PrintHyphens #1{% {% \setbox 0 = \vbox{% \pretolerance = -1 \hyphenpenalty = -10000 \hsize = 0pt \leftskip = 0pt \rightskip = 0pt \parfillskip = 0pt \parindent = 0pt \hfuzz = \maxdimen \interlinepenalty = 0 \clubpenalty = 0 \widowpenalty = 0 \brokenpenalty = 0 \hskip 0pt #1 }% \setbox2 = \hbox{}% \setbox 9 = \vbox{% \unvbox 0 \loop \unskip \setbox 1 = \lastbox \ifhbox 1 \global\setbox 2 = \hbox{% \unhbox 1 \discretionary{}{}{}% \unhbox 2 }% \repeat }% \unhbox 2 }% } \NameDef{@InputD-prhyph.tip}{} \def\PrimitiveMarker{% \leavevmode {% \footnotesize\tt \llap{*}% }% } \NameDef{@InputD-primmark.tip}{} \newcount\AstCount \def\PrintAsterisk #1{% \AstCount = #1 \ifnum\AstCount < 0 \errmessage{\string\PrintAsterisk: negative counter.}% \AstCount = 0 \fi \PrintAsteriskRec } \def\PrintAsteriskRec{% *% \advance\AstCount by -1 \ifnum\AstCount = 0 \let\next = \relax \else \let\next = \PrintAsteriskRec \fi \next } \NameDef{@InputD-printast.tip}{} \def\PrintRegister #1{% The current value of {\tt\string #1} is \the#1.% } \def\LogRegister #1{% \message{The current value of \string#1 is \the#1.} } \NameDef{@InputD-printreg.tip}{} \def\PrintMode{% \ifinner \ifvmode \message{Current mode: inner vertical}\fi \ifhmode \message{Current mode: restricted horizontal}\fi \ifmmode \message{Current mode: (inline) math}\fi \else \ifvmode \message{Current mode: (regular) vertical}\fi \ifhmode \message{Current mode: (regular) horizontal}\fi \ifmmode \message{Current mode: display math}\fi \fi } \NameDef{@InputD-prmode.tip}{} \catcode`\@ = 11 \newif\ifProtWrite \ProtWritetrue \newcount\@ProtCount \newcount\@ProtCountX \newwrite\@ProtWrite \def\InitProtWrite{% \ifProtWrite \immediate\openout\@ProtWrite = \jobname.prt \fi } \def\CloseProtWrite{% \immediate\closeout\@ProtWrite } \def\WriteProtocol #1#2{% \ifProtWrite {% \@ProtCount = #1\relax \def\@WriteSpace{}% \DoLoop{\count1}{1}{1}{\@ProtCount}% {\edef\@WriteSpace{\@WriteSpace\FourSpaces}}% \immediate\write\@ProtWrite{\@WriteSpace #2}% }% \fi } \def\BoxToProtocol #1#2#3{% \ifProtWrite {% \WriteProtocol {#1}{\string\BoxToProtocol: #3}% \@ProtCountX = #1\relax \advance\@ProtCountX by 1 \ifvoid #2% \WriteProtocol{\@ProtCountX}{Box register #2 is void.}% \else \ifhbox #2% \WriteProtocol{\@ProtCountX}{Box register #2 is an hbox.}% \else \WriteProtocol{\@ProtCountX}{Box register #2 is a vbox.}% \fi \fi \ifvoid #2% \else \WriteProtocol{\@ProtCountX}% {Dimensions: (\the\ht#2+\the\dp#2)*\the\wd#2.}% \fi }% \fi } \catcode`\@ = 12 \NameDef{@InputD-prot.tip}{} \def\ReportBoxType #1{% \message{\string\ReportBoxType: }% \ifvoid #1\message{Box register #1 is void.}\fi \ifhbox #1\message{Box register #1 contains a horizontal box.}\fi \ifvbox #1\message{Box register #1 contains a vertical box.}\fi } \NameDef{@InputD-rboxt.tip}{} \catcode`\@ = 11 \newread\@ReadNumberStream \newcount\ReadANumberResult \def\InitReadNumbers #1{% \openin\@ReadNumberStream = #1 } \def\@ReadANumberPar{\par} \def\ReadANumber{% \ifeof\@ReadNumberStream \ReadANumberResult = -1 \else \read\@ReadNumberStream to \@ReadANumberTemp \ifx\@ReadANumberTemp\@ReadANumberPar \ReadANumberResult = -1 \else \ReadANumberResult = \@ReadANumberTemp \fi \fi } \catcode`\@ = 12 \NameDef{@InputD-readnu.tip}{} \catcode`\@ = 11 \newbox\@ReduceToStrutBox \def\ReduceToStrut #1{% \setbox\@ReduceToStrutBox = \hbox{#1}% \vrule height \ht\@ReduceToStrutBox depth \dp\@ReduceToStrutBox width 0pt } \catcode`\@ = 12 \NameDef{@InputD-redtost.tip}{} \catcode`\@ = 11 \def\MakeRobust{} \def\TreatAsRobust #1{% \def #1{% \noexpand #1% }% } \newtoks\@RobustTokenList \@RobustTokenList = {} \def\AddToRobustList #1{% \@RobustTokenList = \expandafter{\the\@RobustTokenList #1}% } \def\Robusting{% \ForEachToken{\@RobustTokenList}{\TreatAsRobust}% } \catcode`\@ = 12 \NameDef{@InputD-robust.tip}{} \catcode`\@ = 11 \newcount\@SampleParCounter \newcount\@SampleParSentenceCounter \@SampleParCounter = 1 \def\SamplePar #1#2{% \@SampleParSentenceCounter = 0 Identification of this paragraph: {\it #1}. {\it Sample paragraph~\the\@SampleParCounter, with~#2 sentences}. So here we go, and when you check the number of sentences, then note that these first two sentences do {\it not\/} count. \loop \advance\@SampleParSentenceCounter by 1 This is one of the many sentences this macro generates, to be more specific it is sentence number~\the\@SampleParSentenceCounter\space of~#2. \ifnum\@SampleParSentenceCounter < #2 \repeat \par \global\advance\@SampleParCounter by 1 } \catcode`\@ = 12 \NameDef{@InputD-samplepa.tip}{} \catcode`\@ = 11 \newdimen\@StrutBaseDimension \newdimen\@StrutSkipTemp \def\ComputeStrut{% \@StrutBaseDimension = \baselineskip \ifdim\baselineskip < 0pt \errhelp = {You probably called \string\offinterlineskip before \string\ComputeStrut} \errmessage{\string\ComputeStrut: negative \string\baselineskip (\the\baselineskip)}% \fi } \def\MyStrut{% \vrule height 0.7\@StrutBaseDimension depth 0.3\@StrutBaseDimension width 0pt } \def\HigherStrut #1{% \@StrutSkipTemp = 0.7\@StrutBaseDimension \advance\@StrutSkipTemp by #1% \vrule height \@StrutSkipTemp depth 0.3\@StrutBaseDimension width 0pt } \def\DeeperStrut #1{% \@StrutSkipTemp = 0.3\@StrutBaseDimension \advance\@StrutSkipTemp by #1% \vrule height 0.7\@StrutBaseDimension depth \@StrutSkipTemp width 0pt } \ComputeStrut \catcode`\@ = 12 \NameDef{@InputD-setstrut.tip}{} \def\ShiftRefPointUpOrDown #1#2{% \AdvanceBoxDimension{\ht#1}{#2}% \ifdim\ht#1 < 0pt \ht#1 = 0pt \fi \AdvanceBoxDimension{\dp#1}{-#2}% \ifdim\dp#1 < 0pt \dp#1 = 0pt \fi } \NameDef{@InputD-shiftudb.tip}{} \catcode`\@ = 11 \newif\ifShowPlainLists \ShowPlainListsfalse \def\@ShowPlainLists{% \ifShowPlainLists \wlog{*** \string\@ShowPlainLists: main vertical list ***}% \wlog{*** Page number (\string\count0): \the\count0 \space***}% \ShowBoxDepthOne{255}% \ifvoid\footins \wlog{\string\@ShowPlainLists: no footnotes.}% \else \wlog{*** \string\@ShowPlainLists: footnote box ***}% \ShowBoxDepthOne{\footins}% \fi \ifvoid\topins \wlog{\string\@ShowPlainLists: no topinserts.}% \else \wlog{*** \string\@ShowPlainLists: top inserts ***}% \ShowBoxDepthTwo{\topins}% \fi \wlog{*** \string\@ShowPlainLists: end dump of page: \the\count0 \space ***}% \fi } \catcode`\@ = 12 \NameDef{@InputD-showpll.tip}{} \def\SignatureLine #1#2{% \hbox{% \hbox to 0pt{% \vrule width #1 height 0.6pt depth 0pt \hss % Equivalent to \hskip -#1. }% \lower 10pt \hbox to #1{\hfil #2\hfil}% }% } \NameDef{@InputD-sigline.tip}{} \catcode`\@ = 11 \def\SaveSpaceFactor{% \xdef\@SavedSpaceFactor{% \spacefactor = \the\spacefactor }% } \def\RestoreSpaceFactor{% \@SavedSpaceFactor } \catcode`\@ = 12 \NameDef{@InputD-spacefac.tip}{} \catcode`\@ = 11 \newcount\@PPLineNumber \newbox\@PrintParWithLinesBox \newbox\@PrintParWithLinesTemp \def\PrintParWithLineNumbers #1{% \par \@PPLineNumber = 1 \splittopskip = 0.6666\baselineskip \setbox\@PrintParWithLinesBox = \vbox{#1} \@PrintParWithLineNumbers } \def\@PrintParWithLineNumbers{ \ifvoid\@PrintParWithLinesBox \let\@PPNext = \relax \else \setbox\@PrintParWithLinesTemp = \vsplit\@PrintParWithLinesBox to 0.666\baselineskip \hbox{% \llap{% \the\@PPLineNumber:% \hskip 10pt }% \box \@PrintParWithLinesTemp }% \advance\@PPLineNumber by 1 \wlog{Line \the\@PPLineNumber}% \let\@PPNext = \@PrintParWithLineNumbers \fi \@PPNext } \catcode`\@ = 12 \NameDef{@InputD-splitpar.tip}{} \def\SameSizeMath{ \textfont0 = \tenrm \scriptfont0 = \tenrm \scriptscriptfont0 = \tenrm \textfont1 = \tenit \scriptfont1 = \tenit \scriptscriptfont1 = \tenit \textfont2 = \tensy \scriptfont2 = \tensy \scriptscriptfont2 = \tensy \textfont3 = \tenex \scriptfont3 = \tenex \scriptscriptfont3 = \tenex \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf \scriptfont\bffam = \tenbf \scriptscriptfont\bffam = \tenbf \textfont\ttfam = \tentt } \NameDef{@InputD-ssmath.tip}{} \catcode`\@ = 11 \newcount\@StringSwitchMatchCount \def\StringSwitch #1#2{% \edef\@StringSwitchMasterString{#1}% \if\EmptyStringConditional{#1}% \errmessage{\string\StringSwitch: master string must not be the empty string.}% \fi \def\@StringSwitchMatchCommonCode{#2}% \@StringSwitchMatchCount = 0 \@StringSwitch } \def\@StringSwitchOne #1#2{% \def\@StringSwitchString{#1}% \def\@StringSwitchAction{#2}% } \def\@StringSwitch #1{% \@StringSwitchOne #1% \if\EmptyStringConditional{\@StringSwitchString}% \ifcase\@StringSwitchMatchCount \@StringSwitchAction \or \else \errmessage{\string\StringSwitch: double match.}% \fi \def\@StringSwitchNext{}% \else \if\StringsEqualConditional{\@StringSwitchMasterString}% {\@StringSwitchString}% \advance\@StringSwitchMatchCount by 1 \@StringSwitchMatchCommonCode \@StringSwitchAction \fi \def\@StringSwitchNext{\@StringSwitch}% \fi \@StringSwitchNext } \catcode`\@ = 12 \NameDef{@InputD-stswitch.tip}{} \def\SubstituteFontX #1#2#3#4{% \def#1{% \message{% \string\SubstituteFontX: No \string#2 font of #3pt, using \noexpand\rm instead.% }% \global\let #1 = #4% #1% }% } \NameDef{@InputD-substf.tip}{} \catcode`\@ = 11 \newbox\@SwapBox \def\SwapBoxRegs #1#2{% \setbox\@SwapBox = \box#1% \setbox#1 = \box#2% \setbox#2 = \box\@SwapBox } \catcode`\@ = 12 \NameDef{@InputD-swapbox.tip}{} \def\TableBeginCentered{% $$ \vbox\bgroup \offinterlineskip \tabskip = 0pt \halign\bgroup } \def\TableEndCentered{% \crcr \egroup \egroup $$ } \NameDef{@InputD-tabcent.tip}{} \catcode`\@ = 11 \newbox\@WidthSavingBox \def\WidthSavingBox #1#2{% \setbox\@WidthSavingBox = \hbox{#1}% \MaxDimen{#2}{#2}{\wd\@WidthSavingBox}{\global}% \box\@WidthSavingBox } \catcode`\@ = 12 \NameDef{@InputD-tabswb.tip}{} \catcode`\@ = 11 \newcount\@GenTocEntryLevel \def\GenTocEntry #1#2#3#4{% \par \bgroup \global\@GenTocEntryLevel = #1 \leftskip = #4 \parindent = #2 \advance\parindent by -#4 \dimen0 = #3 \advance\dimen0 by -#2 \@GenTocEntry } \def\@GenTocEntry #1#2#3#4#5#6#7#8{% \rightskip = #1 plus 1in \parfillskip = #2 \advance\parfillskip by -#1 #7 \ifdim #3 > 0pt \setbox0 = \hbox to #3{\hfil.\hfil} \else \setbox0 = \box\voidb@x \fi \leavevmode \hbox to \dimen0 {#5\hfil}% {% #6% \unskip }% \ifvoid 0 \hfill \else \nobreak\leaders\copy0\hskip #4plus 1fil \fi #8% \par \egroup } \catcode`\@ = 12 \NameDef{@InputD-toc-mac.tip}{} \def\Today{% \the\month/\the\day/\the\year } \NameDef{@InputD-today.tip}{} \catcode`\@ = 11 \def\EndInsertTopInsFix{% \ifdim\dp0 > 10pt \wlog{\string\endinsert: \string\topinsert material deeper than 10pt}% \dp0 = 10pt \fi \MaxDimen{\dimen0}{\dp0}{0pt}{} \dimen1 = \vsize \advance\dimen1 by -\dimen0 \advance\dimen1 by -12pt \ifdim\ht0 > \dimen1 \wlog{\string\endinsert: \noexpand\topinsert material too long (\the\ht0),}% \wlog{\EightSpaces shortened to \the\dimen1.}% \ht0 = \dimen1 \fi } \catcode`\@ = 12 \NameDef{@InputD-topinfix.tip}{} \def\Bref #1#2#3{% #1 (19#2#3)% } \NameDef{@InputD-ts-brefm.tip}{} \def\td{% \hskip 0.5em plus 0.1em minus 0.1em $\bullet$% \hskip 0.5em plus 0.1em minus 0.1em } \NameDef{@InputD-ts-bul.tip}{} \def\ChapterHeadingTeXIP #1#2{% \setbox 1 = \vbox to 13pc{ \hyphenpenalty = 10000 \parindent = 0pt \huge \bf \baselineskip = 21pt \AlwaysBaselineskip \setbox 0 = \hbox{#1}% \copy0 \parskip = 3pc \advance\parskip by -\dp0 \advance\parskip by -\ht0 \advance\parskip by -\baselineskip \wlog{\string\ChapterHeadingTeXIP: computed value of \noexpand\parskip is \the\parskip.}% \spaceskip = 0.3333em \xspaceskip = \spaceskip \rightskip = 0pt plus 4em #2 \par \vfil } \box 1 \SuppressNextParIndent } \NameDef{@InputD-ts-chhe.tip}{} \catcode`\@ = 11 \NewCounter{ChapterNo}{\arabic}% {\TheCounter{ChapterNo}}{\TheCounter{ChapterNo}} \def\Chapter{\DblArg{\@Chapter}}% \def\@Chapter [#1]#2{% \ShouldBeRightHandPage \StepCounter{ChapterNo}% \gdef\@LeftRunningHead{#2}% \SetPageLayout{4} \ChapterHeadingTeXIP{\PrintCounter{ChapterNo}}{#2} \WriteToAuxSpecial{toc}{1}% {\PrintCounter{ChapterNo}}{#1}{\PrintCounter{PageNo}}% \WriteToAuxSpecial{lof}{0}{}{}{}% \WriteToAuxSpecial{lot}{0}{}{}{}% \def\Label ##1{\@Label{##1}{\RefCounter{ChapterNo}}{1}}% } \NewCounter{AppendixNo}{\Alph}% {\TheCounter{AppendixNo}}{\TheCounter{AppendixNo}} \AddCounterToResetList{SectionNo}{AppendixNo} \AddCounterToResetList{AppendixNo}{VolumeNo} \def\Appendix{\DblArg{\@Appendix}}% \def\@Appendix [#1]#2{% \NewPageRightHand \StepCounter{AppendixNo}% \ReassignCounter{SectionNo}{\arabic}% {\PrintCounter{AppendixNo}.\TheCounter{SectionNo}}% {\PrintCounter{AppendixNo}.\TheCounter{SectionNo}}% \SetPageLayout{4} \ChapterHeadingTeXIP{Appendix \PrintCounter{AppendixNo}}{#2} \WriteToAuxSpecial{toc}{1}% {\PrintCounter{AppendixNo}}{#1}{\PrintCounter{PageNo}}% \def\Label ##1{\@Label{##1}{\RefCounter{AppendixNo}}{1}}% \ignorespaces } \def\DoneWithAppendices{% \ReassignCounter{SectionNo}{\alph}% {\TheCounter{ChapterNo}.\TheCounter{SectionNo}}% {\TheCounter{ChapterNo}.\TheCounter{SectionNo}} \def\Label ##1{\@Label{##1}{\RefCounter{ChapterNo}}{1}}% } \catcode`\@ = 12 \NameDef{@InputD-ts-chap.tip}{} \catcode`\@ = 11 \def\@PageRef #1{% \def\@PageRefResult{}% \@ref{1}{#1}% \if\StringsEqualConditional{\@TheExpandedLabel}{??}% \def\@PageRefResult{??}% \else \if\PrefixConditional{\@TheExpandedLabel}% {\TheCounter{VolumeNo}-}% \DropPrefix{\@TheExpandedLabel}{\TheCounter{VolumeNo}-}% {\@TheShortenedLabel}% \edef\@PageRefResult{\@TheShortenedLabel}% \else \edef\@PageRefResult{\@TheExpandedLabel}% \fi \fi } \catcode`\@ = 12 \NameDef{@InputD-ts-pager.tip}{} \catcode`\@ = 11 \newcount\@PageRefLimitLow \newcount\@PageRefLimitHigh \newif\if@CloseByReference \newcount\@PageCloseRefCount \newcount\@PageNumberActual \def\NoSpecialPageRef{% \global\@NoSpecialPageReftrue } \newif\if@NoSpecialPageRef \@NoSpecialPageReffalse \def\@PageRef #1{% \def\@PageRefResult{}% \global\@CloseByReferencefalse \StepCounter{CloseByReferenceCount}% \CounterToRegister{\global\@PageCloseRefCount}% {CloseByReferenceCount}% \@ref{1}{#1}% \if\StringsEqualConditional{\@TheExpandedLabel}{??}% \def\@PageRefResult{??}% \else \if\PrefixConditional {\@TheExpandedLabel}% {\TheCounter{VolumeNo}-}% \DropPrefix{\@TheExpandedLabel}{\TheCounter{VolumeNo}-}% {\@TheShortenedLabel}% \def\@PageRefResult{\@TheShortenedLabel}% \Label{@READ@-% \@ThisLabel-\the\@PageCloseRefCount}% \@PageRefLimitLow = \@TheShortenedLabel \advance\@PageRefLimitLow by -1 \@PageRefLimitHigh = \@TheShortenedLabel \advance\@PageRefLimitHigh by 1 \edef\@Ref@Temp@Name{% \@LabelRefPrefix @READ@-% \@ThisLabel-\the\@PageCloseRefCount }% \if\NameDefinedConditional{\@Ref@Temp@Name}% \edef\@Ref@Temp@NameTwo{% \NameUse{\@Ref@Temp@Name}% }% \wlog{@READ@: 1 \@Ref@Temp@Name / \@Ref@Temp@NameTwo}% \edef\@Ref@Temp@NameThree{% \expandafter\PickSecondOfTwo \@Ref@Temp@NameTwo }% \wlog{@READ@ 1a: \@Ref@Temp@NameThree}% \DropPrefix {\@Ref@Temp@NameThree}% {\TheCounter{VolumeNo}-}% {\@ResultLocalRef}% \@PageNumberActual = \@ResultLocalRef \else \wlog{@READ@ 2}% \@PageNumberActual = \count0 \@PageRefLimitLow = -10 \@PageRefLimitHigh = -10 \fi \if\InRangeConditional {\@PageNumberActual}% {\@PageRefLimitLow}% {\@PageRefLimitHigh}% \wlog{@READ@ 3}% \@CloseByReferencetrue \if@NoSpecialPageRef \@CloseByReferencefalse \fi \else \wlog{@READ@ 4}% \@CloseByReferencefalse \fi \global\@NoSpecialPageReffalse \if@CloseByReference \ifnum\@PageNumberActual = \@PageRefLimitLow \wlog{\string\PageRef: Reference "\@ThisLabel," on page \the\@PageNumberActual \space refers to the next page.}% \def\@PageRefResult{the next}% \fi \ifnum\@PageNumberActual = \@TheShortenedLabel \wlog{\string\PageRef: Reference "\@ThisLabel" on page \the\@PageNumberActual \space refers to the current page.}% \def\@PageRefResult{this}% \fi \ifnum\@PageNumberActual = \@PageRefLimitHigh \wlog{\string\PageRef: Reference "\@ThisLabel" on page \the\@PageNumberActual \space refers to the preceding page.}% \def\@PageRefResult{the previous}% \fi \fi \else \def\@PageRefResult{\@TheExpandedLabel}% \fi \fi \edef\@PageRefResult{\@PageRefResult}% } \catcode`\@ = 12 \NameDef{@InputD-ts-page2.tip}{} \catcode`\@ = 11 \def\PageRef #1{% \@PageRef{#1}% \@PageRefResult \@PrintAfterLabel } \def\Page #1{% \PageShortForm~\@PageRef{#1}% \@PageRefResult \@PrintAfterLabel } \def\OnPage #1{% \@PageRef{#1}% \if@CloseByReference on \@PageRefResult\space page% \else on \PageShortForm~\@PageRefResult \fi \@PrintAfterLabel } \def\AtPage #1{% \@PageRef{#1}% \if@CloseByReference at \@PageRefResult\space page% \else at \PageShortForm~\@PageRefResult \fi \@PrintAfterLabel } \def\CommaPage #1{% \@PageRef{#1}% \if@CloseByReference \space on \@PageRefResult\space page% \@PrintAfterLabel \else ,\space \PageShortForm~\@PageRefResult \@PrintAfterLabel \fi } \def\CommaPageComma{% \@PageRef{,}% \if@CloseByReference \space on \@PageRefResult\space page\space \else ,\space \PageShortForm~\@PageRefResult \@PrintAfterLabel \space \fi } \def\PageShortForm{p.} \def\PagesShortForm{pp.} \def\see #1#2{% see \@SeeSee{#1}{#2}% } \def\See #1#2{% See \@SeeSee{#1}{#2}% } \def\@SeeSee #1#2{% \SectionRef{#1}% \if\StringsEqualConditional{#2}{,}% \CommaPageComma \let\@SeeSeeEnd = \ignorespaces \else \CommaPage #2% \let\@SeeSeeEnd = \relax \fi \@SeeSeeEnd } \def\ChapterRef #1{% Chapter~\Ref{#1}% } \def\SectionRef #1{% \Ref{#1}% } \def\ItemRef #1{% item~\Ref{#1}% } \def\FigRef #1{% Fig.~\Ref{#1}% } \def\FigureRef #1{% Figure~\Ref{#1}% } \def\TableRef #1{% Table~\Ref{#1}% } \def\AppendixRef #1{% Appendix~\Ref{#1}% } \def\PagesRef #1#2{% \PagesShortForm~\PageRef{#1}--\PageRef{#2}% } \catcode`\@ = 12 \NameDef{@InputD-ts-crm.tip}{} \newdimen\HsizeTeXIP \newdimen\VsizeTeXIP \newcount\ClubPenalty \newcount\WidowPenalty \newcount\InterlinePenalty \newcount\BrokenPenalty \NameDef{@InputD-ts-dime1.tip}{} \newif\ifWritePageLog \WritePageLogfalse \newwrite\PageLogStream \def\WritePageLogFile{% \immediate\openout\PageLogStream = \jobname.plog \WritePageLogtrue } \newcount\BadnessSave \ShowPlainListsfalse \catcode`\@ = 11 \newcount\@PageLayoutCode \def\SetPageLayout #1{% \global\@PageLayoutCode = #1 \CheckRange{\@PageLayoutCode}{0}{5}% {\string\SetPageLayout: } } \SetPageLayout{0}% \def\@LeftRunningHead{} \def\@RightRunningHead{} \newcount\@SavedPageLayoutCode \def\NewPageRightHandSpecial{% \vfill \supereject \ifodd\count0 \wlog{\string\NewPageRightHandSpecial: no empty page to generate (\string\count0 = \the\count0)}% \else \hbox{} \@SavedPageLayoutCode = \@PageLayoutCode \SetPageLayout{1}% \wlog{\string\NewPageRightHandSpecial: empty page generated, (\string\count0 = \the\count0).}% \vfill \eject \SetPageLayout{\@SavedPageLayoutCode}% \fi } \newdimen\OddPagesHorizontalShift \newdimen\EvenPagesHorizontalShift \newdimen\CurrentPageShift \def\plainoutput{% \@ShowPlainLists \edef\@LeftRunningHead{\@LeftRunningHead}% \edef\@RightRunningHead{\@RightRunningHead}% \ifnum\@PageLayoutCode = 0 \else \headline = {} \footline = {} \fi \ifcase\@PageLayoutCode \or \or \global\@PageLayoutCode = 3 \or \@PageLayoutCodeThree \or \global\@PageLayoutCode = 5 \or \ifodd\count0 \headline = {% \small\rm \hfil \botmark \hskip 18pt \PrintCounter{PageNo}% }% \else \headline = {% \small\rm \PrintCounter{PageNo}% \hskip 18pt \@LeftRunningHead \hfil }% \fi \else \errmessage{\string\plainoutput: \string\@PageLayoutCode out of range.}% \fi \setbox 4 = \vbox{% \pagebody }% \ifWritePageLog \immediate\write\PageLogStream{% Part name: \CurrentPartName, Page \the\count0 }% \immediate\write\PageLogStream{% Page \the\count0: stretch: \the\pagestretch, shrink: \the\pageshrink, outputpenalty: \the\outputpenalty }% \immediate\write\PageLogStream{% pagefilstretch: \the\pagefilstretch, pagefillstretch: \the\pagefillstretch }% \immediate\write\PageLogStream{% ht 255: \the\ht255, dp 255: \the\dp255 }% \NaturalHeight{\dimen0}{255}% \NaturalDepth{\dimen1}{255}% \immediate\write\PageLogStream{% Natural height: \the\dimen0, Natural depth: \the\dimen1 }% \dimen2 = \vsize \advance\dimen2 by -\dimen0 \immediate\write\PageLogStream{% Ideal height: \the\vsize, Difference: \the\dimen2 }% \immediate\write\PageLogStream{% badness: \the\BadnessSave, height: \the\ht4, depth: \the\dp4 }% \immediate\write\PageLogStream{}% \fi \setbox 5 = \vbox{% \makeheadline \box 4 \makefootline }% \@MakeRobustMacros \ifodd\count0 \CurrentPageShift = \OddPagesHorizontalShift \else \CurrentPageShift = \EvenPagesHorizontalShift \fi \wlog{Redefined \string\plainoutput (ts-outpu.tip): Shifting: shift amount is \the\CurrentPageShift\space\space (page is \the\pageno).}% \setbox 6 = \vbox{% \moveright\CurrentPageShift \box5 }% \shipout\box6 \advancepageno \ifnum\outputpenalty > -10000 \else \dosupereject \fi } \def\@PageLayoutCodeThree{% \ifodd\count0 \headline = {% \small\rm \hfil \@RightRunningHead \hskip 18pt \PrintCounter{PageNo}% }% \else \headline = {% \small\rm \PrintCounter{PageNo}% \hskip 18pt \@LeftRunningHead \hfil }% \fi } \catcode`\@ = 12 \NameDef{@InputD-ts-outpu.tip}{} \def\SetUpTeXIPValues #1#2#3#4#5#6#7#8#9{% \HsizeTeXIP = #1\relax \hsize = \HsizeTeXIP \VsizeTeXIP = #2\relax \vsize = \VsizeTeXIP \SetParIndent{20pt} \ClubPenalty = #4\relax \clubpenalty = \ClubPenalty \WidowPenalty = #5\relax \widowpenalty = \WidowPenalty \InterlinePenalty = #6\relax \interlinepenalty = \InterlinePenalty \BrokenPenalty = #7\relax \brokenpenalty = \BrokenPenalty \OddPagesHorizontalShift = 0pt \EvenPagesHorizontalShift = 0pt \overfullrule = #8\relax \parskip = #9\relax } \SetUpTeXIPValues{6.5in}{8.9in}{20pt}{100}{100}{100}{100}% {5pt}{0pt plus 1pt} \NameDef{@InputD-ts-dime2.tip}{} \def\SubstituteFont #1#2#3#4{% \expandafter\newifOF \csname if-\string#1\endcsname \csname if-\string#1true\endcsname \def#1{% \csname if-\string#1\endcsname \message{% \string\SubstituteFont: No \string#2 font at size #3pt, using \noexpand\rm instead.% }% \global\csname if-\string#1false\endcsname \fi #4% }% } \NameDef{@InputD-ts-subst.tip}{} \font\RmLargerThanLife = cmr17 scaled \magstep5 \NewFont\Vrm = cmr5 \NewFont\Vit = cmti7 at 5pt \NewFont\Vbf = cmbx5 \NewFont\Vsc = cmcsc10 at 5pt \SubstituteFont{\Vtt}{\tt}{7}{\VIIrm} \SubstituteFont{\Vsc}{\sc}{7}{\VIIrm} \SubstituteFont{\Vsl}{\sl}{7}{\VIIrm} \NewFont\VIIrm = cmr7 \NewFont\VIIit = cmti7 \NewFont\VIIbf = cmbx7 \NewFont\VIIsc = cmcsc10 at 7pt \SubstituteFont{\VIItt}{\tt}{7}{\VIIrm} \SubstituteFont{\VIIsl}{\sl}{7}{\VIIrm} \NewFont\VIIIrm = cmr8 \NewFont\VIIIit = cmti8 \NewFont\VIIIbf = cmbx8 \NewFont\VIIItt = cmtt8 \NewFont\VIIIsc = cmcsc10 at 8pt \SubstituteFont{\VIIIsl}{\sl}{8}{\VIIIrm} \NewFont\IXrm = cmr9 \NewFont\IXit = cmti9 \NewFont\IXbf = cmbx9 \NewFont\IXtt = cmtt9 \NewFont\IXsc = cmcsc10 at 9pt \SubstituteFont{\IXsl}{\sl}{9}{\IXrm} \NewFont\Xrm = cmr10 \NewFont\Xit = cmti10 \NewFont\Xbf = cmbx10 \NewFont\Xtt = cmtt10 \NewFont\Xsc = cmcsc10 \NewFont\Xsl = cmcsc10 \NewFont\XIIrm = cmr12 \NewFont\XIIit = cmti12 \NewFont\XIIbf = cmbx12 \NewFont\XIItt = cmtt12 \NewFont\XIIsc = cmcsc10 scaled \magstep 1 \NewFont\XIIsl = cmcsc10 scaled \magstep 1 \NewFont\XIIIrm = cmr12 scaled \magstephalf \NewFont\XIIIit = cmti12 scaled \magstephalf \NewFont\XIIIbf = cmbx12 scaled \magstephalf \NewFont\XIIItt = cmtt12 scaled \magstephalf \NewFont\XIIIsc = cmcsc10 scaled \magstephalf \NewFont\XIIIsl = cmcsc10 scaled \magstephalf \NewFont\XVIIrm = cmr12 scaled \magstep 2 \NewFont\XVIIit = cmti12 scaled \magstep 2 \NewFont\XVIIbf = cmbx12 scaled \magstep 2 \NewFont\XVIItt = cmtt12 scaled \magstep 2 \NewFont\XVIIsc = cmcsc10 scaled \magstep 3 \NewFont\XVIIsl = cmcsc10 scaled \magstep 3 \NewFont\XXIrm = cmr17 scaled \magstep 1 \NewFont\XXIit = cmti12 scaled \magstep 3 \NewFont\XXIbf = cmbx12 scaled \magstep 3 \NewFont\XXIsc = cmcsc10 scaled \magstep 4 \LoadFontOnDemand{\XXItt}{cmtt12 scaled \magstep 3} \SubstituteFont{\XXIsl}{\sl}{20.74}{\XXIrm} \NewFont\XXVrm = cmr17 scaled \magstep 2 \NewFont\XXVit = cmti12 scaled \magstep 4 \NewFont\XXVbf = cmbx12 scaled \magstep 4 \NewFont\XXVsc = cmcsc10 at 5pt \LoadFontOnDemand{\XXVtt}{cmtt12 scaled \magstep 4} \SubstituteFont{\XXVsl}{\sl}{20.74}{\XXVrm} \DefineFontSizeGroup{V}{5} \DefineFontSizeGroup{VII}{7} \DefineFontSizeGroup{VIII}{8} \DefineFontSizeGroup{IX}{9} \DefineFontSizeGroup{X}{10} \DefineFontSizeGroup{XII}{12} \DefineFontSizeGroup{XIII}{13.14} \DefineFontSizeGroup{XVII}{17.28} \DefineFontSizeGroup{XXI}{20.74} \DefineFontSizeGroup{XXV}{24.88} \let\tiny = \FontSizeV \let\scriptsize = \FontSizeVII \let\footnotesize = \FontSizeVIII \let\small = \FontSizeIX \let\normalsize = \FontSizeX \let\large = \FontSizeXII \let\Large = \FontSizeXIII \let\LARGE = \FontSizeXVII \let\huge = \FontSizeXXI \let\Huge = \FontSizeXXV \def\LineSpaceMultFactor{1.2} \normalsize \NameDef{@InputD-ts-fonts.tip}{} \catcode`\@ = 11 \newcount\@WidestLoopCounter \newbox\@WidestLoopBox \def\FindWidestChar #1#2#3#4{% #1 = 0pt \DoLoop{\@WidestLoopCounter}{#3}{1}{#4}{% \setbox\@WidestLoopBox = \hbox{% #2% \char\@WidestLoopCounter }% \MaxDimen{#1}{#1}{\wd\@WidestLoopBox}{}% }% } \catcode`\@ = 12 \NameDef{@InputD-widestc.tip}{} \catcode`\@ = 11 \newdimen\@WidthLevelOneLabels \FindWidestChar{\@WidthLevelOneLabels}{\normalsize\rm}% {`\0}{`\9} \setbox 0 = \hbox{.\hskip 1em} \advance\@WidthLevelOneLabels by \wd0 \def\@BeginEnumerateLevelOne{% \BeginAList{\@WidthLevelOneLabels}{0pt}{1em}% {12pt}{0pt}% {0pt}{15pt}% } \newdimen\@WidthLevelTwoLabels \FindWidestChar{\@WidthLevelTwoLabels}{\normalsize\rm}% {`\a}{`\j} \setbox 0 = \hbox{()\hskip 1em} \advance\@WidthLevelTwoLabels by \wd0 \def\@BeginEnumerateLevelTwo{% \BeginAList{\@WidthLevelTwoLabels}{0pt}{10pt}% {6pt}{0pt}% {0pt}{15pt}% } \newdimen\@WidthLevelThreeLabels \setbox 0 = \hbox{viii.\hskip 1em} \@WidthLevelThreeLabels = \wd0 \def\@BeginEnumerateLevelThree{% \BeginAList{\@WidthLevelThreeLabels}{0pt}{10pt}% {6pt}{0pt}% {0pt}{15pt}% } \newdimen\@WidthLevelFourLabels \FindWidestChar{\@WidthLevelFourLabels}{\normalsize\rm}% {`\A}{`\J} \setbox0 = \hbox{()\hskip 1em} \advance\@WidthLevelFourLabels by \wd0 \def\@BeginEnumerateLevelFour{% \BeginAList{\@WidthLevelFourLabels}{0pt}{10pt}% {6pt}{0pt}% {0pt}{15pt}% } \def\EnumerateLevelOneExtended{% \par \FindWidestChar{\@WidthLevelOneLabels}{\normalsize\rm}% {`\0}{`\9} \multiply\@WidthLevelOneLabels by 2 \setbox 0 = \hbox{.\hskip 1em}% \advance\@WidthLevelOneLabels by \wd0 } \catcode`\@ = 12 \NameDef{@InputD-ts-enum.tip}{} \catcode`\@ = 11 \NewCounter{FigureNo}{\arabic}% {\TheCounter{ChapterNo}.\TheCounter{FigureNo}}% {\TheCounter{ChapterNo}.\TheCounter{FigureNo}}% \NewCounter{TableNo}{\arabic}% {\TheCounter{ChapterNo}.\TheCounter{TableNo}}% {\TheCounter{ChapterNo}.\TheCounter{TableNo}}% \AddCounterToResetList{FigureNo}{ChapterNo} \AddCounterToResetList{TableNo}{ChapterNo} \def\Caption{\DblArg{\@Caption}} \def\@Caption [#1]#2{% \errmessage{\string\@Caption: caption out of place, caption text = #1.}% } \def\BeginFigure{% \DoFutureLet{\ifx}{[}{\@BeginFigure}{\@BeginFigure[t]}% } \newif\if@FigureInsertOk \def\@BeginFigure[#1]{% \begingroup \def\@UseThisInsert{}% \@FigureInsertOkfalse \if\StringsEqualConditional{#1}{t}% \def\@UseThisInsert{\topinsert}% \@FigureInsertOktrue \fi \if\StringsEqualConditional{#1}{p}% \def\@UseThisInsert{\pageinsert}% \@FigureInsertOktrue \fi \if@FigureInsertOk \else \errmessage{\string\@BeginFigure: illegal argument "#1." Use [t] instead.}% \def\@UseThisInsert{\topinsert}% \fi \gdef\FigureCaptionText{}% \gdef\FigureCaptionTextLof{}% \StepCounter{FigureNo}% \def\Label ##1{\@Label{##1}{\RefCounter{FigureNo}}{0}}% \def\@Caption [##1]##2{% \gdef\FigureCaptionTextLof{##1}% \gdef\FigureCaptionText{##2}% \wlog{\noexpand\@Caption (figures), caption text saved: ##2.}% }% \setbox 0 = \vbox\bgroup } \def\EndFigure{% \egroup \@UseThisInsert \box0 \if\EmptyStringConditional{\FigureCaptionText}% \else \bigskip \CenterOrParagraph{% \small Figure~\PrintCounter{FigureNo}. \FigureCaptionText }% \WriteToAuxSpecial{lof}{1}{\PrintCounter{FigureNo}}% {\FigureCaptionTextLof}{\PrintCounter{PageNo}}% \fi \endinsert \endgroup } \def\BeginTable{% \begingroup \gdef\TableCaptionText{}% \gdef\TableCaptionTextLot{}% \StepCounter{TableNo}% \def\Label ##1{\@Label{##1}{\RefCounter{TableNo}}{0}}% \def\@Caption [##1]##2{% \gdef\TableCaptionText{##2}% \gdef\TableCaptionTextLot{##1}% \wlog{\noexpand\@Caption for tables: ##2}% }% \setbox 0 = \vbox\bgroup } \def\EndTable{% \egroup \topinsert \if\EmptyStringConditional{\TableCaptionText}% \else \smallskip \CenterOrParagraph{% \small Table~\PrintCounter{TableNo}. \TableCaptionText}% \WriteToAuxSpecial{lot}{1}{\PrintCounter{TableNo}}% {\TableCaptionTextLot}{\PrintCounter{PageNo}}% \smallskip \fi \box0 \endinsert \endgroup } \catcode`\@ = 12 \NameDef{@InputD-ts-float.tip}{} \catcode`\@ = 11 \NewCounter{FootNote}{\arabic}% {\TheCounter{FootNote}}% {\PrintCounter{FootNote}} \AddCounterToResetList{FootNote}{ChapterNo} \def\FootNote #1{% \StepCounter{FootNote}% \footnote{$^{\PrintCounter{FootNote}}$}% {% \small \baselineskip = 9pt #1% }% } \skip\footins = 18.4pt \def\@PrintFootnotePlain{% \vskip 12pt plus 2pt minus 1pt \hrule width 5pc height 0.4pt depth 0pt \vskip 6pt plus 1pt minus 0.5pt \unvbox\footins } \catcode`\@ = 12 \NameDef{@InputD-ts-foot.tip}{} \NewCounter{VolumeNo}{\Roman}% {\TheCounter{VolumeNo}}{\TheCounter{VolumeNo}} \ReassignCounter{PageNo}{\arabic}% {\TheCounter{PageNo}}% {\TheCounter{VolumeNo}-\TheCounter{PageNo}} \NameDef{@InputD-ts-vol.tip}{} \catcode`\@ = 11 \NewCounter{SectionNo}{\arabic}% {\PrintCounter{ChapterNo}.\TheCounter{SectionNo}}% {\PrintCounter{ChapterNo}.\TheCounter{SectionNo}}% \NewCounter{SubSectionNo}{\arabic}% {\PrintCounter{SectionNo}.\TheCounter{SubSectionNo}}% {\PrintCounter{SectionNo}.\TheCounter{SubSectionNo}}% \NewCounter{SubSubSectionNo}{\arabic}% {\PrintCounter{SubSectionNo}.\TheCounter{SubSubSectionNo}}% {\PrintCounter{SubSectionNo}.\TheCounter{SubSubSectionNo}}% \NewCounter{CloseByReferenceCount}{\arabic}% {\PrintCounter{CloseByReferenceCount}}% {\PrintCounter{CloseByReferenceCount}}% \AddCounterToResetList{SectionNo}{ChapterNo}% \AddCounterToResetList{SubSectionNo}{SectionNo}% \AddCounterToResetList{SubSubSectionNo}{SubSectionNo}% \def\Section{\DblArg{\@Section}}% \def\@Section [#1]#2{% \StepCounter{SectionNo}% \def\Label ##1{\@Label{##1}{\RefCounter{SectionNo}}{1}}% \GenericHeading{2}{36pt plus 10pt minus 2pt}% {1}{1}{1}{24pt}{0}% {\Large\baselineskip = 15pt}{-13pt}% {\PrintCounter{SectionNo}}{#2}{#1}% \gdef\EveryParB{% {% \@MakeRobustMacros \def\LineBreakToc{ }% \def\LineBreakHeading{ }% \def\IgnoreInRunningHead ####1{% \relax$\ldots$% }% \mark{#2}% }% }% } \def\SubSection{\DblArg{\@SubSection}}% \def\@SubSection [#1]#2{% \StepCounter{SubSectionNo}% \def\Label ##1{\@Label{##1}{\RefCounter{SubSectionNo}}{1}}% \GenericHeading{3}{30pt plus 8pt minus 2pt}% {1}{1}{1}{18pt}{0}% {\large\baselineskip = 14pt}{-12pt}% {\PrintCounter{SubSectionNo}}{#2}{#1}% } \def\SubSubSection{\DblArg{\@SubSubSection}}% \def\@SubSubSection [#1]#2{% \ifnum\TheCounter{SubSectionNo} = 0 \errhelp = {The reason is probably that \string\Section occurred directly followed by \string\SubSubSection (that is you forgot a \string\SubSection in between).}% \errmessage{\string\@SubSubSection: Counter "SubSectionNo" is zero.}% \fi \StepCounter{SubSubSectionNo}% \def\Label ##1{\@Label{##1}{\RefCounter{SubSubSectionNo}}{1}}% \GenericHeading{4}{24pt plus 6pt minus 1pt}% {1}{1}{1}{18pt}{0}% {\normalsize}{-10pt}% {\PrintCounter{SubSubSectionNo}}{#2}{#1}% } \catcode`\@ = 12 \NameDef{@InputD-ts-shead.tip}{} \NameDef{@InputD-ts-hall.tip}{} \catcode`\@ = 11 \def\label{\Label} \def\WriteCountersToAuxFile{% \@WriteCounter{VolumeNo}% \@WriteCounter{ChapterNo}% \@WriteCounter{AppendixNo}% \@WriteCounter{SectionNo}% \@WriteCounter{SubSectionNo}% \@WriteCounter{SubSubSectionNo}% \@WriteCounter{PageNo}% \@WriteCounter{SWPageNo}% \@WriteCounter{FigureNo}% \@WriteCounter{TableNo}% \@WriteCounter{CloseByReferenceCount}% } \def\Label #1{% \message{\noexpand\Label currently undefined, label "#1" ignored.}% } \catcode`\@ = 12 \NameDef{@InputD-ts-hmore.tip}{} \lefthyphenmin = 2 \righthyphenmin = 3 \hyphenation{Ado-be} \hyphenation{after} \hyphenation{base-line-skip} \hyphenation{man-u-script} \hyphenation{obey-lines} \hyphenation{obey-spaces} \hyphenation{other-wise} \NameDef{@InputD-ts-hyph.tip}{} \catcode`\@ = 11 \def\@BeginItemizeLevelOne{% \BeginAList {15pt}{0pt}{15pt}% {12pt}{0pt}% {0pt}{15pt}% } \def\@BeginItemizeLevelTwo{% \BeginAList {15pt}{0pt}{15pt}% {6pt}{0pt}% {0pt}{15pt}% } \def\@BeginItemizeLevelThree{% \BeginAList {15pt}{0pt}{15pt}% {4pt}{0pt}% {0pt}{15pt}% } \def\@BeginItemizeLevelFour{% \BeginAList {15pt}{0pt}{15pt}% {4pt}{0pt}% {0pt}{15pt}% } \catcode`\@ = 12 \NameDef{@InputD-ts-itize.tip}{} \def\TeXIP{% \TeX{} in Practice% } \def\WEB{% {\tt WEB}% } \NameDef{@InputD-ts-lazy.tip}{} \def\EntryIntolof #1#2#3#4{% \ifcase #1 \MaxVskip{12pt}% \or \GenTocEntry{#1}{10pt}{50pt}{50pt}{25pt}% {0pt}{5pt}{0.5in}{#2}{#3}{\rm}{#4} \else \errmessage{\string\EntryIntolof/lot: illegal level.}% \fi } \let\EntryIntolot = \EntryIntolof \NameDef{@InputD-ts-loft.tip}{} \def\PS{{\sc Post\-Script}} \font\MetafontLogoFont = logo10 scaled \magstep0 \def\MF{{\MetafontLogoFont METAFONT}} \def\textfontii{\the\textfont2} \def\AmSTeX{{\textfontii A}\kern-.1667em\lower.5ex\hbox {\textfontii M}\kern-.125em{\textfontii S}-\TeX} \def\LaTeX{{\rm L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} \NameDef{@InputD-ts-logo.tip}{} \catcode`\@ = 11 \def\@MakeRobustMacros{% \TreatAsRobust\rm \TreatAsRobust\bf \TreatAsRobust\it \TreatAsRobust\tt \TreatAsRobust\sc \TreatAsRobust\mac \TreatAsRobust\break \TreatAsRobust\dots \TreatAsRobust\MF \TreatAsRobust\TeX \TreatAsRobust\LaTeX \TreatAsRobust\PS \TreatAsRobust\AmSTeX \TreatAsRobust\ldots \TreatAsRobust\cdots \TreatAsRobust\dots \def\MakeRobust ##1{% \noexpand\MakeRobust \noexpand##1% }% } \catcode`\@ = 12 \NameDef{@InputD-ts-robst.tip}{} \def\TeXIPVersionNumber{1.0} \NameDef{@InputD-ts-vers.tip}{} \def\MyNarrower{\narrower\narrower} \frenchspacing \NameDef{@InputD-ts-set.tip}{} \def\EntryIntotoc #1#2#3#4{% \par \ifcase #1 \bigskip \or \bigskip \else \relax \fi \ifcase #1 \GenTocEntry{0}{0pt}{20pt}{20pt}{30pt}% {0pt}{5pt}{0.5in}{#2}{#3}{\rm}{#4} \or \GenTocEntry{1}{0pt}{40pt}{40pt}{30pt}% {0pt}{10pt}{0.5in}{#2}{#3}{\bf}{#4} \or \GenTocEntry{2}{10pt}{50pt}{50pt}{30pt}% {0pt}{5pt}{0.5in}{#2}{#3}{\rm}{#4} \or \GenTocEntry{#1}{20pt}{60pt}{60pt}{30pt}% {0pt}{5pt}{0.5in}{#2}{#3}{\rm}{#4} \or \else \errmessage{\string\EntryIntotoc: no level #1 subdivision in this series.} \fi } \NameDef{@InputD-ts-toc.tip}{} \newdimen\LeftSkipVerbatim \LeftSkipVerbatim = 0.3in \def\VerbatimFont{\tt} \newcount\VerbatimTab \VerbatimTab = 8 \newif\ifVerbLineNum \VerbLineNumtrue \newskip\DisplayVerbatimVskip \DisplayVerbatimVskip = 0pt plus 2pt minus 1pt \newif\ifCaretTab \CaretTabfalse \newtoks\VerbatimTokBegin \VerbatimTokBegin = {} \newtoks\VerbatimTokLine \VerbatimTokLine = {} \newtoks\VerbatimTokEnd \VerbatimTokEnd = {} \catcode`\@ = 11 \newdimen\@VerbatimLr \@VerbatimLr = 1.5pt \newif\if@IgnoreFirstNewLine \if\FormatIsLaTeXConditional \def\@VerbatimPar{\par\@@par}% \def\@VerbatimNlf{\tiny}% \else \def\@VerbatimPar{\par}% \def\@VerbatimNlf{\tiny}% \fi \newcount\@VerbatimLineNumber \newif\if@VerbatimL \newdimen\Verb@TabSize \def\@VObeySpaces{% \MakeActive{\ }% \@@VObeySpaces } {% \MakeActive{\ }% \gdef\@@VObeySpaces{% \def {\VerbControlSpace}% }% } \def\@VObeyTabs{% \MakeTabActive \@@VObeyTabs } { \MakeTabActive \gdef\@@VObeyTabs{% \def^^I{\Verb@Tab}% } } \def\Verb@Tab{% \leavevmode \egroup \dimen0 = \wd0 \divide\dimen0 by \Verb@TabSize \advance\dimen0 by 1sp \multiply\dimen0 by \Verb@TabSize \wd0 = \dimen0 \box0 \setbox 0 = \hbox\bgroup } \def\@VObeyEol{% \MakeEolActive % \@@VObeyEol } { \MakeEolActive % \gdef\@@VObeyEol{% \let^^M = \Verb@Eol% }% } \def\Verb@Eol{% \if@IgnoreFirstNewLine \else \leavevmode \egroup \box 0 \endgraf \fi \@IgnoreFirstNewLinefalse } \def\@VCaret{% \MakeActive{\^}% \@@VCaret } { \MakeActive{\^}% \gdef\@@VCaret{% \def^{% \futurelet\@VSymbol\@@VCaretTwo }% \def\@@VCaretTwo{% \ifx \@VSymbol^% \let\@VerbNext = \@@VCaretThree \else \CaretText \let\@VerbNext = \relax \fi \@VerbNext }% \def\@@VCaretThree ^{% \futurelet\@VSymbol\@@VCaretFour }% \def\@@VCaretFour{% \ifx \@VSymbol I% \Verb@Tab \else \CaretText\CaretText\@VSymbol \fi \GobbleOne }% }% } \def\@StartVerbatim #1{% \begingroup \@VerbatimPar \vskip\DisplayVerbatimVskip \if\FormatIsLaTeXConditional \else \CancelSuppressNextParIndent \fi \setbox0 = \hbox{\VerbatimFont X} \Verb@TabSize = \wd0 \multiply\Verb@TabSize by \VerbatimTab \parskip = 0pt \parindent = 0pt \leftskip = \LeftSkipVerbatim \rightskip = 0pt \parfillskip = 0pt plus 1fil \spaceskip = 0pt \xspaceskip = 0pt \VerbatimFont \if@VerbatimL \else \global\@VerbatimLineNumber = 0 \fi \global\@VerbatimLfalse \ifnum #1 = 0 \@IgnoreFirstNewLinetrue \else \@IgnoreFirstNewLinefalse \fi \if\FormatIsLaTeXConditional \everypar = {\EveryParZ}% \fi \def\EveryParZ{% \the\VerbatimTokLine \global\advance\@VerbatimLineNumber by 1 \ifVerbLineNum \raise \@VerbatimLr \hbox to 0pt{% \hss \@VerbatimNlf \the\@VerbatimLineNumber \hskip 10pt }% \fi \setbox 0 = \hbox\bgroup }% \MkOthers \@VObeySpaces \@VObeyTabs \@VObeyEol \ifCaretTab \@VCaret \fi } \def\@DoneVerbatim{% \endgroup \vskip\DisplayVerbatimVskip \def\@VerbatimEndSpecialDeal{}% \if\FormatIsLaTeXConditional \else \def\@VerbatimEndSpecialDeal{% \ParLookAhead {\SuppressNextParIndent}% {} }% \fi \@VerbatimEndSpecialDeal } \def\BeginVerbatim{% \@StartVerbatim{0}% \@BeginVerbatim } { \catcode `| = 0 % | becomes escape character. \catcode`\\ =12 % \ becomes regular character. |gdef|@BeginVerbatim #1\EndVerbatim{% #1% |@DoneVerbatim } } \def\BVerB{% \@StartVerbatim{0}% \@BVerB } { \catcode `| = 0 % | becomes escape character. \catcode`\\ =12 % \ becomes regular character. |gdef|@BVerB #1\EVerB{% #1% |@DoneVerbatim } } \def\AppendVerbatimL #1{% \global\@VerbatimLtrue \global\advance\@VerbatimLineNumber by #1\relax } \def\StartVerbatimL #1{% \global\@VerbatimLtrue \global\@VerbatimLineNumber = #1\relax } \newcount\@SaveVerbatimLineNumber \def\PushVerbatimL{% \global\@SaveVerbatimLineNumber = \@VerbatimLineNumber \global\VerbLineNumfalse } \def\PopVerbatimL{% \global\@VerbatimLineNumber = \@SaveVerbatimLineNumber \global\VerbLineNumtrue } \catcode`\@ = 12 \NameDef{@InputD-verbdisp.tip}{} \catcode`\@ = 11 \def\ListVerb #1{% \@StartVerbatim{1}% \input #1 \@DoneVerbatim } \def\ListVerbIfFileExists #1{% \par \if\FileExistsConditional{#1}% \ListVerb{#1}% \else \centerline{$\bullet$ File {\tt #1} not found. $\bullet$}% \wlog{\string\ListVerbIfFileExists: no file "#1".}% \fi } \def\ListVerbAndSource #1{% \ListVerb{#1}% \input #1 } \catcode`\@ = 12 \NameDef{@InputD-verb-mac.tip}{} \catcode`\@ = 11 {\catcode`\ = \active \gdef\@InitActiveSpace{\edef {\VerbControlSpace}}} \newif\if@VerbSpaceControl \def\Verb{% \NextCharTest{*}{\@VerbSpaceControltrue \@VerbA}% {\@VerbSpaceControlfalse\@VerbA}% } \def\@VerbA #1{% \bgroup \tt \MkOthers \if@VerbSpaceControl \else \catcode`\ = \active \@InitActiveSpace \fi \def\@VerbTemp ##1#1{% ##1% % Simply print the argument. \egroup % Undo font change and category code changes. }% \@VerbTemp } \catcode`\@ = 12 \NameDef{@InputD-verb.tip}{} \catcode`\@ = 11 \newwrite\@VStream \newif\if@VStreamOpen \@VStreamOpenfalse \newcount\@VerbWriteCount \@VerbWriteCount = 0 \def\BeginVerbWrite #1#2{% \global\advance\@VerbWriteCount by 1 \wlog{\string\BeginVerbWrite: [\the\@VerbWriteCount]}% \DefaultArg{\@VerbWriteBaseName}{#1}{\jobname}% \DefaultArg{\@VerbWriteFileExt}{#2}{ver}% \xdef\@VerbWriteFileName{\@VerbWriteBaseName.\@VerbWriteFileExt}% \if@VStreamOpen \errmessage{\string\BeginVerbWrite: ERROR, file still open.}% \fi \OpenVerbWrFile{\@VerbWriteBaseName}{\@VerbWriteFileExt}% {\@VStream}% \global\@VStreamOpentrue \BeginVerbWr{\@VStream}{\EndVerbWrite}% } \def\CloseVerbWriteFile{% \if@VStreamOpen \CloseVerbWrFile{\@VStream}% \global\@VStreamOpenfalse \fi } \def\AppendVerbWrite{% \wlog{\string\AppendVerbWrite: [\the\@VerbWriteCount]}% \if@VStreamOpen \else \errmessage{\string\AppendVerbWrite: no file open.}% \fi \xdef\@VerbWriteFileName{\@VerbWriteBaseName.\@VerbWriteFileExt}% \BeginVerbWr{\@VStream}{\EndVerbWrite}% } \def\VerbAsVerb{% \CloseVerbWriteFile {% \CaretTabtrue \ListVerb{\@VerbWriteFileName}% }% } \def\VerbAsSource{% \CloseVerbWriteFile \input \@VerbWriteFileName \relax } \catcode`\@ = 12 \NameDef{@InputD-vwrt-mac.tip}{} \catcode`\@ = 11 \def\@btex{% \par \bgroup \small } \def\@etex{% \nobreak \egroup \if\FormatIsLaTeXConditional \def\@EtexEnd{}% \else \def\@EtexEnd{% \ParLookAhead {}% {\SuppressNextParIndent}% }% \fi \@EtexEnd } \def\btex{% \@btex \@StartVerbatim{0}% \btex@more } { \catcode `| = 0 % | becomes escape character. \catcode`\\ = 12 % \ now prints. |gdef|btex@more #1\etex{% #1% |@DoneVerbatim |@etex }% } \catcode`\@ = 12 \NameDef{@InputD-ts-verb1.tip}{} \catcode`\@ = 11 \def\Btexalt{% \@btex \@StartVerbatim{0}% \btex@morealt } { \catcode `| = 0 % | becomes escape character. \catcode`\\ = 12 % \ now prints. |gdef|btex@morealt #1\Etexalt{% #1% |@DoneVerbatim |@etex }% } \catcode`\@ = 12 \NameDef{@InputD-ts-verb2.tip}{} \catcode`\@ = 11 \def\verb{\Verb} \VerbLineNumtrue \VerbatimTab = 4 \DisplayVerbatimVskip = 5pt \def\VerbatimFont{\small\tt}% \def\ListVerbTeXIP #1{% \par \medskip \vskip 60pt \vskip -60pt \def\ListAsFileName{#1}% \def\LabelName{code-#1}% \if\SuffixConditional{#1}{.flf}% \def\ListAsFileName ##1.flf{\def\ListAsFileName{##1.log}}% \ListAsFileName #1% \def\LabelName{}% \else \if\SuffixConditional{#1}{.flf2}% \def\ListAsFileName ##1.flf2{\def\ListAsFileName{##1.log}}% \ListAsFileName #1% \def\LabelName{}% \fi \fi \if\StringsEqualConditional{#1}{\jobname.ver}% \def\ListAsFileName{}% \def\LabelName{}% \fi \if\StringsEqualConditional{#1}{ex-verbwr.ver} \def\LabelName{}% \fi \if\EmptyStringConditional{\LabelName}% \else \Label{code-#1}% \fi \if\EmptyStringConditional{\ListAsFileName} \else \centerline{% $\bullet$% \space \tt\ListAsFileName \space $\bullet$% }% \fi \@btex \@StartVerbatim{1}% \wlog{[\string\ListVerbTeXIP:}% \input #1 \wlog{]}% svb: this was \message before \@DoneVerbatim \@etex } \catcode`\@ = 12 \NameDef{@InputD-ts-verb.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 \NameDef{@InputD-ts-wind.tip}{} \def\WriteCounterOutImmediately #1#2{% \OpenGenericOStream{#1}% \immediate\write\GenericOStream {\PrintCounter{#2}}% \CloseGenericOStream } \NameDef{@InputD-ts-writc.tip}{} \catcode`\@ = 11 \newdimen\@VtboxDim \newbox\@VtboxBox \def\Vtbox #1#2{% \@VtboxDim = \ht#1% \advance\@VtboxDim by \dp#1% \setbox\@VtboxBox = \vbox{\unvcopy #1}% \advance\@VtboxDim by -\ht\@VtboxBox \advance\@VtboxDim by -\dp\@VtboxBox #2\setbox #1 = \vtop spread \@VtboxDim {\unvbox #1}% } \catcode`\@ = 12 \NameDef{@InputD-vtbox.tip}{} \def\WritingParShape{% \wlog{\string\WritingParShape: begin}% \wlog{}% \wlog{\string\pretolerance: \the\pretolerance}% \wlog{\string\tolerance: \the\tolerance}% \wlog{\string\prevgraf: \the\prevgraf}% \wlog{}% \wlog{\string\parskip: \the\parskip}% \wlog{\string\baselineskip: \the\baselineskip}% \wlog{\string\lineskip: \the\lineskip}% \wlog{\string\lineskiplimit: \the\lineskiplimit}% \wlog{}% \wlog{\string\parindent: \the\parindent}% \wlog{\string\hsize: \the\hsize}% \wlog{\string\leftskip: \the\leftskip}% \wlog{\string\rightskip: \the\rightskip}% \wlog{\string\parfillskip: \the\parfillskip}% \wlog{\string\spaceskip: \the\spaceskip}% \wlog{\string\xspaceskip: \the\xspaceskip}% \wlog{}% \wlog{\string\hyphenpenalty: \the\hyphenpenalty}% \wlog{\string\exhyphenpenalty: \the\exhyphenpenalty}% \wlog{\string\lefthyphenmin: \the\lefthyphenmin}% \wlog{\string\righthyphenmin: \the\righthyphenmin}% \wlog{\string\lefthyphenmin: \the\lefthyphenmin}% \wlog{}% \wlog{\string\adjdemerits: \the\adjdemerits}% \wlog{\string\doublehyphendemerits: \the\doublehyphendemerits}% \wlog{\string\finalhyphendemerits: \the\finalhyphendemerits}% \wlog{\string\linepenalty: \the\linepenalty}% \wlog{\string\sfcode\string\`.: \the\sfcode`\.}% \wlog{\string\hyphenchar: \the\hyphenchar\tenrm}% \wlog{}% \wlog{\string\binoppenalty: \the\binoppenalty}% \wlog{\string\relpenalty: \the\relpenalty}% \wlog{}% \wlog{\string\everypar: \the\everypar}% \wlog{\string\WritingParShape: end}% } \NameDef{@InputD-wl-parcp.tip}{} \catcode`\@ = 11 \newwrite\@VerbArgStream \def\WriteVerbatimArgument #1#2{% \immediate\openout\@VerbArgStream = #1 \def\@AfterWriteVerbatimArgument{#2}% \begingroup \MkOthersNoCB \@WriteVerbatimArgument } \def\@WriteVerbatimArgument #1{% \immediate\write\@VerbArgStream{#1}% \immediate\closeout\@VerbArgStream \endgroup \@AfterWriteVerbatimArgument } \catcode`\@ = 12 \NameDef{@InputD-wrverbar.tip}{} \catcode`\@ = 11 \newcount\X@ParShapeCountA \newcount\X@ParShapeCountB \newcount\X@ParShapeCountC \newdimen\X@ParShapeDimenA \newdimen\X@ParShapeDimenB \def\XParShape{% \def\X@ParShapeCollect{ }% \X@ParShapeCountC = 0 \afterassignment\X@ParShapeB \X@ParShapeCountA } \def\X@ParShapeB{% \ifnum\X@ParShapeCountA = 0 \let\@XParShapeNext = \X@ParShapeD \else \advance\X@ParShapeCountA by -1 \let\@XParShapeNext = \X@ParShapeC \fi \@XParShapeNext } \def\X@ParShapeD{% \parshape = \X@ParShapeCountC\X@ParShapeCollect } \def\X@ParShapeC #1 #2 #3 #4 #5 {% \message{\string\X@ParShapeC: #1, #2, #3, #4, #5}% \X@ParShapeDimenA = #2% \X@ParShapeDimenB = #4% \DoLoop{\X@ParShapeCountB}{1}{1}{#1}% {% \edef\X@ParShapeCollect{% \space \X@ParShapeCollect \the\X@ParShapeDimenA \space \the\X@ParShapeDimenB \space }% \advance\X@ParShapeCountC by 1 \advance\X@ParShapeDimenA by #3\relax \advance\X@ParShapeDimenB by #5\relax }% \X@ParShapeB } \catcode`\@ = 12 \NameDef{@InputD-x-parsh.tip}{} \newif\ifInputDVerbose \InputDVerbosefalse \catcode`\@ = 11 \newif\if@InputDList \@InputDListfalse \def\@InputDPrefix{@InputD-} \NameDef{\@InputDPrefix namedef.tip}{} \def\InputD #1{% \if\NameDefinedConditional{\@InputDPrefix #1}% \ifInputDVerbose \wlog{\string\InputD: file "#1" was read-in before.}% \fi \else \NameDef{\@InputDPrefix #1}{}% \input #1 \if@InputDList \immediate\write\@InputDStream{#1}% \fi \fi } \catcode`\@ = 12 \dump