2002-08-23 Andrew Cagney <ac131313@redhat.com>
* texinfo/texinfo.tex: Import version 2002-06-04.06.
This commit is contained in:
		
							parent
							
								
									75ec38da31
								
							
						
					
					
						commit
						fa3c05930c
					
				| 
						 | 
				
			
			@ -1,5 +1,7 @@
 | 
			
		|||
2002-08-23  Andrew Cagney  <ac131313@redhat.com>
 | 
			
		||||
 | 
			
		||||
	* texinfo/texinfo.tex: Import version 2002-06-04.06.
 | 
			
		||||
 | 
			
		||||
	* config.guess: Import version 2002-08-23.
 | 
			
		||||
	* config.sub: Import version 2002-08-22.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
% Load plain if necessary, i.e., if running under initex.
 | 
			
		||||
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 | 
			
		||||
%
 | 
			
		||||
\def\texinfoversion{2002-02-14.08}
 | 
			
		||||
\def\texinfoversion{2002-06-04.06}
 | 
			
		||||
%
 | 
			
		||||
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
 | 
			
		||||
%               2000, 01, 02 Free Software Foundation, Inc.
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +53,7 @@
 | 
			
		|||
%   texindex foo.??
 | 
			
		||||
%   tex foo.texi
 | 
			
		||||
%   tex foo.texi
 | 
			
		||||
%   dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps.
 | 
			
		||||
%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
 | 
			
		||||
% The extra TeX runs get the cross-reference information correct.
 | 
			
		||||
% Sometimes one run after texindex suffices, and sometimes you need more
 | 
			
		||||
% than two; texi2dvi does it as many times as necessary.
 | 
			
		||||
| 
						 | 
				
			
			@ -846,8 +846,7 @@ where each line of input produces a line of output.}
 | 
			
		|||
% @math gets a chance to work.  This could perhaps be fixed, but for now
 | 
			
		||||
% at least we can have real math in the main text, where it's needed most.
 | 
			
		||||
%
 | 
			
		||||
% 
 | 
			
		||||
\let\implicitmath = $
 | 
			
		||||
\let\implicitmath = $%$ font-lock fix
 | 
			
		||||
%
 | 
			
		||||
% One complication: _ usually means subscripts, but it could also mean
 | 
			
		||||
% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
 | 
			
		||||
| 
						 | 
				
			
			@ -857,10 +856,22 @@ where each line of input produces a line of output.}
 | 
			
		|||
{\catcode95 = \active  % 95 = _
 | 
			
		||||
\gdef\mathunderscore{%
 | 
			
		||||
  \catcode95=\active
 | 
			
		||||
  \def_{\ifnum\fam=\slfam\_\else\sb\fi}%
 | 
			
		||||
  \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
 | 
			
		||||
}}
 | 
			
		||||
%
 | 
			
		||||
\def\math{\tex\mathcode`\_="8000\mathunderscore \implicitmath\finishmath}
 | 
			
		||||
% Another complication: we want \\ (and @\) to output a \ character.
 | 
			
		||||
% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
 | 
			
		||||
% this is not advertised and we don't care.  Texinfo does not
 | 
			
		||||
% otherwise define @\.
 | 
			
		||||
% 
 | 
			
		||||
% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
 | 
			
		||||
\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
 | 
			
		||||
%
 | 
			
		||||
\def\math{%
 | 
			
		||||
  \tex
 | 
			
		||||
  \mathcode`\_="8000 \mathunderscore
 | 
			
		||||
  \let\\ = \mathbackslash
 | 
			
		||||
  \implicitmath\finishmath}
 | 
			
		||||
\def\finishmath#1{#1\implicitmath\Etex}
 | 
			
		||||
 | 
			
		||||
% @bullet and @minus need the same treatment as @math, just above.
 | 
			
		||||
| 
						 | 
				
			
			@ -987,11 +998,11 @@ where each line of input produces a line of output.}
 | 
			
		|||
      \let\appendixentry = \chapentry
 | 
			
		||||
      \def\unnumbchapentry ##1##2{}
 | 
			
		||||
      \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
 | 
			
		||||
      \def\unnumbsecentry ##1##2{}
 | 
			
		||||
      \def\unnumbsecentry ##1##2##3{\advancenumber{chap##2}}
 | 
			
		||||
      \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
 | 
			
		||||
      \def\unnumbsubsecentry ##1##2{}
 | 
			
		||||
      \def\unnumbsubsecentry ##1##2##3##4{\advancenumber{sec##2.##3}}
 | 
			
		||||
      \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
 | 
			
		||||
      \def\unnumbsubsubsecentry ##1##2{}
 | 
			
		||||
      \def\unnumbsubsubsecentry ##1##2##3##4##5{\advancenumber{subsec##2.##3.##4}}
 | 
			
		||||
      \input \jobname.toc
 | 
			
		||||
      \def\chapentry ##1##2##3{%
 | 
			
		||||
        \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
 | 
			
		||||
