gsrc-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gsrc-commit] trunk r8781: root some X


From: Carl Hansen
Subject: [Gsrc-commit] trunk r8781: root some X
Date: Sun, 13 Nov 2022 19:00:54 -0500 (EST)
User-agent: Bazaar (2.7.0dev1)

------------------------------------------------------------
revno: 8781
revision-id: carlhansen1234@gmail.com-20221114000047-pjv8ma7y0ubhun9i
parent: carlhansen1234@gmail.com-20221113234523-ckvxd652crad1hpv
committer: carlhansen1234@gmail.com
branch nick: trunk
timestamp: Sun 2022-11-13 16:00:47 -0800
message:
  root some X
modified:
  doc/texinfo.tex                texinfo.tex-20210501180820-1twq5wdsrp9yr9h7-1
  doc/version.texi               version.texi-20160617183752-q0c4b06v8yopjsxf-1
  pkg/gnualpha/gcc12snapshot/Makefile makefile-20210427033705-fj19fk40drjylrep-3
  pkg/gnualpha/gcc12snapshot/sha256sums 
sha256sums-20210427033705-fj19fk40drjylrep-4
  pkg/other/root/Makefile        makefile-20161025063657-4wx3eeqz615u34a7-3
  pkg/other/root/sha256sums      sha256sums-20161025063657-4wx3eeqz615u34a7-4
  pkg/xorg/libX11/Makefile       makefile-20180912192355-8l1fdk8s0igos0bj-4
  pkg/xorg/libX11/sha256sums     sha256sums-20180912192355-8l1fdk8s0igos0bj-5
  pkg/xorg/xorg-docs/Makefile    makefile-20170802201320-k4duvjm7nswl0kh7-3
  pkg/xorg/xorg-docs/sha256sums  sha256sums-20170802201320-k4duvjm7nswl0kh7-4
=== modified file 'doc/texinfo.tex'
--- a/doc/texinfo.tex   2022-11-13 01:06:52 +0000
+++ b/doc/texinfo.tex   2022-11-14 00:00:47 +0000
@@ -1,11 +1,11 @@
 % texinfo.tex -- TeX macros to handle Texinfo files.
-% 
+%
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2022-11-12.22}
+\def\texinfoversion{2021-04-25.21}
 %
-% Copyright 1985, 1986, 1988, 1990-2022 Free Software Foundation, Inc.
+% Copyright 1985, 1986, 1988, 1990-2021 Free Software Foundation, Inc.
 %
 % This texinfo.tex file is free software: you can redistribute it and/or
 % modify it under the terms of the GNU General Public License as
@@ -218,7 +218,7 @@
 % @errormsg{MSG}.  Do the index-like expansions on MSG, but if things
 % aren't perfect, it's not the end of the world, being an error message,
 % after all.
-% 
+%
 \def\errormsg{\begingroup \indexnofonts \doerrormsg}
 \def\doerrormsg#1{\errmessage{#1}}
 
@@ -241,6 +241,9 @@
 %
 \def\finalout{\overfullrule=0pt }
 
+\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\topandbottommargin \topandbottommargin=.75in
+
 % Output a mark which sets \thischapter, \thissection and \thiscolor.
 % We dump everything together because we only have one kind of mark.
 % This works because we only use \botmark / \topmark, not \firstmark.
@@ -314,8 +317,16 @@
 \newbox\footlinebox
 
 % When outputting the double column layout for indices, an output routine
-% is run several times, hiding the original value of \topmark.  Hence, save
-% \topmark at the beginning.
+% is run several times, which hides the original value of \topmark.  This
+% can lead to a page heading being output and duplicating the chapter heading
+% of the index.  Hence, save the contents of \topmark at the beginning of
+% the output routine.  The saved contents are valid until we actually
+% \shipout a page.
+%
+% (We used to run a short output routine to actually set \topmark and
+% \firstmark to the right values, but if this was called with an empty page
+% containing whatsits for writing index entries, the whatsits would be thrown
+% away and the index auxiliary file would remain empty.)
 %
 \newtoks\savedtopmark
 \newif\iftopmarksaved
@@ -340,9 +351,15 @@
   %
   \checkchapterpage
   %
-  % Make the heading and footing.  \makeheadline and \makefootline
-  % use the contents of \headline and \footline.
+  % Retrieve the information for the headings from the marks in the page,
+  % and call Plain TeX's \makeheadline and \makefootline, which use the
+  % values in \headline and \footline.
+  %
+  % Common context changes for both heading and footing.
+  % Do this outside of the \shipout so @code etc. will be expanded in
+  % the headline as they should be, not taken literally (outputting ''code).
   \def\commonheadfootline{\let\hsize=\txipagewidth \texinfochars}
+  %
   \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
   \global\setbox\headlinebox = \vbox{\commonheadfootline \makeheadline}%
   \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
@@ -432,7 +449,7 @@
   }%
 }
 
-% First remove any @comment, then any @c comment.  Pass the result on to 
+% First remove any @comment, then any @c comment.  Pass the result on to
 % \argcheckspaces.
 \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
 \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
@@ -600,6 +617,21 @@
 % @? is an end-of-sentence query.
 \def\?{?\spacefactor=\endofsentencespacefactor\space}
 
+% @frenchspacing on|off  says whether to put extra space after punctuation.
+%
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+  \def\temp{#1}%
+  \ifx\temp\onword \plainfrenchspacing
+  \else\ifx\temp\offword \plainnonfrenchspacing
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
+  \fi\fi
+}
+
 % @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.
@@ -693,22 +725,32 @@
   \dimen2 = \ht\strutbox
   \advance\dimen2 by \dp\strutbox
   \ifdim\dimen0 > \dimen2
-    % This is similar to the 'needspace' module in LaTeX.
-    % The first penalty allows a break if the end of the page is
-    % not too far away.  Following penalties and skips are discarded.
-    % Otherwise, require at least \dimen0 of vertical space.
-    %
-    % (We used to use a \vtop to reserve space, but this had spacing issues
-    % when followed by a section heading, as it was not a "discardable item".
-    % This also has the benefit of providing glue before the page break if
-    % there isn't enough space.)
-    \vskip0pt plus \dimen0
-    \penalty-100
-    \vskip0pt plus -\dimen0
-    \vskip \dimen0
+    %
+    % Do a \strut just to make the height of this box be normal, so the
+    % normal leading is inserted relative to the preceding line.
+    % And a page break here is fine.
+    \vtop to #1\mil{\strut\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 @group 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
-    \vskip -\dimen0
-    \penalty0\relax % this hides the above glue from \safewhatsit and \dobreak
+    %
+    % 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
   \fi
 }
 
@@ -1051,8 +1093,8 @@
         end
       end
     }
-    % The -2 in the arguments here gives all the input to TeX catcode 12 
-    % (other) or 10 (space), preventing undefined control sequence errors. See 
+    % The -2 in the arguments here gives all the input to TeX catcode 12
+    % (other) or 10 (space), preventing undefined control sequence errors. See
     % https://lists.gnu.org/archive/html/bug-texinfo/2019-08/msg00031.html
     %
   \endgroup
@@ -1146,7 +1188,7 @@
 % for display in the outlines, and in other places.  Thus, we have to
 % double any backslashes.  Otherwise, a name like "\node" will be
 % interpreted as a newline (\n), followed by o, d, e.  Not good.
-% 
+%
 % See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
 % related messages.  The final outcome is that it is up to the TeX user
 % to double the backslashes and otherwise make the string valid, so
@@ -1434,7 +1476,7 @@
       % We use the node names as the destinations.
       %
       % Currently we prefix the section name with the section number
-      % for chapter and appendix headings only in order to avoid too much 
+      % for chapter and appendix headings only in order to avoid too much
       % horizontal space being required in the PDF viewer.
       \def\numchapentry##1##2##3##4{%
         \dopdfoutline{##2 ##1}{count-\expnumber{chap##2}}{##3}{##4}}%
@@ -1457,7 +1499,7 @@
       % their "best" equivalent, based on the @documentencoding.  Too
       % much work for too little return.  Just use the ASCII equivalents
       % we use for the index sort strings.
-      % 
+      %
       \indexnofonts
       \setupdatafile
       % We can have normal brace characters in the PDF outlines, unlike
@@ -1682,7 +1724,7 @@
       % We use node names as destinations.
       %
       % Currently we prefix the section name with the section number
-      % for chapter and appendix headings only in order to avoid too much 
+      % for chapter and appendix headings only in order to avoid too much
       % horizontal space being required in the PDF viewer.
       \def\partentry##1##2##3##4{}% ignore parts in the outlines
       \def\numchapentry##1##2##3##4{%
@@ -2516,7 +2558,7 @@
 \def\it{\fam=\itfam \setfontstyle{it}}
 \def\sl{\fam=\slfam \setfontstyle{sl}}
 \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
-\def\tt{\fam=\ttfam \setfontstyle{tt}}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}\def\ttstylename{tt}
 
 % Texinfo sort of supports the sans serif font style, which plain TeX does not.
 % So we set up a \sf.
@@ -2544,30 +2586,34 @@
   \scriptfont\sffam=\sevensf
 }
 
-
-
-% \defineassignfonts{SIZE} -
-%   Define sequence \assignfontsSIZE, which switches between font sizes
-% by redefining the meanings of \STYLEfont.  (Just \STYLE additionally sets
-% the current \fam for math mode.)
-%
-\def\defineassignfonts#1{%
-  \expandafter\edef\csname assignfonts#1\endcsname{%
-    \let\noexpand\rmfont\csname #1rm\endcsname
-    \let\noexpand\itfont\csname #1it\endcsname
-    \let\noexpand\slfont\csname #1sl\endcsname
-    \let\noexpand\bffont\csname #1bf\endcsname
-    \let\noexpand\ttfont\csname #1tt\endcsname
-    \let\noexpand\smallcaps\csname #1sc\endcsname
-    \let\noexpand\sffont  \csname #1sf\endcsname
-    \let\noexpand\ifont   \csname #1i\endcsname
-    \let\noexpand\syfont  \csname #1sy\endcsname
-    \let\noexpand\ttslfont\csname #1ttsl\endcsname
-  }
-}
+%
+
+% The font-changing commands (all called \...fonts) redefine the meanings
+% of \STYLEfont, instead of just \STYLE.  We do this because \STYLE needs
+% to also set the current \fam for math mode.  Our \STYLE (e.g., \rm)
+% commands hardwire \STYLEfont to set the current font.
+%
+% The fonts used for \ifont are for "math italics"  (\itfont is for italics
+% in regular text).  \syfont is also used in math mode only.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower).  These relative commands are used
+% in, e.g., the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
 
 \def\assignfonts#1{%
-  \csname assignfonts#1\endcsname
+  \expandafter\let\expandafter\rmfont\csname #1rm\endcsname
+  \expandafter\let\expandafter\itfont\csname #1it\endcsname
+  \expandafter\let\expandafter\slfont\csname #1sl\endcsname
+  \expandafter\let\expandafter\bffont\csname #1bf\endcsname
+  \expandafter\let\expandafter\ttfont\csname #1tt\endcsname
+  \expandafter\let\expandafter\smallcaps\csname #1sc\endcsname
+  \expandafter\let\expandafter\sffont  \csname #1sf\endcsname
+  \expandafter\let\expandafter\ifont   \csname #1i\endcsname
+  \expandafter\let\expandafter\syfont  \csname #1sy\endcsname
+  \expandafter\let\expandafter\ttslfont\csname #1ttsl\endcsname
 }
 
 \newif\ifrmisbold
@@ -2591,21 +2637,12 @@
    \csname\curfontstyle\endcsname
 }%
 
-% Define the font-changing commands (all called \...fonts).
-% Each font-changing command also sets the names \lsize (one size lower)
-% and \lllsize (three sizes lower).  These relative commands are used
-% in, e.g., the LaTeX logo and acronyms.
-%
-% Note: The fonts used for \ifont are for "math italics"  (\itfont is for
-% italics in regular text).  \syfont is also used in math mode only.
-%
 \def\definefontsetatsize#1#2#3#4#5{%
