@gdef@lbracecmd[\{]% @gdef@rbracecmd[\]% @endgroup

% Accents: , @.ringaccent @_udotaccent % Others are defined by plain TeX: ‘ ’ " ^ ~ = @<H. \let\, = \c \let\dotaccent = \. \def\ringaccent#1{{\accent23 #1 \let\tieaccent = \t \let\ubaraccent = \b \let\udotaccent = \d

% Other special characters: ¿ ¡ % Plain TeX defines: Å Æ Ø Œ Ł (and lowercase versions) ß. \def\questiondown{?‘ \def\exclamdown{!‘

% Dotless i and dotless j, used for accents. \def\imacro{i \def\jmacro{j \def\dotless#1{% \def\temp{#1% \ifx\temp\imacro \ptexi \else\ifx\temp\jmacro \j \else \errmessage{@dotless can be used only with i or j% \fi\fi

% forces normal size whitespace following. \def\:{\spacefactor=1000

%
forces a line break. \def\*{\hfil\break\hbox{\ignorespaces

% . is an end-of-sentence period. \def\.{.\spacefactor=3000

% ... is an end-of-sentence ellipsis. \gdef\enddots{$\mathinner{\ldotp\ldotp\ldotp\ldotp$\spacefactor=3000

% ! is an end-of-sentence bang. \gdef\!{!\spacefactor=3000

% ? is an end-of-sentence query. \gdef\?{?\spacefactor=3000

% @w prevents a word break. Without the \leavevmode, @w at the % beginning of a paragraph, when TeX is still in vertical mode, would % produce a whole line of output instead of starting the paragraph. \def\w#1{\leavevmode\hbox{#1

%

...

forces ... to be all on one page, by enclosing % it in a TeX vbox. We use \vtop instead of \vbox to construct the box % to keep its height that of a normal line. According to the rules for % \topskip (p.114 of the TeXbook), the glue inserted is % max (\topskip - \ht (first item), 0). If that height is large, % therefore, no glue is inserted, and the space between the headline and % the text is small, which looks bad. % \def\group{\begingroup \ifnum\catcode13=\active \else \errhelp = \groupinvalidhelp \errmessage{

invalid in context where filling is enabled% \fi % % The \vtop we start below produces a box with normal height and large % depth; thus, TeX puts \baselineskip glue before it, and (when the % next line of text is done) \lineskip glue after it. (See p.82 of % the TeXbook.) Thus, space below is not quite equal to space % above. But it’s pretty close. \def\Egroup{% \egroup % End the \vtop. \endgroup % End the \group. % % \vtop\bgroup % We have to put a strut on the last line in case the

is in % the midst of an example, rather than completely enclosing it. % Otherwise, the interline space between the last line of the group % and the first line afterwards is too small. But we can’t put the % strut in \Egroup, since there it would be on a line by itself. % Hence this just inserts a strut at the beginning of each line. \everypar = {\strut% % % Since we have a strut on every line, we don’t need any of TeX’s % normal interline spacing. \offinterlineskip % % OK, but now we have to do something about blank % lines in the input in @example-like environments, which normally % just turn into \lisppar, which will insert no space now that we’ve % turned off the interline space. Simplest is to make them be an % empty paragraph. \ifx\par\lisppar \edef\par{\leavevmode \par% % % Reset ^^M’s definition to new definition of \par. \obeylines \fi % % Do %

, where each end-of-line in the input causes an
    % end-of-line in the output.  We don't want the end-of-line after
    % the `
' to put extra space in the output.  Since 
    % should appear on a line by itself (according to the Texinfo
    % manual), we don't worry about eating any user text.
    \comment

%
% TeX puts in an \escapechar (i.e., `)' at the beginning of the help
% message, so this ends up printing `
can only ...'.
%
\newhelp\groupinvalidhelp{%
group can only be used in environments such as 
,^^J%
where each line of input produces a line of output.

% % forces a page break if there is not space-in-mils remaining.

\newdimen\mil  \mil=0.001in

\def\need{\parsearg\needx

% Old definition--didn't work.
%\def\needx #1{\par %
%% This method tries to make TeX break the page naturally
%% if the depth of the box does not fit.
%{\baselineskip=0pt%
%\vtop to #1\mil{\vfil\kern -#1\mil\penalty 10000
%\prevdepth=-1000pt
%

\def\needx#1{%
  % Go into vertical mode, so we don't make a big box in the middle of a
  % paragraph.
  \par
  %
  % Don't add any leading before our big empty box, but allow a page
  % break, since the best break might be right here.
  \allowbreak
  \nointerlineskip
  \vtop to #1\mil{\vfil%
  %
  % TeX does not even consider page breaks if a penalty added to the
  % main vertical list is 10000 or more.  But in order to see if the
  % empty box we just added fits on the page, we must make it consider
  % page breaks.  On the other hand, we don't want to actually break the
  % page after the empty box.  So we use a penalty of 9999.
  %
  % There is an extremely small chance that TeX will actually break the
  % page at this \penalty, if there are no other feasible breakpoints in
  % sight.  (If the user is using lots of big 
commands, which
  % almost-but-not-quite fill up a page, TeX will have a hard time doing
  % good page breaking, for example.)  However, I could not construct an
  % example where a page broke at this \penalty; if it happens in a real
  % document, then we can reconsider our strategy.
  \penalty9999
  %
  % Back up by the size of the box, whether we did a page break or not.
  \kern -#1\mil
  %
  % Do not allow a page break right after this kern.
  \nobreak


% @br   forces paragraph break

\let\br = \par

% …  output some dots

\def\dots{$\ldots$

%     forces the start of a new page

\def\page{\par\vfill\supereject

% text....
% outputs text on separate line in roman font, starting at standard page margin

% This records the amount of indent in the innermost environment.
% That's how much \exdent should take out.
\newskip\exdentamount

% This defn is used inside fill environments such as 
Function.:
\def\exdent{\parsearg\exdentyyy
\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1\hfil\break

% This defn is used inside nofill environments such as 
.
\def\nofillexdent{\parsearg\nofillexdentyyy
\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
\leftline{\hskip\leftskip{\rm#1

% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph.

\def\inmargin#1{%
\strut\vadjust{\nobreak\kern-\strutdepth
  \vtop to \strutdepth{\baselineskip\strutdepth\vss
  \llap{\rightskip=\inmarginspacing \vbox{\noindent #1\null
\newskip\inmarginspacing \inmarginspacing=1cm
\def\strutdepth{\dp\strutbox

%\hbox{{\rm#1\hfil\break

% % Allow normal characters that  we make active in the argument (a file name).
\def\include{\begingroup
  \catcode`\\=12
  \catcode`~=12
  \catcode`^=12
  \catcode`_=12
  \catcode`|=12
  \catcode`<=12
  \catcode`>=12
  \catcode`+=12
  \parsearg\includezzz
% Restore active chars for included file.
\def\includezzz#1{\endgroup\begingroup
  % Read the included file in a group so nested   \def\thisfile{#1%
  \input\thisfile
\endgroup

\def\thisfile{

%  line   outputs that line, centered

\def\center{\parsearg\centerzzz
\def\centerzzz #1{{\advance\hsize by -\leftskip
\advance\hsize by -\rightskip
\centerline{#1

% 

\def\sp{\parsearg\spxxx
\def\spxxx #1{\vskip #1\baselineskip

% % %   is another way to write a comment

\def\comment{\catcode 64=\other \catcode 123=\other \catcode 125=\other%
\parsearg \commentxxx

\def\commentxxx #1{\catcode 64=0 \catcode 123=1 \catcode 125=2 

\let\c=\comment

% \let\paragraphindent=\comment

% Prevent errors for section commands.
% Used in .
%
\def\ignore{\doignore{ignore

% Also ignore 

This document was generated on February 15, 2023 using texi2html 5.0.