| 
						 | 
				
			
			@ -1000,16 +1011,16 @@ where each line of input produces a line of output.}
 | 
			
		|||
        \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
 | 
			
		||||
      \def\secentry ##1##2##3##4{%
 | 
			
		||||
        \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
 | 
			
		||||
      \def\unnumbsecentry ##1##2{%
 | 
			
		||||
        \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
 | 
			
		||||
      \def\unnumbsecentry ##1##2##3{%
 | 
			
		||||
        \pdfoutline goto name{\pdfmkpgn{##3}}{##1}}
 | 
			
		||||
      \def\subsecentry ##1##2##3##4##5{%
 | 
			
		||||
        \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
 | 
			
		||||
      \def\unnumbsubsecentry ##1##2{%
 | 
			
		||||
        \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
 | 
			
		||||
      \def\unnumbsubsecentry ##1##2##3##4{%
 | 
			
		||||
        \pdfoutline goto name{\pdfmkpgn{##4}}{##1}}
 | 
			
		||||
      \def\subsubsecentry ##1##2##3##4##5##6{%
 | 
			
		||||
        \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
 | 
			
		||||
      \def\unnumbsubsubsecentry ##1##2{%
 | 
			
		||||
        \pdfoutline goto name{\pdfmkpgn{##2}}{##1}}
 | 
			
		||||
      \def\unnumbsubsubsecentry ##1##2##3##4##5{%
 | 
			
		||||
        \pdfoutline goto name{\pdfmkpgn{##5}}{##1}}
 | 
			
		||||
      \input \jobname.toc
 | 
			
		||||
    \endgroup\fi
 | 
			
		||||
  }}
 | 
			
		||||
| 
						 | 
				
			
			@ -1431,11 +1442,19 @@ where each line of input produces a line of output.}
 | 
			
		|||
 | 
			
		||||
\def\realdash{-}
 | 
			
		||||
\def\codedash{-\discretionary{}{}{}}
 | 
			
		||||
\def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}}
 | 
			
		||||
\def\codeunder{%
 | 
			
		||||
  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
 | 
			
		||||
  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
 | 
			
		||||
  % will therefore expand the active definition of _, which is us
 | 
			
		||||
  % (inside @code that is), therefore an endless loop.
 | 
			
		||||
  \ifusingtt{\ifmmode
 | 
			
		||||
               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
 | 
			
		||||
             \else\normalunderscore \fi
 | 
			
		||||
             \discretionary{}{}{}}%
 | 
			
		||||
            {\_}%
 | 
			
		||||
}
 | 
			
		||||
\def\codex #1{\tclose{#1}\endgroup}
 | 
			
		||||
 | 
			
		||||
%\let\exp=\tclose  %Was temporary
 | 
			
		||||
 | 
			
		||||
% @kbd is like @code, except that if the argument is just one @key command,
 | 
			
		||||
% then @kbd has no effect.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1637,8 +1656,6 @@ where each line of input produces a line of output.}
 | 
			
		|||
     \global\let\contents = \relax
 | 
			
		||||
     \global\let\shortcontents = \relax
 | 
			
		||||
   \fi
 | 
			
		||||
   %
 | 
			
		||||
   \ifpdf \pdfmakepagedesttrue \fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
\def\finishtitlepage{%
 | 
			
		||||
| 
						 | 
				
			
			@ -2396,20 +2413,19 @@ width0pt\relax} \fi
 | 
			
		|||
  \let\item = \relax
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% Ignore @ignore ... @end ignore.
 | 
			
		||||
% Ignore @ignore, @ifhtml, @ifinfo, @ifplaintext, @ifnottex, @html, @menu,
 | 
			
		||||
% @direntry, and @documentdescription.
 | 
			
		||||
%
 | 
			
		||||
\def\ignore{\doignore{ignore}}
 | 
			
		||||
 | 
			
		||||
% Also ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu,
 | 
			
		||||
% @documentdescription, and @direntry text.
 | 
			
		||||
%
 | 
			
		||||
\def\ifinfo{\doignore{ifinfo}}
 | 
			
		||||
\def\ifhtml{\doignore{ifhtml}}
 | 
			
		||||
\def\ifinfo{\doignore{ifinfo}}
 | 
			
		||||
\def\ifplaintext{\doignore{ifplaintext}}
 | 
			
		||||
\def\ifnottex{\doignore{ifnottex}}
 | 
			
		||||
\def\html{\doignore{html}}
 | 
			
		||||
\def\menu{\doignore{menu}}
 | 
			
		||||
\def\documentdescription{\doignore{documentdescription}}
 | 
			
		||||
\def\direntry{\doignore{direntry}}
 | 
			
		||||
\def\documentdescription{\doignore{documentdescription}}
 | 
			
		||||
\def\documentdescriptionword{documentdescription}
 | 
			
		||||
 | 
			
		||||
% @dircategory CATEGORY  -- specify a category of the dir file
 | 
			
		||||
% which this file should belong to.  Ignore this in TeX.
 | 
			
		||||
| 
						 | 
				
			
			@ -2436,14 +2452,21 @@ width0pt\relax} \fi
 | 
			
		|||
  % We must not have @c interpreted as a control sequence.
 | 
			
		||||
  \catcode`\@ = 12
 | 
			
		||||
  %
 | 
			
		||||
  % Make the letter c a comment character so that the rest of the line
 | 
			
		||||
  % will be ignored. This way, the document can have (for example)
 | 
			
		||||
  %   @c @end ifinfo
 | 
			
		||||
  % and the @end ifinfo will be properly ignored.
 | 
			
		||||
  % (We've just changed @ to catcode 12.)
 | 
			
		||||
  \catcode`\c = 14
 | 
			
		||||
  \def\ignoreword{#1}%
 | 
			
		||||
  \ifx\ignoreword\documentdescriptionword
 | 
			
		||||
    % The c kludge breaks documentdescription, since
 | 
			
		||||
    % `documentdescription' contains a `c'.  Means not everything will
 | 
			
		||||
    % be ignored inside @documentdescription, but oh well...
 | 
			
		||||
  \else
 | 
			
		||||
    % Make the letter c a comment character so that the rest of the line
 | 
			
		||||
    % will be ignored. This way, the document can have (for example)
 | 
			
		||||
    %   @c @end ifinfo
 | 
			
		||||
    % and the @end ifinfo will be properly ignored.
 | 
			
		||||
    % (We've just changed @ to catcode 12.)
 | 
			
		||||
    \catcode`\c = 14
 | 
			
		||||
  \fi
 | 
			
		||||
  %
 | 
			
		||||
  % And now expand that command.
 | 
			
		||||
  % And now expand the command defined above.
 | 
			
		||||
  \doignoretext
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2634,19 +2657,21 @@ width0pt\relax} \fi
 | 
			
		|||
\def\ifclearfail{\nestedignore{ifclear}}
 | 
			
		||||
\defineunmatchedend{ifclear}
 | 
			
		||||
 | 
			
		||||
% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text
 | 
			
		||||
% following, through the first @end iftex (etc.).  Make `@end iftex'
 | 
			
		||||
% (etc.) valid only after an @iftex.
 | 
			
		||||
% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
 | 
			
		||||
% read the text following, through the first @end iftex (etc.).  Make
 | 
			
		||||
% `@end iftex' (etc.) valid only after an @iftex.
 | 
			
		||||
%
 | 
			
		||||
\def\iftex{\conditionalsucceed{iftex}}
 | 
			
		||||
\def\ifnothtml{\conditionalsucceed{ifnothtml}}
 | 
			
		||||
\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
 | 
			
		||||
\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}}
 | 
			
		||||
\defineunmatchedend{iftex}
 | 
			
		||||
\defineunmatchedend{ifnothtml}
 | 
			
		||||
\defineunmatchedend{ifnotinfo}
 | 
			
		||||
\defineunmatchedend{ifnotplaintext}
 | 
			
		||||
 | 
			
		||||
% We can't just want to start a group at @iftex (for example) and end it
 | 
			
		||||
% at @end iftex, since then @set commands inside the conditional have no
 | 
			
		||||
% We can't just want to start a group at @iftex (etc.) and end it at
 | 
			
		||||
% @end iftex, since then @set commands inside the conditional have no
 | 
			
		||||
% effect (they'd get reverted at the end of the group).  So we must
 | 
			
		||||
% define \Eiftex to redefine itself to be its previous value.  (We can't
 | 
			
		||||
% just define it to fail again with an ``unmatched end'' error, since
 | 
			
		||||
| 
						 | 
				
			
			@ -2861,7 +2886,7 @@ width0pt\relax} \fi
 | 
			
		|||
 | 
			
		||||
% If an index command is used in an @example environment, any spaces
 | 
			
		||||
% therein should become regular spaces in the raw index file, not the
 | 
			
		||||
% expansion of \tie (\\leavevmode \penalty \@M \ ).
 | 
			
		||||
% expansion of \tie (\leavevmode \penalty \@M \ ).
 | 
			
		||||
{\obeyspaces
 | 
			
		||||
 \gdef\unsepspaces{\obeyspaces\let =\space}}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -3613,7 +3638,8 @@ width0pt\relax} \fi
 | 
			
		|||
\def\unnumberedseczzz #1{%
 | 
			
		||||
\plainsecheading {#1}\gdef\thissection{#1}%
 | 
			
		||||
\toks0 = {#1}%
 | 
			
		||||
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}%
 | 
			
		||||
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry%
 | 
			
		||||
  {\the\toks0}{\the\chapno}}}%
 | 
			
		||||
\temp
 | 
			
		||||
\unnumbnoderef
 | 
			
		||||
\nobreak
 | 
			
		||||
| 
						 | 
				
			
			@ -3652,7 +3678,7 @@ width0pt\relax} \fi
 | 
			
		|||
\plainsubsecheading {#1}\gdef\thissection{#1}%
 | 
			
		||||
\toks0 = {#1}%
 | 
			
		||||
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry%
 | 
			
		||||
                                    {\the\toks0}}}%
 | 
			
		||||
  {\the\toks0}{\the\chapno}{\the\secno}}}%
 | 
			
		||||
\temp
 | 
			
		||||
\unnumbnoderef
 | 
			
		||||
\nobreak
 | 
			
		||||
| 
						 | 
				
			
			@ -3693,7 +3719,7 @@ width0pt\relax} \fi
 | 
			
		|||
\plainsubsubsecheading {#1}\gdef\thissection{#1}%
 | 
			
		||||
\toks0 = {#1}%
 | 
			
		||||
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry%
 | 
			
		||||
                                    {\the\toks0}}}%
 | 
			
		||||
  {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}%
 | 
			
		||||
\temp
 | 
			
		||||
\unnumbnoderef
 | 
			
		||||
\nobreak
 | 
			
		||||
| 
						 | 
				
			
			@ -3905,7 +3931,7 @@ width0pt\relax} \fi
 | 
			
		|||
% argument, which will end up as the last argument to the \...entry macro.
 | 
			
		||||
%
 | 
			
		||||
% We open the .toc file here instead of at @setfilename or any other
 | 
			
		||||
% given time so that @contents can be put in the document anywhere.
 | 
			
		||||
% fixed time so that @contents can be put in the document anywhere.
 | 
			
		||||
%
 | 
			
		||||
\newif\iftocfileopened
 | 
			
		||||
\def\writetocentry#1{%
 | 
			
		||||
| 
						 | 
				
			
			@ -3914,6 +3940,14 @@ width0pt\relax} \fi
 | 
			
		|||
    \global\tocfileopenedtrue
 | 
			
		||||
  \fi
 | 
			
		||||
  \iflinks \write\tocfile{#1{\folio}}\fi
 | 
			
		||||
  %
 | 
			
		||||
  % Tell \shipout to create a page destination if we're doing pdf, which
 | 
			
		||||
  % will be the target of the links in the table of contents.  We can't
 | 
			
		||||
  % just do it on every page because the title pages are numbered 1 and
 | 
			
		||||
  % 2 (the page numbers aren't printed), and so are the first two pages
 | 
			
		||||
  % of the document.  Thus, we'd have two destinations named `1', and
 | 
			
		||||
  % two named `2'.
 | 
			
		||||
  \ifpdf \pdfmakepagedesttrue \fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
\newskip\contentsrightmargin \contentsrightmargin=1in
 | 
			
		||||
| 
						 | 
				
			
			@ -3978,11 +4012,11 @@ width0pt\relax} \fi
 | 
			
		|||
      \hyphenpenalty = 10000
 | 
			
		||||
      \advance\baselineskip by 1pt % Open it up a little.
 | 
			
		||||
      \def\secentry ##1##2##3##4{}
 | 
			
		||||
      \def\unnumbsecentry ##1##2{}
 | 
			
		||||
      \def\unnumbsecentry ##1##2##3{}
 | 
			
		||||
      \def\subsecentry ##1##2##3##4##5{}
 | 
			
		||||
      \def\unnumbsubsecentry ##1##2{}
 | 
			
		||||
      \def\unnumbsubsecentry ##1##2##3##4{}
 | 
			
		||||
      \def\subsubsecentry ##1##2##3##4##5##6{}
 | 
			
		||||
      \def\unnumbsubsubsecentry ##1##2{}
 | 
			
		||||
      \def\unnumbsubsubsecentry ##1##2##3##4##5{}
 | 
			
		||||
      \openin 1 \jobname.toc
 | 
			
		||||
      \ifeof 1 \else
 | 
			
		||||
        \closein 1
 | 
			
		||||
| 
						 | 
				
			
			@ -4044,16 +4078,16 @@ width0pt\relax} \fi
 | 
			
		|||
 | 
			
		||||
% Sections.
 | 
			
		||||
\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
 | 
			
		||||
\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}}
 | 
			
		||||
\def\unnumbsecentry#1#2#3{\dosecentry{#1}{#3}}
 | 
			
		||||
 | 
			
		||||
% Subsections.
 | 
			
		||||
\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
 | 
			
		||||
\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}}
 | 
			
		||||
\def\unnumbsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
 | 
			
		||||
 | 
			
		||||
% And subsubsections.
 | 
			
		||||
\def\subsubsecentry#1#2#3#4#5#6{%
 | 
			
		||||
  \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
 | 
			
		||||
\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}}
 | 
			
		||||
\def\unnumbsubsubsecentry#1#2#3#4#5{\dosubsubsecentry{#1}{#5}}
 | 
			
		||||
 | 
			
		||||
% This parameter controls the indentation of the various levels.
 | 
			
		||||
\newdimen\tocindent \tocindent = 3pc
 | 
			
		||||
| 
						 | 
				
			
			@ -4114,36 +4148,27 @@ width0pt\relax} \fi
 | 
			
		|||
\message{environments,}
 | 
			
		||||
% @foo ... @end foo.
 | 
			
		||||
 | 
			
		||||
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
 | 
			
		||||
% 
 | 
			
		||||
% Since these characters are used in examples, it should be an even number of
 | 
			
		||||
% \tt widths. Each \tt character is 1en, so two makes it 1em.
 | 
			
		||||
% Furthermore, these definitions must come after we define our fonts.
 | 
			
		||||
\newbox\dblarrowbox    \newbox\longdblarrowbox
 | 
			
		||||
\newbox\pushcharbox    \newbox\bullbox
 | 
			
		||||
\newbox\equivbox       \newbox\errorbox
 | 
			
		||||
 | 
			
		||||
%{\tentt
 | 
			
		||||
%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
 | 
			
		||||
%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
 | 
			
		||||
%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
 | 
			
		||||
%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
 | 
			
		||||
% Adapted from the manmac format (p.420 of TeXbook)
 | 
			
		||||
%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
 | 
			
		||||
%                                      depth .1ex\hfil}
 | 
			
		||||
%}
 | 
			
		||||
 | 
			
		||||
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
 | 
			
		||||
%
 | 
			
		||||
\def\point{$\star$}
 | 
			
		||||
\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
 | 
			
		||||
\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
 | 
			
		||||
\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
 | 
			
		||||
\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
 | 
			
		||||
 | 
			
		||||
% The @error{} command.
 | 
			
		||||
% Adapted from the TeXbook's \boxit.
 | 
			
		||||
% 
 | 
			
		||||
\newbox\errorbox
 | 
			
		||||
%
 | 
			
		||||
{\tentt \global\dimen0 = 3em}% Width of the box.
 | 
			
		||||
\dimen2 = .55pt % Thickness of rules
 | 
			
		||||
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
 | 
			
		||||
\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
 | 
			
		||||
 | 
			
		||||
%
 | 
			
		||||
\global\setbox\errorbox=\hbox to \dimen0{\hfil
 | 
			
		||||
   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
 | 
			
		||||
   \advance\hsize by -2\dimen2 % Rules.
 | 
			
		||||
| 
						 | 
				
			
			@ -4154,8 +4179,7 @@ width0pt\relax} \fi
 | 
			
		|||
         \kern3pt\vrule width\dimen2}% Space to right.
 | 
			
		||||
      \hrule height\dimen2}
 | 
			
		||||
    \hfil}
 | 
			
		||||
 | 
			
		||||
% The @error{} command.
 | 
			
		||||
%
 | 
			
		||||
\def\error{\leavevmode\lower.7ex\copy\errorbox}
 | 
			
		||||
 | 
			
		||||
% @tex ... @end tex    escapes into raw Tex temporarily.
 | 
			
		||||
| 
						 | 
				
			
			@ -4195,9 +4219,9 @@ width0pt\relax} \fi
 | 
			
		|||
  \def\@{@}%
 | 
			
		||||
\let\Etex=\endgroup}
 | 
			
		||||
 | 
			
		||||
% Define @lisp ... @endlisp.
 | 
			
		||||
% Define @lisp ... @end lisp.
 | 
			
		||||
% @lisp does a \begingroup so it can rebind things,
 | 
			
		||||
% including the definition of @endlisp (which normally is erroneous).
 | 
			
		||||
% including the definition of @end lisp (which normally is erroneous).
 | 
			
		||||
 | 
			
		||||
% Amount to narrow the margins by for @lisp.
 | 
			
		||||
\newskip\lispnarrowing \lispnarrowing=0.4in
 | 
			
		||||
| 
						 | 
				
			
			@ -4595,6 +4619,21 @@ width0pt\relax} \fi
 | 
			
		|||
  \endgroup\nonfillfinish\endgroup
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% @copying ... @end copying.
 | 
			
		||||
% Save the text away for @insertcopying later.
 | 
			
		||||
% 
 | 
			
		||||
\newbox\copyingbox
 | 
			
		||||
%
 | 
			
		||||
\def\copying{\begingroup
 | 
			
		||||
  \parindent = 0pt  % looks wrong on title page
 | 
			
		||||
  \def\Ecopying{\egroup\endgroup}%
 | 
			
		||||
  \global\setbox\copyingbox = \vbox\bgroup
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% @insertcopying.
 | 
			
		||||
% 
 | 
			
		||||
\def\insertcopying{\unvcopy\copyingbox}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
\message{defuns,}
 | 
			
		||||
% @defun etc.
 | 
			
		||||
| 
						 | 
				
			
			@ -4691,56 +4730,60 @@ width0pt\relax} \fi
 | 
			
		|||
{\df #1}\enskip        % Generate function name
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% Actually process the body of a definition
 | 
			
		||||
% #1 should be the terminating control sequence, such as \Edefun.
 | 
			
		||||
% #2 should be the "another name" control sequence, such as \defunx.
 | 
			
		||||
% #3 should be the control sequence that actually processes the header,
 | 
			
		||||
%    such as \defunheader.
 | 
			
		||||
 | 
			
		||||
\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
 | 
			
		||||
\medbreak %
 | 
			
		||||
% Define the end token that this defining construct specifies
 | 
			
		||||
% so that it will exit this group.
 | 
			
		||||
\def#1{\endgraf\endgroup\medbreak}%
 | 
			
		||||
\def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
 | 
			
		||||
\parindent=0in
 | 
			
		||||
\advance\leftskip by \defbodyindent
 | 
			
		||||
\exdentamount=\defbodyindent
 | 
			
		||||
\begingroup %
 | 
			
		||||
\catcode 61=\active % 61 is `='
 | 
			
		||||
\obeylines\activeparens\spacesplit#3}
 | 
			
		||||
 | 
			
		||||
% Common pieces to start any @def...
 | 
			
		||||
% #1 is the \E... control sequence to end the definition (which we define).
 | 
			
		||||
% #2 is the \...x control sequence for consecutive fns (which we define).
 | 
			
		||||
% #3 is the control sequence to call to resume processing.
 | 
			
		||||
% #4, delimited by the space, is the class name.
 | 
			
		||||
%
 | 
			
		||||
\def\defmethparsebody#1#2#3#4 {\begingroup\inENV %
 | 
			
		||||
\medbreak %
 | 
			
		||||
% Define the end token that this defining construct specifies
 | 
			
		||||
% so that it will exit this group.
 | 
			
		||||
\def#1{\endgraf\endgroup\medbreak}%
 | 
			
		||||
\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
 | 
			
		||||
\parindent=0in
 | 
			
		||||
\advance\leftskip by \defbodyindent
 | 
			
		||||
\exdentamount=\defbodyindent
 | 
			
		||||
\begingroup\obeylines\activeparens\spacesplit{#3{#4}}}
 | 
			
		||||
 | 
			
		||||
% Used for @deftypemethod and @deftypeivar.
 | 
			
		||||
% #1 is the \E... control sequence to end the definition (which we define).
 | 
			
		||||
% #2 is the \...x control sequence for consecutive fns (which we define).
 | 
			
		||||
% #3 is the control sequence to call to resume processing.
 | 
			
		||||
% #4, delimited by a space, is the class name.
 | 
			
		||||
% #5 is the method's return type.
 | 
			
		||||
%
 | 
			
		||||
\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV
 | 
			
		||||
% #2 is the \...x control sequence (which our caller defines).
 | 
			
		||||
% #3 is the control sequence to process the header, such as \defunheader.
 | 
			
		||||
% 
 | 
			
		||||
\def\parsebodycommon#1#2#3{%
 | 
			
		||||
  \begingroup\inENV
 | 
			
		||||
  % If there are two @def commands in a row, we'll have a \nobreak,
 | 
			
		||||
  % which is there to keep the function description together with its
 | 
			
		||||
  % header.  But if there's nothing but headers, we want to allow a
 | 
			
		||||
  % break after all.
 | 
			
		||||
  \ifnum\lastpenalty = 10000 \penalty0 \fi
 | 
			
		||||
  \medbreak
 | 
			
		||||
  %
 | 
			
		||||
  % Define the \E... end token that this defining construct specifies
 | 
			
		||||
  % so that it will exit this group.
 | 
			
		||||
  \def#1{\endgraf\endgroup\medbreak}%
 | 
			
		||||
  \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
 | 
			
		||||
  %
 | 
			
		||||
  \parindent=0in
 | 
			
		||||
  \advance\leftskip by \defbodyindent
 | 
			
		||||
  \exdentamount=\defbodyindent
 | 
			
		||||
  \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% Process body of @defun, @deffn, @defmac, etc.
 | 
			
		||||
%
 | 
			
		||||
\def\defparsebody#1#2#3{%
 | 
			
		||||
  \parsebodycommon{#1}{#2}{#3}%
 | 
			
		||||
  \def#2{\begingroup\obeylines\activeparens\spacesplit#3}%
 | 
			
		||||
  \catcode61=\active % 61 is `='
 | 
			
		||||
  \begingroup\obeylines\activeparens
 | 
			
		||||
  \spacesplit#3%
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% #1, #2, #3 are the common arguments (see \defparsebody).
 | 
			
		||||
% #4, delimited by the space, is the class name.
 | 
			
		||||
%
 | 
			
		||||
\def\defmethparsebody#1#2#3#4 {%
 | 
			
		||||
  \parsebodycommon{#1}{#2}{#3}%
 | 
			
		||||
  \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}%
 | 
			
		||||
  \begingroup\obeylines\activeparens
 | 
			
		||||
  \spacesplit{#3{#4}}%
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% Used for @deftypemethod and @deftypeivar.
 | 
			
		||||
% #1, #2, #3 are the common arguments (see \defparsebody).
 | 
			
		||||
% #4, delimited by a space, is the class name.
 | 
			
		||||
% #5 is the method's return type.
 | 
			
		||||
%
 | 
			
		||||
\def\deftypemethparsebody#1#2#3#4 #5 {%
 | 
			
		||||
  \parsebodycommon{#1}{#2}{#3}%
 | 
			
		||||
  \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}%
 | 
			
		||||
  \begingroup\obeylines\activeparens
 | 
			
		||||
  \spacesplit{#3{#4}{#5}}%
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% Used for @deftypeop.  The change from \deftypemethparsebody is an
 | 
			
		||||
% extra argument at the beginning which is the `category', instead of it
 | 
			
		||||
| 
						 | 
				
			
			@ -4749,64 +4792,49 @@ width0pt\relax} \fi
 | 
			
		|||
% input at hand.  Thus also need a control sequence (passed as #5) for
 | 
			
		||||
% the \E... definition to assign the category name to.
 | 
			
		||||
% 
 | 
			
		||||
\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV
 | 
			
		||||
  \medbreak
 | 
			
		||||
  \def#1{\endgraf\endgroup\medbreak}%
 | 
			
		||||
\def\deftypeopparsebody#1#2#3#4#5 #6 {%
 | 
			
		||||
  \parsebodycommon{#1}{#2}{#3}%
 | 
			
		||||
  \def#2##1 ##2 ##3 {%
 | 
			
		||||
    \def#4{##1}%
 | 
			
		||||
    \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}%
 | 
			
		||||
  \parindent=0in
 | 
			
		||||
  \advance\leftskip by \defbodyindent
 | 
			
		||||
  \exdentamount=\defbodyindent
 | 
			
		||||
  \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}}
 | 
			
		||||
  \begingroup\obeylines\activeparens
 | 
			
		||||
  \spacesplit{#3{#5}{#6}}%
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV %
 | 
			
		||||
\medbreak %
 | 
			
		||||
% Define the end token that this defining construct specifies
 | 
			
		||||
% so that it will exit this group.
 | 
			
		||||
\def#1{\endgraf\endgroup\medbreak}%
 | 
			
		||||
\def#2##1 ##2 {\def#4{##1}%
 | 
			
		||||
\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
 | 
			
		||||
\parindent=0in
 | 
			
		||||
\advance\leftskip by \defbodyindent
 | 
			
		||||
\exdentamount=\defbodyindent
 | 
			
		||||
\begingroup\obeylines\activeparens\spacesplit{#3{#5}}}
 | 
			
		||||
% For @defop.
 | 
			
		||||
\def\defopparsebody #1#2#3#4#5 {%
 | 
			
		||||
  \parsebodycommon{#1}{#2}{#3}%
 | 
			
		||||
  \def#2##1 ##2 {\def#4{##1}%
 | 
			
		||||
    \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}%
 | 
			
		||||
  \begingroup\obeylines\activeparens
 | 
			
		||||
  \spacesplit{#3{#5}}%
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% These parsing functions are similar to the preceding ones
 | 
			
		||||
% except that they do not make parens into active characters.
 | 
			
		||||
% These are used for "variables" since they have no arguments.
 | 
			
		||||
 | 
			
		||||
\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody
 | 
			
		||||
\medbreak %
 | 
			
		||||
% Define the end token that this defining construct specifies
 | 
			
		||||
% so that it will exit this group.
 | 
			
		||||
\def#1{\endgraf\endgroup\medbreak}%
 | 
			
		||||
\def#2{\begingroup\obeylines\spacesplit#3}%
 | 
			
		||||
\parindent=0in
 | 
			
		||||
\advance\leftskip by \defbodyindent
 | 
			
		||||
\exdentamount=\defbodyindent
 | 
			
		||||
\begingroup %
 | 
			
		||||
\catcode 61=\active %
 | 
			
		||||
\obeylines\spacesplit#3}
 | 
			
		||||
 | 
			
		||||
% This is used for \def{tp,vr}parsebody.  It could probably be used for
 | 
			
		||||
% some of the others, too, with some judicious conditionals.
 | 
			
		||||
%
 | 
			
		||||
\def\parsebodycommon#1#2#3{%
 | 
			
		||||
  \begingroup\inENV %
 | 
			
		||||
  \medbreak %
 | 
			
		||||
  % Define the end token that this defining construct specifies
 | 
			
		||||
  % so that it will exit this group.
 | 
			
		||||
  \def#1{\endgraf\endgroup\medbreak}%
 | 
			
		||||
  \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
 | 
			
		||||
  \parindent=0in
 | 
			
		||||
  \advance\leftskip by \defbodyindent
 | 
			
		||||
  \exdentamount=\defbodyindent
 | 
			
		||||
\def\defvarparsebody #1#2#3{%
 | 
			
		||||
  \parsebodycommon{#1}{#2}{#3}%
 | 
			
		||||
  \def#2{\begingroup\obeylines\spacesplit#3}%
 | 
			
		||||
  \catcode61=\active %
 | 
			
		||||
  \begingroup\obeylines
 | 
			
		||||
  \spacesplit#3%
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% @defopvar.
 | 
			
		||||
\def\defopvarparsebody #1#2#3#4#5 {%
 | 
			
		||||
  \parsebodycommon{#1}{#2}{#3}%
 | 
			
		||||
  \def#2##1 ##2 {\def#4{##1}%
 | 
			
		||||
    \begingroup\obeylines\spacesplit{#3{##2}}}%
 | 
			
		||||
  \begingroup\obeylines
 | 
			
		||||
  \spacesplit{#3{#5}}%
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
\def\defvrparsebody#1#2#3#4 {%
 | 
			
		||||
  \parsebodycommon{#1}{#2}{#3}%
 | 
			
		||||
  \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
 | 
			
		||||
  \begingroup\obeylines
 | 
			
		||||
  \spacesplit{#3{#4}}%
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -4821,6 +4849,8 @@ width0pt\relax} \fi
 | 
			
		|||
%
 | 
			
		||||
\def\deftpparsebody #1#2#3#4 {%
 | 
			
		||||
  \parsebodycommon{#1}{#2}{#3}%
 | 
			
		||||
  \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}%
 | 
			
		||||
  \begingroup\obeylines
 | 
			
		||||
  \spacesplit{\parsetpheaderline{#3{#4}}}\empty
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -4837,33 +4867,19 @@ width0pt\relax} \fi
 | 
			
		|||
  #1{\removeemptybraces#2\relax}{#3}%
 | 
			
		||||
}%
 | 
			
		||||
 | 
			
		||||
\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV %
 | 
			
		||||
\medbreak %
 | 
			
		||||
% Define the end token that this defining construct specifies
 | 
			
		||||
% so that it will exit this group.
 | 
			
		||||
\def#1{\endgraf\endgroup\medbreak}%
 | 
			
		||||
\def#2##1 ##2 {\def#4{##1}%
 | 
			
		||||
\begingroup\obeylines\spacesplit{#3{##2}}}%
 | 
			
		||||
\parindent=0in
 | 
			
		||||
\advance\leftskip by \defbodyindent
 | 
			
		||||
\exdentamount=\defbodyindent
 | 
			
		||||
\begingroup\obeylines\spacesplit{#3{#5}}}
 | 
			
		||||
 | 
			
		||||
% Split up #2 at the first space token.
 | 
			
		||||
% call #1 with two arguments:
 | 
			
		||||
%  the first is all of #2 before the space token,
 | 
			
		||||
%  the second is all of #2 after that space token.
 | 
			
		||||
% If #2 contains no space token, all of it is passed as the first arg
 | 
			
		||||
% and the second is passed as empty.
 | 
			
		||||
 | 
			
		||||
%
 | 
			
		||||
{\obeylines
 | 
			
		||||
\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}%
 | 
			
		||||
\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{%
 | 
			
		||||
\ifx\relax #3%
 | 
			
		||||
#1{#2}{}\else #1{#2}{#3#4}\fi}}
 | 
			
		||||
 | 
			
		||||
% So much for the things common to all kinds of definitions.
 | 
			
		||||
 | 
			
		||||
% Define @defun.
 | 
			
		||||
 | 
			
		||||
% First, define the processing that is wanted for arguments of \defun
 | 
			
		||||
| 
						 | 
				
			
			@ -5273,7 +5289,7 @@ width0pt\relax} \fi
 | 
			
		|||
     \message{Warning: redefining \the\macname}%
 | 
			
		||||
  \else
 | 
			
		||||
     \expandafter\ifx\csname \the\macname\endcsname \relax
 | 
			
		||||
     \else \errmessage{The name \the\macname\space is reserved}\fi
 | 
			
		||||
     \else \errmessage{Macro name \the\macname\space already defined}\fi
 | 
			
		||||
     \global\cslet{macsave.\the\macname}{\the\macname}%
 | 
			
		||||
     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
 | 
			
		||||
     % Add the macroname to \macrolist
 | 
			
		||||
| 
						 | 
				
			
			@ -6173,7 +6189,7 @@ should work if nowhere else does.}
 | 
			
		|||
\def\normalless{<}
 | 
			
		||||
\def\normalgreater{>}
 | 
			
		||||
\def\normalplus{+}
 | 
			
		||||
\def\normaldollar{$}
 | 
			
		||||
\def\normaldollar{$}%$ font-lock fix
 | 
			
		||||
 | 
			
		||||
% This macro is used to make a character print one way in ttfont
 | 
			
		||||
% where it can probably just be output, and another way in other fonts,
 | 
			
		||||
| 
						 | 
				
			
			@ -6222,7 +6238,7 @@ should work if nowhere else does.}
 | 
			
		|||
\catcode`\+=\active
 | 
			
		||||
\def+{{\tt \char 43}}
 | 
			
		||||
\catcode`\$=\active
 | 
			
		||||
\def${\ifusingit{{\sl\$}}\normaldollar}
 | 
			
		||||
\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
 | 
			
		||||
%\catcode 27=\active
 | 
			
		||||
%\def^^[{$\diamondsuit$}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -6267,7 +6283,7 @@ should work if nowhere else does.}
 | 
			
		|||
@let<=@normalless
 | 
			
		||||
@let>=@normalgreater
 | 
			
		||||
@let+=@normalplus
 | 
			
		||||
@let$=@normaldollar}
 | 
			
		||||
@let$=@normaldollar}%$ font-lock fix
 | 
			
		||||
 | 
			
		||||
@def@normalturnoffactive{@let"=@normaldoublequote
 | 
			
		||||
@let\=@normalbackslash
 | 
			
		||||
| 
						 | 
				
			
			@ -6278,7 +6294,7 @@ should work if nowhere else does.}
 | 
			
		|||
@let<=@normalless
 | 
			
		||||
@let>=@normalgreater
 | 
			
		||||
@let+=@normalplus
 | 
			
		||||
@let$=@normaldollar}
 | 
			
		||||
@let$=@normaldollar}%$ font-lock fix
 | 
			
		||||
 | 
			
		||||
% Make _ and + \other characters, temporarily.
 | 
			
		||||
% This is canceled by @fixbackslash.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue