summaryrefslogtreecommitdiff
path: root/support
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2010-07-16 12:09:58 +0300
committerArnold D. Robbins <arnold@skeeve.com>2010-07-16 12:09:58 +0300
commitcae8bc6ced84c12590e3554a06a952283735363a (patch)
treeca4f38bfcb1312bfb62fc693564d68f3e9b3e973 /support
parentdbd583bd2b8a6dd40c622875a4e197360cb5aba7 (diff)
downloadgawk-cae8bc6ced84c12590e3554a06a952283735363a.tar.gz
Move to 2.14.gawk-2.14
Diffstat (limited to 'support')
-rw-r--r--support/makeinfo.patch233
-rw-r--r--support/texindex.c2
-rw-r--r--support/texinfo.tex364
3 files changed, 267 insertions, 332 deletions
diff --git a/support/makeinfo.patch b/support/makeinfo.patch
deleted file mode 100644
index 7d2d307f..00000000
--- a/support/makeinfo.patch
+++ /dev/null
@@ -1,233 +0,0 @@
-*** makeinfo.c.dist Thu Sep 26 21:45:04 1991
---- makeinfo.c Thu Oct 24 21:04:19 1991
-***************
-*** 73,78 ****
---- 73,79 ----
- /* Forward declarations. */
- unsigned char *xmalloc (), *xrealloc ();
- extern int in_fixed_width_font;
-+ extern int the_current_enumerate_type;
-
- /* Some systems don't declare this function in pwd.h. */
- struct passwd *getpwnam ();
-***************
-*** 925,931 ****
- extern int executing_string;
- FSTACK *temp = filestack;
-
-! if (!filestack)
- abort (); /* My fault. I wonder what I did? */
-
- /* Make sure that commands with braces have been satisfied. */
---- 926,932 ----
- extern int executing_string;
- FSTACK *temp = filestack;
-
-! if (!filestack && !executing_string)
- abort (); /* My fault. I wonder what I did? */
-
- /* Make sure that commands with braces have been satisfied. */
-***************
-*** 941,947 ****
-
- /* Pop the stack. */
- filestack = filestack->next;
-! free (temp);
- pop_node_filename ();
- }
-
---- 942,949 ----
-
- /* Pop the stack. */
- filestack = filestack->next;
-! if (temp)
-! free (temp);
- pop_node_filename ();
- }
-
-***************
-*** 2586,2593 ****
- case enumerate:
- inhibit_paragraph_indentation = 0;
- current_indent += default_indentation_increment;
-- start_numbering (1);
- filling_enabled = indented_fill = true;
- break;
-
- case alphaenumerate:
---- 2588,2610 ----
- case enumerate:
- inhibit_paragraph_indentation = 0;
- current_indent += default_indentation_increment;
- filling_enabled = indented_fill = true;
-+
-+ if (*(insertion_stack->item_function))
-+ {
-+ if (isalpha (*(insertion_stack->item_function)))
-+ {
-+ start_lettering (*(insertion_stack->item_function));
-+ }
-+ else
-+ {
-+ int n = atoi (insertion_stack->item_function);
-+
-+ start_numbering (n);
-+ }
-+ }
-+ else
-+ start_numbering (1);
- break;
-
- case alphaenumerate:
-***************
-*** 2687,2693 ****
- break;
-
- case enumerate:
-! stop_numbering ();
- current_indent -= default_indentation_increment;
- break;
-
---- 2704,2714 ----
- break;
-
- case enumerate:
-! if (isalpha (the_current_enumerate_type))
-! stop_lettering ();
-! else
-! stop_numbering ();
-!
- current_indent -= default_indentation_increment;
- break;
-
-***************
-*** 2770,2775 ****
---- 2791,2800 ----
- int letter_offset = 0;
- int the_current_letter = 0;
-
-+ int enumerate_type_stack[max_ns];
-+ int enumerate_type_offset = 0;
-+ int the_current_enumerate_type = '1';
-+
- start_numbering (at_number)
- int at_number;
- {
-***************
-*** 2778,2783 ****
---- 2803,2815 ----
- line_error ("Enumeration stack overflow");
- return;
- }
-+ if (enumerate_type_offset + 1 == max_ns)
-+ {
-+ line_error ("Enumeration stack overflow");
-+ return;
-+ }
-+ the_current_enumerate_type =
-+ enumerate_type_stack[enumerate_type_offset++] = '1';
- number_stack[number_offset++] = the_current_number;
- the_current_number = at_number;
- }
-***************
-*** 2787,2792 ****
---- 2819,2831 ----
- the_current_number = number_stack[--number_offset];
- if (number_offset < 0)
- number_offset = 0;
-+ --enumerate_type_offset;
-+ the_current_enumerate_type = enumerate_type_stack[enumerate_type_offset-1];
-+ if (enumerate_type_offset < 0)
-+ {
-+ enumerate_type_offset = 0;
-+ the_current_enumerate_type = '1';
-+ }
- }
-
- start_lettering (at_letter)
-***************
-*** 2797,2802 ****
---- 2836,2848 ----
- line_error ("Alpha-enumeration stack overflow");
- return;
- }
-+ if (enumerate_type_offset + 1 == max_ns)
-+ {
-+ line_error ("Enumeration stack overflow");
-+ return;
-+ }
-+ the_current_enumerate_type =
-+ enumerate_type_stack[enumerate_type_offset++] = 'a';
- letter_stack[letter_offset++] = the_current_letter;
- the_current_letter = at_letter;
- }
-***************
-*** 2806,2811 ****
---- 2852,2864 ----
- the_current_letter = letter_stack[--letter_offset];
- if (letter_offset < 0)
- letter_offset = 0;
-+ --enumerate_type_offset;
-+ the_current_enumerate_type = enumerate_type_stack[enumerate_type_offset-1];
-+ if (enumerate_type_offset < 0)
-+ {
-+ enumerate_type_offset = 0;
-+ the_current_enumerate_type = '1';
-+ }
- }
-
- /* Place a letter into the output stream. */
-***************
-*** 4307,4319 ****
- temp++;
- else
- {
-! if (input_text[temp] == '.' ||
-! input_text[temp] == ',' ||
- input_text[temp] == '\t')
- return;
- else
- {
-! line_error ("Cross-reference must be terminated with a period or a comma");
- return;
- }
- }
---- 4360,4372 ----
- temp++;
- else
- {
-! if (member (input_text[temp], ".,;:") ||
-! (px_ref_flag && input_text[temp] == ')' ) ||
- input_text[temp] == '\t')
- return;
- else
- {
-! line_error ("Cross-reference must be terminated with punctuation");
- return;
- }
- }
-***************
-*** 4729,4736 ****
- output_column++;
- }
- else if (current_insertion_type () == enumerate)
-! number_item ();
-! else
- letter_item ();
-
- /* Special hack. This makes close paragraph ignore you until
---- 4782,4794 ----
- output_column++;
- }
- else if (current_insertion_type () == enumerate)
-! {
-! if (isalpha (the_current_enumerate_type))
-! letter_item ();
-! else
-! number_item ();
-! }
-! else /* alphaenumerate or capsenumerate */
- letter_item ();
-
- /* Special hack. This makes close paragraph ignore you until
-
diff --git a/support/texindex.c b/support/texindex.c
index 0933aa62..02838f17 100644
--- a/support/texindex.c
+++ b/support/texindex.c
@@ -3,7 +3,7 @@
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 1, or (at your option)
+ the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
diff --git a/support/texinfo.tex b/support/texinfo.tex
index 31fc8151..73b5fd21 100644
--- a/support/texinfo.tex
+++ b/support/texinfo.tex
@@ -22,7 +22,7 @@
%You are forbidden to forbid anyone else to use, share and improve
%what you give them. Help stamp out software-hoarding!
-\def\texinfoversion{2.53}
+\def\texinfoversion{2.65}
\message{Loading texinfo package [Version \texinfoversion]:}
\message{}
@@ -62,6 +62,7 @@
%---------------------Begin change-----------------------
%
+%%%% For @cropmarks command.
% Dimensions to add cropmarks at corners Added by P. A. MacKay, 12 Nov. 1986
%
\newdimen\cornerlong \newdimen\cornerthick
@@ -69,7 +70,9 @@
\newdimen \outerhsize \newdimen \outervsize
\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks
\outerhsize=7in
-\outervsize=9.5in
+%\outervsize=9.5in
+% Alternative @smallbook page size is 9.25in
+\outervsize=9.25in
\topandbottommargin=.75in
%
%---------------------End change-----------------------
@@ -85,6 +88,7 @@
{\let\hsize=\pagewidth \makefootline}}}%
\advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi}
+%%%% For @cropmarks command %%%%
% Here is a modification of the main output routine for Near East Publications
% This provides right-angle cropmarks at all four corners.
@@ -355,7 +359,7 @@
% Conditionals to test whether a flag is set.
-\outer\def\ifset{\begingroup\ignoresections\parsearg\ifsetxxx}
+\def\ifset{\begingroup\ignoresections\parsearg\ifsetxxx}
\def\ifsetxxx #1{\endgroup
\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\ifsetfail
@@ -365,7 +369,7 @@
\def\ifsetfail{\begingroup\ignoresections\ifsetfailxxx}
\long\def\ifsetfailxxx #1\end ifset{\endgroup\ignorespaces}
-\outer\def\ifclear{\begingroup\ignoresections\parsearg\ifclearxxx}
+\def\ifclear{\begingroup\ignoresections\parsearg\ifclearxxx}
\def\ifclearxxx #1{\endgroup
\expandafter\ifx\csname IF#1\endcsname\relax \let\temp=\relax
@@ -457,18 +461,26 @@
\let\li = \sf % Sometimes we call it \li, not \sf.
%% Try out Computer Modern fonts at \magstephalf
-\font\textrm=cmr10 scaled \magstephalf
-\font\texttt=cmtt10 scaled \magstephalf
+\let\mainmagstep=\magstephalf
+
+\ifx\bigger\relax
+\let\mainmagstep=\magstep1
+\font\textrm=cmr12
+\font\texttt=cmtt12
+\else
+\font\textrm=cmr10 scaled \mainmagstep
+\font\texttt=cmtt10 scaled \mainmagstep
+\fi
% Instead of cmb10, you many want to use cmbx10.
% cmbx10 is a prettier font on its own, but cmb10
% looks better when embedded in a line with cmr10.
-\font\textbf=cmb10 scaled \magstephalf
-\font\textit=cmti10 scaled \magstephalf
-\font\textsl=cmsl10 scaled \magstephalf
-\font\textsf=cmss10 scaled \magstephalf
-\font\textsc=cmcsc10 scaled \magstephalf
-\font\texti=cmmi10 scaled \magstephalf
-\font\textsy=cmsy10 scaled \magstephalf
+\font\textbf=cmb10 scaled \mainmagstep
+\font\textit=cmti10 scaled \mainmagstep
+\font\textsl=cmsl10 scaled \mainmagstep
+\font\textsf=cmss10 scaled \mainmagstep
+\font\textsc=cmcsc10 scaled \mainmagstep
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
% A few fonts for @defun, etc.
\font\defbf=cmbx10 scaled \magstep1 %was 1314
@@ -920,19 +932,33 @@ July\or August\or September\or October\or November\or December\fi
\itemzzz {#1}}
\def\itemzzz #1{\begingroup %
-\advance \hsize by -\rightskip %
-\advance \hsize by -\leftskip %
-\setbox0=\hbox{\itemfont{#1}}%
-\itemindex{#1}%
-\parskip=0in %
-\noindent %
-\ifdim \wd0>\itemmax %
-\vadjust{\penalty 10000}%
-\hbox to \hsize{\hskip -\tableindent\box0\hss}\ %
-\else %
-\hbox to 0pt{\hskip -\tableindent\box0\hss}%
-\fi %
-\endgroup %
+ \advance\hsize by -\rightskip
+ \advance\hsize by -\tableindent
+ \setbox0=\hbox{\itemfont{#1}}%
+ \itemindex{#1}%
+ \nobreak % This prevents a break before @itemx.
+ %
+ % Be sure we are not still in the middle of a paragraph.
+ \parskip=0in
+ \par
+ %
+ % If the item text does not fit in the space we have, put it on a line
+ % by itself, and do not allow a page break either before or after that
+ % line. We do not start a paragraph here because then if the next
+ % command is, e.g., @kindex, the whatsit would get put into the
+ % horizontal list on a line by itself, resulting in extra blank space.
+ \ifdim \wd0>\itemmax
+ \setbox0=\hbox{\hskip \leftskip \hskip -\tableindent \unhbox0}\box0
+ \nobreak
+ \else
+ % The item text fits into the space. Start a paragraph, so that the
+ % following text (if any) will end up on the same line. Since that
+ % text will be indented by \tableindent, we make the item text be in
+ % a zero-width box.
+ \noindent
+ \rlap{\hskip -\tableindent\box0}%
+ \fi
+ \endgroup
}
\def\item{\errmessage{@item while not in a table}}
@@ -994,17 +1020,18 @@ July\or August\or September\or October\or November\or December\fi
\def\itemize{\parsearg\itemizezzz}
-\def\itemizezzz #1{\itemizey {#1}{\Eitemize}}
+\def\itemizezzz #1{%
+ \begingroup % ended by the @end itemsize
+ \itemizey {#1}{\Eitemize}
+}
\def\itemizey #1#2{%
\aboveenvbreak %
-\begingroup %
-\itemno = 0 %
\itemmax=\itemindent %
\advance \itemmax by -\itemmargin %
\advance \leftskip by \itemindent %
-\parindent = 0pt
-\parskip = \smallskipamount
+\parindent = 0pt %
+\parskip = \smallskipamount %
\ifdim \parskip=0pt \parskip=2pt \fi%
\def#2{\endgraf\endgroup\afterenvbreak}%
\def\itemcontents{#1}%
@@ -1018,25 +1045,106 @@ July\or August\or September\or October\or November\or December\fi
\def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000
\sfcode58=1000 \sfcode59=1000 \sfcode44=1000 }
-% Allow argument of `a', `A' or `1' to specify type of enumeration.
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list. No
+% argument is the same as `1'.
+%
\def\enumerate{\parsearg\enumeratezzz}
\def\enumeratezzz #1{\enumeratey #1 \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{
-\if#1a \alphaenumerate\else\if#1A \capsenumerate\else
-\itemizey{\the\itemno.}\Eenumerate\flushcr
-\fi\fi}
-
-\def\alphaenumerate{\itemizey{\ifcase\itemno\or
-a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or n\or o\or
-p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else
-\errmessage{More than 26 items in @alphaenumerate; get a bigger alphabet.}\fi.}%
-\Ealphaenumerate\flushcr}
-
-\def\capsenumerate{\itemizey{\ifcase\itemno\or
-A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M\or N\or O\or
-P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
-\errmessage{More than 26 items in @capsenumerate; get a bigger alphabet.}\fi.}%
-\Ecapsenumerate\flushcr}
+\def\enumeratey #1 #2\endenumeratey{%
+ \begingroup % ended by the @end enumerate
+ %
+ % If we were given no argument, pretend we were given `1'.
+ \def\thearg{#1}%
+ \ifx\thearg\empty \def\thearg{1}\fi
+ %
+ % Detect if the argument is a single token. If so, it might be a
+ % letter. Otherwise, the only valid thing it can be is a number.
+ % (We will always have one token, because of the test we just made.
+ % This is a good thing, since \splitoff doesn't work given nothing at
+ % all -- the first parameter is undelimited.)
+ \expandafter\splitoff\thearg\endmark
+ \ifx\rest\empty
+ % Only one token in the argument. It could still be anything.
+ % A ``lowercase letter'' is one whose \lccode is nonzero.
+ % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+ % not equal to itself.
+ % Otherwise, we assume it's a number.
+ %
+ % We need the \relax at the end of the \ifnum lines to stop TeX from
+ % continuing to look for a <number>.
+ %
+ \ifnum\lccode\expandafter`\thearg=0\relax
+ \numericenumerate % a number (we hope)
+ \else
+ % It's a letter.
+ \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+ \lowercaseenumerate % lowercase letter
+ \else
+ \uppercaseenumerate % uppercase letter
+ \fi
+ \fi
+ \else
+ % Multiple tokens in the argument. We hope it's a number.
+ \numericenumerate
+ \fi
+}
+
+% An @enumerate whose labels are integers. The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+ \itemno = \thearg
+ \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more lowercase letters in @enumerate; get a bigger
+ alphabet}%
+ \fi
+ \char\lccode\itemno
+ }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+ \itemno = \expandafter`\thearg
+ \startenumeration{%
+ % Be sure we're not beyond the end of the alphabet.
+ \ifnum\itemno=0
+ \errmessage{No more uppercase letters in @enumerate; get a bigger
+ alphabet}
+ \fi
+ \char\uccode\itemno
+ }%
+}
+
+% Call itemizey, adding a period to the first argument and supplying the
+% common last two arguments. Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+ \advance\itemno by -1
+ \itemizey{#1.}\Eenumerate\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
% Definition of @item while inside @itemize.
@@ -1046,7 +1154,7 @@ P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
\ifhmode \errmessage{\in hmode at itemizeitem}\fi
{\parskip=0in \hskip 0pt
\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
-\vadjust{\penalty 300}}%
+\vadjust{\penalty 1200}}%
\flushcr}
\message{indexing,}
@@ -1270,33 +1378,51 @@ P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
\def\printindex{\parsearg\doprintindex}
-\def\doprintindex#1{\tex %
-\dobreak \chapheadingskip {10000}
-\catcode`\%=\other\catcode`\&=\other\catcode`\#=\other
-\catcode`\$=\other\catcode`\_=\other
-\catcode`\~=\other
-% The following don't help, since the chars were translated
-% when the raw index was written, and their fonts were discarded
-% due to \indexnofonts.
-%\catcode`\"=\active
-%\catcode`\^=\active
-%\catcode`\_=\active
-%\catcode`\|=\active
-%\catcode`\<=\active
-%\catcode`\>=\active
-\def\indexbackslash{\rawbackslashxx}
-\indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt
-\begindoublecolumns
-\openin 1 \jobname.#1s
-\ifeof 1
-% \enddoublecolumns gets confused if there is no text in the index,
-% and it loses the chapter title and the aux file entries for the index.
-% The easiest way to prevent this problem is to make sure there is some text.
-(Index is empty)
-\else \closein 1 \input \jobname.#1s
-\fi
-\enddoublecolumns
-\Etex}
+\def\doprintindex#1{%
+ \tex
+ \dobreak \chapheadingskip {10000}
+ \catcode`\%=\other\catcode`\&=\other\catcode`\#=\other
+ \catcode`\$=\other\catcode`\_=\other
+ \catcode`\~=\other
+ %
+ % The following don't help, since the chars were translated
+ % when the raw index was written, and their fonts were discarded
+ % due to \indexnofonts.
+ %\catcode`\"=\active
+ %\catcode`\^=\active
+ %\catcode`\_=\active
+ %\catcode`\|=\active
+ %\catcode`\<=\active
+ %\catcode`\>=\active
+ % %
+ \def\indexbackslash{\rawbackslashxx}
+ \indexfonts\rm \tolerance=9500 \advance\baselineskip -1pt
+ \begindoublecolumns
+ %
+ % See if the index file exists and is nonempty.
+ \openin 1 \jobname.#1s
+ \ifeof 1
+ % \enddoublecolumns gets confused if there is no text in the index,
+ % and it loses the chapter title and the aux file entries for the
+ % index. The easiest way to prevent this problem is to make sure
+ % there is some text.
+ (Index is nonexistent)
+ \else
+ %
+ % If the index file exists but is empty, then \openin leaves \ifeof
+ % false. We have to make TeX try to read something from the file, so
+ % it can discover if there is anything in it.
+ \read 1 to \temp
+ \ifeof 1
+ (Index is empty)
+ \else
+ \input \jobname.#1s
+ \fi
+ \fi
+ \closein 1
+ \enddoublecolumns
+ \Etex
+}
% These macros are used by the sorted index file itself.
% Change them to control the appearance of the index.
@@ -1305,13 +1431,13 @@ P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
% \balancecolumns gets confused if there is any shrink.
\newskip\initialskipamount \initialskipamount 12pt plus4pt
-\outer\def\initial #1{%
+\def\initial #1{%
{\let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
\ifdim\lastskip<\initialskipamount
\removelastskip \penalty-200 \vskip \initialskipamount\fi
\line{\secbf#1\hfill}\kern 2pt\penalty10000}}
-\outer\def\entry #1#2{
+\def\entry #1#2{
{\parfillskip=0in \parskip=0in \parindent=0in
\hangindent=1in \hangafter=1%
\noindent\hbox{#1}\indexdotfill #2\par
@@ -1441,6 +1567,7 @@ P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
\def\dfn##1{\realbackslash dfn {##1}}
}
+\def\thischaptername{No Chapter Title}
\outer\def\chapter{\parsearg\chapterzzz}
\def\chapterzzz #1{\seccheck{chapter}%
\secno=0 \subsecno=0 \subsubsecno=0
@@ -1751,6 +1878,8 @@ P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
\newskip \secheadingskip \secheadingskip = 21pt plus 8pt minus 4pt
\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
+% @paragraphindent is defined for the Info formatting commands only.
+\let\paragraphindent=\comment
% Section fonts are the base font at magstep2, which produces
% a size a bit more than 14 points in the default situation.
@@ -1944,26 +2073,23 @@ P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
\let\ptexequiv = \equiv
-{\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}
+%{\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}
-}
+%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
+% depth .1ex\hfil}
+%}
\def\point{$\star$}
-\def\result{\leavevmode\raise.15ex\copy\dblarrowbox}
-\def\expansion{\leavevmode\raise.1ex\copy\longdblarrowbox}
-\def\print{\leavevmode\lower.1ex\copy\pushcharbox}
-
-\def\equiv{\leavevmode\lower.1ex\copy\equivbox}
+\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}}
-% Does anyone really want this?
-% \def\bull{\leavevmode\copy\bullbox}
+\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
% Adapted from the TeXbook's \boxit.
{\tentt \global\dimen0 = 3em}% Width of the box.
@@ -2040,6 +2166,9 @@ P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
\def\afterenvbreak{\endgraf \ifdim\lastskip<\aboveenvskipamount
\removelastskip \penalty-50 \vskip\aboveenvskipamount \fi}
+% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
+\let\nonarrowing=\relax
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \cartouche: draw rectangle w/rounded corners around argument
\font\circle=lcircle10
@@ -2072,6 +2201,8 @@ P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
% side, and for 6pt waste from
% each corner char
\normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+ % Flag to tell @lisp, etc., not to narrow margin.
+ \let\nonarrowing=\comment
\vbox\bgroup
\baselineskip=0pt\parskip=0pt\lineskip=0pt
\carttop
@@ -2110,7 +2241,12 @@ P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
\let\par=\lisppar
\def\Elisp{\endgroup\afterenvbreak}%
\parskip=0pt
+% @cartouche defines \nonarrowing to inhibit narrowing
+% at next level down.
+\ifx\nonarrowing\relax
\advance \leftskip by \lispnarrowing
+\let\nonarrowing=\relax
+\fi
\parindent=0pt
\let\exdent=\internalexdent
\obeyspaces \obeylines \tt \rawbackslash
@@ -2139,7 +2275,12 @@ P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
\let\par=\lisppar
\def\Esmalllisp{\endgroup\afterenvbreak}%
\parskip=0pt
+% @cartouche defines \nonarrowing to inhibit narrowing
+% at next level down.
+\ifx\nonarrowing\relax
\advance \leftskip by \lispnarrowing
+\let\nonarrowing=\relax
+\fi
\parindent=0pt
\let\exdent=\internalexdent
\obeyspaces \obeylines \ninett \indexfonts \rawbackslash
@@ -2158,7 +2299,12 @@ P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
\let\par=\lisppar
\def\Edisplay{\endgroup\afterenvbreak}%
\parskip=0pt
+% @cartouche defines \nonarrowing to inhibit narrowing
+% at next level down.
+\ifx\nonarrowing\relax
\advance \leftskip by \lispnarrowing
+\let\nonarrowing=\relax
+\fi
\parindent=0pt
\let\exdent=\internalexdent
\obeyspaces \obeylines
@@ -2221,8 +2367,13 @@ P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else
\singlespace
\parindent=0pt
\def\Equotation{\par\endgroup\afterenvbreak}%
-\advance \rightskip by \lispnarrowing
-\advance \leftskip by \lispnarrowing}
+% @cartouche defines \nonarrowing to inhibit narrowing
+% at next level down.
+\ifx\nonarrowing\relax
+\advance \leftskip by \lispnarrowing
+\advance \rightskip by \lispnarrowing
+\let\nonarrowing=\relax
+\fi}
\message{defuns,}
% Define formatter for defuns
@@ -2792,7 +2943,7 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
\catcode `\=\other
\catcode `\=\other
\catcode `\=\other
-\catcode `\=\other
+\catcode 26=\other
\catcode `\^^[=\other
\catcode `\^^\=\other
\catcode `\^^]=\other
@@ -2883,6 +3034,10 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
% Prevent underfull vbox error messages.
\vbadness=10000
+% Following George Bush, just get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
% using an old version of TeX, don't do anything. We want the amount of
% stretch added to depend on the line length, hence the dependence on
@@ -2893,7 +3048,7 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
\divide\emergencystretch by 45
\fi
-% Use @smallbook to reset parameters for 7x9.5 format
+% Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25)
\def\smallbook{
\global\lispnarrowing = 0.3in
\global\baselineskip 12pt
@@ -2917,10 +3072,23 @@ Section\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno %
\def\afourpaper{
\global\tolerance=700
\global\hfuzz=1pt
+\global\baselineskip=12pt
+\global\parskip 15pt plus 1pt
\global\vsize= 53\baselineskip
\advance\vsize by \topskip
-\global\hsize= 5.85in % A4 wide 10pt
+%\global\hsize= 5.85in % A4 wide 10pt
+\global\hsize= 6.5in
+\global\outerhsize=\hsize
+\global\advance\outerhsize by 0.5in
+\global\outervsize=\vsize
+\global\advance\outervsize by 0.6in
+\global\doublecolumnhsize=\hsize
+\global\divide\doublecolumnhsize by 2
+\global\advance\doublecolumnhsize by -0.1in
+\global\doublecolumnvsize=\vsize
+\global\multiply\doublecolumnvsize by 2
+\global\advance\doublecolumnvsize by 0.1in
\global\pagewidth=\hsize
\global\pageheight=\vsize