-  \defineassignfonts{#1}%
 \expandafter\def\csname #1fonts\endcsname{%
   \def\curfontsize{#1}%
   \def\lsize{#2}\def\lllsize{#3}%
   \csname rmisbold#5\endcsname
-  \csname assignfonts#1\endcsname
+  \assignfonts{#1}%
   \resetmathfonts
   \setleading{#4}%
 }}
@@ -2650,22 +2687,9 @@
 % Check if we are currently using a typewriter font.  Since all the
 % Computer Modern typewriter fonts have zero interword stretch (and
 % shrink), and it is reasonable to expect all typewriter fonts to have
-% this property, we can check that font parameter. #1 is what to
-% print if we are indeed using \tt; #2 is what to print otherwise.
-\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
-
-% Same as above, but check for italic font.  Actually this also catches
-% non-italic slanted fonts since it is impossible to distinguish them from
-% italic fonts.  But since this is only used by $ and it uses \sl anyway
-% this is not a problem.
-\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
-
-
-% Check if internal flag is clear, i.e. has not been @set.
-\def\ifflagclear#1#2#3{%
-  \expandafter\ifx\csname SET#1\endcsname\relax
-  #2\else#3\fi
-}
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
 
 {
 \catcode`\'=\active
@@ -2682,32 +2706,37 @@
 % lilypond developers report.  xpdf does work with the regular 0x27.
 %
 \def\codequoteright{%
-  \ifusingtt
-      {\ifflagclear{txicodequoteundirected}%
-          {\ifflagclear{codequoteundirected}%
-              {'}%
-              {\char'15 }}%
-          {\char'15 }}%
-      {'}%
+  \ifmonospace
+    \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+      \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+        '%
+      \else \char'15 \fi
+    \else \char'15 \fi
+   \else
+     '%
+   \fi
 }
-
+%
 % and a similar option for the left quote char vs. a grave accent.
 % Modern fonts display ASCII 0x60 as a grave accent, so some people like
 % the code environments to do likewise.
-% \relax disables Spanish ligatures ?` and !` of \tt font.
 %
 \def\codequoteleft{%
-  \ifusingtt
-      {\ifflagclear{txicodequotebacktick}%
-          {\ifflagclear{codequotebacktick}%
-              {\relax`}%
-              {\char'22 }}%
-          {\char'22 }}%
-      {\relax`}%
+  \ifmonospace
+    \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+      \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+        % [Knuth] pp. 380,381,391
+        % \relax disables Spanish ligatures ?` and !` of \tt font.
+        \relax`%
+      \else \char'22 \fi
+    \else \char'22 \fi
+   \else
+     \relax`%
+   \fi
 }
 
 % Commands to set the quote options.
-% 
+%
 \parseargdef\codequoteundirected{%
   \def\temp{#1}%
   \ifx\temp\onword
@@ -2748,18 +2777,17 @@
 % If we are in a monospaced environment, however, 1) always use \ttsl,
 % and 2) do not add an italic correction.
 \def\dosmartslant#1#2{%
-  \ifusingtt 
+  \ifusingtt
     {{\ttsl #2}\let\next=\relax}%
-    {\def\next{{#1#2}\smartitaliccorrection}}%
+    {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
   \next
 }
 \def\smartslanted{\dosmartslant\sl}
 \def\smartitalic{\dosmartslant\it}
 
-% Output an italic correction unless the following character is such as
-% not to need one.
-\def\smartitaliccorrection{\futurelet\next\smartitaliccorrectionx}
-\def\smartitaliccorrectionx{%
+% Output an italic correction unless \next (presumed to be the following
+% character) is such as not to need one.
+\def\smartitaliccorrection{%
   \ifx\next,%
   \else\ifx\next-%
   \else\ifx\next.%
@@ -2770,41 +2798,27 @@
   \aftersmartic
 }
 
-% @cite unconditionally uses \sl with \smartitaliccorrection.
-\def\cite#1{{\sl #1}\smartitaliccorrection}
-
-% @var unconditionally uses \sl.  This gives consistency for
-% parameter names whether they are in @def, @table @code or a
-% regular paragraph.
-%  To get ttsl font for @var when used in code context, @set txicodevaristt.
-% The \null is to reset \spacefactor.
+% Unconditional use \ttsl, and no ic.  @var is set to this for defuns.
+\def\ttslanted#1{{\ttsl #1}}
+
+% @cite is like \smartslanted except unconditionally use \sl.  We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
+
 \def\aftersmartic{}
 \def\var#1{%
   \let\saveaftersmartic = \aftersmartic
   \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
-  %
-  \ifflagclear{txicodevaristt}%
-    {\def\varnext{{{\sl #1}}\smartitaliccorrection}}%
-    {\def\varnext{\smartslanted{#1}}}%
-  \varnext
+  \smartslanted{#1}%
 }
 
-% To be removed after next release
-\def\SETtxicodevaristt{}% @set txicodevaristt
-
 \let\i=\smartitalic
 \let\slanted=\smartslanted
 \let\dfn=\smartslanted
 \let\emph=\smartitalic
 
-% @r for roman font, used for code comment
-\def\r#1{{%
-  \usenormaldash % get --, --- ligatures even if in @code
-  \defcharsdefault  % in case on def line
-  \rm #1}}
-{\catcode`-=\active \gdef\usenormaldash{\let-\normaldash}}
-
-% @sc, undocumented @ii.
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}}              % roman font
 \def\sc#1{{\smallcaps#1}}       % smallcaps font
 \def\ii#1{{\it #1}}             % italic font
 
@@ -2822,54 +2836,27 @@
 \def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
 \def\restorehyphenation{\hyphenchar\font = `- }
 
-\newif\iffrenchspacing
-\frenchspacingfalse
-
 % Set sfcode to normal for the chars that usually have another value.
 % Can't use plain's \frenchspacing because it uses the `\x notation, and
 % sometimes \x has an active definition that messes things up.
 %
 \catcode`@=11
   \def\plainfrenchspacing{%
-    \iffrenchspacing\else
-      \frenchspacingtrue
-      \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m
-      \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m
-      \def\endofsentencespacefactor{1000}% for @. and friends
-    \fi
+    \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m
+    \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m
+    \def\endofsentencespacefactor{1000}% for @. and friends
   }
   \def\plainnonfrenchspacing{%
-    \iffrenchspacing
-      \frenchspacingfalse
-       \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
-       \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
-       \def\endofsentencespacefactor{3000}% for @. and friends
-    \fi
+    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+    \def\endofsentencespacefactor{3000}% for @. and friends
   }
 \catcode`@=\other
 \def\endofsentencespacefactor{3000}% default
 
-% @frenchspacing on|off  says whether to put extra space after punctuation.
-%
-\def\onword{on}
-\def\offword{off}
-%
-\let\frenchspacingsetting\plainnonfrenchspacing % used in output routine
-\parseargdef\frenchspacing{%
-  \def\temp{#1}%
-  \ifx\temp\onword \let\frenchspacingsetting\plainfrenchspacing
-  \else\ifx\temp\offword \let\frenchspacingsetting\plainnonfrenchspacing
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
-  \fi\fi
-  \frenchspacingsetting
-}
-
-
 % @t, explicit typewriter.
 \def\t#1{%
-  {\tt \defcharsdefault \plainfrenchspacing #1}%
+  {\tt \plainfrenchspacing #1}%
   \null
 }
 
@@ -2936,14 +2923,14 @@
   \gdef\codedash{\futurelet\next\codedashfinish}
   \gdef\codedashfinish{%
     \normaldash % always output the dash character itself.
-    % 
+    %
     % Now, output a discretionary to allow a line break, unless
     % (a) the next character is a -, or
     % (b) the preceding character is a -.
     % E.g., given --posix, we do not want to allow a break after either -.
     % Given --foo-bar, we do want to allow a break between the - and the b.
     \ifx\next\codedash \else
-      \ifx\codedashprev\codedash 
+      \ifx\codedashprev\codedash
       \else \discretionary{}{}{}\fi
     \fi
     % we need the space after the = for the case when \next itself is a
@@ -3033,7 +3020,7 @@
         % For pdfTeX and LuaTeX
         \ifurefurlonlylink
           % PDF plus option to not display url, show just arg
-          \unhbox0             
+          \unhbox0
         \else
           % PDF, normally display both arg and url for consistency,
           % visibility, if the pdf is eventually used to print, etc.
@@ -3046,7 +3033,7 @@
           % For XeTeX
           \ifurefurlonlylink
             % PDF plus option to not display url, show just arg
-            \unhbox0             
+            \unhbox0
           \else
             % PDF, normally display both arg and url for consistency,
             % visibility, if the pdf is eventually used to print, etc.
@@ -3104,10 +3091,10 @@
   }
 }
 
-% By default we'll break after the special characters, but some people like to 
-% break before the special chars, so allow that.  Also allow no breaking at 
+% By default we'll break after the special characters, but some people like to
+% break before the special chars, so allow that.  Also allow no breaking at
 % all, for manual control.
-% 
+%
 \parseargdef\urefbreakstyle{%
   \def\txiarg{#1}%
   \ifx\txiarg\wordnone
@@ -3126,10 +3113,10 @@
 \def\wordnone{none}
 
 % Allow a ragged right output to aid breaking long URL's.  There can
-% be a break at the \allowbreak with no extra glue (if the existing stretch in 
+% be a break at the \allowbreak with no extra glue (if the existing stretch in
 % the line is sufficient), a break at the \penalty with extra glue added
 % at the end of the line, or no break at all here.
-%   Changing the value of the penalty and/or the amount of stretch affects how 
+%   Changing the value of the penalty and/or the amount of stretch affects how
 % preferable one choice is over the other.
 \def\urefallowbreak{%
   \penalty0\relax
@@ -3184,8 +3171,16 @@
 % Default is `distinct'.
 \kbdinputstyle distinct
 
-\def\kbd#1{%
-  \tclose{\kbdfont\setcodequotes#1}%
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
+
+\def\xkey{\key}
+\def\kbdsub#1#2#3\par{%
+  \def\one{#1}\def\three{#3}\def\threex{??}%
+  \ifx\one\xkey\ifx\threex\three \key{#2}%
+  \else{\tclose{\kbdfont\setcodequotes\look}}\fi
+  \else{\tclose{\kbdfont\setcodequotes\look}}\fi
 }
 
 % definition of @key that produces a lozenge.  Doesn't adjust to text size.
@@ -3198,9 +3193,14 @@
 %    \kern-0.4pt\hrule}%
 %  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
 
-% definition of @key with no lozenge.
+% definition of @key with no lozenge.  If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle.  But
+% if it isn't monospace, then use \tt.
 %
-\def\key#1{{\setregularquotes \nohyphenation \tt #1}\null}
+\def\key#1{{\setregularquotes
+  \nohyphenation
+  \ifmonospace\else\tt\fi
+  #1}\null}
 
 % @clicksequence{File @click{} Open ...}
 \def\clicksequence#1{\begingroup #1\endgroup}
@@ -3344,7 +3344,7 @@
 % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
 % Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
 % except specified as a normal braced arg, so no newlines to worry about.
-% 
+%
 \def\outfmtnametex{tex}
 %
 \long\def\inlinefmt#1{\doinlinefmt #1,\finish}
@@ -3352,7 +3352,7 @@
   \def\inlinefmtname{#1}%
   \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
 }
-% 
+%
 % @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if
 % FMTNAME is tex, else ELSE-TEXT.
 \long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish}
@@ -3368,7 +3368,7 @@
 % *right* brace they would have to use a command anyway, so they may as
 % well use a command to get a left brace too.  We could re-use the
 % delimiter character idea from \verb, but it seems like overkill.
-% 
+%
 \long\def\inlineraw{\tex \doinlineraw}
 \long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
 \def\doinlinerawtwo#1,#2,\finish{%
@@ -3403,8 +3403,8 @@
 \let\atchar=\@
 
 % @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
-\def\lbracechar{{\ifusingtt{\char123}{\ensuremath\lbrace}}}
-\def\rbracechar{{\ifusingtt{\char125}{\ensuremath\rbrace}}}
+\def\lbracechar{{\ifmonospace\char123\else\ensuremath\lbrace\fi}}
+\def\rbracechar{{\ifmonospace\char125\else\ensuremath\rbrace\fi}}
 \let\{=\lbracechar
 \let\}=\rbracechar
 
@@ -3458,13 +3458,8 @@
        % Revert to plain's \scriptsize, which is 7pt.
        \count255=\the\fam $\fam\count255 \scriptstyle A$%
      \else
-       \ifx\curfontsize\smallword
-         % For footnotes and indices
-         \count255=\the\fam $\fam\count255 \scriptstyle A$%
-       \else
-         % For 11pt, we can use our lllsize.
-         \switchtolllsize A%
-       \fi
+       % For 11pt, we can use our lllsize.
+       \switchtolllsize A%
      \fi
      }%
      \vss
@@ -3472,7 +3467,6 @@
   \kern-.15em
   \TeX
 }
-\def\smallword{small}
 
 % Some math mode symbols.  Define \ensuremath to switch into math mode
 % unless we are already there.  Expansion tricks may not be needed here,
@@ -3551,7 +3545,7 @@
 
 % @pounds{} is a sterling sign, which Knuth put in the CM italic font.
 %
-\def\pounds{{\ifusingtt{\ecfont\char"BF}{\it\$}}}
+\def\pounds{\ifmonospace{\ecfont\char"BF}\else{\it\$}\fi}
 
 % @euro{} comes from a separate font, depending on the current style.
 % We use the free feym* fonts from the eurosym package by Henrik
@@ -3620,9 +3614,6 @@
 \def\quotedblbase{{\ecfont \char"12}}
 \def\quotesinglbase{{\ecfont \char"0D}}
 %
-\def\L{{\ecfont \char"8A}} % L with stroke
-\def\l{{\ecfont \char"AA}} % l with stroke
-%
 % This positioning is not perfect (see the ogonek LaTeX package), but
 % we have the precomposed glyphs for the most common cases.  We put the
 % tests to use those glyphs in the single \ogonek macro so we have fewer
@@ -3654,7 +3645,7 @@
 % for non-CM glyphs.  That is ec* for regular text and tc* for the text
 % companion symbols (LaTeX TS1 encoding).  Both are part of the ec
 % package and follow the same conventions.
-% 
+%
 \def\ecfont{\etcfont{e}}
 \def\tcfont{\etcfont{t}}
 %
@@ -3665,17 +3656,18 @@
   % hopefully nobody will notice/care.
   \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
   \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
-  \ifusingtt
-      % typewriter:
-     {\font\thisecfont = #1ctt\ecsize \space at \nominalsize}%
-  % else
-     {\ifx\curfontstyle\bfstylename
-        % bold:
-        \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize
-      \else
-        % regular:
-        \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize
-      \fi}%
+  \ifmonospace
+    % typewriter:
+    \font\thisecfont = #1ctt\ecsize \space at \nominalsize
+  \else
+    \ifx\curfontstyle\bfstylename
+      % bold:
+      \font\thisecfont = #1cb\ifusingit{i}{x}\ecsize \space at \nominalsize
+    \else
+      % regular:
+      \font\thisecfont = #1c\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+    \fi
+  \fi
   \thisecfont
 }
 
@@ -3691,10 +3683,7 @@
 
 % @textdegree - the normal degrees sign.
 %
-\def\textdegree{%
-   \ifmmode ^\circ
-   \else {\tcfont \char 176}%
-   \fi}
+\def\textdegree{$^\circ$}
 
 % Laurent Siebenmann reports \Orb undefined with:
 %  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
@@ -3711,11 +3700,11 @@
 % only change font for tt for correct kerning and to avoid using
 % \ecfont unless necessary.
 \def\quotedblleft{%
-  \ifusingtt{{\ecfont\char"10}}{{\char"5C}}%
+  \ifmonospace{\ecfont\char"10}\else{\char"5C}\fi
 }
 
 \def\quotedblright{%
-  \ifusingtt{{\ecfont\char"11}}{{\char`\"}}%
+  \ifmonospace{\ecfont\char"11}\else{\char`\"}\fi
 }
 
 
@@ -3736,7 +3725,7 @@
               after the title page.}}%
 \def\setshortcontentsaftertitlepage{%
   \errmessage{@setshortcontentsaftertitlepage has been removed as a Texinfo
-              command; move your @shortcontents and @contents commands if you 
+              command; move your @shortcontents and @contents commands if you
               want the contents after the title page.}}%
 
 \parseargdef\shorttitlepage{%
@@ -3791,7 +3780,7 @@
 % don't worry much about spacing, ragged right.  This should be used
 % inside a \vbox, and fonts need to be set appropriately first. \par should
 % be specified before the end of the \vbox, since a vbox is a group.
-% 
+%
 \def\raggedtitlesettings{%
   \rm
   \hyphenpenalty=10000
@@ -3845,16 +3834,15 @@
 \newtoks\oddfootline     % footline on odd pages
 
 % Now make \makeheadline and \makefootline in Plain TeX use those variables
-\headline={{\textfonts\rm\frenchspacingsetting
+\headline={{\textfonts\rm
             \ifchapterpage
               \ifodd\pageno\the\oddchapheadline\else\the\evenchapheadline\fi
             \else
               \ifodd\pageno\the\oddheadline\else\the\evenheadline\fi
             \fi}}
 
-\footline={{\textfonts\rm\frenchspacingsetting
-            \ifodd\pageno \the\oddfootline \else \the\evenfootline \fi}%
-           \HEADINGShook}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+                            \else \the\evenfootline \fi}\HEADINGShook}
 \let\HEADINGShook=\relax
 
 % Commands to set those variables.
@@ -3980,7 +3968,7 @@
 \global\oddfootline={\hfil}
 \global\evenheadline={\line{\folio\hfil\thistitle}}
 \global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\evenchapheadline={\line{\folio\hfil\thistitle}}
+\global\evenchapheadline={\line{\folio\hfil}}
 \global\oddchapheadline={\line{\hfil\folio}}
 \global\let\contentsalignmacro = \chapoddpage
 }
@@ -4368,7 +4356,8 @@
 % undo it ourselves.
 \def\headitemfont{\b}% for people to use in the template row; not changeable
 \def\headitem{%
-  \crcr % must appear first
+  \checkenv\multitable
+  \crcr
   \gdef\headitemcrhook{\nobreak}% attempt to avoid page break after headings
   \global\everytab={\bf}% can't use \headitemfont since the parsing differs
   \the\everytab % for the first item
@@ -4430,7 +4419,7 @@
       % Find the correct column width
       \hsize=\expandafter\csname col\the\colcount\endcsname
       %
-      \advance\rightskip by -1\rightskip % Zero leaving only any stretch
+      \rightskip=0pt
       \ifnum\colcount=1
         \advance\hsize by\leftskip % Add indent of surrounding text
       \else
@@ -4453,7 +4442,7 @@
 
 \message{conditionals,}
 
-% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotlatex, @ifnotplaintext,
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
 % @ifnotxml always succeed.  They currently do nothing; we don't
 % attempt to check whether the conditionals are properly nested.  But we
 % have to remember that they are conditionals, so that @end doesn't
@@ -4467,7 +4456,6 @@
 \makecond{ifnotdocbook}
 \makecond{ifnothtml}
 \makecond{ifnotinfo}
-\makecond{ifnotlatex}
 \makecond{ifnotplaintext}
 \makecond{ifnotxml}
 
@@ -4480,12 +4468,10 @@
 \def\ifdocbook{\doignore{ifdocbook}}
 \def\ifhtml{\doignore{ifhtml}}
 \def\ifinfo{\doignore{ifinfo}}
-\def\iflatex{\doignore{iflatex}}
 \def\ifnottex{\doignore{ifnottex}}
 \def\ifplaintext{\doignore{ifplaintext}}
 \def\ifxml{\doignore{ifxml}}
 \def\ignore{\doignore{ignore}}
-\def\latex{\doignore{latex}}
 \def\menu{\doignore{menu}}
 \def\xml{\doignore{xml}}
 
@@ -4627,7 +4613,7 @@
 % Like \expandablevalue, but completely expandable (the \message in the
 % definition above operates at the execution level of TeX).  Used when
 % writing to auxiliary files, due to the expansion that \write does.
-% If flag is undefined, pass through an unexpanded @value command: maybe it 
+% If flag is undefined, pass through an unexpanded @value command: maybe it
 % will be set by the time it is read back in.
 %
 % NB flag names containing - or _ may not work here.
@@ -4651,7 +4637,7 @@
 
 % @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
 % with @set.
-% 
+%
 % To get the special treatment we need for `@end ifset,' we call
 % \makecond and then redefine.
 %
@@ -4684,7 +4670,7 @@
 % without the @) is in fact defined.  We can only feasibly check at the
 % TeX level, so something like `mathcode' is going to considered
 % defined even though it is not a Texinfo command.
-% 
+%
 \makecond{ifcommanddefined}
 \def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
 %
@@ -4792,8 +4778,8 @@
 \def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
 \def\docodeindexxxx #1{\docind{\indexname}{#1}}
 
-
-% Used for the aux, toc and index files to prevent expansion of Texinfo 
+
+% Used for the aux, toc and index files to prevent expansion of Texinfo
 % commands.
 %
 \def\atdummies{%
@@ -5009,24 +4995,25 @@
 \catcode`\-=13
 \catcode`\`=13
   \gdef\indexnonalnumdisappear{%
-    \ifflagclear{txiindexlquoteignore}{}{%
+    \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else
       % @set txiindexlquoteignore makes us ignore left quotes in the sort term.
       % (Introduced for FSFS 2nd ed.)
       \let`=\empty
-    }%
+    \fi
     %
-    \ifflagclear{txiindexbackslashignore}{}{%
+    \expandafter\ifx\csname SETtxiindexbackslashignore\endcsname\relax\else
       \backslashdisappear
-    }%
-    \ifflagclear{txiindexhyphenignore}{}{%
+    \fi
+    %
+    \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else
       \def-{}%
-    }%
-    \ifflagclear{txiindexlessthanignore}{}{%
+    \fi
+    \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else
       \def<{}%
-    }%
-    \ifflagclear{txiindexatsignignore}{}{%
+    \fi
+    \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else
       \def\@{}%
-    }%
+    \fi
   }
 
   \gdef\indexnonalnumreappear{%
@@ -5139,11 +5126,11 @@
   \let\value\indexnofontsvalue
 }
 
-% Give the control sequence a definition that removes the {} that follows 
+% Give the control sequence a definition that removes the {} that follows
 % its use, e.g. @AA{} -> AA
 \def\indexnofontsdef#1#2{\def#1##1{#2}}%
 
-
+
 
 
 % #1 is the index name, #2 is the entry text.
@@ -5184,7 +5171,7 @@
   \ifx\suffix\indexisfl\def\suffix{f1}\fi
   % Open the file
   \immediate\openout\csname#1indfile\endcsname \jobname.\suffix
-  % Using \immediate above here prevents an object entering into the current 
+  % Using \immediate above here prevents an object entering into the current
   % box, which could confound checks such as those in \safewhatsit for
   % preceding skips.
   \typeout{Writing index file \jobname.\suffix}%
@@ -5236,7 +5223,7 @@
   \ifx\segment\isfinish
   \else
     %
-    % Fully expand the segment, throwing away any @sortas directives, and 
+    % Fully expand the segment, throwing away any @sortas directives, and
     % trim spaces.
     \edef\trimmed{\segment}%
     \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}%
@@ -5273,10 +5260,7 @@
         \xdef\trimmed{\segment}%
         \xdef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}%
         \xdef\indexsortkey{\trimmed}%
-        \ifx\indexsortkey\empty
-          \message{Empty index sort key near line \the\inputlineno}%
-          \xdef\indexsortkey{ }%
-        \fi
+        \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi
       }\fi
       %
       % Append to \fullindexsortkey.
@@ -5300,12 +5284,12 @@
 % the current value of \escapechar.
 \def\escapeisbackslash{\escapechar=`\\}
 
-% Use \ in index files by default.  texi2dvi didn't support @ as the escape 
-% character (as it checked for "\entry" in the files, and not "@entry").  When 
-% the new version of texi2dvi has had a chance to become more prevalent, then 
-% the escape character can change back to @ again.  This should be an easy 
-% change to make now because both @ and \ are only used as escape characters 
in 
-% index files, never standing for themselves. 
+% Use \ in index files by default.  texi2dvi didn't support @ as the escape
+% character (as it checked for "\entry" in the files, and not "@entry").  When
+% the new version of texi2dvi has had a chance to become more prevalent, then
+% the escape character can change back to @ again.  This should be an easy
+% change to make now because both @ and \ are only used as escape characters in
+% index files, never standing for themselves.
 %
 \set txiindexescapeisbackslash
 
@@ -5321,14 +5305,16 @@
   %
   \atdummies
   %
-  \ifflagclear{txiindexescapeisbackslash}{}{\escapeisbackslash}%
+  \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax\else
+    \escapeisbackslash
+  \fi
   %
   % For texindex which always views { and } as separators.
   \def\{{\lbracechar{}}%
   \def\}{\rbracechar{}}%
   \uccode`\~=`\\ \uppercase{\def~{\backslashchar{}}}%
   %
-  % Split the entry into primary entry and any subentries, and get the index 
+  % Split the entry into primary entry and any subentries, and get the index
   % sort key.
   \splitindexentry\indextext
   %
@@ -5505,33 +5491,33 @@
 % old index files using \ as the escape character.  Reading this would
 % at best lead to typesetting garbage, at worst a TeX syntax error.
 \def\printindexzz#1#2\finish{%
-  \ifflagclear{txiindexescapeisbackslash}{%
+  \expandafter\ifx\csname SETtxiindexescapeisbackslash\endcsname\relax
     \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1
-      \ifflagclear{txiskipindexfileswithbackslash}{%
+      \expandafter\ifx\csname SETtxiskipindexfileswithbackslash\endcsname\relax
 \errmessage{%
-ERROR: A sorted index file in an obsolete format was skipped.  
+ERROR: A sorted index file in an obsolete format was skipped.
 To fix this problem, please upgrade your version of 'texi2dvi'
 or 'texi2pdf' to that at <https://ftp.gnu.org/gnu/texinfo>.
-If you are using an old version of 'texindex' (part of the Texinfo 
+If you are using an old version of 'texindex' (part of the Texinfo
 distribution), you may also need to upgrade to a newer version (at least 6.0).
 You may be able to typeset the index if you run
 'texindex \jobname.\indexname' yourself.
-You could also try setting the 'txiindexescapeisbackslash' flag by 
+You could also try setting the 'txiindexescapeisbackslash' flag by
 running a command like
-'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'.  If you do 
+'texi2dvi -t "@set txiindexescapeisbackslash" \jobname.texi'.  If you do
 this, Texinfo will try to use index files in the old format.
-If you continue to have problems, deleting the index files and starting again 
+If you continue to have problems, deleting the index files and starting again
 might help (with 'rm \jobname.?? \jobname.??s')%
 }%
-      }{%
+      \else
         (Skipped sorted index file in obsolete format)
-      }%
+      \fi
     \else
       \begindoublecolumns
       \input \jobname.\indexname s
       \enddoublecolumns
     \fi
-  }{%
+  \else
     \begindoublecolumns
     \catcode`\\=0\relax
     %
@@ -5541,7 +5527,7 @@
     \catcode`\@=0\relax
     \input \jobname.\indexname s
     \enddoublecolumns
-  }%
+  \fi
 }
 
 % These macros are used by the sorted index file itself.
@@ -5593,7 +5579,7 @@
   % bottom of a column to reduce an increase in inter-line spacing.
   \nobreak
   \vskip 0pt plus 5\baselineskip
-  \penalty -300 
+  \penalty -300
   \vskip 0pt plus -5\baselineskip
   %
   % Typeset the initial.  Making this add up to a whole number of
@@ -5709,7 +5695,7 @@
       \advance\dimen@ii by 1\dimen@i
       \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line
       \ifdim\dimen@ > 0.8\dimen@ii   % due to long index text
-        % Try to split the text roughly evenly.  \dimen@ will be the length of 
+        % Try to split the text roughly evenly.  \dimen@ will be the length of
         % the first line.
         \dimen@ = 0.7\dimen@
         \dimen@ii = \hsize
@@ -5917,7 +5903,7 @@
 \newbox\balancedcolumns
 \setbox\balancedcolumns=\vbox{shouldnt see this}%
 %
-% Only called for the last of the double column material.  \doublecolumnout 
+% Only called for the last of the double column material.  \doublecolumnout
 % does the others.
 \def\balancecolumns{%
   \setbox0 = \vbox{\unvbox\PAGE}% like \box255 but more efficient, see p.120.
@@ -5945,7 +5931,7 @@
     }%
     % Now the left column is in box 1, and the right column in box 3.
     %
-    % Check whether the left column has come out higher than the page itself.  
+    % Check whether the left column has come out higher than the page itself.
     % (Note that we have doubled \vsize for the double columns, so
     % the actual height of the page is 0.5\vsize).
     \ifdim2\ht1>\vsize
@@ -5977,7 +5963,7 @@
 % Chapters, sections, etc.
 
 % Let's start with @part.
-\parseargdef\part{\partzzz{#1}}
+\outer\parseargdef\part{\partzzz{#1}}
 \def\partzzz#1{%
   \chapoddpage
   \null
@@ -6242,7 +6228,7 @@
 \let\top\unnumbered
 
 % Sections.
-% 
+%
 \outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
 \def\seczzz#1{%
   \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
@@ -6265,7 +6251,7 @@
 }
 
 % Subsections.
-% 
+%
 % normally calls numberedsubseczzz:
 \outer\parseargdef\numberedsubsec{\numhead2{#1}}
 \def\numberedsubseczzz#1{%
@@ -6290,7 +6276,7 @@
 }
 
 % Subsubsections.
-% 
+%
 % normally numberedsubsubseczzz:
 \outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
 \def\numberedsubsubseczzz#1{%
@@ -6405,16 +6391,6 @@
 \def\Yappendixkeyword{Yappendix}
 \def\Yomitfromtockeyword{Yomitfromtoc}
 %
-%
-% Definitions for @thischapter. These can be overridden in translation
-% files.
-\def\thischapterAppendix{%
-  \putwordAppendix{} \thischapternum: \thischaptername}
-
-\def\thischapterChapter{%
-  \putwordChapter{} \thischapternum: \thischaptername}
-%
-%
 \def\chapmacro#1#2#3{%
   \expandafter\ifx\thisenv\titlepage\else
     \checkenv{}% chapters, etc., should not start inside an environment.
@@ -6437,14 +6413,22 @@
     \xdef\currentchapterdefs{%
       \gdef\noexpand\thischaptername{\the\toks0}%
       \gdef\noexpand\thischapternum{\appendixletter}%
-      \let\noexpand\thischapter\noexpand\thischapterAppendix
+      % \noexpand\putwordAppendix avoids expanding indigestible
+      % commands in some of the translations.
+      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
+                                 \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
     }%
   \else
     \toks0={#1}%
     \xdef\currentchapterdefs{%
       \gdef\noexpand\thischaptername{\the\toks0}%
       \gdef\noexpand\thischapternum{\the\chapno}%
-      \let\noexpand\thischapter\noexpand\thischapterChapter
+      % \noexpand\putwordChapter avoids expanding indigestible
+      % commands in some of the translations.
+      \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
+                                 \noexpand\thischapternum:
+                                 \noexpand\thischaptername}%
     }%
   \fi\fi\fi
   %
@@ -6530,12 +6514,6 @@
 \def\subsubsecheadingskip{\subsecheadingskip}
 \def\subsubsecheadingbreak{\subsecheadingbreak}
 
-% Definition for @thissection. This can be overridden in translation
-% files.
-\def\thissectionDef{%
-  \putwordSection{} \thissectionnum: \thissectionname}
-%
-
 
 % Print any size, any type, section title.
 %
@@ -6577,7 +6555,11 @@
         \xdef\currentsectiondefs{%
           \gdef\noexpand\thissectionname{\the\toks0}%
           \gdef\noexpand\thissectionnum{#4}%
-          \let\noexpand\thissection\noexpand\thissectionDef
+          % \noexpand\putwordSection avoids expanding indigestible
+          % commands in some of the translations.
+          \gdef\noexpand\thissection{\noexpand\putwordSection{}
+                                     \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
         }%
       \fi
     \else
@@ -6586,7 +6568,11 @@
         \xdef\currentsectiondefs{%
           \gdef\noexpand\thissectionname{\the\toks0}%
           \gdef\noexpand\thissectionnum{#4}%
-          \let\noexpand\thissection\noexpand\thissectionDef
+          % \noexpand\putwordSection avoids expanding indigestible
+          % commands in some of the translations.
+          \gdef\noexpand\thissection{\noexpand\putwordSection{}
+                                     \noexpand\thissectionnum:
+                                     \noexpand\thissectionname}%
         }%
       \fi
     \fi\fi\fi
@@ -6774,11 +6760,6 @@
     \ifnum\romancount=0 \global\romancount=\pagecount \fi
 }
 
-% \raggedbottom in plain.tex hardcodes \topskip so override it
-\catcode`\@=11
-\def\raggedbottom{\advance\topskip by 0pt plus60pt \r@ggedbottomtrue}
-\catcode`\@=\other
-
 % redefined for the two-volume lispref.  We always output on
 % \jobname.toc even if this is redefined.
 %
@@ -7126,19 +7107,12 @@
   \startsavinginserts
   \lskip=\leftskip \rskip=\rightskip
   \leftskip=0pt\rightskip=0pt % we want these *outside*.
-  %
-  % Set paragraph width for text inside cartouche.  There are
-  % left and right margins of 3pt each plus two vrules 0.4pt each.
   \cartinner=\hsize \advance\cartinner by-\lskip
   \advance\cartinner by-\rskip
-  \advance\cartinner by -6.8pt
-  %
-  % For drawing top and bottom of cartouche.  Each corner char
-  % adds 6pt and we take off the width of a rule to line up with the
-  % right boundary perfectly.
   \cartouter=\hsize
-  \advance\cartouter by 11.6pt
-  %
+  \advance\cartouter by 18.4pt % allow for 3pt kerns on either
+                               % side, and for 6pt waste from
+                               % each corner char, and rule thickness
   \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
   %
   % If this cartouche directly follows a sectioning command, we need the
@@ -7146,7 +7120,7 @@
   % collide with the section heading.
   \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
   %
-  \setbox\groupbox=\vtop\bgroup
+  \setbox\groupbox=\vbox\bgroup
       \baselineskip=0pt\parskip=0pt\lineskip=0pt
       \carttop
       \hbox\bgroup
@@ -7313,6 +7287,22 @@
 }
 \let\Eraggedright\par
 
+\envdef\raggedleft{%
+  \parindent=0pt \leftskip0pt plus2em
+  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+  \hbadness=10000 % Last line will usually be underfull, so turn off
+                  % badness reporting.
+}
+\let\Eraggedleft\par
+
+\envdef\raggedcenter{%
+  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
+  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+  \hbadness=10000 % Last line will usually be underfull, so turn off
+                  % badness reporting.
+}
+\let\Eraggedcenter\par
+
 
 % @quotation does normal linebreaking (hence we can't use \nonfillstart)
 % and narrows the margins.  We keep \parskip nonzero in general, since
@@ -7352,7 +7342,7 @@
 
 % @indentedblock is like @quotation, but indents only on the left and
 % has no optional argument.
-% 
+%
 \makedispenvdef{indentedblock}{\indentedblockstart}
 %
 \def\indentedblockstart{%
@@ -7535,11 +7525,9 @@
 % file; b) letting users define the frontmatter in as flexible order as
 % possible is desirable.
 %
-\def\copying{\checkenv{}\begingroup\macrobodyctxt\docopying}
-{\catcode`\ =\other
-\gdef\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
-}
-
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
+%
 \def\insertcopying{%
   \begingroup
     \parindent = 0pt  % paragraph indentation looks wrong on title page
@@ -7604,7 +7592,6 @@
 %
 \def\printdefunline#1#2{%
   \begingroup
-    \plainfrenchspacing
     % call \deffnheader:
     #1#2 \endheader
     % common ending:
@@ -7621,15 +7608,21 @@
 
 \def\Edefun{\endgraf\medbreak}
 
-% \makedefun{deffoo}{ (definition of \deffooheader) }
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remaining is to define \deffnheader.
 %
-% Define \deffoo, \deffoox  \Edeffoo and \deffooheader.
 \def\makedefun#1{%
   \expandafter\let\csname E#1\endcsname = \Edefun
   \edef\temp{\noexpand\domakedefun
     \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
   \temp
 }
+
+% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) }
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
 \def\domakedefun#1#2#3{%
   \envdef#1{%
     \startdefun
@@ -7646,7 +7639,7 @@
 % @deftypefnnewline on|off says whether the return type of typed functions
 % are printed on their own line.  This affects @deftypefn, @deftypefun,
 % @deftypeop, and @deftypemethod.
-% 
+%
 \parseargdef\deftypefnnewline{%
   \def\temp{#1}%
   \ifx\temp\onword
@@ -7662,51 +7655,74 @@
   \fi\fi
 }
 
+% \dosubind {index}{topic}{subtopic}
+%
+% If SUBTOPIC is present, precede it with a space, and call \doind.
+% (At some time during the 20th century, this made a two-level entry in an
+% index such as the operation index.  Nobody seemed to notice the change in
+% behaviour though.)
+\def\dosubind#1#2#3{%
+  \def\thirdarg{#3}%
+  \ifx\thirdarg\empty
+    \doind{#1}{#2}%
+  \else
+    \doind{#1}{#2\space#3}%
+  \fi
+}
+
 % Untyped functions:
 
 % @deffn category name args
-\makedefun{deffn}#1 #2 #3\endheader{%
-  \doind{fn}{\code{#2}}%
-  \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}%
-}
-
-% @defop category class name args
-\makedefun{defop}#1 {\defopheaderx{#1\ \putwordon}}
-\def\defopheaderx#1#2 #3 #4\endheader{%
-  \doind{fn}{\code{#3}\space\putwordon\ \code{#2}}%
-  \defname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}%
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+  \dosubind{fn}{\code{#3}}{#1}%
+  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
 }
 
 % Typed functions:
 
 % @deftypefn category type name args
-\makedefun{deftypefn}#1 #2 #3 #4\endheader{%
-  \doind{fn}{\code{#3}}%
-  \doingtypefntrue
-  \defname{#1}{#2}{#3}\defunargs{#4\unskip}%
-}
+\makedefun{deftypefn}{\deftypefngeneral{}}
 
 % @deftypeop category class type name args
-\makedefun{deftypeop}#1 {\deftypeopheaderx{#1\ \putwordon}}
-\def\deftypeopheaderx#1#2 #3 #4 #5\endheader{%
-  \doind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}%
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{fn}{\code{#4}}{#1}%
   \doingtypefntrue
-  \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
 }
 
 % Typed variables:
 
 % @deftypevr category type var args
-\makedefun{deftypevr}#1 #2 #3 #4\endheader{%
-  \doind{vr}{\code{#3}}%
-  \defname{#1}{#2}{#3}\defunargs{#4\unskip}%
-}
+\makedefun{deftypevr}{\deftypecvgeneral{}}
 
 % @deftypecv category class type var args
-\makedefun{deftypecv}#1 {\deftypecvheaderx{#1\ \putwordof}}
-\def\deftypecvheaderx#1#2 #3 #4 #5\endheader{%
-  \doind{vr}{\code{#4}\space\putwordof\ \code{#2}}%
-  \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}%
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{vr}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
 }
 
 % Untyped variables:
@@ -7715,8 +7731,10 @@
 \makedefun{defvr}#1 {\deftypevrheader{#1} {} }
 
 % @defcv category class var args
-\makedefun{defcv}#1 {\defcvheaderx{#1\ \putwordof}}
-\def\defcvheaderx#1#2 {\deftypecvheaderx{#1}#2 {} }
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
 
 % Types:
 
@@ -7734,10 +7752,10 @@
 \makedefun{defvar}{\defvrheader{\putwordDefvar} }
 \makedefun{defopt}{\defvrheader{\putwordDefopt} }
 \makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
-\makedefun{defmethod}{\defopheaderx\putwordMethodon}
-\makedefun{deftypemethod}{\deftypeopheaderx\putwordMethodon}
-\makedefun{defivar}{\defcvheaderx\putwordInstanceVariableof}
-\makedefun{deftypeivar}{\deftypecvheaderx\putwordInstanceVariableof}
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
 
 % \defname, which formats the name of the @def (not the args).
 % #1 is the category, such as "Function".
@@ -7756,7 +7774,9 @@
   \rettypeownlinefalse
   \ifdoingtypefn  % doing a typed function specifically?
     % then check user option for putting return type on its own line:
-    \ifflagclear{txideftypefnnl}{}{\rettypeownlinetrue}%
+    \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
+      \rettypeownlinetrue
+    \fi
   \fi
   %
   % How we'll format the category name.  Putting it in brackets helps
@@ -7814,27 +7834,37 @@
       \tclose{\temp}% typeset the return type
       \ifrettypeownline
         % put return type on its own line; prohibit line break following:
-        \hfil\vadjust{\nobreak}\break  
+        \hfil\vadjust{\nobreak}\break
       \else
         \space  % type on same line, so just followed by a space
       \fi
     \fi           % no return type
     #3% output function name
   }%
-  \ifflagclear{txidefnamenospace}{%
-    {\rm\enskip}% hskip 0.5 em of \rmfont
-  }{}%
+  {\rm\enskip}% hskip 0.5 em of \rmfont
   %
   \boldbrax
   % arguments will be output next, if any.
 }
 
-% Print arguments.  Use slanted for @def*, typewriter for @deftype*.
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name.  This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable.  Prevent hyphenation at `-' chars.
+%
 \def\defunargs#1{%
-  \df \ifdoingtypefn \tt \else \sl \fi
-  \ifflagclear{txicodevaristt}{}%
-    {\def\var##1{{\setregularquotes \ttsl ##1}}}%
+  % use sl by default (not ttsl),
+  % tt for the names.
+  \df \sl \hyphenchar\font=0
+  %
+  % On the other hand, if an argument has two dashes (for instance), we
+  % want a way to get ttsl.  We used to recommend @var for that, so
+  % leave the code in, but it's strange for @var to lead to typewriter.
+  % Nowadays we recommend @code, since the difference between a ttsl hyphen
+  % and a tt hyphen is pretty tiny.  @code also disables ?` !`.
+  \def\var##1{{\setregularquotes\ttslanted{##1}}}%
   #1%
+  \sl\hyphenchar\font=45
 }
 
 % We want ()&[] to print specially on the defun line.
@@ -7853,12 +7883,9 @@
 % so TeX would otherwise complain about undefined control sequence.
 {
   \activeparens
-  \gdef\defcharsdefault{%
-    \let(=\lparen \let)=\rparen
-    \let[=\lbrack \let]=\rbrack
-    \let& = \&%
-  }
-  \globaldefs=1 \defcharsdefault
+  \global\let(=\lparen \global\let)=\rparen
+  \global\let[=\lbrack \global\let]=\rbrack
+  \global\let& = \&
 
   \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
   \gdef\magicamp{\let&=\amprm}
@@ -7961,7 +7988,7 @@
   \scantokens{#1@comment}%
   %
   % The \comment is to remove the \newlinechar added by \scantokens, and
-  % can be noticed by \parsearg.  Note \c isn't used because this means 
cedilla 
+  % can be noticed by \parsearg.  Note \c isn't used because this means cedilla
   % in math mode.
 }
 
@@ -8042,17 +8069,24 @@
   \catcode`\_=\other
   \catcode`\|=\other
   \catcode`\~=\other
-  \catcode`\@=\other
-  \catcode`\^^M=\other
-  \catcode`\\=\active
   \passthroughcharstrue
 }
 
-\def\macrobodyctxt{% used for @macro definitions and @copying
+\def\scanargctxt{% used for copying and captions, not macros.
+  \scanctxt
+  \catcode`\@=\other
+  \catcode`\\=\other
+  \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{% used for @macro definitions
   \scanctxt
   \catcode`\ =\other
+  \catcode`\@=\other
   \catcode`\{=\other
   \catcode`\}=\other
+  \catcode`\^^M=\other
+  \usembodybackslash
 }
 
 % Used when scanning braced macro arguments.  Note, however, that catcode
@@ -8061,10 +8095,14 @@
 \def\macroargctxt{%
   \scanctxt
   \catcode`\ =\active
+  \catcode`\@=\other
+  \catcode`\^^M=\other
+  \catcode`\\=\active
 }
 
 \def\macrolineargctxt{% used for whole-line arguments without braces
   \scanctxt
+  \catcode`\@=\other
   \catcode`\{=\other
   \catcode`\}=\other
 }
@@ -8108,7 +8146,7 @@
      \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
      \addtomacrolist{\the\macname}%
   \fi
-  \begingroup \macrobodyctxt \usembodybackslash
+  \begingroup \macrobodyctxt
   \ifrecursive \expandafter\parsermacbody
   \else \expandafter\parsemacbody
   \fi}
@@ -8156,7 +8194,7 @@
 % list to some hook where the argument is to be expanded.  If there are
 % less than 10 arguments that hook is to be replaced by ##N where N
 % is the position in that list, that is to say the macro arguments are to be
-% defined `a la TeX in the macro body.  
+% defined `a la TeX in the macro body.
 %
 % That gets used by \mbodybackslash (above).
 %
@@ -8190,8 +8228,8 @@
 %
 % Read recursive and nonrecursive macro bodies. (They're different since
 % rec and nonrec macros end differently.)
-% 
-% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro 
+%
+% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro
 % body to be transformed.
 % Set \macrobody to the body of the macro, and call \defmacro.
 %
@@ -8225,7 +8263,7 @@
 % twice the \macarg.BLAH macros does not cost too much processing power.
 \def\parsemmanyargdef@@#1,{%
   \if#1;\let\next=\relax
-  \else 
+  \else
     \let\next=\parsemmanyargdef@@
     \edef\tempb{\eatspaces{#1}}%
     \expandafter\def\expandafter\tempa
@@ -8310,7 +8348,7 @@
 
 % Replace arguments by their values in the macro body, and place the result
 % in macro \@tempa.
-% 
+%
 \def\macvalstoargs@{%
   %  To do this we use the property that token registers that are \the'ed
   % within an \edef  expand only once. So we are going to place all argument
@@ -8334,9 +8372,9 @@
   \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
   }
 
-% Define the named-macro outside of this group and then close this group. 
-% 
-\def\macargexpandinbody@{% 
+% Define the named-macro outside of this group and then close this group.
+%
+\def\macargexpandinbody@{%
   \expandafter
   \endgroup
   \macargdeflist@
@@ -8374,7 +8412,7 @@
 }
 
 % Trailing missing arguments are set to empty.
-% 
+%
 \def\setemptyargvalues@{%
   \ifx\paramlist\nilm@
     \let\next\macargexpandinbody@
@@ -8431,32 +8469,32 @@
   \ifcase\paramno
   % 0
     \expandafter\xdef\csname\the\macname\endcsname{%
-      \begingroup
+      \bgroup
         \noexpand\spaceisspace
         \noexpand\endlineisspace
         \noexpand\expandafter % skip any whitespace after the macro name.
         \expandafter\noexpand\csname\the\macname @@@\endcsname}%
     \expandafter\xdef\csname\the\macname @@@\endcsname{%
-      \endgroup
+      \egroup
       \noexpand\scanmacro{\macrobody}}%
   \or % 1
     \expandafter\xdef\csname\the\macname\endcsname{%
-       \begingroup
+       \bgroup
        \noexpand\braceorline
        \expandafter\noexpand\csname\the\macname @@@\endcsname}%
     \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
-      \endgroup
+      \egroup
       \noexpand\scanmacro{\macrobody}%
       }%
   \else % at most 9
     \ifnum\paramno<10\relax
       % @MACNAME sets the context for reading the macro argument
-      % @MACNAME@@ gets the argument, processes backslashes and appends a 
+      % @MACNAME@@ gets the argument, processes backslashes and appends a
       % comma.
       % @MACNAME@@@ removes braces surrounding the argument list.
       % @MACNAME@@@@ scans the macro body with arguments substituted.
       \expandafter\xdef\csname\the\macname\endcsname{%
-        \begingroup
+        \bgroup
         \noexpand\expandafter  % This \expandafter skip any spaces after the
         \noexpand\macroargctxt % macro before we change the catcode of space.
         \noexpand\expandafter
@@ -8470,7 +8508,7 @@
       \expandafter\xdef
       \expandafter\expandafter
         \csname\the\macname @@@@\endcsname\paramlist{%
-          \endgroup\noexpand\scanmacro{\macrobody}}%
+          \egroup\noexpand\scanmacro{\macrobody}}%
     \else % 10 or more:
       \expandafter\xdef\csname\the\macname\endcsname{%
         \noexpand\getargvals@{\the\macname}{\argl}%
@@ -8495,11 +8533,11 @@
 % Call #1 with a list of tokens #2, with any doubled backslashes in #2
 % compressed to one.
 %
-% This implementation works by expansion, and not execution (so we cannot use 
-% \def or similar).  This reduces the risk of this failing in contexts where 
-% complete expansion is done with no execution (for example, in writing out to 
+% This implementation works by expansion, and not execution (so we cannot use
+% \def or similar).  This reduces the risk of this failing in contexts where
+% complete expansion is done with no execution (for example, in writing out to
 % an auxiliary file for an index entry).
-% 
+%
 % State is kept in the input stream: the argument passed to
 % @look_ahead, @gobble_and_check_finish and @add_segment is
 %
@@ -8521,11 +8559,11 @@
 % #3 - NEXT_TOKEN
 % #4 used to look ahead
 %
-% If the next token is not a backslash, process the rest of the argument; 
+% If the next token is not a backslash, process the rest of the argument;
 % otherwise, remove the next token.
 @gdef@look_ahead#1!#2#3#4{%
   @ifx#4\%
-   @expandafter@gobble_and_check_finish 
+   @expandafter@gobble_and_check_finish
   @else
    @expandafter@add_segment
   @fi#1!{#2}#4#4%
@@ -8549,9 +8587,9 @@
 % #3 - NEXT_TOKEN
 % #4 is input stream until next backslash
 %
-% Input stream is either at the start of the argument, or just after a 
-% backslash sequence, either a lone backslash, or a doubled backslash.  
-% NEXT_TOKEN contains the first token in the input stream: if it is \finish, 
+% Input stream is either at the start of the argument, or just after a
+% backslash sequence, either a lone backslash, or a doubled backslash.
+% NEXT_TOKEN contains the first token in the input stream: if it is \finish,
 % finish; otherwise, append to ARG_RESULT the segment of the argument up until
 % the next backslash.  PENDING_BACKSLASH contains a backslash to represent
 % a backslash just before the start of the input stream that has not been
@@ -8563,13 +8601,13 @@
   % append the pending backslash to the result, followed by the next segment
   @expandafter@is_fi@look_ahead#1#2#4!{\}@fi
   % this @fi is discarded by @look_ahead.
-  % we can't get rid of it with \expandafter because we don't know how 
+  % we can't get rid of it with \expandafter because we don't know how
   % long #4 is.
 }
 
 % #1 - THE_MACRO
 % #2 - ARG_RESULT
-% #3 discards the res of the conditional in @add_segment, and @is_fi ends the 
+% #3 discards the res of the conditional in @add_segment, and @is_fi ends the
 % conditional.
 @gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}}
 
@@ -8581,7 +8619,7 @@
 % for reading the argument (slightly different in the two cases).  Then,
 % to read the argument, in the whole-line case, it then calls the regular
 % \parsearg MAC; in the lbrace case, it calls \passargtomacro MAC.
-% 
+%
 \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
 \def\braceorlinexxx{%
   \ifx\nchar\bgroup
@@ -8635,7 +8673,7 @@
 
 % Used so that the @top node doesn't have to be wrapped in an @ifnottex
 % conditional.
-% \doignore goes to more effort to skip nested conditionals but we don't need 
+% \doignore goes to more effort to skip nested conditionals but we don't need
 % that here.
 \def\omittopnode{%
    \ifx\lastnode\wordTop
@@ -8643,11 +8681,9 @@
 }
 \def\wordTop{Top}
 
-% Until the next @node, @part or @bye command, divert output to a box that
-% is not output.
-\def\ignorenode{\setbox\dummybox\vbox\bgroup
-\def\part{\egroup\part}%
-\def\node{\egroup\node}%
+% Until the next @node or @bye command, divert output to a box that is not
+% output.
+\def\ignorenode{\setbox\dummybox\vbox\bgroup\def\node{\egroup\node}%
 \ignorenodebye
 }
 
@@ -8712,7 +8748,7 @@
 % automatically in xrefs, if the third arg is not explicitly specified.
 % This was provided as a "secret" @set xref-automatic-section-title
 % variable, now it's official.
-% 
+%
 \parseargdef\xrefautomaticsectiontitle{%
   \def\temp{#1}%
   \ifx\temp\onword
@@ -8728,7 +8764,7 @@
   \fi\fi
 }
 
-% 
+%
 % @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
 % the node name, #2 the name of the Info cross-reference, #3 the printed
 % node name, #4 the name of the Info file, #5 the name of the printed
@@ -8881,24 +8917,24 @@
     \fi
   \else
     % node/anchor (non-float) references.
-    % 
+    %
     % If we use \unhbox to print the node names, TeX does not insert
     % empty discretionaries after hyphens, which means that it will not
     % find a line break at a hyphen in a node names.  Since some manuals
     % are best written with fairly long node names, containing hyphens,
     % this is a loss.  Therefore, we give the text of the node name
     % again, so it is as if TeX is seeing it for the first time.
-    % 
+    %
     \ifdim \wd\printedmanualbox > 0pt
       % Cross-manual reference with a printed manual name.
-      % 
+      %
       \crossmanualxref{\cite{\printedmanual\unskip}}%
     %
     \else\ifdim \wd\infofilenamebox > 0pt
       % Cross-manual reference with only an info filename (arg 4), no
       % printed manual name (arg 5).  This is essentially the same as
       % the case above; we output the filename, since we have nothing else.
-      % 
+      %
       \crossmanualxref{\code{\infofilename\unskip}}%
     %
     \else
@@ -8912,11 +8948,12 @@
       % output the `[mynode]' via the macro below so it can be overridden.
       \xrefprintnodename\printedrefname
       %
-      \ifflagclear{txiomitxrefpg}{%
-        % We always want a comma
-        ,%
+      \expandafter\ifx\csname SETtxiomitxrefpg\endcsname\relax
+        % But we always want a comma and a space:
+        ,\space
+        %
         % output the `page 3'.
-        \turnoffactive \putpageref{#1}%
+        \turnoffactive \putwordpage\tie\refx{#1-pg}%
         % Add a , if xref followed by a space
         \if\space\noexpand\tokenafterxref ,%
         \else\ifx\     \tokenafterxref ,% @TAB
@@ -8926,31 +8963,27 @@
                   \tokenafterxref ,%    @NL
         \else\ifx\tie\tokenafterxref ,% @tie
         \fi\fi\fi\fi\fi\fi
-      }{}%
+      \fi
     \fi\fi
   \fi
   \endlink
 \endgroup}
 
-% can be overridden in translation files
-\def\putpageref#1{%
-  \space\putwordpage\tie\refx{#1-pg}}
-
 % Output a cross-manual xref to #1.  Used just above (twice).
-% 
+%
 % Only include the text "Section ``foo'' in" if the foo is neither
 % missing or Top.  Thus, @xref{,,,foo,The Foo Manual} outputs simply
 % "see The Foo Manual", the idea being to refer to the whole manual.
-% 
+%
 % But, this being TeX, we can't easily compare our node name against the
 % string "Top" while ignoring the possible spaces before and after in
 % the input.  By adding the arbitrary 7sp below, we make it much less
 % likely that a real node name would have the same width as "Top" (e.g.,
 % in a monospaced font).  Hopefully it will never happen in practice.
-% 
+%
 % For the same basic reason, we retypeset the "Top" at every
 % reference, since the current font is indeterminate.
-% 
+%
 \def\crossmanualxref#1{%
   \setbox\toprefbox = \hbox{Top\kern7sp}%
   \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
@@ -9027,9 +9060,9 @@
   \fi
 }
 
-% This is the macro invoked by entries in the aux file.  Define a control 
-% sequence for a cross-reference target (we prepend XR to the control sequence 
-% name to avoid collisions).  The value is the page number.  If this is a 
float 
+% This is the macro invoked by entries in the aux file.  Define a control
+% sequence for a cross-reference target (we prepend XR to the control sequence
+% name to avoid collisions).  The value is the page number.  If this is a float
 % type, we have more work to do.
 %
 \def\xrdef#1#2{%
@@ -9045,10 +9078,10 @@
   \bgroup
     \expandafter\gdef\csname XR\safexrefname\endcsname{#2}%
   \egroup
-  % We put the \gdef inside a group to avoid the definitions building up on 
-  % TeX's save stack, which can cause it to run out of space for aux files 
with 
+  % We put the \gdef inside a group to avoid the definitions building up on
+  % TeX's save stack, which can cause it to run out of space for aux files with
   % thousands of lines.  \gdef doesn't use the save stack, but \csname does
-  % when it defines an unknown control sequence as \relax. 
+  % when it defines an unknown control sequence as \relax.
   %
   % Was that xref control sequence that we just defined for a float?
   \expandafter\iffloat\csname XR\safexrefname\endcsname
@@ -9347,12 +9380,6 @@
     \imagexxx #1,,,,,\finish
   \fi
 }
-
-% Approximate height of a line in the standard text font.
-\newdimen\capheight
-\setbox0=\vbox{\tenrm H}
-\capheight=\ht0
-
 %
 % Arguments to @image:
 % #1 is (mandatory) image filename; we tack on .eps extension.
@@ -9365,30 +9392,32 @@
   \catcode`\^^M = 5     % in case we're inside an example
   \normalturnoffactive  % allow _ et al. in names
   \makevalueexpandable
+  % If the image is by itself, center it.
   \ifvmode
     \imagevmodetrue
-    \medskip
+  \else \ifx\centersub\centerV
+    % for @center @image, we need a vbox so we can have our vertical space
+    \imagevmodetrue
+    \vbox\bgroup % vbox has better behavior than vtop herev
+  \fi\fi
+  %
+  \ifimagevmode
+    \nobreak\medskip
     % Usually we'll have text after the image which will insert
     % \parskip glue, so insert it here too to equalize the space
     % above and below.
-    \vskip\parskip
-    %
-    % Place image in a \vtop for a top page margin that is (close to) correct,
-    % as \topskip glue is relative to the first baseline.
-    \vtop\bgroup \kern -\capheight \vskip-\parskip
+    \nobreak\vskip\parskip
+    \nobreak
   \fi
   %
-  \ifx\centersub\centerV
-    % For @center @image, enter vertical mode and add vertical space
-    % Enter an extra \parskip because @center doesn't add space itself.
-    \vbox\bgroup\vskip\parskip\medskip\vskip\parskip
-  \else
-    % Enter horizontal mode so that indentation from an enclosing
-    %  environment such as @quotation is respected.
-    % However, if we're at the top level, we don't want the
-    %  normal paragraph indentation.
-    \imageindent
-  \fi
+  % Leave vertical mode so that indentation from an enclosing
+  %  environment such as @quotation is respected.
+  % However, if we're at the top level, we don't want the
+  %  normal paragraph indentation.
+  % On the other hand, if we are in the case of @center @image, we don't
+  %  want to start a paragraph, which will create a hsize-width box and
+  %  eradicate the centering.
+  \ifx\centersub\centerV \else \imageindent \fi
   %
   % Output the image.
   \ifpdf
@@ -9410,13 +9439,9 @@
   \fi
   %
   \ifimagevmode
-    \egroup
     \medskip  % space after a standalone image
   \fi
-  \ifx\centersub\centerV % @center @image
-    \medskip
-    \egroup % close \vbox
-  \fi
+  \ifx\centersub\centerV \egroup \fi
 \endgroup}
 
 
@@ -9583,7 +9608,7 @@
 %
 \def\caption{\docaption\thiscaption}
 \def\shortcaption{\docaption\thisshortcaption}
-\def\docaption{\checkenv\float \bgroup\scanctxt\defcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
 \def\defcaption#1#2{\egroup \def#1{#2}}
 
 % The parameter is the control sequence identifying the counter we are
@@ -10066,7 +10091,7 @@
   \gdefchar^^ae{\v Z}
   \gdefchar^^af{\dotaccent Z}
   %
-  \gdefchar^^b0{\textdegree}
+  \gdefchar^^b0{\textdegree{}}
   \gdefchar^^b1{\ogonek{a}}
   \gdefchar^^b2{\ogonek{ }}
   \gdefchar^^b3{\l}
@@ -10246,7 +10271,7 @@
         \uppercase{.}
       \endgroup
     \else
-      \errhelp = \EMsimple     
+      \errhelp = \EMsimple
       \errmessage{Unicode character U+#1 not supported, sorry}%
     \fi
   \else
@@ -10279,7 +10304,7 @@
     \countUTFz = "#1\relax
     \begingroup
       \parseXMLCharref
-    
+
       % Give \u8:... its definition.  The sequence of seven \expandafter's
       % expands after the \gdef three times, e.g.
       %
@@ -10291,7 +10316,7 @@
       \expandafter\expandafter
       \expandafter\expandafter
       \expandafter\gdef       \UTFviiiTmp{#2}%
-      % 
+      %
       \expandafter\ifx\csname uni:#1\endcsname \relax \else
        \message{Internal error, already defined: #1}%
       \fi
@@ -10303,9 +10328,9 @@
   % Given the value in \countUTFz as a Unicode code point, set \UTFviiiTmp
   % to the corresponding UTF-8 sequence.
   \gdef\parseXMLCharref{%
-    \ifnum\countUTFz < "20\relax
+    \ifnum\countUTFz < "A0\relax
       \errhelp = \EMsimple
-      \errmessage{Cannot define Unicode char value < 0020}%
+      \errmessage{Cannot define Unicode char value < 00A0}%
     \else\ifnum\countUTFz < "800\relax
       \parseUTFviiiA,%
       \parseUTFviiiB C\UTFviiiTwoOctetsName.,%
@@ -10330,7 +10355,7 @@
     \divide\countUTFz by 64
     \countUTFy = \countUTFz  % Save to be the future value of \countUTFz.
     \multiply\countUTFz by 64
-    
+
     % \countUTFz is now \countUTFx with the last 5 bits cleared.  Subtract
     % in order to get the last five bits.
     \advance\countUTFx by -\countUTFz
@@ -10365,7 +10390,7 @@
 % U+0080..U+00FF = 
https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)
 % U+0100..U+017F = https://en.wikipedia.org/wiki/Latin_Extended-A
 % U+0180..U+024F = https://en.wikipedia.org/wiki/Latin_Extended-B
-% 
+%
 % Many of our renditions are less than wonderful, and all the missing
 % characters are available somewhere.  Loading the necessary fonts
 % awaits user request.  We can't truly support Unicode without
@@ -10375,103 +10400,6 @@
 % least make most of the characters not bomb out.
 %
 \def\unicodechardefs{%
-  \DeclareUnicodeCharacter{0020}{ } % space
-  \DeclareUnicodeCharacter{0021}{\char"21 }% % space to terminate number
-  \DeclareUnicodeCharacter{0022}{\char"22 }%
-  \DeclareUnicodeCharacter{0023}{\char"23 }%
-  \DeclareUnicodeCharacter{0024}{\char"24 }%
-  \DeclareUnicodeCharacter{0025}{\char"25 }%
-  \DeclareUnicodeCharacter{0026}{\char"26 }%
-  \DeclareUnicodeCharacter{0027}{\char"27 }%
-  \DeclareUnicodeCharacter{0028}{\char"28 }%
-  \DeclareUnicodeCharacter{0029}{\char"29 }%
-  \DeclareUnicodeCharacter{002A}{\char"2A }%
-  \DeclareUnicodeCharacter{002B}{\char"2B }%
-  \DeclareUnicodeCharacter{002C}{\char"2C }%
-  \DeclareUnicodeCharacter{002D}{\char"2D }%
-  \DeclareUnicodeCharacter{002E}{\char"2E }%
-  \DeclareUnicodeCharacter{002F}{\char"2F }%
-  \DeclareUnicodeCharacter{0030}{0}%
-  \DeclareUnicodeCharacter{0031}{1}%
-  \DeclareUnicodeCharacter{0032}{2}%
-  \DeclareUnicodeCharacter{0033}{3}%
-  \DeclareUnicodeCharacter{0034}{4}%
-  \DeclareUnicodeCharacter{0035}{5}%
-  \DeclareUnicodeCharacter{0036}{6}%
-  \DeclareUnicodeCharacter{0037}{7}%
-  \DeclareUnicodeCharacter{0038}{8}%
-  \DeclareUnicodeCharacter{0039}{9}%
-  \DeclareUnicodeCharacter{003A}{\char"3A }%
-  \DeclareUnicodeCharacter{003B}{\char"3B }%
-  \DeclareUnicodeCharacter{003C}{\char"3C }%
-  \DeclareUnicodeCharacter{003D}{\char"3D }%
-  \DeclareUnicodeCharacter{003E}{\char"3E }%
-  \DeclareUnicodeCharacter{003F}{\char"3F }%
-  \DeclareUnicodeCharacter{0040}{\char"40 }%
-  \DeclareUnicodeCharacter{0041}{A}%
-  \DeclareUnicodeCharacter{0042}{B}%
-  \DeclareUnicodeCharacter{0043}{C}%
-  \DeclareUnicodeCharacter{0044}{D}%
-  \DeclareUnicodeCharacter{0045}{E}%
-  \DeclareUnicodeCharacter{0046}{F}%
-  \DeclareUnicodeCharacter{0047}{G}%
-  \DeclareUnicodeCharacter{0048}{H}%
-  \DeclareUnicodeCharacter{0049}{I}%
-  \DeclareUnicodeCharacter{004A}{J}%
-  \DeclareUnicodeCharacter{004B}{K}%
-  \DeclareUnicodeCharacter{004C}{L}%
-  \DeclareUnicodeCharacter{004D}{M}%
-  \DeclareUnicodeCharacter{004E}{N}%
-  \DeclareUnicodeCharacter{004F}{O}%
-  \DeclareUnicodeCharacter{0050}{P}%
-  \DeclareUnicodeCharacter{0051}{Q}%
-  \DeclareUnicodeCharacter{0052}{R}%
-  \DeclareUnicodeCharacter{0053}{S}%
-  \DeclareUnicodeCharacter{0054}{T}%
-  \DeclareUnicodeCharacter{0055}{U}%
-  \DeclareUnicodeCharacter{0056}{V}%
-  \DeclareUnicodeCharacter{0057}{W}%
-  \DeclareUnicodeCharacter{0058}{X}%
-  \DeclareUnicodeCharacter{0059}{Y}%
-  \DeclareUnicodeCharacter{005A}{Z}%
-  \DeclareUnicodeCharacter{005B}{\char"5B }%
-  \DeclareUnicodeCharacter{005C}{\char"5C }%
-  \DeclareUnicodeCharacter{005D}{\char"5D }%
-  \DeclareUnicodeCharacter{005E}{\char"5E }%
-  \DeclareUnicodeCharacter{005F}{\char"5F }%
-  \DeclareUnicodeCharacter{0060}{\char"60 }%
-  \DeclareUnicodeCharacter{0061}{a}%
-  \DeclareUnicodeCharacter{0062}{b}%
-  \DeclareUnicodeCharacter{0063}{c}%
-  \DeclareUnicodeCharacter{0064}{d}%
-  \DeclareUnicodeCharacter{0065}{e}%
-  \DeclareUnicodeCharacter{0066}{f}%
-  \DeclareUnicodeCharacter{0067}{g}%
-  \DeclareUnicodeCharacter{0068}{h}%
-  \DeclareUnicodeCharacter{0069}{i}%
-  \DeclareUnicodeCharacter{006A}{j}%
-  \DeclareUnicodeCharacter{006B}{k}%
-  \DeclareUnicodeCharacter{006C}{l}%
-  \DeclareUnicodeCharacter{006D}{m}%
-  \DeclareUnicodeCharacter{006E}{n}%
-  \DeclareUnicodeCharacter{006F}{o}%
-  \DeclareUnicodeCharacter{0070}{p}%
-  \DeclareUnicodeCharacter{0071}{q}%
-  \DeclareUnicodeCharacter{0072}{r}%
-  \DeclareUnicodeCharacter{0073}{s}%
-  \DeclareUnicodeCharacter{0074}{t}%
-  \DeclareUnicodeCharacter{0075}{u}%
-  \DeclareUnicodeCharacter{0076}{v}%
-  \DeclareUnicodeCharacter{0077}{w}%
-  \DeclareUnicodeCharacter{0078}{x}%
-  \DeclareUnicodeCharacter{0079}{y}%
-  \DeclareUnicodeCharacter{007A}{z}%
-  \DeclareUnicodeCharacter{007B}{\char"7B }%
-  \DeclareUnicodeCharacter{007C}{\char"7C }%
-  \DeclareUnicodeCharacter{007D}{\char"7D }%
-  \DeclareUnicodeCharacter{007E}{\char"7E }%
-  % \DeclareUnicodeCharacter{007F}{} % DEL
-  %
   \DeclareUnicodeCharacter{00A0}{\tie}%
   \DeclareUnicodeCharacter{00A1}{\exclamdown}%
   \DeclareUnicodeCharacter{00A2}{{\tcfont \char162}}% 0242=cent
@@ -10489,7 +10417,7 @@
   \DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}%
   \DeclareUnicodeCharacter{00AF}{\={ }}%
   %
-  \DeclareUnicodeCharacter{00B0}{\textdegree}
+  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}%
   \DeclareUnicodeCharacter{00B1}{\ensuremath\pm}%
   \DeclareUnicodeCharacter{00B2}{$^2$}%
   \DeclareUnicodeCharacter{00B3}{$^3$}%
@@ -10971,9 +10899,6 @@
   \DeclareUnicodeCharacter{1EF8}{\~Y}%
   \DeclareUnicodeCharacter{1EF9}{\~y}%
   %
-  % Exotic spaces
-  \DeclareUnicodeCharacter{2007}{\hphantom{0}}%
-  %
   % Punctuation
   \DeclareUnicodeCharacter{2013}{--}%
   \DeclareUnicodeCharacter{2014}{---}%
@@ -10993,7 +10918,7 @@
   %
   \DeclareUnicodeCharacter{20AC}{\euro{}}%
   %
-  \DeclareUnicodeCharacter{2192}{\arrow}%
+  \DeclareUnicodeCharacter{2192}{\expansion{}}%
   \DeclareUnicodeCharacter{21D2}{\result{}}%
   %
   % Mathematical symbols
@@ -11156,26 +11081,24 @@
 % provide a definition macro to replace/pass-through a Unicode character
 %
 \def\DeclareUnicodeCharacterNative#1#2{%
-  \ifnum"#1>"7F % only make non-ASCII chars active
-    \catcode"#1=\active
-    \def\dodeclareunicodecharacternative##1##2##3{%
-      \begingroup
-        \uccode`\~="##2\relax
-        \uppercase{\gdef~}{%
-          \ifpassthroughchars
-            ##1%
-          \else
-            ##3%
-          \fi
-        }
-      \endgroup
-    }
+  \catcode"#1=\active
+  \def\dodeclareunicodecharacternative##1##2##3{%
     \begingroup
-      \uccode`\.="#1\relax
-      \uppercase{\def\UTFNativeTmp{.}}%
-      \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}%
+      \uccode`\~="##2\relax
+      \uppercase{\gdef~}{%
+        \ifpassthroughchars
+          ##1%
+        \else
+          ##3%
+        \fi
+      }
     \endgroup
-  \fi
+  }
+  \begingroup
+    \uccode`\.="#1\relax
+    \uppercase{\def\UTFNativeTmp{.}}%
+    \expandafter\dodeclareunicodecharacternative\UTFNativeTmp{#1}{#2}%
+  \endgroup
 }
 
 % Native Unicode handling (XeTeX and LuaTeX) character replacing definition.
@@ -11258,9 +11181,13 @@
   %
   \vsize = #1\relax
   \advance\vsize by \topskip
+  \outervsize = \vsize
+  \advance\outervsize by 2\topandbottommargin
   \txipageheight = \vsize
   %
   \hsize = #2\relax
+  \outerhsize = \hsize
+  \advance\outerhsize by 0.5in
   \txipagewidth = \hsize
   %
   \normaloffset = #4\relax
@@ -11317,6 +11244,23 @@
   \defbodyindent = .5cm
 }}
 
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+  \parskip = 1.5pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.4in}{4.8in}%
+                    {-.2in}{-.4in}%
+                    {0pt}{14pt}%
+                    {9in}{6in}%
+  %
+  \lispnarrowing = 0.25in
+  \tolerance = 700
+  \contentsrightmargin = 0pt
+  \defbodyindent = .4cm
+}}
+
 % Use @afourpaper to print on European A4 paper.
 \def\afourpaper{{\globaldefs = 1
   \parskip = 3pt plus 2pt minus 1pt
@@ -11350,7 +11294,7 @@
   \textleading = 12.5pt
   %
   \internalpagesizes{160mm}{120mm}%
-                    {\voffset}{-11.4mm}%
+                    {\voffset}{\hoffset}%
                     {\bindingoffset}{8pt}%
                     {210mm}{148mm}%
   %
@@ -11429,135 +11373,9 @@
 \hfuzz = 1pt
 
 
-\message{microtype,}
-
-% protrusion, from Thanh's protcode.tex.
-\def\mtsetprotcode#1{%
-  \rpcode#1`\!=200  \rpcode#1`\,=700  \rpcode#1`\-=700  \rpcode#1`\.=700
-  \rpcode#1`\;=500  \rpcode#1`\:=500  \rpcode#1`\?=200
-  \rpcode#1`\'=700
-  \rpcode#1 34=500  % ''
-  \rpcode#1 123=300 % --
-  \rpcode#1 124=200 % ---
-  \rpcode#1`\)=50   \rpcode#1`\A=50   \rpcode#1`\F=50   \rpcode#1`\K=50
-  \rpcode#1`\L=50   \rpcode#1`\T=50   \rpcode#1`\V=50   \rpcode#1`\W=50
-  \rpcode#1`\X=50   \rpcode#1`\Y=50   \rpcode#1`\k=50   \rpcode#1`\r=50
-  \rpcode#1`\t=50   \rpcode#1`\v=50   \rpcode#1`\w=50   \rpcode#1`\x=50
-  \rpcode#1`\y=50
-  %
-  \lpcode#1`\`=700
-  \lpcode#1 92=500  % ``
-  \lpcode#1`\(=50   \lpcode#1`\A=50   \lpcode#1`\J=50   \lpcode#1`\T=50
-  \lpcode#1`\V=50   \lpcode#1`\W=50   \lpcode#1`\X=50   \lpcode#1`\Y=50
-  \lpcode#1`\v=50   \lpcode#1`\w=50   \lpcode#1`\x=50   \lpcode#1`\y=0
-  %
-  \mtadjustprotcode#1\relax
-}
-
-\newcount\countC
-\def\mtadjustprotcode#1{%
-  \countC=0
-  \loop
-    \ifcase\lpcode#1\countC\else
-      \mtadjustcp\lpcode#1\countC
-    \fi
-    \ifcase\rpcode#1\countC\else
-      \mtadjustcp\rpcode#1\countC
-    \fi
-    \advance\countC 1
-  \ifnum\countC < 256 \repeat
-}
-
-\newcount\countB
-\def\mtadjustcp#1#2#3{%
-  \setbox\boxA=\hbox{%
-    \ifx#2\font\else#2\fi
-    \char#3}%
-  \countB=\wd\boxA
-  \multiply\countB #1#2#3\relax
-  \divide\countB \fontdimen6 #2\relax
-  #1#2#3=\countB\relax
-}
-
-\ifx\XeTeXrevision\thisisundefined
-  \ifx\luatexversion\thisisundefined
-    \ifpdf % pdfTeX
-      \mtsetprotcode\textrm
-      \def\mtfontexpand#1{\pdffontexpand#1 20 20 1 autoexpand\relax}
-    \else % TeX
-      \def\mtfontexpand#1{}
-    \fi
-  \else % LuaTeX
-    \mtsetprotcode\textrm
-    \def\mtfontexpand#1{\expandglyphsinfont#1 20 20 1\relax}
-  \fi
-\else % XeTeX
-  \mtsetprotcode\textrm
-  \def\mtfontexpand#1{}
-\fi
-
-
-\newif\ifmicrotype
-
-\def\microtypeON{%
-  \microtypetrue
-  %
-  \ifx\XeTeXrevision\thisisundefined
-    \ifx\luatexversion\thisisundefined
-      \ifpdf % pdfTeX
-        \pdfadjustspacing=2
-        \pdfprotrudechars=2
-      \fi
-    \else % LuaTeX
-      \adjustspacing=2
-      \protrudechars=2
-    \fi
-  \else % XeTeX
-    \XeTeXprotrudechars=2
-  \fi
-  %
-  \mtfontexpand\textrm
-  \mtfontexpand\textsl
-  \mtfontexpand\textbf
-}
-
-\def\microtypeOFF{%
-  \microtypefalse
-  %
-  \ifx\XeTeXrevision\thisisundefined
-    \ifx\luatexversion\thisisundefined
-      \ifpdf % pdfTeX
-        \pdfadjustspacing=0
-        \pdfprotrudechars=0
-      \fi
-    \else % LuaTeX
-      \adjustspacing=0
-      \protrudechars=0
-    \fi
-  \else % XeTeX
-    \XeTeXprotrudechars=0
-  \fi
-}
-
-\microtypeON
-
-\parseargdef\microtype{%
-  \def\txiarg{#1}%
-  \ifx\txiarg\onword
-    \microtypeON
-  \else\ifx\txiarg\offword
-    \microtypeOFF
-  \else
-    \errhelp = \EMsimple
-    \errmessage{Unknown @microtype option `\txiarg', must be on|off}%
-  \fi\fi
-}
-
-
 \message{and turning on texinfo input format.}
 
 \def^^L{\par} % remove \outer, so ^L can appear in an @comment
-\catcode`\^^K = 10 % treat vertical tab as whitespace
 
 % DEL is a comment character, in case @c does not suffice.
 \catcode`\^^? = 14
@@ -11573,6 +11391,23 @@
 \catcode`\|=\other \def\normalverticalbar{|}
 \catcode`\~=\other \def\normaltilde{~}
 
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise.  Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font.  Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts.  But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
 % Set catcodes for Texinfo file
 
 % Active characters for printing the wanted glyph.
@@ -11607,7 +11442,7 @@
 \def\texinfochars{%
   \let< = \activeless
   \let> = \activegtr
-  \let~ = \activetilde 
+  \let~ = \activetilde
   \let^ = \activehat
   \setregularquotes
   \let\b = \strong
@@ -11764,9 +11599,11 @@
 @setregularquotes
 
 @c Local variables:
-@c eval: (add-hook 'before-save-hook 'time-stamp nil t)
-@c time-stamp-pattern: "texinfoversion{%Y-%02m-%02d.%02H}"
+@c eval: (add-hook 'before-save-hook 'time-stamp)
 @c page-delimiter: "^\\\\message\\|emacs-page"
+@c time-stamp-start: "def\\\\texinfoversion{"
+@c time-stamp-format: "%:y-%02m-%02d.%02H"
+@c time-stamp-end: "}"
 @c End:
 
 @c vim:sw=2:

=== modified file 'doc/version.texi'
--- a/doc/version.texi  2022-09-05 04:27:38 +0000
+++ b/doc/version.texi  2022-11-14 00:00:47 +0000
@@ -1,4 +1,4 @@
-@set UPDATED 5 September 2022
-@set UPDATED-MONTH September 2022
+@set UPDATED 11 January 2022
+@set UPDATED-MONTH January 2022
 @set EDITION 2014.10.11
 @set VERSION 2014.10.11

=== modified file 'pkg/gnualpha/gcc12snapshot/Makefile'
--- a/pkg/gnualpha/gcc12snapshot/Makefile       2022-11-06 00:13:57 +0000
+++ b/pkg/gnualpha/gcc12snapshot/Makefile       2022-11-14 00:00:47 +0000
@@ -22,7 +22,7 @@
 NAME = The GNU Compiler Collection version 12 development version
 GARNAME = gcc12snapshot
 UPSTREAMNAME = gcc
-GARVERSION = 12-20221105
+GARVERSION = 12-20221112
 HOME_URL = http://www.gnu.org/software/gcc
 DESCRIPTION = GNU Compiler Collection 12 snapshot
 define BLURB

=== modified file 'pkg/gnualpha/gcc12snapshot/sha256sums'
--- a/pkg/gnualpha/gcc12snapshot/sha256sums     2022-11-06 00:13:57 +0000
+++ b/pkg/gnualpha/gcc12snapshot/sha256sums     2022-11-14 00:00:47 +0000
@@ -1,1 +1,1 @@
-8144010287af3aa44900bd65892eefea5607af5f183bd90ce4ff6bc1461fccfe  
download/gcc-12-20221105.tar.xz
+74b0dcf8b4856a8420d0610407533f59a8b523b9afe121d4b867ba25ad2ec2b7  
download/gcc-12-20221112.tar.xz

=== modified file 'pkg/other/root/Makefile'
--- a/pkg/other/root/Makefile   2022-10-06 04:08:01 +0000
+++ b/pkg/other/root/Makefile   2022-11-14 00:00:47 +0000
@@ -21,7 +21,7 @@
 
 NAME = ROOT
 GARNAME = root
-GARVERSION = 6.26.06
+GARVERSION = 6.26.08
 
 HOME_URL = https://root.cern.ch 
 DESCRIPTION = Scientific data framework from CERN, includes a C++ interpreter.
@@ -45,7 +45,7 @@
 BUILDDEPS =
 LIBDEPS =
 
-WORKOBJ = $(WORKDIR)/$(DISTNAME)-build
+WORKOBJ = $(WORKSRC)-build
 
 # previously needed:
 #MAKE_CXX_FLAGS = -D_GLIBCXX_USE_CXX11_ABI=1
@@ -71,13 +71,10 @@
 
 #LDLIBS+=" -lssl -lcrypto -ltbb " 
 
-
-
 #pre-configure:
 #      mkdir -p $(WORKOBJ)
 #      (cd $(WORKOBJ); cmake ../$(DISTNAME)  -Dgnuinstall=ON )
 #      $(MAKECOOKIE)
 
-
 #      (cd $(WORKOBJ); cmake ../$(DISTNAME)  -Dgnuinstall=ON   
-DCMAKE_CXX_FLAGS=-D_GLIBCXX_USE_CXX11_ABI=1 )
-#
+

=== modified file 'pkg/other/root/sha256sums'
--- a/pkg/other/root/sha256sums 2022-10-06 04:08:01 +0000
+++ b/pkg/other/root/sha256sums 2022-11-14 00:00:47 +0000
@@ -1,1 +1,1 @@
-b1f73c976a580a5c56c8c8a0152582a1dfc560b4dd80e1b7545237b65e6c89cb  
download/root_v6.26.06.source.tar.gz
+4dda043e7918b40743ad0299ddd8d526b7078f0a3822fd06066df948af47940e  
download/root_v6.26.08.source.tar.gz

=== modified file 'pkg/xorg/libX11/Makefile'
--- a/pkg/xorg/libX11/Makefile  2022-11-07 06:33:46 +0000
+++ b/pkg/xorg/libX11/Makefile  2022-11-14 00:00:47 +0000
@@ -21,15 +21,16 @@
 
 NAME =    libX11
 GARNAME = libX11
-GARVERSION = 1.8.1
+GARVERSION = 1.8.2
 HOME_URL = http://xorg.freedesktop.org
 DESCRIPTION = libX11 library
 define BLURB
 endef
 
+WORKOBJ = $(WORKSRC)
 ######################################################################
 # https://xorg.freedesktop.org/releases/individual/lib/libX11-1.6.6.tar.bz2
-MASTER_SITES =  https://xorg.freedesktop.org/
+MASTER_SITES =  https://www.x.org/
 MASTER_SUBDIR = releases/individual/lib/
 DISTFILES = $(DISTNAME).tar.xz
 SIGFILES = $(DISTNAME).tar.xz.sig

=== modified file 'pkg/xorg/libX11/sha256sums'
--- a/pkg/xorg/libX11/sha256sums        2022-11-07 06:33:46 +0000
+++ b/pkg/xorg/libX11/sha256sums        2022-11-14 00:00:47 +0000
@@ -1,2 +1,2 @@
-1bc41aa1bbe01401f330d76dfa19f386b79c51881c7bbfee9eb4e27f22f2d9f7  
download/libX11-1.8.1.tar.xz
-28288991a3bde3f90d2b072cbb8b5672c74fc28b283bec16e4d50cbf563e37ba  
download/libX11-1.8.1.tar.xz.sig
+ed91d573d570db83b8ae546f4890dccfcd0b9dfe1e50a1b401b63a74c152ed04  
download/libX11-1.8.2.tar.xz
+1b5744faf2d7be8b6838203af2c3f90ea2ec9a0ac3dd8f89f5bca88674a731da  
download/libX11-1.8.2.tar.xz.sig

=== modified file 'pkg/xorg/xorg-docs/Makefile'
--- a/pkg/xorg/xorg-docs/Makefile       2017-08-02 20:13:34 +0000
+++ b/pkg/xorg/xorg-docs/Makefile       2022-11-14 00:00:47 +0000
@@ -1,6 +1,7 @@
-# Copyright © 2017 Carl Hansen <carlhansen@gnu.org>
+# Copyright © 2017,2022 Carl Hansen <carlhansen@gnu.org>
 #
-# This file is part of GSRC.
+# This file is part of GSRC, the GNU Source Release Collection.
+# http://www.gnu.org/software/gsrc
 #
 # GSRC is free software: you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -22,11 +23,10 @@
 
 NAME =    xorg-docs
 GARNAME = xorg-docs
-GARVERSION = 1.7.1
+GARVERSION = 1.7.2
 HOME_URL = https://xorg.freedesktop.org
 DESCRIPTION = xorg-docs about X
 define BLURB
-
 endef
 
 ######################################################################
@@ -39,6 +39,8 @@
 BUILDDEPS = 
 LIBDEPS =   
 
+WORKOBJ = $(WORKSRC)
+
 ######################################################################
 
 include ../../../gar/gar.lib/auto.mk

=== modified file 'pkg/xorg/xorg-docs/sha256sums'
--- a/pkg/xorg/xorg-docs/sha256sums     2017-08-02 20:13:34 +0000
+++ b/pkg/xorg/xorg-docs/sha256sums     2022-11-14 00:00:47 +0000
@@ -1,2 +1,2 @@
-24b8677c3462c10465cf50d40576d76682acd5835526093a575865b2aa242c4b  
download/xorg-docs-1.7.1.tar.bz2
-86958b5d9e4a6ed8a618002c06605726a43ab0451bb53c0df7470a8670bdbc37  
download/xorg-docs-1.7.1.tar.bz2.sig
+2391b8af472626c12d3c3814b5e7a0ea43c3a96eda94255b7ed8bdff0fbf08e3  
download/xorg-docs-1.7.2.tar.bz2
+8899cbd679493f554e226c664164be15e6634a44108dc087689ad955673681bb  
download/xorg-docs-1.7.2.tar.bz2.sig


reply via email to

[Prev in Thread] Current Thread [Next in Thread]