diff options
Diffstat (limited to 'Build/source/texk/web2c/cwebdir')
50 files changed, 892 insertions, 654 deletions
diff --git a/Build/source/texk/web2c/cwebdir/ChangeLog b/Build/source/texk/web2c/cwebdir/ChangeLog index dbfba96a73d..bd7bbe0d7a6 100644 --- a/Build/source/texk/web2c/cwebdir/ChangeLog +++ b/Build/source/texk/web2c/cwebdir/ChangeLog @@ -1,3 +1,147 @@ +2025-02-02 Andreas Scherer <https://ascherer.github.io> + + * ctwill-mini.ch: Avoid several 'Overfull \vbox'es. + +2025-01-29 Andreas Scherer <https://ascherer.github.io> + + * tests/ham.ch: Add line information. + +2025-01-15 Andreas Scherer <https://ascherer.github.io> + + * ctwill-mini.ch: Don't mess with /PageLabels in CTWILL output. + +2025-01-14 Andreas Scherer <https://ascherer.github.io> + + * texinputs/pdfctwimac.tex: Switch on PDF outlines. + +2025-01-11 Andreas Scherer <https://ascherer.github.io> + + * ctwill-proofsort: Support multiple definitions of identifiers. + +2025-01-01 Andreas Scherer <https://ascherer.github.io> + + * Makefile, + * comm-{mac,mini,ql,w2c}.ch, + * comm-w2c.h, + * common.h, + * common.w, + * ctang-{bs,pc,ql,vms,w2c,w32}.ch, + * ctangle.c, + * ctangle.w, + * ctwill-w2c.ch, + * cweav-{bs,pc,ql,vms,w2c,w32}.ch, + * cweave.w, + * cwebacromac.tex, + * cwebmac.tex, + * cwebman-w2c.ch, + * cwebman.tex, + * po/cweb-tl.pot, + * po/cweb.pot, + * po/de/cweb-tl.po, + * po/de/cweb.po, + * po/de/web2c-help.po, + * po/it/cweb.po, + * po/web2c-help.pot, + * prod-{cweave,twill}.w, + * prod.w: CWEB 4.12.1 release. + +2024-12-31 Andreas Scherer <https://ascherer.github.io> + + * texinputs/pdfctwimac.tex: Append 'Names of the sections'. + +2024-12-27 Andreas Scherer <https://ascherer.github.io> + + * ctwill-mini.ch, + * ctwimac.tex, + * texinputs/pdfctwimac.tex: Rename page dimensions. + +2024-11-20 Andreas Scherer <https://ascherer.github.io> + + * cwebman-w2c.ch: Link to extended WEB manual in TeX Live. + +2024-11-01 Andreas Scherer <https://ascherer.github.io> + + * cwebacromac.tex: Purge spurious space(s). + +2024-10-06 Andreas Scherer <https://ascherer.github.io> + + * ctwill-mini.ch: Fix line/paragraph break. + +2024-09-14 Andreas Scherer <https://ascherer.github.io> + + * ctwill-mini.ch, + * ctwill-w2c.ch, + * cweav-w2c.ch, + * cweave.w, + * cwebacromac.tex, + * cwebmac.tex, + * refsort.ch: Fix sorting order in Names-of-the-Sections. + +2024-08-12 Andreas Scherer <https://ascherer.github.io> + + * Makefile + * comm-{mac,mini,ql,w2c}.ch + * comm-w2c.h + * common.h + * common.w + * ctang-{bs,pc,ql,vms,w2c,w32}.ch + * ctangle.c + * ctangle.w + * ctwill-w2c.ch + * cweav-{bs,pc,ql,vms,w2c,w32}.ch + * cweave.w + * cwebman-w2c.ch + * cwebman.tex + * po/cweb-tl.pot + * po/cweb.pot + * po/de/cweb-tl.po + * po/de/cweb.po + * po/it/cweb.po + * prod-{cweave,twill}.w + * prod.w: CWEB 4.12 release. + +2024-08-10 Andreas Scherer <https://ascherer.github.io> + + * cwebacromac.tex, + * cwebmac.tex, + * texinputs/icwebmac.tex, + * texinputs/pdfctproofmac.tex, + * texinputs/pdfctwimac.tex: Apply new scanning macros. + +2024-08-08 Andreas Scherer <https://ascherer.github.io> + + * comm-mini.ch, + * comm-w2c.ch: Demote 'Extensions' and subsections. + +2024-08-07 Andreas Scherer <https://ascherer.github.io> + + * comm-mini.ch, + * comm-w2c.ch: The Index is not an Extension. + +2024-08-06 Andreas Scherer <https://ascherer.github.io> + + * cwebacromac.tex, + * cwebmac.tex, + * cwebman.tex, + * texinputs/pdfctproofmac.tex, + * texinputs/pdfctwimac.tex: Refine PDF-related macros. + +2024-08-02 Andreas Scherer <https://ascherer.github.io> + + * ctwill-w2c.ch, + * cweav-w2c.ch, + * cweave.w: Remove unused 'kludge'. + +2024-07-26 Andreas Scherer <https://ascherer.github.io> + + * cwebmac.tex: Reshuffle '\note' macro. + +2024-07-24 Andreas Scherer <https://ascherer.github.io> + + * cwebmac.tex, + * cwebman-w2c.ch, + * cwebman.tex: Recollect '\font' declarations. + 2024-07-23 Andreas Scherer <https://ascherer.github.io> * cwebman-w2c.ch, diff --git a/Build/source/texk/web2c/cwebdir/Makefile b/Build/source/texk/web2c/cwebdir/Makefile index 28ea97d5540..af72873bff3 100644 --- a/Build/source/texk/web2c/cwebdir/Makefile +++ b/Build/source/texk/web2c/cwebdir/Makefile @@ -1,6 +1,6 @@ # This file is part of CWEB. # It is distributed WITHOUT ANY WARRANTY, express or implied. -# Version 4.11 --- December 2023 +# Version 4.12.1 --- January 2025 # Copyright (C) 1987,1990,1993,2000 Silvio Levy and Donald E. Knuth @@ -216,6 +216,6 @@ tarball: tar zcvhf /tmp/cweb.tgz $(ALL) examples ctan: - git archive -o ~/cweb-4.11.zip --prefix=cweb/ cweb-4.11 + git archive -o ~/cweb-4.12.1.zip --prefix=cweb/ cweb-4.12.1 make PDF=pdf usermanual - cd ..; zip -r ~/cweb-4.11.zip cweb/cwebman.pdf + cd ..; zip -r ~/cweb-4.12.1.zip cweb/cwebman.pdf diff --git a/Build/source/texk/web2c/cwebdir/comm-mac.ch b/Build/source/texk/web2c/cwebdir/comm-mac.ch index 79b1ec945e8..50b56273909 100644 --- a/Build/source/texk/web2c/cwebdir/comm-mac.ch +++ b/Build/source/texk/web2c/cwebdir/comm-mac.ch @@ -4,9 +4,9 @@ No changes to CTANGLE or CWEAVE are needed. (Contributed 13 Oct 2000 by AndPio@aol.com; slightly edited by Don Knuth) @x in limbo, change the title page document to specify Mac version - \centerline{(Version 4.11)} + \centerline{(Version 4.12.1)} @y - \centerline{(Version 4.11 for MacOS)} + \centerline{(Version 4.12.1 for MacOS)} @z @x section 23: Make input_ln accept \n, \r, \n\r, or \r\n as line endings diff --git a/Build/source/texk/web2c/cwebdir/comm-mini.ch b/Build/source/texk/web2c/cwebdir/comm-mini.ch index d1bd623b2a2..e9ffe8f1f23 100644 --- a/Build/source/texk/web2c/cwebdir/comm-mini.ch +++ b/Build/source/texk/web2c/cwebdir/comm-mini.ch @@ -1,9 +1,9 @@ Limbo. @x -\def\title{Common code for CTANGLE and CWEAVE (4.11 [\TeX~Live])} +\def\title{Common code for CTANGLE and CWEAVE (4.12.1 [\TeX~Live])} @y -\def\title{COMMON (4.11 [\TeX~Live])} +\def\title{COMMON (4.12.1 [\TeX~Live])} \def\contentspagenumber{0} @z diff --git a/Build/source/texk/web2c/cwebdir/comm-ql.ch b/Build/source/texk/web2c/cwebdir/comm-ql.ch index 44cc39ec45f..31fe2966e6d 100644 --- a/Build/source/texk/web2c/cwebdir/comm-ql.ch +++ b/Build/source/texk/web2c/cwebdir/comm-ql.ch @@ -10,24 +10,24 @@ ex <dev_>cc;'-v -h -c -=500000 -DCWEBINPUTS=flp2_ common_c' @x \def\v{\char'174} % vertical (|) in typewriter font -\def\title{Common code for CTANGLE and CWEAVE (Version 4.11)} +\def\title{Common code for CTANGLE and CWEAVE (Version 4.12.1)} \def\topofcontents{\null\vfill \centerline{\titlefont Common code for {\ttitlefont CTANGLE} and {\ttitlefont CWEAVE}} \vskip 15pt - \centerline{(Version 4.11)} + \centerline{(Version 4.12.1)} \vfill} \def\botofcontents{\vfill \noindent @y \def\v{\char'174} % vertical (|) in typewriter font -\def\title{Common code for CTANGLE and CWEAVE (QL Version 4.11)} +\def\title{Common code for CTANGLE and CWEAVE (QL Version 4.12.1)} \def\topofcontents{\null\vfill \centerline{\titlefont Common code for {\ttitlefont CTANGLE} and {\ttitlefont CWEAVE}} \vskip 15pt - \centerline{(Version 4.11)} + \centerline{(Version 4.12.1)} \vfill} \def\botofcontents{\vfill \noindent diff --git a/Build/source/texk/web2c/cwebdir/comm-w2c.ch b/Build/source/texk/web2c/cwebdir/comm-w2c.ch index 4035a633ffb..41507b2f50a 100644 --- a/Build/source/texk/web2c/cwebdir/comm-w2c.ch +++ b/Build/source/texk/web2c/cwebdir/comm-w2c.ch @@ -17,16 +17,16 @@ @q Please send comments, suggestions, etc. to tex-k@@tug.org. @> @x [0.0] l.25 -\def\title{Common code for CTANGLE and CWEAVE (Version 4.11)} +\def\title{Common code for CTANGLE and CWEAVE (Version 4.12.1)} @y \def\Kpathsea/{{\mc KPATHSEA\spacefactor1000}} \ifacro\sanitizecommand\Kpathsea{KPATHSEA}\fi -\def\title{Common code for CTANGLE and CWEAVE (4.11 [\TeX~Live])} +\def\title{Common code for CTANGLE and CWEAVE (4.12.1 [\TeX~Live])} @z @x [0.0] l.30 - \centerline{(Version 4.11)} + \centerline{(Version 4.12.1)} @y - \centerline{(Version 4.11 [\TeX~Live])} + \centerline{(Version 4.12.1 [\TeX~Live])} @z @x [0.0] l.32 @@ -616,21 +616,21 @@ else { @x [9.85] l.1286 @* Index. @y -@** Extensions to {\tentex CWEB}. The following sections introduce new or +@* Extensions to {\tentex CWEB}. The following sections introduce new or improved features that have been created by numerous contributors over the course of a quarter century. Care has been taken to keep the original section numbering intact, so this new material should nicely integrate with the original ``\&{85.~Index}.'' -@* Language setting. This global variable is set by the argument of the +@*1 Language setting. This global variable is set by the argument of the `\.{+l}' (or `\.{-l}') command-line option. @<Global var...@>= const char *use_language=""; /* prefix of \.{cwebmac.tex} in \TEX/ output */ -@* User communication. The |scan_args| and |cb_show_banner| routines and the +@*1 User communication. The |scan_args| and |cb_show_banner| routines and the |bindtextdomain| argument string need a few extra variables. @d max_banner 50 @@ -647,7 +647,7 @@ string texmf_locale;@/ #endif char separators[]=SEPARATORS; -@* Temporary file output. Most \CEE/ projects are controlled by a \.{Makefile} +@*1 Temporary file output. Most \CEE/ projects are controlled by a \.{Makefile} that automatically takes care of the temporal dependencies between the different source modules. It may be convenient that \.{CWEB} doesn't create new output for all existing files, when there are only changes to some of them. Thus the @@ -696,7 +696,7 @@ if(check_file) fclose(check_file); if(strlen(check_file_name)) /* Delete the temporary file in case of a break */ remove(check_file_name); -@* Internationalization. If translation catalogs for your personal +@*1 Internationalization. If translation catalogs for your personal \.{LANGUAGE} are installed at the appropriate place, \.{CTANGLE} and \.{CWEAVE} will talk to you in your favorite language. Catalog \.{cweb} contains all strings from ``plain \.{CWEB},'' catalog \.{cweb-tl} contains a few extra @@ -759,7 +759,7 @@ free(texmf_locale); textdomain("cweb"); /* the majority of |"strings"| come from ``plain \.{CWEB}'' */ @.cweb.mo@> -@* File lookup with \Kpathsea/. The \.{CTANGLE} and \.{CWEAVE} programs from +@*1 File lookup with \Kpathsea/. The \.{CTANGLE} and \.{CWEAVE} programs from the original \.{CWEB} package use the compile-time default directory or the value of the environment variable \.{CWEBINPUTS} as an alternative place to be searched for files, if they could not be found in the current directory. @@ -816,7 +816,7 @@ numbers. Debugging output is always written to |stderr|, and begins with the string `\.{kdebug:}'. -@* System dependent changes. The most volatile stuff comes at the very end. +@*1 System dependent changes. The most volatile stuff comes at the very end. Modules for dealing with help messages and version info. diff --git a/Build/source/texk/web2c/cwebdir/comm-w2c.h b/Build/source/texk/web2c/cwebdir/comm-w2c.h index c2743c1a388..908855471b1 100644 --- a/Build/source/texk/web2c/cwebdir/comm-w2c.h +++ b/Build/source/texk/web2c/cwebdir/comm-w2c.h @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.11 --- December 2023 (works also with later versions) +% Version 4.12.1 --- January 2025 (works also with later versions) % Copyright (C) 1987,1990,1993 Silvio Levy and Donald E. Knuth diff --git a/Build/source/texk/web2c/cwebdir/common.h b/Build/source/texk/web2c/cwebdir/common.h index 97fda82e75a..30b00cb7886 100644 --- a/Build/source/texk/web2c/cwebdir/common.h +++ b/Build/source/texk/web2c/cwebdir/common.h @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.11 --- December 2023 (works also with later versions) +% Version 4.12.1 --- January 2025 (works also with later versions) % Copyright (C) 1987,1990,1993 Silvio Levy and Donald E. Knuth diff --git a/Build/source/texk/web2c/cwebdir/common.w b/Build/source/texk/web2c/cwebdir/common.w index 88932f3118b..f54df852a4b 100644 --- a/Build/source/texk/web2c/cwebdir/common.w +++ b/Build/source/texk/web2c/cwebdir/common.w @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.11 --- December 2023 +% Version 4.12.1 --- january 2025 % Copyright (C) 1987,1990,1993,2000 Silvio Levy and Donald E. Knuth @@ -22,12 +22,12 @@ \def\v{\char'174} % vertical (|) in typewriter font -\def\title{Common code for CTANGLE and CWEAVE (Version 4.11)} +\def\title{Common code for CTANGLE and CWEAVE (Version 4.12.1)} \def\topofcontents{\null\vfill \centerline{\titlefont Common code for {\ttitlefont CTANGLE} and {\ttitlefont CWEAVE}} \vskip 15pt - \centerline{(Version 4.11)} + \centerline{(Version 4.12.1)} \vfill} \def\botofcontents{\vfill \noindent diff --git a/Build/source/texk/web2c/cwebdir/ctang-bs.ch b/Build/source/texk/web2c/cwebdir/ctang-bs.ch index c70a87fe1d0..f874351c5f0 100644 --- a/Build/source/texk/web2c/cwebdir/ctang-bs.ch +++ b/Build/source/texk/web2c/cwebdir/ctang-bs.ch @@ -17,12 +17,12 @@ by using "huge" pointers. The ``banner line'' defined here should be changed whenever \.{CTANGLE} is modified. -@d banner "This is CTANGLE (Version 4.11)" +@d banner "This is CTANGLE (Version 4.12.1)" @y The ``banner line'' defined here should be changed whenever \.{CTANGLE} is modified. -@d banner "This is CTANGLE (Version 4.11pc/big)" +@d banner "This is CTANGLE (Version 4.12.1pc/big)" @z diff --git a/Build/source/texk/web2c/cwebdir/ctang-pc.ch b/Build/source/texk/web2c/cwebdir/ctang-pc.ch index 3e6e7ac5ef2..47066fffc1d 100644 --- a/Build/source/texk/web2c/cwebdir/ctang-pc.ch +++ b/Build/source/texk/web2c/cwebdir/ctang-pc.ch @@ -9,9 +9,9 @@ that allows >64K arrays. If you need lots of bytes and toks, try the alternate change files with -bs suffix instead of -pc. @x section 1 -@d banner "This is CTANGLE (Version 4.11)" +@d banner "This is CTANGLE (Version 4.12.1)" @y -@d banner "This is CTANGLE (Version 4.11pc)" +@d banner "This is CTANGLE (Version 4.12.1pc)" @z @x section 17 @d max_bytes 100000 /* the number of bytes in identifiers, diff --git a/Build/source/texk/web2c/cwebdir/ctang-ql.ch b/Build/source/texk/web2c/cwebdir/ctang-ql.ch index 8072aff51ab..10563496088 100644 --- a/Build/source/texk/web2c/cwebdir/ctang-ql.ch +++ b/Build/source/texk/web2c/cwebdir/ctang-ql.ch @@ -7,15 +7,15 @@ ex <dev_>cc;"-v -h -c -=500000 ctangle_c" @x -\def\title{CTANGLE (Version 4.11)} +\def\title{CTANGLE (Version 4.12.1)} @y -\def\title{CTANGLE (QL Version 4.11)} +\def\title{CTANGLE (QL Version 4.12.1)} @z @x section 1 -@d banner "This is CTANGLE (Version 4.11)" +@d banner "This is CTANGLE (Version 4.12.1)" @y -@d banner "This is CTANGLE (QL Version 4.11)" +@d banner "This is CTANGLE (QL Version 4.12.1)" @z @x diff --git a/Build/source/texk/web2c/cwebdir/ctang-vms.ch b/Build/source/texk/web2c/cwebdir/ctang-vms.ch index 2c4df3bf60e..d053756d5ea 100644 --- a/Build/source/texk/web2c/cwebdir/ctang-vms.ch +++ b/Build/source/texk/web2c/cwebdir/ctang-vms.ch @@ -10,9 +10,9 @@ created: (these changes not necessary for initial bootstrapping) @x section 1 (01-FEB-1992 ST) -@d banner "This is CTANGLE (Version 4.11)" +@d banner "This is CTANGLE (Version 4.12.1)" @y -@d banner "This is CTANGLE (VAX/VMS Version 4.11)" +@d banner "This is CTANGLE (VAX/VMS Version 4.12.1)" @z @x section 5 (01-FEB-1992 ST) diff --git a/Build/source/texk/web2c/cwebdir/ctang-w2c.ch b/Build/source/texk/web2c/cwebdir/ctang-w2c.ch index 177daac7ab2..50e2fef217e 100644 --- a/Build/source/texk/web2c/cwebdir/ctang-w2c.ch +++ b/Build/source/texk/web2c/cwebdir/ctang-w2c.ch @@ -17,15 +17,15 @@ @q Please send comments, suggestions, etc. to tex-k@@tug.org. @> @x [0.0] l.30 -\def\title{CTANGLE (Version 4.11)} +\def\title{CTANGLE (Version 4.12.1)} @y -\def\title{CTANGLE (Version 4.11 [\TeX~Live])} +\def\title{CTANGLE (Version 4.12.1 [\TeX~Live])} @z @x [0.0] l.34 - \centerline{(Version 4.11)} + \centerline{(Version 4.12.1)} @y - \centerline{(Version 4.11 [\TeX~Live])} + \centerline{(Version 4.12.1 [\TeX~Live])} @z @x [0.0] l.36 @@ -41,9 +41,9 @@ @z @x [1.1] l.64 -@d banner "This is CTANGLE (Version 4.11)" +@d banner "This is CTANGLE (Version 4.12.1)" @y -@d banner "This is CTANGLE, Version 4.11" +@d banner "This is CTANGLE, Version 4.12.1" /* will be extended by the \TeX~Live |versionstring| */ @z diff --git a/Build/source/texk/web2c/cwebdir/ctang-w32.ch b/Build/source/texk/web2c/cwebdir/ctang-w32.ch index c0384b48881..bd2b75c25ad 100644 --- a/Build/source/texk/web2c/cwebdir/ctang-w32.ch +++ b/Build/source/texk/web2c/cwebdir/ctang-w32.ch @@ -4,9 +4,9 @@ This is the change file for CWEB's CTANGLE under Win32 Changes necessary for compiling with Borland C/C++ @x section 1 -@d banner "This is CTANGLE (Version 4.11)" +@d banner "This is CTANGLE (Version 4.12.1)" @y -@d banner "This is CTANGLE (Version 4.11win32)" +@d banner "This is CTANGLE (Version 4.12.1win32)" @z @x section 24 diff --git a/Build/source/texk/web2c/cwebdir/ctangle.c b/Build/source/texk/web2c/cwebdir/ctangle.c index 58e37b27b41..d5bf68060b0 100644 --- a/Build/source/texk/web2c/cwebdir/ctangle.c +++ b/Build/source/texk/web2c/cwebdir/ctangle.c @@ -15,7 +15,7 @@ /*:5*/ #line 67 "ctangle.w" -#define banner "This is CTANGLE (Version 4.11)" \ +#define banner "This is CTANGLE (Version 4.12.1)" \ #define ctangle false #define cweave true \ diff --git a/Build/source/texk/web2c/cwebdir/ctangle.w b/Build/source/texk/web2c/cwebdir/ctangle.w index 37b09e7fc02..5fc4cfc30b3 100644 --- a/Build/source/texk/web2c/cwebdir/ctangle.w +++ b/Build/source/texk/web2c/cwebdir/ctangle.w @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.11 --- December 2023 +% Version 4.12.1 --- January 2025 % Copyright (C) 1987,1990,1993,2000 Silvio Levy and Donald E. Knuth @@ -27,11 +27,11 @@ \mathchardef\RA="3221 % right arrow \mathchardef\BA="3224 % double arrow -\def\title{CTANGLE (Version 4.11)} +\def\title{CTANGLE (Version 4.12.1)} \def\topofcontents{\null\vfill \centerline{\titlefont The {\ttitlefont CTANGLE} processor} \vskip 15pt - \centerline{(Version 4.11)} + \centerline{(Version 4.12.1)} \vfill} \def\botofcontents{\vfill \noindent @@ -61,7 +61,7 @@ Joachim Schrod, Lee Wittenberg, and others who have contributed improvements. The ``banner line'' defined here should be changed whenever \.{CTANGLE} is modified. -@d banner "This is CTANGLE (Version 4.11)" +@d banner "This is CTANGLE (Version 4.12.1)" @c @<Include files@>@/ diff --git a/Build/source/texk/web2c/cwebdir/ctwill-mini.ch b/Build/source/texk/web2c/cwebdir/ctwill-mini.ch index c5f7a3df85c..675370ea7ef 100644 --- a/Build/source/texk/web2c/cwebdir/ctwill-mini.ch +++ b/Build/source/texk/web2c/cwebdir/ctwill-mini.ch @@ -21,10 +21,13 @@ Section 1. @y \ifx\undefined\pdfpagewidth \else - \pdfpagewidth=\pagewd \advance\pdfpagewidth by 2cm - \pdfpageheight=\pageht \advance\pdfpageheight by 5cm + \pdfpagewidth=\pagewidth \advance\pdfpagewidth by 2cm + \pdfpageheight=\pageheight \advance\pdfpageheight by 5cm \ifpdflua \pdfhorigin=1cm \pdfvorigin=1cm \else \global\hoffset=-1.54cm \global\voffset=-1.54cm \fi + \def\startpdf{\def\pagemode{/PageMode /UseOutlines} + \ifpdflua\pdfcatalog{\pagemode} + \else\special{pdf: docview << \pagemode >>}\fi} \fi @** Introduction. @@ -37,6 +40,7 @@ additional material specific to \.{CTWILL}. % FIXME Until then, \.{CWEAVE}'s sequence of sections will be preserved. The ``banner line'' defined here should be changed whenever \.{CTWILL} is +modified. The version number parallels the corresponding version of \.{CWEAVE}. @y A kind of ``user manual'' for \.{CTWILL} can be found in section~% \X287:Mogrify {\tentex CWEAVE} into {\tentex CTWILL}\X~and beyond, @@ -58,6 +62,7 @@ faithful overall rendering of {\itt CTWILL}'s code, though. \hfill ---Enjoy!\par} \bigskip The ``banner line'' defined here should be changed whenever \.{CTWILL} is +modified. The version number parallels the corresponding version of \.{CWEAVE}. @-banner@> @$banner {CTWILL}1 =\.{"This\ is\ CTWILL"}@> @@ -260,6 +265,14 @@ Section 25. @$no_xref {CTWILL}25 =$\R\\{make\_xrefs}$@> @z +Section 27. + +@x + while (q->num>section_xref_switch) {r=q; q=q->xlink;} +@y + while (q->num>section_xref_switch) {@+r=q; q=q->xlink;@+} +@z + Section 36. @x @@ -514,6 +527,18 @@ Section 80. \hfil\break|next_control>=begin_C|. @z +Section 82. + +@x + if (p) { +@y + @+ if (!p) return; +@z +@x + } +@y +@z + Section 86. @x @@ -1309,10 +1334,22 @@ scrap_pointer p) Section 141. @x + xref_pointer q=(xref_pointer)p->xref; /* pointer to cross-reference being examined */ +@y + @+ xref_pointer q=(xref_pointer)p->xref; /* pointer to cross-reference being examined */ +@z +@x while (q != xmem) { @y while (q != xmem) { @+ @z +@x + else if (m==n+def_flag) { + q->num=m; return; +@y + else if (m==n+def_flag) { @+ + q->num=m; return; @+ +@z Section 143. @@ -1411,6 +1448,31 @@ Section 197. @y @r @ Now here's the |reduce| procedure used in our code for productions, @z +@x + scrap_pointer i; /* pointer into scrap memory */ +@y + @+ scrap_pointer i; /* pointer into scrap memory */ +@z +@x + pp--; /* we next say |pp++| */ +@y +@z + +Section 198. + +@x + switch (k) { +@y + @+ switch (k) { +@z + +Section 199. + +@x +static int tracing=off; /* can be used to show parsing details */ +@y +@+ static int tracing=off; /* used to show parsing details */ +@z Section 200. @@ -1422,6 +1484,12 @@ Section 200. @% @$n {CTWILL}197 \&{short}@> @z +@x +} +@y +} +pp--; /* we next say |pp++| */ +@z Section 202. @@ -1589,9 +1657,9 @@ Section 212--213. Section 215. @x -@<Append a string or...@>={@+ int count=-1; /* characters remaining before string break */ +@<Append a \9{s}string or...@>={@+ int count=-1; /* characters remaining before string break */ @y -@<Append a string or...@>={int count=-1; /* characters remaining before string break */ +@<Append a \9{s}string or...@>={@+ int count=-1; /* characters remaining before string break */ @z Section 220. @@ -1815,16 +1883,24 @@ Section 245. @-phase_two@> @z -Section 247. +Section 246. @x -@ @d usage_sentinel (struct perm_meaning *)1 -@<Translate the current section@>= { +@d save_position() save_line=out_line; save_place=out_ptr @y -@ @d usage_sentinel (struct perm_meaning *)1 +@d usage_sentinel (struct perm_meaning *)1 @-usage_sentinel@> @$usage_sentinel {CTWILL}247 =(\&{struct} \&{perm\_meaning} ${}{*}{}$) \T{1}@> -@<Translate the current section@>=@+ { +@d save_position() save_line=out_line; save_place=out_ptr +@z + +Section 247. + +@x +@ @d usage_sentinel (struct perm_meaning *)1 +@<Translate the \9{c}current section@>= { +@y +@ @<Translate the \9{c}current section@>= @+ { @z Section 251. @@ -1851,9 +1927,9 @@ Section 252. Section 254. @x -@ @<Start a format...@>= { +@ @<Start \9{a}a format...@>= { @y -@r @ @<Start a format...@>= { +@r @ @<Start \9{a}a format...@>= { @z Section 255. diff --git a/Build/source/texk/web2c/cwebdir/ctwill-proofsort b/Build/source/texk/web2c/cwebdir/ctwill-proofsort index b26904d00e9..7043ddf16dd 100755 --- a/Build/source/texk/web2c/cwebdir/ctwill-proofsort +++ b/Build/source/texk/web2c/cwebdir/ctwill-proofsort @@ -61,10 +61,14 @@ foreach my $line (<STDIN>) $print_index = 1; %mini_index = (); # reset mini-index storage } elsif ("}\\FI\n" eq $line) { # end of mini-index - foreach my $key ($collator ? + foreach my $key ($collator ? # (I) sort by second column $collator->sort(keys %mini_index) : sort {"\L$a" cmp "\L$b"} keys %mini_index) { - print $mini_index{$key}; + print sort { # (II) sort by third and first column + my ($a_loc,undef,$a_id) = split / /, $a, 3; + my ($b_loc,undef,$b_id) = split / /, $b, 3; + $a_id cmp $b_id || $a_loc cmp $b_loc } + @{ $mini_index{$key} }; } $print_index = 0; } elsif ($print_index) { # mini-index entry @@ -72,7 +76,7 @@ foreach my $line (<STDIN>) $key =~ s/\\//g; # strip internal TeX escape(s) $key =~ m/\w*\{(\w+)\}/; # extract plain key from control seq. $key =~ m/\$(\w+)\$/ unless defined $1; # extract @f TeX key - $mini_index{$1} = $line; # store index entry + push @{ $mini_index{$1} }, $line; # store index entry next; # print later } diff --git a/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch b/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch index 70616695efb..8e3d0a09dd0 100644 --- a/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch +++ b/Build/source/texk/web2c/cwebdir/ctwill-w2c.ch @@ -34,38 +34,38 @@ \datethis % Put timestamp before section 1 @z -@x [0.0] l.35 -\def\title{CWEAVE (Version 4.11)} +@x [0.0] l.34 +\def\title{CWEAVE (Version 4.12.1)} @y \def\Kpathsea/{{\mc KPATHSEA\spacefactor1000}} \ifacro\sanitizecommand\Kpathsea{KPATHSEA}\fi -\def\title{CTWILL (Version 4.11 [\TeX~Live])} +\def\title{CTWILL (Version 4.12.1 [\TeX~Live])} @z -@x [0.0] l.37 +@x [0.0] l.36 \centerline{\titlefont The {\ttitlefont CWEAVE} processor} @y \centerline{\titlefont The {\ttitlefont CTWILL} processor} @z -@x [0.0] l.39 - \centerline{(Version 4.11)} +@x [0.0] l.38 + \centerline{(Version 4.12.1)} @y - \centerline{(Version 4.11 [\TeX~Live])} + \centerline{(Version 4.12.1 [\TeX~Live])} @z -@x [0.0] l.41 +@x [0.0] l.40 \def\botofcontents{\vfill @y \def\covernote{\vbox{% @z -@x [0.0] l.54 +@x [0.0] l.53 } @y }} @z -@x [1.1] l.59 +@x [1.1] l.58 This is the \.{CWEAVE} program by Silvio Levy and Donald E. Knuth, based on \.{WEAVE} by Knuth. We are thankful to Steve Avery, @@ -77,7 +77,7 @@ Crusius, and others who have contributed improvements. The ``banner line'' defined here should be changed whenever \.{CWEAVE} is modified. -@d banner "This is CWEAVE (Version 4.11)" +@d banner "This is CWEAVE (Version 4.12.1)" @y This is the \.{CTWILL} program by D. E. Knuth, based on \.{CWEAVE} by Silvio Levy and D.~E. Knuth. It is also based on @@ -101,29 +101,29 @@ Until then, \.{CWEAVE}'s sequence of sections will be preserved. The ``banner line'' defined here should be changed whenever \.{CTWILL} is modified. The version number parallels the corresponding version of \.{CWEAVE}. -@d banner "This is CTWILL, Version 4.11" +@d banner "This is CTWILL, Version 4.12.1" /* will be extended by the \TeX~Live |versionstring| */ @z -@x [1.2] l.94 +@x [1.2] l.93 program=cweave; @y program=ctwill; @z -@x [1.2] l.98 +@x [1.2] l.97 if (show_banner) puts(banner); /* print a ``banner line'' */ @y if (show_banner) cb_show_banner(); /* print a ``banner line'' */ @z -@x [1.3] l.112 +@x [1.3] l.111 @i common.h @y @i comm-w2c.h @z -@x [2.21] l.183 +@x [2.21] l.182 turned on during the first phase. @<Private...@>= @@ -132,19 +132,19 @@ static boolean change_exists; /* has any section changed? */ turned on during the first phase---NOT! @z -@x [2.23] l.217 +@x [2.23] l.216 @ @d max_refs 30000 /* number of cross-references; must be less than 65536 */ @y @ @d max_refs 65535 /* number of cross-references; must be less than 65536 */ @z -@x [2.25] l.246 +@x [2.25] l.245 @d append_xref(c) if (xref_ptr==xmem_end) overflow("cross-reference"); @y @d append_xref(c) if (xref_ptr==xmem_end) overflow(_("cross-reference")); @z -@x [2.30] l.337 +@x [2.30] l.336 @d max_toks 30000 /* number of symbols in \CEE/ texts being parsed; must be less than 65536 */ @d max_texts 8000 /* number of phrases in \CEE/ texts being parsed; @@ -156,14 +156,14 @@ turned on during the first phase---NOT! must be less than 10240 */ @z -@x [2.32] l.357 +@x [2.32] l.356 @ Here are the two procedures needed to complete |id_lookup|: @y @ Here are the two procedures needed to complete |id_lookup|: @s perm_meaning int @z -@x [2.32] l.374 +@x [2.32] l.373 p->xref=(void *)xmem; @y p->xref=(void *)xmem; @@ -177,7 +177,7 @@ turned on during the first phase---NOT! } @z -@x [2.33] l.377 +@x [2.33] l.376 @ And here's a small helper function to simplify the code. @d update_node(p) (p)->xref=(void *)xref_ptr @@ -188,7 +188,7 @@ turned on during the first phase---NOT! @d get_meaning(p) (p)-name_dir+cur_meaning @z -@x [2.34] l.436 +@x [2.34] l.435 id_lookup("extern",NULL,int_like); @y @# @@ -196,7 +196,7 @@ ext_loc=id_lookup("extern",NULL,int_like)-name_dir; @# @z -@x [2.34] l.449 +@x [2.34] l.448 id_lookup("int",NULL,raw_int); @y @# @@ -204,7 +204,7 @@ int_loc=id_lookup("int",NULL,raw_int)-name_dir; @# @z -@x [3.36] l.544 +@x [3.36] l.543 @d ord 0207 /* control code for `\.{@@'}' */ @d join 0210 /* control code for `\.{@@\&}' */ @d thin_space 0211 /* control code for `\.{@@,}' */ @@ -248,7 +248,7 @@ int_loc=id_lookup("int",NULL,raw_int)-name_dir; @d new_section 0235 /* control code for `\.{@@\ }' and `\.{@@*}' */ @z -@x [3.38] l.587 +@x [3.38] l.586 ccode['\'']=ord; @y ccode['\'']=ord; @@ -256,7 +256,7 @@ ccode['$']=meaning; ccode['%']=temp_meaning; ccode['-']=suppress; ccode['r']=ccode['R']=right_start; @z -@x [3.40] l.608 +@x [3.40] l.607 static eight_bits skip_TeX(void); @ @c @@ -269,7 +269,7 @@ part of all meanings. @c @z -@x [3.41] l.614 +@x [3.41] l.613 if (loc>limit && get_line()==false) return; @y if (loc>limit && get_line()==false) return; @@ -279,44 +279,44 @@ part of all meanings. } @z -@x [4.43] l.670 +@x [4.43] l.669 \yskip\hang |xref_roman|, |xref_wildcard|, |xref_typewriter|, |TeX_string|, @y \yskip\hang |xref_roman|, |xref_wildcard|, |xref_typewriter|, |TeX_string|, |meaning|, |suppress|, @z -@x [4.46] l.731 +@x [4.46] l.730 @d right_preproc 0217 /* ends a preprocessor command */ @y @d right_preproc 0223 /* ends a preprocessor command */ @z -@x [4.57] l.888 +@x [4.57] l.887 err_print("! String didn't end"); loc=limit; break; @y err_print(_("! String didn't end")); loc=limit; break; @z -@x [4.57] l.892 +@x [4.57] l.891 err_print("! Input ended in middle of string"); loc=buffer; break; @y err_print(_("! Input ended in middle of string")); loc=buffer; break; @z -@x [4.57] l.911 +@x [4.57] l.910 printf("%s","\n! String too long: "); @y printf("%s",_("\n! String too long: ")); @z -@x [4.59] l.930 +@x [4.59] l.929 case translit_code: err_print("! Use @@l in limbo only"); continue; @y case translit_code: err_print(_("! Use @@l in limbo only")); continue; @z -@x [4.59] l.932 +@x [4.59] l.931 case underline: xref_switch=def_flag; continue; @y case underline: xref_switch=def_flag; continue; @@ -324,38 +324,38 @@ part of all meanings. case right_start: right_start_switch=true; continue; @z -@x [4.59] l.938 +@x [4.59] l.937 case xref_roman: case xref_wildcard: case xref_typewriter: case noop: @y case xref_roman: case xref_wildcard: case xref_typewriter: case noop: case meaning: case suppress: @z -@x [4.62] l.968 +@x [4.62] l.967 err_print("! Input ended in section name"); @y err_print(_("! Input ended in section name")); @z -@x [4.62] l.981 +@x [4.62] l.980 printf("%s","\n! Section name too long: "); @y printf("%s",_("\n! Section name too long: ")); @z -@x [4.63] l.995 +@x [4.63] l.994 err_print("! Section name didn't end"); break; @y err_print(_("! Section name didn't end")); break; @z -@x [4.63] l.999 +@x [4.63] l.998 err_print("! Control codes are forbidden in section name"); break; @y err_print(_("! Control codes are forbidden in section name")); break; @z -@x [4.64] l.1009 +@x [4.64] l.1008 skip_restricted(void) { @y @@ -363,19 +363,19 @@ skip_restricted(void) { int c=ccode[(eight_bits)*(loc-1)]; @z -@x [4.64] l.1016 +@x [4.64] l.1015 err_print("! Control text didn't end"); loc=limit; @y err_print(_("! Control text didn't end")); loc=limit; @z -@x [4.64] l.1021 +@x [4.64] l.1020 err_print("! Control codes are forbidden in control text"); @y err_print(_("! Control codes are forbidden in control text")); @z -@x [4.64] l.1022 +@x [4.64] l.1021 @.Control codes are forbidden...@> @y @.Control codes are forbidden...@> @@ -383,68 +383,68 @@ skip_restricted(void) else if (c==suppress && phase==2) @<Suppress mini-index entry@>@; @z -@x [4.66] l.1036 +@x [4.66] l.1035 if (loc>=limit) err_print("! Verbatim string didn't end"); @y if (loc>=limit) err_print(_("! Verbatim string didn't end")); @z -@x [5.68] l.1061 +@x [5.68] l.1060 skip_limbo(); change_exists=false; @y skip_limbo(); @<Give a default title to the program, if necessary@>@; @z -@x [5.68] l.1064 +@x [5.68] l.1063 changed_section[section_count]=change_exists; /* the index changes if anything does */ @y @z -@x [5.70] l.1073 +@x [5.70] l.1072 if (++section_count==max_sections) overflow("section number"); @y if (++section_count==max_sections) overflow(_("section number")); @z -@x [5.70] l.1074 +@x [5.70] l.1073 changed_section[section_count]=changing; /* it will become |true| if any line changes */ @y @z -@x [5.70] l.1083 +@x [5.70] l.1082 if (changed_section[section_count]) change_exists=true; @y @z -@x [5.74] l.1162 +@x [5.74] l.1161 case translit_code: err_print("! Use @@l in limbo only"); continue; @y case translit_code: err_print(_("! Use @@l in limbo only")); continue; @z -@x [5.74] l.1167 +@x [5.74] l.1166 case xref_roman: case xref_wildcard: case xref_typewriter: @y case xref_roman: case xref_wildcard: case xref_typewriter: case meaning: case suppress: @z -@x [5.79] l.1249 +@x [5.79] l.1248 err_print("! Missing left identifier of @@s"); @y err_print(_("! Missing left identifier of @@s")); @z -@x [5.79] l.1254 +@x [5.79] l.1253 err_print("! Missing right identifier of @@s"); @y err_print(_("! Missing right identifier of @@s")); @z -@x [5.82] l.1302 +@x [5.82] l.1301 printf("%s","\n! Never defined: <"); print_section_name(p); putchar('>'); mark_harmless(); @y @@ -452,7 +452,7 @@ if (loc>=limit) err_print(_("! Verbatim string didn't end")); print_section_name(p); putchar('>'); mark_harmless(); @z -@x [5.82] l.1308 +@x [5.82] l.1307 printf("%s","\n! Never used: <"); print_section_name(p); putchar('>'); mark_harmless(); @y @@ -460,13 +460,13 @@ if (loc>=limit) err_print(_("! Verbatim string didn't end")); print_section_name(p); putchar('>'); mark_harmless(); @z -@x [6.89] l.1397 +@x [6.89] l.1396 @ In particular, the |finish_line| procedure is called near the very beginning of phase two. We initialize the output variables in a slightly tricky way so that the first line of the output file will be `\.{\\input cwebmac}'. -@<Start \TEX/...@>= +@<Start \9{t}\TEX/...@>= out_ptr=out_buf+1; out_line=1; active_file=tex_file; tex_printf("\\input cwebma"); *out_ptr='c'; @y @@ -486,7 +486,7 @@ debugging mini-index entries. @d proofing flags['P'] -@<Start \TEX/...@>= +@<Start \9{t}\TEX/...@>= out_ptr=out_buf+1; out_line=1; active_file=tex_file; tex_puts("\\input "); tex_printf(use_language); @@ -494,7 +494,7 @@ tex_puts(proofing?"ctproofma":"ctwima"); *out_ptr='c'; @z -@x [6.90] l.1414 +@x [6.90] l.1413 @d out(c) {if (out_ptr>=out_buf_end) break_out(); *(++out_ptr)=c;} @y @d out(c) @@ -508,102 +508,102 @@ tex_puts(proofing?"ctproofma":"ctwima"); } @z -@x [6.94] l.1462 +@x [6.94] l.1461 printf("\n! Line had to be broken (output l. %d):\n",out_line); @y printf(_("\n! Line had to be broken (output l. %d):\n"),out_line); @z -@x [6.95] l.1471 +@x [6.95] l.1470 |def_flag|, so it cannot have more than five decimal digits. If the section is changed, we output `\.{\\*}' just after the number. @y |def_flag|, so it cannot have more than five decimal digits. @z -@x [6.96] l.1485 +@x [6.96] l.1484 if (changed_section[n]) out_str("\\*"); @.\\*@> @y @z -@x [7.99] l.1543 +@x [7.99] l.1542 default: err_print("! Double @@ should be used in limbo"); @y case right_start: right_start_switch=true; break; default: err_print(_("! Double @@ should be used in limbo")); @z -@x [7.101] l.1585 +@x [7.101] l.1584 @d app_tok(c) {if (tok_ptr+2>tok_mem_end) overflow("token"); *(tok_ptr++)=c;} @y @d app_tok(c) {if (tok_ptr+2>tok_mem_end) overflow(_("token")); *(tok_ptr++)=c;} @z -@x [7.101] l.1597 +@x [7.101] l.1596 err_print("! Input ended in mid-comment"); @y err_print(_("! Input ended in mid-comment")); @z -@x [7.101] l.1602 +@x [7.101] l.1601 if (bal>1) err_print("! Missing } in comment"); @y if (bal>1) err_print(_("! Missing } in comment")); @z -@x [7.101] l.1618 +@x [7.101] l.1617 else {err_print("! Extra } in comment"); @y else {err_print(_("! Extra } in comment")); @z -@x [7.102] l.1630 +@x [7.102] l.1629 if (bal>1) err_print("! Missing } in comment"); @y if (bal>1) err_print(_("! Missing } in comment")); @z -@x [7.103] l.1638 +@x [7.103] l.1637 err_print("! Illegal use of @@ in comment"); @y err_print(_("! Illegal use of @@ in comment")); @z -@x [8.106] l.1755 +@x [8.106] l.1754 @d attr_head 69 /* denotes beginning of attribute */ @y @d attr_head 69 /* denotes beginning of attribute */ @d title 70 /* program name or header name in a ``meaning'' */ @z -@x [8.110] l.2129 +@x [8.110] l.2128 @i prod.w @y @i prod-twill.w @z -@x [9.113] l.2179 +@x [9.113] l.2178 static scrap scrap_info[max_scraps]; /* memory array for scraps */ @y static scrap scrap_info[max_scraps]; /* memory array for scraps */ static scrap null_scrap; /* a scrap with empty translation */ @z -@x [9.114] l.2188 +@x [9.114] l.2187 @ @<Set init...@>= @y @ @<Set init...@>= null_scrap.trans=&tok_start[0]; @z -@x [9.116] l.2249 +@x [9.116] l.2248 update_terminal(); @y puts("|"); update_terminal(); @z -@x [9.124] l.2560 +@x [9.124] l.2559 the |for| loop below. @c @@ -618,7 +618,7 @@ static token_pointer tok_loc; /* where the first identifier appears */ @# @z -@x [9.124] l.2568 +@x [9.124] l.2567 token_pointer tok_loc; /* pointer to |tok_value| */ if ((tok_loc=find_first_ident(p->trans))<=operator_found) return; /* this should not happen */ @@ -626,12 +626,12 @@ static token_pointer tok_loc; /* where the first identifier appears */ if (tok_loc<=operator_found) return; /* this should not happen */ @z -@x [9.125] l.2597 +@x [9.125] l.2596 token_pointer tok_loc; /* where the first identifier appears */ @y @z -@x [9.128] l.2651 +@x [9.128] l.2650 @<Cases for |exp|@>= if (cat1==lbrace || cat1==int_like || cat1==decl) { make_underlined(pp); big_app(dindent); big_app1(pp); @@ -646,7 +646,7 @@ if(cat1==lbrace || cat1==int_like || cat1==decl) { } @z -@x [9.128] l.2666 +@x [9.128] l.2665 make_underlined (pp); squash(pp,2,tag,-1,7); @y make_underlined (pp); @@ -657,7 +657,7 @@ if(cat1==lbrace || cat1==int_like || cat1==decl) { squash(pp,2,tag,-1,7); @z -@x [9.138] l.2755 +@x [9.138] l.2754 @ @<Cases for |decl_head|@>= if (cat1==comma) { big_app2(pp); app(opt); app('9'); reduce(pp,2,decl_head,-1,33); @@ -700,7 +700,7 @@ else if (cat1==int_like || cat1==lbrace || cat1==decl) { else if (cat1==semi) squash(pp,2,decl,-1,39); @z -@x [9.139] l.2777 +@x [9.139] l.2776 @ @<Cases for |decl|@>= if (cat1==decl) { big_app1_insert(pp,force); reduce(pp,2,decl,-1,40); @@ -719,13 +719,13 @@ else if (cat1==stmt || cat1==function) { } @z -@x [9.141] l.2803 +@x [9.141] l.2802 make_underlined(pp+1); make_reserved(pp+1); @y make_underlined(pp+1); make_reserved(pp+1); make_ministring(pp+1); @z -@x [9.143] l.2834 +@x [9.143] l.2833 @ @<Cases for |fn_decl|@>= if (cat1==decl) { big_app1_insert(pp,force); reduce(pp,2,fn_decl,0,51); @@ -748,14 +748,14 @@ else if (cat1==stmt) { } @z -@x [9.153] l.2938 +@x [9.153] l.2937 big_app1_insert(pp,dindent); reduce(pp,2,fn_decl,0,73); @y big_app1(pp); if (indent_param_decl) big_app(dindent); big_app1(pp+1); reduce(pp,2,fn_decl,0,73); @z -@x [9.156] l.2964 +@x [9.156] l.2963 big_app1_insert(pp, (cat1==decl || cat1==function) ? big_force : force_lines ? force : break_space); reduce(pp,2,cat1,-1,76); @y @@ -764,7 +764,7 @@ else if (cat1==stmt) { ( force_lines ? force : break_space ) ); reduce(pp,2,cat1,-1,76); @z -@x [9.158] l.2972 +@x [9.158] l.2971 if (cat1==define_like) make_underlined(pp+2); @y if (cat1==define_like) { /* \#\&{define} is analogous to \&{extern} */ @@ -776,7 +776,7 @@ if (cat1==define_like) { /* \#\&{define} is analogous to \&{extern} */ } @z -@x [9.167] l.3069 +@x [9.167] l.3068 if (cat1==prelangle) reduce(pp+1,0,langle,1,100); else reduce(pp,0,exp,-2,101); @y @@ -784,13 +784,13 @@ if (cat1==prelangle) reduce(pp+1,0,langle,1,121); else reduce(pp,0,exp,-2,122); @z -@x [9.168] l.3074 +@x [9.168] l.3073 big_app1_insert(pp,' '); reduce(pp,2,else_like,-2,102); @y big_app1_insert(pp,' '); reduce(pp,2,else_like,-2,123); @z -@x [9.173] l.3106 +@x [9.173] l.3105 @ @<Cases for |typedef_like|@>= if ((cat1==int_like || cat1==cast) && (cat2==comma || cat2==semi)) reduce(pp+1,0,exp,-1,115); @@ -826,56 +826,56 @@ if (cat1==decl_head) { (cat3==semi || cat3==comma)) reduce(pp+2,0,exp,1,202); @z -@x [9.186] l.3293 +@x [9.186] l.3292 overflow("token"); @y overflow(_("token")); @z -@x [9.186] l.3297 +@x [9.186] l.3296 overflow("text"); @y overflow(_("text")); @z -@x [9.190] l.3352 +@x [9.190] l.3351 if (tok_ptr+6>tok_mem_end) overflow("token"); @y if (tok_ptr+6>tok_mem_end) overflow(_("token")); @z -@x [9.191] l.3358 +@x [9.191] l.3357 printf("\nIrreducible scrap sequence in section %d:",(int)section_count); @y printf(_("\nIrreducible scrap sequence in section %d:"),(int)section_count); @z -@x [9.192] l.3368 +@x [9.192] l.3367 printf("\nTracing after l. %d:\n",cur_line); mark_harmless(); @y printf(_("\nTracing after l. %d:\n"),cur_line); mark_harmless(); @z -@x [10.196] l.3454 +@x [10.196] l.3453 case ignore: case xref_roman: case xref_wildcard: @y case ignore: case xref_roman: case xref_wildcard: case meaning: case suppress: @z -@x [10.197] l.3500 +@x [10.197] l.3499 overflow("scrap/token/text"); @y overflow(_("scrap/token/text")); @z -@x [10.199] l.3585 +@x [10.199] l.3584 else err_print("! Double @@ should be used in strings"); @y else err_print(_("! Double @@ should be used in strings")); @z -@x [10.202] l.3650 +@x [10.202] l.3649 else app_scrap(p->ilk,maybe_math); } } @@ -886,62 +886,62 @@ if (cat1==decl_head) { @<Flag the usage of this identifier, for the mini-index@>@; @z -@x [10.203] l.3668 +@x [10.203] l.3667 if (next_control!='|') err_print("! Missing '|' after C text"); @y if (next_control!='|') err_print(_("! Missing '|' after C text")); @z -@x [10.204] l.3683 +@x [10.204] l.3682 to \.{\\PB}. Although \.{cwebmac} ignores \.{\\PB}, other macro packages @y to \.{\\PB}. Although \.{ctwimac} ignores \.{\\PB}, other macro packages @z -@x [10.205] l.3713 +@x [10.205] l.3712 app(tok_flag+(int)(p-tok_start)); @y app(tok_flag+(int)(p-tok_start)); app(inserted); @z -@x [11.211] l.3809 +@x [11.211] l.3808 if (stack_ptr==stack_end) overflow("stack"); @y if (stack_ptr==stack_end) overflow(_("stack")); @z -@x [11.224] l.4132 +@x [11.224] l.4131 printf("%s","\n! Illegal control code in section name: <"); @y printf("%s",_("\n! Illegal control code in section name: <")); @z -@x [11.225] l.4147 +@x [11.225] l.4146 printf("%s","\n! C text in section name didn't end: <"); @y printf("%s",_("\n! C text in section name didn't end: <")); @z -@x [11.225] l.4159 +@x [11.225] l.4158 if (j>buffer+long_buf_size-3) overflow("buffer"); @y if (j>buffer+long_buf_size-3) overflow(_("buffer")); @z -@x [11.226] l.4167 +@x [11.226] l.4166 if (j>buffer+long_buf_size-4) overflow("buffer"); @y if (j>buffer+long_buf_size-4) overflow(_("buffer")); @z -@x [12.227] l.4182 +@x [12.227] l.4181 if (show_progress) printf("%s","\nWriting the output file..."); @y if (show_progress) printf("%s",_("\nWriting the output file...")); @z -@x [12.227] l.4184 +@x [12.227] l.4183 section_count=0; format_visible=true; copy_limbo(); @y temp_switch=false; temp_meaning_ptr=temp_meaning_stack; @@ -949,10 +949,10 @@ temp_switch=false; temp_meaning_ptr=temp_meaning_stack; section_count=0; format_visible=true; right_start_switch=false; copy_limbo(); @z -@x [12.229] l.4213 +@x [12.229] l.4212 static boolean group_found=false; /* has a starred section occurred? */ -@ @<Translate the current section@>= { +@ @<Translate the \9{c}current section@>= { section_count++; @y static boolean group_found=false; /* has a starred section occurred? */ @@ -960,18 +960,18 @@ static boolean right_start_switch; /* has `\.{@@r}' occurred recently? */ static boolean temp_switch; /* has `\.{@@\%}' occurred recently? */ @ @d usage_sentinel (struct perm_meaning *)1 -@<Translate the current section@>= { +@<Translate the \9{c}current section@>= { section_count++; temp_switch=false; temp_meaning_ptr=temp_meaning_stack; top_usage=usage_sentinel; @z -@x [12.231] l.4231 +@x [12.231] l.4230 If the section has changed, we put \.{\\*} just after the section number. @y @z -@x [12.231] l.4234 +@x [12.231] l.4233 if (*(loc-1)!='*') out_str("\\M"); @y if (*(loc-1)!='*') { @@ -983,7 +983,7 @@ if (*(loc-1)!='*') { } @z -@x [12.231] l.4249 +@x [12.231] l.4248 @.\\N@> @y @.\\N@> @@ -993,14 +993,14 @@ if (*(loc-1)!='*') { } @z -@x [12.231] l.4256 +@x [12.231] l.4255 out('{'); out_section(section_count); out('}'); @y out('{'); out_section(section_count); out('}'); flush_buffer(out_ptr,false,false); @z -@x [12.232] l.4264 +@x [12.232] l.4263 case '@@': out('@@'); break; @y case '@@': out('@@'); break; @@ -1008,26 +1008,26 @@ flush_buffer(out_ptr,false,false); case right_start: right_start_switch=true; break; @z -@x [12.232] l.4267 +@x [12.232] l.4266 case section_name: loc-=2; next_control=get_next(); /* skip to \.{@@>} */ @y case meaning: case suppress: case section_name: loc-=2; next_control=get_next(); /* reprocess */ @z -@x [12.232] l.4269 +@x [12.232] l.4268 err_print("! TeX string should be in C text only"); break; @y err_print(_("! TeX string should be in C text only")); break; @z -@x [12.232] l.4275 +@x [12.232] l.4274 err_print("! You can't do that in TeX text"); break; @y err_print(_("! You can't do that in TeX text")); break; @z -@x [12.233] l.4289 +@x [12.233] l.4288 outer_parse(); finish_C(format_visible); format_visible=true; doing_format=false; } @@ -1039,20 +1039,20 @@ flush_buffer(out_ptr,false,false); } @z -@x [12.236] l.4341 -@<Start a macro...@>= { +@x [12.236] l.4340 +@<Start \9{a}a macro...@>= { @y -@<Start a macro...@>= { +@<Start \9{a}a macro...@>= { is_macro=true; @z -@x [12.236] l.4347 +@x [12.236] l.4346 err_print("! Improper macro definition"); @y err_print(_("! Improper macro definition")); @z -@x [12.236] l.4348 +@x [12.236] l.4347 @.Improper macro definition@> else { app('$'); app_cur_id(false); @@ -1064,7 +1064,7 @@ flush_buffer(out_ptr,false,false); def_diff=(*loc!='('); @z -@x [12.236] l.4360 +@x [12.236] l.4359 } @=/* otherwise fall through */@>@; default: err_print("! Improper macro definition"); break; @y @@ -1072,34 +1072,34 @@ flush_buffer(out_ptr,false,false); default: err_print(_("! Improper macro definition")); break; @z -@x [12.237] l.4370 -@ @<Start a format...@>= { +@x [12.237] l.4369 +@ @<Start \9{a}a format...@>= { doing_format=true; @y -@ @<Start a format...@>= { +@ @<Start \9{a}a format...@>= { doing_format=true; is_macro=false; @z -@x [12.237] l.4387 +@x [12.237] l.4386 if (scrap_ptr!=scrap_info+2) err_print("! Improper format definition"); @y if (scrap_ptr!=scrap_info+2) err_print(_("! Improper format definition")); @z -@x [12.240] l.4422 +@x [12.240] l.4421 err_print("! You need an = sign after the section name"); @y err_print(_("! You need an = sign after the section name")); @z -@x [12.241] l.4444 +@x [12.241] l.4443 err_print("! You can't do that in C text"); @y err_print(_("! You can't do that in C text")); @z -@x [12.246] l.4514 +@x [12.246] l.4513 out_str("\\fi"); finish_line(); @.\\fi@> @y @@ -1110,13 +1110,13 @@ out_str("}\\FI"); finish_line(); @.\\FI@> @z -@x [13.247] l.4535 +@x [13.247] l.4534 if (show_progress) printf("%s","\nWriting the index..."); @y if (show_progress) printf("%s",_("\nWriting the index...")); @z -@x [13.247] l.4537 +@x [13.247] l.4536 if (change_exists) { @<Tell about changed sections@>@; finish_line(); flush_buffer(out_buf,false,false); @@ -1125,32 +1125,32 @@ out_str("}\\FI"); finish_line(); @y @z -@x [13.247] l.4546 +@x [13.247] l.4545 fatal("! Cannot open index file ",idx_file_name); @y fatal(_("! Cannot open index file "),idx_file_name); @z -@x [13.247] l.4558 +@x [13.247] l.4557 fatal("! Cannot open section file ",scn_file_name); @y fatal(_("! Cannot open section file "),scn_file_name); @z -@x [13.247] l.4570 +@x [13.247] l.4569 fclose(active_file); @y fclose(active_file); active_file=tex_file=NULL; if (check_for_change) @<Update the result when it has changed@>@; @z -@x [13.247] l.4573 +@x [13.247] l.4572 printf("%s","Done."); @y printf("%s",_("Done.")); @z -@x [13.249] l.4581 +@x [13.249] l.4580 the index section itself. @<Tell about changed sections@>= @@ -1169,13 +1169,13 @@ out('.'); the index section itself---NOT! @z -@x [13.257] l.4725 +@x [13.257] l.4724 if (sort_ptr>=scrap_info_end) overflow("sorting"); @y if (sort_ptr>=scrap_info_end) overflow(_("sorting")); @z -@x [13.262] l.4770 +@x [13.262] l.4769 @ @<Output the name...@>= switch (cur_name->ilk) {@+char *p; /* index into |byte_mem| */@+@t}\6{\4@> @y @@ -1186,20 +1186,20 @@ rest of the job. Compare this code with section |@<Mini-output...@>|. switch (cur_name->ilk) { @z -@x [13.262] l.4772 +@x [13.262] l.4771 case normal: case func_template: @y case normal: @z -@x [13.262] l.4774 +@x [13.262] l.4773 else {@+boolean all_caps=true;@+@t}\6{@> @y else {@+boolean all_caps=true;@+char *p; /* index into |byte_mem| */ @+@t}\6{@> @z -@x [13.262] l.4789 +@x [13.262] l.4788 case roman: not_an_identifier: out_name(cur_name,false); goto name_done; case custom: out_str("$\\"); @@ -1214,13 +1214,13 @@ not_an_identifier: out_name(cur_name,false); goto name_done; @.\\\$@> @z -@x [13.262] l.4799 +@x [13.262] l.4798 out_name(cur_name,true); @y out_name(cur_name,proofing); @z -@x [13.269] l.4862 +@x [13.269] l.4861 puts("\nMemory usage statistics:"); @.Memory usage statistics:@> printf("%td names (out of %ld)\n",@^system dependencies@> @@ -1269,7 +1269,7 @@ out_name(cur_name,proofing); (ptrdiff_t)(max_sort_ptr-scrap_info),(long)max_scraps); @z -@x [14.270] l.4884 +@x [14.270] l.4883 @** Index. @y @q Section 270. @> diff --git a/Build/source/texk/web2c/cwebdir/ctwimac.tex b/Build/source/texk/web2c/cwebdir/ctwimac.tex index d65f5bf1fcc..a7978d89036 100644 --- a/Build/source/texk/web2c/cwebdir/ctwimac.tex +++ b/Build/source/texk/web2c/cwebdir/ctwimac.tex @@ -259,16 +259,16 @@ % \L is Polish letter suppressed-L \outer\def\M#1{\def\secno{#1}\startsection\ignorespaces} \outer\def\N{\ifvoid\partialpage\lefttrue - \else\ifdim\ht\partialpage<\pageht \leftfalse\else\lefttrue\fi\fi\NNN} + \else\ifdim\ht\partialpage<\pageheight \leftfalse\else\lefttrue\fi\fi\NNN} \outer\def\NN{\ifvoid\partialpage\leftfalse - \else\ifdim\ht\partialpage<\pageht \lefttrue\else\leftfalse\fi\fi\NNN} + \else\ifdim\ht\partialpage<\pageheight \lefttrue\else\leftfalse\fi\fi\NNN} \outer\def\NNN#1#2#3.{% beginning of starred section \gdepth=#1\gtitle={#3}\def\secno{#2} \ifleft \flushout \gdef\rlhead{\let\i=I\uppercase{\ignorespaces#3}} % running left headline \global\let\rrhead=\rlhead % running right headline \else\global\setbox\partialpage=\vbox{ - \vbox to\pageht{\unvbox\partialpage\vfill}\break} + \vbox to\pageheight{\unvbox\partialpage\vfill}\break} \gdef\rrhead{\let\i=I\uppercase{\ignorespaces#3}} \fi \message{*\secno} % progress report @@ -315,12 +315,12 @@ % \count and \toks registers 200--219 are also used to keep track of refs \catcode`\@=11 \newcount\@n \newcount\@m \newcount\@p -\newdimen\pageht \pageht=19cm -\newdimen\pagewd \pagewd=13cm -\newdimen\colwd \colwd=\pagewd +\newdimen\pageheight \pageheight=19cm +\newdimen\pagewidth \pagewidth=13cm +\newdimen\colwd \colwd=\pagewidth \advance\colwd by -2pc \divide\colwd by 3 % for three columns -\newdimen\fullpageht \fullpageht=\pageht \advance\fullpageht by 4pc -\newdimen\pagethresh \pagethresh=2\pageht +\newdimen\fullpageheight \fullpageheight=\pageheight \advance\fullpageheight by 4pc +\newdimen\pagethresh \pagethresh=2\pageheight \newdimen\nsize \newdimen\msize \newskip\intersecskip \intersecskip=8pt plus 2pt minus 3pt \newbox\partialpage @@ -331,7 +331,7 @@ \newif\iftitle \newif\ifleft \def\flushout{\ifvoid\partialpage\else - \setbox0=\vsplit\partialpage to \pageht + \setbox0=\vsplit\partialpage to \pageheight \shipout\vbox{ \vbox to 3pc{\leftheadline\vfill} \nointerlineskip\box0} @@ -345,7 +345,7 @@ \hyphenpenalty 10000 \exhyphenpenalty 10000 \noindent\vbox to1pt{}\par % 1pt = \topskip - \ninept \readin} - \shipout\vbox to\fullpageht{ + \shipout\vbox to\fullpageheight{ \vbox to 3pc{\rightheadline\vfill} \unvbox\partialpage \vfill @@ -364,10 +364,10 @@ \@n=199 \loop \ifnum\@n<222 \toks\@n={} \count\@n=0 \advance\@n 1 \repeat \nrefs=0 \baseno=\secno}} -\def\leftheadline{\hbox to\pagewd{\vbox to10pt{}% +\def\leftheadline{\hbox to\pagewidth{\vbox to10pt{}% \iftitle\global\titlefalse\else\ninerm\title:\enspace \eightsl\rlhead\fi \hfil\eightrm\folio}} -\def\rightheadline{\hbox to\pagewd{\vbox to10pt{}% +\def\rightheadline{\hbox to\pagewidth{\vbox to10pt{}% \eightrm\folio\hfil\ninerm\title:\enspace \eightsl\rrhead\/}} \def\mini{\begingroup \obeylines \globaldefs=1 \newrefs=\bgroup} @@ -448,7 +448,7 @@ \def\donewithpage#1 {\let\readin=\relax} \catcode`\@=12 -\hsize=\pagewd \vsize=\maxdimen \output={\twillout} +\hsize=\pagewidth \vsize=\maxdimen \output={\twillout} \def\inx{\flushout\end} \def\fin{\parfillskip 0pt plus 1fil diff --git a/Build/source/texk/web2c/cwebdir/cweav-bs.ch b/Build/source/texk/web2c/cwebdir/cweav-bs.ch index c2f3214c793..87299509337 100644 --- a/Build/source/texk/web2c/cwebdir/cweav-bs.ch +++ b/Build/source/texk/web2c/cwebdir/cweav-bs.ch @@ -20,12 +20,12 @@ This file contributed by Barry Schwartz, trashman@crud.mn.org, 28 Jun 94. The ``banner line'' defined here should be changed whenever \.{CWEAVE} is modified. -@d banner "This is CWEAVE (Version 4.11)" +@d banner "This is CWEAVE (Version 4.12.1)" @y The ``banner line'' defined here should be changed whenever \.{CWEAVE} is modified. -@d banner "This is CWEAVE (Version 4.11pc/big)" +@d banner "This is CWEAVE (Version 4.12.1pc/big)" @z diff --git a/Build/source/texk/web2c/cwebdir/cweav-pc.ch b/Build/source/texk/web2c/cwebdir/cweav-pc.ch index 165b8a54eeb..9875d6cad29 100644 --- a/Build/source/texk/web2c/cwebdir/cweav-pc.ch +++ b/Build/source/texk/web2c/cwebdir/cweav-pc.ch @@ -11,9 +11,9 @@ that allows >64K arrays. (If you need lots more bytes, try the alternate change files that have -bs in their name instead of -pc.) @x section 1 -@d banner "This is CWEAVE (Version 4.11)" +@d banner "This is CWEAVE (Version 4.12.1)" @y -@d banner "This is CWEAVE (Version 4.11pc)" +@d banner "This is CWEAVE (Version 4.12.1pc)" @z @x section 17 diff --git a/Build/source/texk/web2c/cwebdir/cweav-ql.ch b/Build/source/texk/web2c/cwebdir/cweav-ql.ch index 31bd6138a29..aaaf58fd6d6 100644 --- a/Build/source/texk/web2c/cwebdir/cweav-ql.ch +++ b/Build/source/texk/web2c/cwebdir/cweav-ql.ch @@ -7,15 +7,15 @@ ex <dev_>cc;"-v -h -c =500000 cweave_c" @x -\def\title{CWEAVE (Version 4.11)} +\def\title{CWEAVE (Version 4.12.1)} @y -\def\title{CWEAVE (QL Version 4.11)} +\def\title{CWEAVE (QL Version 4.12.1)} @z @x section 1 -@d banner "This is CWEAVE (Version 4.11)" +@d banner "This is CWEAVE (Version 4.12.1)" @y -@d banner "This is CWEAVE (QL Version 4.11)" +@d banner "This is CWEAVE (QL Version 4.12.1)" @z @x diff --git a/Build/source/texk/web2c/cwebdir/cweav-vms.ch b/Build/source/texk/web2c/cwebdir/cweav-vms.ch index b944f838153..f04a456eaa1 100644 --- a/Build/source/texk/web2c/cwebdir/cweav-vms.ch +++ b/Build/source/texk/web2c/cwebdir/cweav-vms.ch @@ -13,9 +13,9 @@ modified: (also modified by Don Knuth to keep version numbers uptodate) @x section 1 (01-FEB-1992 ST) -@d banner "This is CWEAVE (Version 4.11)" +@d banner "This is CWEAVE (Version 4.12.1)" @y -@d banner "This is CWEAVE (VAX/VMS Version 4.11)" +@d banner "This is CWEAVE (VAX/VMS Version 4.12.1)" @z @x section 5 (01-FEB-1992 ST) diff --git a/Build/source/texk/web2c/cwebdir/cweav-w2c.ch b/Build/source/texk/web2c/cwebdir/cweav-w2c.ch index 73b9ab4b2c9..5838e0045d9 100644 --- a/Build/source/texk/web2c/cwebdir/cweav-w2c.ch +++ b/Build/source/texk/web2c/cwebdir/cweav-w2c.ch @@ -16,62 +16,62 @@ @q Please send comments, suggestions, etc. to tex-k@@tug.org. @> -@x [0.0] l.35 -\def\title{CWEAVE (Version 4.11)} +@x [0.0] l.34 +\def\title{CWEAVE (Version 4.12.1)} @y -\def\title{CWEAVE (Version 4.11 [\TeX~Live])} +\def\title{CWEAVE (Version 4.12.1 [\TeX~Live])} @z -@x [0.0] l.39 - \centerline{(Version 4.11)} +@x [0.0] l.38 + \centerline{(Version 4.12.1)} @y - \centerline{(Version 4.11 [\TeX~Live])} + \centerline{(Version 4.12.1 [\TeX~Live])} @z -@x [0.0] l.41 +@x [0.0] l.40 \def\botofcontents{\vfill @y \def\covernote{\vbox{% @z -@x [0.0] l.54 +@x [0.0] l.53 } @y }}\datecontentspage @z -@x [1.1] l.70 -@d banner "This is CWEAVE (Version 4.11)" +@x [1.1] l.69 +@d banner "This is CWEAVE (Version 4.12.1)" @y -@d banner "This is CWEAVE, Version 4.11" +@d banner "This is CWEAVE, Version 4.12.1" /* will be extended by the \TeX~Live |versionstring| */ @z -@x [1.2] l.98 +@x [1.2] l.97 if (show_banner) puts(banner); /* print a ``banner line'' */ @y if (show_banner) cb_show_banner(); /* print a ``banner line'' */ @z -@x [1.3] l.112 +@x [1.3] l.111 @i common.h @y @i comm-w2c.h @z -@x [2.23] l.217 +@x [2.23] l.216 @ @d max_refs 30000 /* number of cross-references; must be less than 65536 */ @y @ @d max_refs 65535 /* number of cross-references; must be less than 65536 */ @z -@x [2.25] l.246 +@x [2.25] l.245 @d append_xref(c) if (xref_ptr==xmem_end) overflow("cross-reference"); @y @d append_xref(c) if (xref_ptr==xmem_end) overflow(_("cross-reference")); @z -@x [2.30] l.337 +@x [2.30] l.336 @d max_toks 30000 /* number of symbols in \CEE/ texts being parsed; must be less than 65536 */ @d max_texts 8000 /* number of phrases in \CEE/ texts being parsed; @@ -83,97 +83,97 @@ must be less than 10240 */ @z -@x [4.57] l.888 +@x [4.57] l.887 err_print("! String didn't end"); loc=limit; break; @y err_print(_("! String didn't end")); loc=limit; break; @z -@x [4.57] l.892 +@x [4.57] l.891 err_print("! Input ended in middle of string"); loc=buffer; break; @y err_print(_("! Input ended in middle of string")); loc=buffer; break; @z -@x [4.57] l.911 +@x [4.57] l.910 printf("%s","\n! String too long: "); @y printf("%s",_("\n! String too long: ")); @z -@x [4.59] l.930 +@x [4.59] l.929 case translit_code: err_print("! Use @@l in limbo only"); continue; @y case translit_code: err_print(_("! Use @@l in limbo only")); continue; @z -@x [4.62] l.968 +@x [4.62] l.967 err_print("! Input ended in section name"); @y err_print(_("! Input ended in section name")); @z -@x [4.62] l.981 +@x [4.62] l.980 printf("%s","\n! Section name too long: "); @y printf("%s",_("\n! Section name too long: ")); @z -@x [4.63] l.995 +@x [4.63] l.994 err_print("! Section name didn't end"); break; @y err_print(_("! Section name didn't end")); break; @z -@x [4.63] l.999 +@x [4.63] l.998 err_print("! Control codes are forbidden in section name"); break; @y err_print(_("! Control codes are forbidden in section name")); break; @z -@x [4.64] l.1016 +@x [4.64] l.1015 err_print("! Control text didn't end"); loc=limit; @y err_print(_("! Control text didn't end")); loc=limit; @z -@x [4.64] l.1021 +@x [4.64] l.1020 err_print("! Control codes are forbidden in control text"); @y err_print(_("! Control codes are forbidden in control text")); @z -@x [4.66] l.1036 +@x [4.66] l.1035 if (loc>=limit) err_print("! Verbatim string didn't end"); @y if (loc>=limit) err_print(_("! Verbatim string didn't end")); @z -@x [5.70] l.1073 +@x [5.70] l.1072 if (++section_count==max_sections) overflow("section number"); @y if (++section_count==max_sections) overflow(_("section number")); @z -@x [5.74] l.1162 +@x [5.74] l.1161 case translit_code: err_print("! Use @@l in limbo only"); continue; @y case translit_code: err_print(_("! Use @@l in limbo only")); continue; @z -@x [5.79] l.1249 +@x [5.79] l.1248 err_print("! Missing left identifier of @@s"); @y err_print(_("! Missing left identifier of @@s")); @z -@x [5.79] l.1254 +@x [5.79] l.1253 err_print("! Missing right identifier of @@s"); @y err_print(_("! Missing right identifier of @@s")); @z -@x [5.82] l.1302 +@x [5.82] l.1301 printf("%s","\n! Never defined: <"); print_section_name(p); putchar('>'); mark_harmless(); @y @@ -181,7 +181,7 @@ if (loc>=limit) err_print(_("! Verbatim string didn't end")); print_section_name(p); putchar('>'); mark_harmless(); @z -@x [5.82] l.1308 +@x [5.82] l.1307 printf("%s","\n! Never used: <"); print_section_name(p); putchar('>'); mark_harmless(); @y @@ -189,13 +189,13 @@ if (loc>=limit) err_print(_("! Verbatim string didn't end")); print_section_name(p); putchar('>'); mark_harmless(); @z -@x [6.89] l.1397 +@x [6.89] l.1396 @ In particular, the |finish_line| procedure is called near the very beginning of phase two. We initialize the output variables in a slightly tricky way so that the first line of the output file will be `\.{\\input cwebmac}'. -@<Start \TEX/...@>= +@<Start \9{t}\TEX/...@>= out_ptr=out_buf+1; out_line=1; active_file=tex_file; tex_printf("\\input cwebma"); *out_ptr='c'; @y @@ -210,7 +210,7 @@ prepended to `\.{cwebmac.tex}', e.g., if you call \.{CWEAVE} with Without this option the first line of the output file will be `\.{\\input cwebmac}'. -@<Start \TEX/...@>= +@<Start \9{t}\TEX/...@>= out_ptr=out_buf+1; out_line=1; active_file=tex_file; tex_puts("\\input "); tex_printf(use_language); @@ -218,61 +218,61 @@ tex_puts("cwebma"); *out_ptr='c'; @z -@x [6.94] l.1462 +@x [6.94] l.1461 printf("\n! Line had to be broken (output l. %d):\n",out_line); @y printf(_("\n! Line had to be broken (output l. %d):\n"),out_line); @z -@x [7.99] l.1543 +@x [7.99] l.1542 default: err_print("! Double @@ should be used in limbo"); @y default: err_print(_("! Double @@ should be used in limbo")); @z -@x [7.101] l.1585 +@x [7.101] l.1584 @d app_tok(c) {if (tok_ptr+2>tok_mem_end) overflow("token"); *(tok_ptr++)=c;} @y @d app_tok(c) {if (tok_ptr+2>tok_mem_end) overflow(_("token")); *(tok_ptr++)=c;} @z -@x [7.101] l.1597 +@x [7.101] l.1596 err_print("! Input ended in mid-comment"); @y err_print(_("! Input ended in mid-comment")); @z -@x [7.101] l.1602 +@x [7.101] l.1601 if (bal>1) err_print("! Missing } in comment"); @y if (bal>1) err_print(_("! Missing } in comment")); @z -@x [7.101] l.1618 +@x [7.101] l.1617 else {err_print("! Extra } in comment"); @y else {err_print(_("! Extra } in comment")); @z -@x [7.102] l.1630 +@x [7.102] l.1629 if (bal>1) err_print("! Missing } in comment"); @y if (bal>1) err_print(_("! Missing } in comment")); @z -@x [7.103] l.1638 +@x [7.103] l.1637 err_print("! Illegal use of @@ in comment"); @y err_print(_("! Illegal use of @@ in comment")); @z -@x [8.110] l.2129 +@x [8.110] l.2128 @i prod.w @y @i prod-cweave.w @z -@x [9.128] l.2651 +@x [9.128] l.2650 @<Cases for |exp|@>= if (cat1==lbrace || cat1==int_like || cat1==decl) { make_underlined(pp); big_app(dindent); big_app1(pp); @@ -286,7 +286,7 @@ if(cat1==lbrace || cat1==int_like || cat1==decl) { } @z -@x [9.138] l.2755 +@x [9.138] l.2754 @ @<Cases for |decl_head|@>= if (cat1==comma) { big_app2(pp); app(opt); app('9'); reduce(pp,2,decl_head,-1,33); @@ -328,7 +328,7 @@ else if (cat1==int_like || cat1==lbrace || cat1==decl) { else if (cat1==semi) squash(pp,2,decl,-1,39); @z -@x [9.139] l.2777 +@x [9.139] l.2776 @ @<Cases for |decl|@>= if (cat1==decl) { big_app1_insert(pp,force); reduce(pp,2,decl,-1,40); @@ -347,7 +347,7 @@ else if (cat1==stmt || cat1==function) { } @z -@x [9.143] l.2834 +@x [9.143] l.2833 @ @<Cases for |fn_decl|@>= if (cat1==decl) { big_app1_insert(pp,force); reduce(pp,2,fn_decl,0,51); @@ -370,14 +370,14 @@ else if (cat1==stmt) { } @z -@x [9.153] l.2938 +@x [9.153] l.2937 big_app1_insert(pp,dindent); reduce(pp,2,fn_decl,0,73); @y big_app1(pp); if (indent_param_decl) big_app(dindent); big_app1(pp+1); reduce(pp,2,fn_decl,0,73); @z -@x [9.156] l.2964 +@x [9.156] l.2963 big_app1_insert(pp, (cat1==decl || cat1==function) ? big_force : force_lines ? force : break_space); reduce(pp,2,cat1,-1,76); @y @@ -386,109 +386,109 @@ else if (cat1==stmt) { ( force_lines ? force : break_space ) ); reduce(pp,2,cat1,-1,76); @z -@x [9.186] l.3293 +@x [9.186] l.3292 overflow("token"); @y overflow(_("token")); @z -@x [9.186] l.3297 +@x [9.186] l.3296 overflow("text"); @y overflow(_("text")); @z -@x [9.190] l.3352 +@x [9.190] l.3351 if (tok_ptr+6>tok_mem_end) overflow("token"); @y if (tok_ptr+6>tok_mem_end) overflow(_("token")); @z -@x [9.191] l.3358 +@x [9.191] l.3357 printf("\nIrreducible scrap sequence in section %d:",(int)section_count); @y printf(_("\nIrreducible scrap sequence in section %d:"),(int)section_count); @z -@x [9.192] l.3368 +@x [9.192] l.3367 printf("\nTracing after l. %d:\n",cur_line); mark_harmless(); @y printf(_("\nTracing after l. %d:\n"),cur_line); mark_harmless(); @z -@x [10.197] l.3500 +@x [10.197] l.3499 overflow("scrap/token/text"); @y overflow(_("scrap/token/text")); @z -@x [10.199] l.3585 +@x [10.199] l.3584 else err_print("! Double @@ should be used in strings"); @y else err_print(_("! Double @@ should be used in strings")); @z -@x [10.203] l.3668 +@x [10.203] l.3667 if (next_control!='|') err_print("! Missing '|' after C text"); @y if (next_control!='|') err_print(_("! Missing '|' after C text")); @z -@x [11.211] l.3809 +@x [11.211] l.3808 if (stack_ptr==stack_end) overflow("stack"); @y if (stack_ptr==stack_end) overflow(_("stack")); @z -@x [11.224] l.4132 +@x [11.224] l.4131 printf("%s","\n! Illegal control code in section name: <"); @y printf("%s",_("\n! Illegal control code in section name: <")); @z -@x [11.225] l.4147 +@x [11.225] l.4146 printf("%s","\n! C text in section name didn't end: <"); @y printf("%s",_("\n! C text in section name didn't end: <")); @z -@x [11.225] l.4159 +@x [11.225] l.4158 if (j>buffer+long_buf_size-3) overflow("buffer"); @y if (j>buffer+long_buf_size-3) overflow(_("buffer")); @z -@x [11.226] l.4167 +@x [11.226] l.4166 if (j>buffer+long_buf_size-4) overflow("buffer"); @y if (j>buffer+long_buf_size-4) overflow(_("buffer")); @z -@x [12.227] l.4182 +@x [12.227] l.4181 if (show_progress) printf("%s","\nWriting the output file..."); @y if (show_progress) printf("%s",_("\nWriting the output file...")); @z -@x [12.232] l.4269 +@x [12.232] l.4268 err_print("! TeX string should be in C text only"); break; @y err_print(_("! TeX string should be in C text only")); break; @z -@x [12.232] l.4275 +@x [12.232] l.4274 err_print("! You can't do that in TeX text"); break; @y err_print(_("! You can't do that in TeX text")); break; @z -@x [12.236] l.4347 +@x [12.236] l.4346 err_print("! Improper macro definition"); @y err_print(_("! Improper macro definition")); @z -@x [12.236] l.4360 +@x [12.236] l.4359 } @=/* otherwise fall through */@>@; default: err_print("! Improper macro definition"); break; @y @@ -496,62 +496,62 @@ if (show_progress) printf("%s",_("\nWriting the output file...")); default: err_print(_("! Improper macro definition")); break; @z -@x [12.237] l.4387 +@x [12.237] l.4386 if (scrap_ptr!=scrap_info+2) err_print("! Improper format definition"); @y if (scrap_ptr!=scrap_info+2) err_print(_("! Improper format definition")); @z -@x [12.240] l.4422 +@x [12.240] l.4421 err_print("! You need an = sign after the section name"); @y err_print(_("! You need an = sign after the section name")); @z -@x [12.241] l.4444 +@x [12.241] l.4443 err_print("! You can't do that in C text"); @y err_print(_("! You can't do that in C text")); @z -@x [13.247] l.4535 +@x [13.247] l.4534 if (show_progress) printf("%s","\nWriting the index..."); @y if (show_progress) printf("%s",_("\nWriting the index...")); @z -@x [13.247] l.4546 +@x [13.247] l.4545 fatal("! Cannot open index file ",idx_file_name); @y fatal(_("! Cannot open index file "),idx_file_name); @z -@x [13.247] l.4558 +@x [13.247] l.4557 fatal("! Cannot open section file ",scn_file_name); @y fatal(_("! Cannot open section file "),scn_file_name); @z -@x [13.247] l.4570 +@x [13.247] l.4569 fclose(active_file); @y fclose(active_file); active_file=tex_file=NULL; if (check_for_change) @<Update the result when it has changed@>@; @z -@x [13.247] l.4573 +@x [13.247] l.4572 printf("%s","Done."); @y printf("%s",_("Done.")); @z -@x [13.257] l.4725 +@x [13.257] l.4724 if (sort_ptr>=scrap_info_end) overflow("sorting"); @y if (sort_ptr>=scrap_info_end) overflow(_("sorting")); @z -@x [13.269] l.4862 +@x [13.269] l.4861 puts("\nMemory usage statistics:"); @.Memory usage statistics:@> printf("%td names (out of %ld)\n",@^system dependencies@> @@ -595,7 +595,7 @@ if (check_for_change) @<Update the result when it has changed@>@; (ptrdiff_t)(max_sort_ptr-scrap_info),(long)max_scraps); @z -@x [14.270] l.4884 +@x [14.270] l.4883 @** Index. @y @** Extensions to {\tentex CWEB}. The following sections introduce new or diff --git a/Build/source/texk/web2c/cwebdir/cweav-w32.ch b/Build/source/texk/web2c/cwebdir/cweav-w32.ch index 1bf1471e18e..5478d0406e0 100644 --- a/Build/source/texk/web2c/cwebdir/cweav-w32.ch +++ b/Build/source/texk/web2c/cwebdir/cweav-w32.ch @@ -2,9 +2,9 @@ This is the change file for CWEB's CWEAVE under Win32 (Contributed by Fabrice Popineau, February 2002) @x section 1 -@d banner "This is CWEAVE (Version 4.11)" +@d banner "This is CWEAVE (Version 4.12.1)" @y -@d banner "This is CWEAVE (Version 4.11win32)" +@d banner "This is CWEAVE (Version 4.12.1win32)" @z @x section 32 diff --git a/Build/source/texk/web2c/cwebdir/cweave.w b/Build/source/texk/web2c/cwebdir/cweave.w index 808d46cc7eb..39de8a432be 100644 --- a/Build/source/texk/web2c/cwebdir/cweave.w +++ b/Build/source/texk/web2c/cwebdir/cweave.w @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.11 --- December 2023 +% Version 4.12.1 --- January 2025 % Copyright (C) 1987,1990,1993,2000 Silvio Levy and Donald E. Knuth @@ -27,16 +27,15 @@ \def\dleft{[\![} \def\dright{]\!]} % double brackets \mathchardef\RA="3221 % right arrow \mathchardef\BA="3224 % double arrow -\def\({} % ) kludge for alphabetizing certain section names \def\TeXxstring{\\{\TEX/\_string}} \def\skipxTeX{\\{skip\_\TEX/}} \def\copyxTeX{\\{copy\_\TEX/}} -\def\title{CWEAVE (Version 4.11)} +\def\title{CWEAVE (Version 4.12.1)} \def\topofcontents{\null\vfill \centerline{\titlefont The {\ttitlefont CWEAVE} processor} \vskip 15pt - \centerline{(Version 4.11)} + \centerline{(Version 4.12.1)} \vfill} \def\botofcontents{\vfill \noindent @@ -67,7 +66,7 @@ Crusius, and others who have contributed improvements. The ``banner line'' defined here should be changed whenever \.{CWEAVE} is modified. -@d banner "This is CWEAVE (Version 4.11)" +@d banner "This is CWEAVE (Version 4.12.1)" @c @<Include files@>@/ @@ -94,7 +93,7 @@ char **av) /* argument values */ program=cweave; @<Set initial values@>@; common_init(); - @<Start \TEX/ output@>@; + @<Start \9{t}\TEX/ output@>@; if (show_banner) puts(banner); /* print a ``banner line'' */ @<Store all the reserved words@>@; phase_one(); /* read all the user's text and store the cross-references */ @@ -1077,9 +1076,9 @@ phase_one(void) { printf("*%d",(int)section_count); update_terminal(); /* print a progress report */ } - @<Store cross-references in the \TEX/ part of a section@>@; - @<Store cross-references in the definition part of a section@>@; - @<Store cross-references in the \CEE/ part of a section@>@; + @<Store cross-references in the \9{t}\TEX/ part of a section@>@; + @<Store cross-references in the \9{d}definition part of a section@>@; + @<Store cross-references in the \9{c}\CEE/ part of a section@>@; if (changed_section[section_count]) change_exists=true; } @@ -1156,7 +1155,7 @@ the identifiers in \CEE/ texts enclosed in \pb, or for control texts enclosed in \.{@@\^}$\,\ldots\,$\.{@@>} or \.{@@.}$\,\ldots\,$\.{@@>} or \.{@@:}$\,\ldots\,$\.{@@>}. -@<Store cross-references in the \T...@>= +@<Store cross-references in the \9{t}\T...@>= while (true) { switch (next_control=skip_TeX()) { case translit_code: err_print("! Use @@l in limbo only"); continue; @@ -1205,7 +1204,7 @@ static name_pointer res_wd_end; /* pointer to the first nonreserved identifier * @ When we get to the following code we have |next_control>=format_code|. -@<Store cross-references in the d...@>= +@<Store cross-references in the \9{d}d...@>= while (next_control<=definition) { /* |format_code| or |definition| */ if (next_control==definition) { xref_switch=def_flag; /* implied \.{@@!} */ @@ -1262,7 +1261,7 @@ else { @ Finally, when the \TEX/ and definition parts have been treated, we have |next_control>=begin_C|. -@<Store cross-references in the \CEE/...@>= +@<Store cross-references in the \9{c}\CEE/...@>= if (next_control<=section_name) { /* |begin_C| or |section_name| */ if (next_control==begin_C) section_xref_switch=0; else { @@ -1399,7 +1398,7 @@ beginning of phase two. We initialize the output variables in a slightly tricky way so that the first line of the output file will be `\.{\\input cwebmac}'. -@<Start \TEX/...@>= +@<Start \9{t}\TEX/...@>= out_ptr=out_buf+1; out_line=1; active_file=tex_file; tex_printf("\\input cwebma"); *out_ptr='c'; @@ -3421,10 +3420,10 @@ switch (next_control) { app_scrap(section_scrap,maybe_math);@+ app_scrap(exp,yes_math);@+break; case string: case constant: case verbatim: - @<Append a string or constant@>@;@+break; + @<Append a \9{s}string or constant@>@;@+break; case identifier: app_cur_id(true);@+break; case TeX_string: - @<Append a \TEX/ string, without forming a scrap@>@;@+break; + @<Append a \9{t}\TEX/ string, without forming a scrap@>@;@+break; case '/': case '.': app(next_control);@+app_scrap(binop,yes_math);@+break; case '<': app_str("\\langle");@+app_scrap(prelangle,yes_math);@+break; @@ -3546,7 +3545,7 @@ Many of the special characters in a string must be prefixed by `\.\\' so that \TEX/ will print them properly. @^special string characters@> -@<Append a string or...@>={@+ int count=-1; /* characters remaining before string break */ +@<Append a \9{s}string or...@>={@+ int count=-1; /* characters remaining before string break */ switch (next_control) { case constant: app_str("\\T{"@q}@>); break; @.\\T@> @@ -3612,7 +3611,7 @@ this bug is probably to enclose the \.{@@t...@@>} in \.{@@[...@@]} so that the \TEX/ string is treated as an expression. @^bug, known@> -@<Append a \TEX/ string, without forming a scrap@>= +@<Append a \9{t}\TEX/ string, without forming a scrap@>= app_str("\\hbox{"@q}@>); @^high-bit character handling@> while (id_first<id_loc) { @@ -4184,7 +4183,7 @@ if (show_progress) printf("%s","\nWriting the output file..."); section_count=0; format_visible=true; copy_limbo(); finish_line(); flush_buffer(out_buf,false,false); /* insert a blank line, it looks nice */ -while (!input_has_ended) @<Translate the current section@>@; +while (!input_has_ended) @<Translate the \9{c}current section@>@; } @ @<Predecl...@>=@+static void phase_two(void); @@ -4212,13 +4211,13 @@ static boolean format_visible; /* should the next format declaration be output? static boolean doing_format=false; /* are we outputting a format declaration? */ static boolean group_found=false; /* has a starred section occurred? */ -@ @<Translate the current section@>= { +@ @<Translate the \9{c}current section@>= { section_count++; @<Output the code for the beginning of a new section@>@; save_position(); - @<Translate the \TEX/ part of the current section@>@; - @<Translate the definition part of the current section@>@; - @<Translate the \CEE/ part of the current section@>@; + @<Translate the \9{t}\TEX/ part of the current section@>@; + @<Translate the \9{d}definition part of the current section@>@; + @<Translate the \9{c}\CEE/ part of the current section@>@; @<Show cross-references to this section@>@; @<Output the code for the end of a section@>@; } @@ -4258,7 +4257,7 @@ out('{'); out_section(section_count); out('}'); @ In the \TEX/ part of a section, we simply copy the source text, except that index entries are not copied and \CEE/ text within \pb\ is translated. -@<Translate the \T...@>= do +@<Translate the \9{t}\T...@>= do switch (next_control=copy_TeX()) { case '|': init_stack(); output_C(); break; case '@@': out('@@'); break; @@ -4280,12 +4279,12 @@ while (next_control<format_code); @ When we get to the following code we have |next_control>=format_code|, and the token memory is in its initial empty state. -@<Translate the d...@>= +@<Translate the \9{d}d...@>= space_checked=false; while (next_control<=definition) { /* |format_code| or |definition| */ init_stack(); - if (next_control==definition) @<Start a macro definition@>@; - else @<Start a format definition@>@; + if (next_control==definition) @<Start \9{a}a macro definition@>@; + else @<Start \9{a}a format definition@>@; outer_parse(); finish_C(format_visible); format_visible=true; doing_format=false; } @@ -4338,7 +4337,7 @@ if the identifier is not followed by `\.(' at all, the replacement text starts immediately after the identifier. In the former case, it starts after we scan the matching `\.)'. -@<Start a macro...@>= { +@<Start \9{a}a macro...@>= { if (save_line!=out_line || save_place!=out_ptr || space_checked) app(backup); if(!space_checked){emit_space_if_needed();save_position();} app_str("\\D"); /* this will produce `\#\&{define }' */ @@ -4367,7 +4366,7 @@ it starts after we scan the matching `\.)'. } } -@ @<Start a format...@>= { +@ @<Start \9{a}a format...@>= { doing_format=true; if(*(loc-1)=='s' || *(loc-1)=='S') format_visible=false; if(!space_checked){emit_space_if_needed();save_position();} @@ -4395,7 +4394,7 @@ point to the current section name, if it has a name. @<Private...@>= static name_pointer this_section; /* the current section name, or zero */ -@ @<Translate the \CEE/...@>= +@ @<Translate the \9{c}\CEE/...@>= this_section=name_dir; if (next_control<=section_name) { emit_space_if_needed(); init_stack(); diff --git a/Build/source/texk/web2c/cwebdir/cwebacromac.tex b/Build/source/texk/web2c/cwebdir/cwebacromac.tex index f8462d06a37..6ec27777fdd 100644 --- a/Build/source/texk/web2c/cwebdir/cwebacromac.tex +++ b/Build/source/texk/web2c/cwebdir/cwebacromac.tex @@ -1,6 +1,8 @@ % hypertext macros for CWEB listings (in addition to cwebmac.tex) -% Version 2.0 --- May 2024 +% Used in cwebmac.tex, pdfctwimac.tex, pdfproofmac.tex +% Version 3.1 --- January 2025 \ifx\ifacrohint\undefined\endinput\fi % these are not standalone macros + \ifluatex % LuaTeX is almost like pdfTeX \protected\def\pdfliteral {\pdfextension literal} \protected\def\pdfstartlink {\pdfextension startlink\space} @@ -15,7 +17,16 @@ \let\pdfoutput=\outputmode \fi % end of LuaTeX->pdfTeX redirection macros -% Used in cwebmac.tex, pdfctwimac.tex, pdfproofmac.tex +\def\pdfURL#1#2{\ifpdf \ifpdflua\pdfannotlink height \theheight depth \thedepth + attr {/Border [0 0 0]} user { /Type /Annot /Subtype /Link /A + << /S /URI /URI (#2) >>}\Blue #1\Black \pdfendlink % changed in 3.69 + \else {\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}% + \special{pdf: ec}}\special{pdf: ann width \thewidth height \theheight + depth \thedepth << /Border [0 0 0] /Type /Annot /Subtype /Link /A + << /S /URI /URI (#2) >> >>}\box0\relax}\fi + \else #1 ({\tt#2})\fi} +{\catcode`\~=12 \gdef\TILDE/{~}} % ~ in a URL +{\catcode`\_=12 \gdef\UNDER/{_}} % _ in a URL \def\tocpages{1} % Most programs have one-page Table-of-Contents \def\startpdf{\def\pagemode{/PageMode /UseOutlines} \ifnum\contentspagenumber=0 \advance \pageno by -\tocpages @@ -24,9 +35,52 @@ \else \twodigits=\pageno \pageno=\contentspagenumber \advance \pageno by \tocpages \advance \twodigits by -\pageno \def\pagelabels{/PageLabels << /Nums [ 0 << /S/D/St \the\pageno >> - \the\twodigits << /S/D/St \contentspagenumber >> ] >>} \fi + \the\twodigits << /S/D/St \contentspagenumber >> ] >>} + \fi \ifpdflua\pdfcatalog{\pagemode\space\pagelabels} - \else \special{pdf: docview << \pagemode\space\pagelabels >>}\fi} + \else\special{pdf: docview << \pagemode\space\pagelabels >>}\fi} +\ifacrohint\def\digits{\pdflink{\the\countA}\scan} +\else\def\digits{{\the\countA}\scan}\fi +\def\scan#1{\begingroup + \ifx!#1% exit on exclamation point + \else\ifx,#1,\space\aftergroup\scan % insert ,\space}\scan ... + \else\ifx\[#1\aftergroup#1% insert }\[... + \else\ifx\*#1\aftergroup\lapstar\aftergroup\scan % insert }\lapstar\scan ... + \else\ifnum`#1>`9#1\aftergroup\scan % insert #1}\scan ... + \else\ifnum`#1<`0#1\aftergroup\scan % insert #1}\scan ... + \else + \afterassignment\digits \aftergroup\countA + \aftergroup#1% insert }\countA=#1...\digits ... + \fi\fi\fi\fi\fi \fi + \endgroup} + +% Local variables; there are a few externals like '\toksA' and '\countA' +\newtoks\toksB \newtoks\toksC \newtoks\toksD \newtoks\toksF \newtoks\sanitizer +\newif\iftokprocessed \newif\ifTnum \newif\ifinstr \newif\ifhavenum + +\ifacrohint % Common macros for \ifacro and \ifhint to create \pdflink's +\def\pdfnote#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}\maketoks}\the\toksA} +\def\firstsecno#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}% + \def\makenote{\addtokens\toksB{\the\toksC}\def\makenote{\let\space\empty + \toksC={}\toksD={}}\makenote}\maketoks}} +\def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} +\def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}% + \ifcat\noexpand\first0\countB=`#1\else\countB=0\fi} +\def\maketoks{\expandafter\poptoks\the\toksA|ENDTOKS|% + \let\next=\maketoks % continue processing by default + \ifnum\countB>`9 \countB=0 \fi + \ifnum\countB<`0 + \ifhavenum\makenote\fi + \ifx\first.\let\next=\maketoksdone % fullstop + \else\addtokens\toksB{\the\toksD}\ifx\first,\addtokens\toksB{\space}\fi + \fi + \else\addtokens\toksC{\the\toksD}\global\havenumtrue + \fi + \next} +\def\makenote{\addtokens\toksB + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\havenumfalse} +\def\maketoksdone{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\fi % End of common pdf/hint macros \ifacro % The following are general pdf macros \def\thewidth{\the\wd0 \space} @@ -34,13 +88,14 @@ \def\thedepth{\the\dp\strutbox\space} \ifpdflua \ifx\pdfannotlink\undefined\let\pdfannotlink\pdfstartlink\fi% for pdfTeX 0.14 - \def\pdflink#1#2{\hbox{\pdfannotlink height \theheight depth \thedepth + \def\pdflink#1{\hbox{\pdfannotlink height \theheight depth \thedepth attr{/Border [0 0 0]} goto num #1 \Blue #1\Black\pdfendlink}} % changed 3.69 -\else\def\pdflink#1#2{\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}% +\else\def\pdflink#1{\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}% \special{pdf: ec}}\special{pdf: ann width \thewidth height \theheight - depth \thedepth << /Type /Annot /Subtype /Link - /Border [0 0 0] /A << /S /GoTo /D (#2) >> >>}\box0\relax}\fi -\def\sanitizecommand#1#2{\addtokens\usersanitizer + depth \thedepth << /Type /Annot /Subtype /Link /Border [0 0 0] + /A << /S /GoTo /D (\romannumeral#1) >> >>}\box0\relax} +\fi +\def\sanitizecommand#1#2{\addtokens\sanitizer {\noexpand\dosanitizecommand\noexpand#1{#2}}} \def\dosanitizecommand#1#2{\ifx\nxt#1\addF{#2}\fi} @@ -49,9 +104,11 @@ \catcode`\[=12 \catcode`\]=12 \catcode`\{=1 \catcode`\}=2 \catcode`\~=12 \def\tildechar{~} \catcode`\~=13 \catcode`\|=0 |catcode`|\=12 |def|bschar{\} |catcode`|\=0 \catcode`\|=12 -\def\makeoutlinetoks{\Tnumfalse\afterassignment\makeolproctok\let\nxt= } +\def\makeoutlinetoks{\toksF={}\Tnumfalse + \afterassignment\makeolproctok\let\nxt= } \def\makeolnexttok{\afterassignment\makeolproctok\let\nxt= } \def\makeolgobbletok{\afterassignment\makeolnexttok\let\nxt= } +\def\makeolgobbletokk{\afterassignment\makeolgobbletok\let\nxt= } \def\addF#1{\addtokens\toksF{#1}\tokprocessedtrue} % now comes a routine to "sanitize" section names, for pdf outlines \def\makeolproctok{\tokprocessedfalse @@ -62,9 +119,8 @@ \else\ifx^\nxt \addF^\else\ifx_\nxt \addF_% sanitize ^ and _ \else\ifx\nxt\spacechar \addF\space \else\if\noexpand\nxt\relax % we have a control sequence; is it one we know? - \ifx\nxt~\addF\space - \else\ifx\nxt\onespace\addF\space - \else\the\usersanitizer + \ifx\nxt~\addF\space \else\ifx\nxt\onespace\addF\space + \else\the\sanitizer \iftokprocessed\else\makeolproctokctli \iftokprocessed\else\makeolproctokctlii \iftokprocessed\else\makeolproctokctliii % if not recognised, skip it @@ -77,8 +133,7 @@ \else\expandafter\makeolproctokchar\meaning\nxt \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi - \next -} + \next} \def\makeolproctokchar#1 #2 #3{\addF{#3}} \def\makeolproctokctli{% \ifx\nxt\CEE\addF{C}\let\next\makeolgobbletok % \CEE/ @@ -86,8 +141,9 @@ \else\ifx\nxt\TEX\addF{TeX}\let\next\makeolgobbletok % \TEX/ \else\ifx\nxt\TeX\addF{TeX}\else\ifx\nxt\LaTeX\addF{LaTeX}% \else\ifx\nxt\CPLUSPLUS\addF{C++}\let\next\makeolgobbletok % \CPLUSPLUS/ - \else\ifx\nxt\Cee\addF{C}% + \else\ifx\nxt\Cee\addF{C}\else\ifx\nxt\dots\addF{...\space}% \else\ifx\nxt\PB \let\next\makeolgobbletok \tokprocessedtrue % \PB{...} + \else\ifx\nxt\9 \expandafter\nxt\relax \let\next\makeolgobbletokk % \9{#1} \else\ifx\nxt\.\tokprocessedtrue\instrtrue % \.{...} % skip \| \else\ifx\nxt\\\ifinstr\addF{\bschar\bschar}\else\tokprocessedtrue\fi @@ -102,7 +158,7 @@ \else\ifx\nxt\PP\addF{++}\else\ifx\nxt\MM\addF{--}% \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi \fi\fi\fi\fi\fi - \fi\fi + \fi\fi\fi\fi } \def\makeolproctokctlii{% \ifx\nxt\MG\addF{->}\else\ifx\nxt\GG\addF{>>}% @@ -141,48 +197,19 @@ \fi\fi\fi\fi\fi } \def\outlinedone{\edef\outlinest{\global\noexpand\toksE={\the\toksF}}% - \outlinest\let\outlinedone=\relax} + \outlinest\let\outlinedone=\relax\outlinedone} \fi % End of pdf macros \ifhint -% The following uses HINT primitives to implement: +% The following top level macros use HINT primitives to implement: % \HINThome to mark the position of the home page % \HINTlabel to attach a label to the top of a section % \HINTlink to link a section number to the section label % \HINTcontents to produce an 'outline' item -% These are the top level HINT macros that are used in this file -% No HINT primitives are used directly. \def\HINThome{\HINTdest name {HINT.home}% \HINToutline goto name {HINT.home} depth 1 {Table of Contents}} \def\HINTlabel{{\let\*=\empty\HINTdest num \secstar top}} -\def\HINTlink#1#2{\HINTstartlink goto num #1 {#1}\HINTendlink}% #2 not used ??? +\def\HINTlink#1{\HINTstartlink goto num #1 {#1}\HINTendlink} \def\HINTcontents#1#2#3{\HINToutline goto num #3 depth #2 {#1}} \let\pdflink=\HINTlink \fi % End of HINT macros - -% Common macros for \ifacro and \ifhint -\ifacrohint -\def\pdfnote#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}\maketoks}\the\toksA} -\def\firstsecno#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}% - \def\makenote{\addtokens\toksB{\the\toksC}\def\makenote{\toksD={} - \toksC={}\let\space\empty}\makenote}\maketoks}} -\def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} -\def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}% - \ifcat\noexpand\first0\countB=`#1\else\countB=0\fi\toksA={#2}} -\def\maketoks{\expandafter\poptoks\the\toksA|ENDTOKS|% - \ifnum\countB>`9 \countB=0 \fi - \ifnum\countB<`0 - \ifnum0=\countC\else\makenote\fi - \ifx\first.\let\next=\maketoksdone\else - \let\next=\maketoks - \addtokens\toksB{\the\toksD} - \ifx\first,\addtokens\toksB{\space}\fi - \fi - \else \addtokens\toksC{\the\toksD}\global\countC=1\let\next=\maketoks - \fi - \next -} -\def\makenote{\addtokens\toksB - {\noexpand\pdflink{\the\toksC}{\romannumeral\the\toksC}}\toksC={}\global\countC=0} -\def\maketoksdone{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} -\fi % End of common macros diff --git a/Build/source/texk/web2c/cwebdir/cwebmac.tex b/Build/source/texk/web2c/cwebdir/cwebmac.tex index 99e899476ce..2b7b14bf07a 100644 --- a/Build/source/texk/web2c/cwebdir/cwebmac.tex +++ b/Build/source/texk/web2c/cwebdir/cwebmac.tex @@ -1,26 +1,14 @@ % standard macros for CWEB listings (in addition to plain.tex) -% Version 4.12 --- May 2024 +% Version 4.12.1 --- January 2025 \ifx\renewenvironment\undefined\else\endinput\fi % LaTeX will use other macros -\xdef\fmtversion{\fmtversion+CWEB4.12} +\xdef\fmtversion{\fmtversion+CWEB4.12.1} \chardef\cwebversion=4 \chardef\cwebrevision=12 -\let\:=\. % preserve a way to get the dot accent - % (all other accents will still work as usual) - \parskip 0pt % no stretch between paragraphs \parindent 1em % for paragraphs and for the first line of C text \font\ninerm=cmr9 \let\mc=\ninerm % medium caps -\def\CEE/{{\mc C\spacefactor1000}} -\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}} -\def\TEX/{\TeX} -\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}} -\def\Cee{\CEE/} % for backward compatibility -\def\Cpp{\CPLUSPLUS/} % for backward compatibility -\def\9#1{} - % with this definition of \9 you can say @:sort key}{TeX code@> - % to alphabetize an index entry by the sort key but format with the TeX code \font\eightrm=cmr8 \let\sc=\eightrm % for smallish caps (NOT a caps-and-small-caps font) \let\mainfont=\tenrm @@ -31,6 +19,17 @@ \font\tentex=cmtex10 % TeX extended character set (used in strings) \fontdimen7\tentex=0pt % no double space after sentences +\def\CEE/{{\mc C\spacefactor1000}} +\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}} +\def\TEX/{\TeX} +\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}} +\def\Cee{\CEE/} % for backward compatibility +\def\Cpp{\CPLUSPLUS/} % for backward compatibility +\def\9#1{} % with this definition of \9 you can say @:sort key}{TeX code@> + % to alphabetize an index entry by the sort key but format with the TeX code +\let\:=\. % preserve a way to get the dot accent + % (all other accents will still work as usual) + \def\\#1{\leavevmode\hbox{\it#1\/\kern.05em}} % italic type for identifiers \def\|#1{\leavevmode\hbox{$#1$}} % one-letter identifiers look better this way \def\{\leavevmode\hbox{\bf @@ -112,14 +111,10 @@ \let\yskip=\smallskip \def\?{\mathrel?} \def\,{\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi} -\def\note#1#2.{\Y\noindent{\hangindent2em% - \baselineskip10pt\eightrm#1~\ifacrohint{\pdfnote#2.}\else#2\fi.\par}} -\newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD -\newtoks\toksE \newtoks\toksF \newtoks\usersanitizer +\newtoks\toksA \newtoks\toksE \newcount\countA \countA=0 \newcount\countB \countB=0 -\newcount\countC \countC=0 \newcount\countD \countD=0 -\newif\iftokprocessed \newif\ifTnum \newif\ifinstr +\newcount\countNOS \countNOS=0 {\def\\{\global\let\spacechar= }\\ } % Here we decide the output format, depending on the TeX engine in use: @@ -136,17 +131,7 @@ \def\Black{\pdfliteral{0 g 0 G}} % use rgb colors for direct PDF output too \def\Blue{\pdfliteral{\pdflinkcolor\space rg \pdflinkcolor\space RG}} \fi -\ifacrohint \input cwebacromac \fi % load hypertext macros -\def\pdfURL#1#2{\ifpdf \ifpdflua\pdfannotlink height \theheight depth \thedepth - attr {/Border [0 0 0]} user { /Type /Annot /Subtype /Link /A - << /S /URI /URI (#2) >>}\Blue #1\Black \pdfendlink % changed in 3.69 - \else {\setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{#1}% - \special{pdf: ec}}\special{pdf: ann width \thewidth height \theheight - depth \thedepth << /Border [0 0 0] /Type /Annot /Subtype /Link /A - << /S /URI /URI (#2) >> >>}\box0\relax}\fi - \else #1 ({\tt#2})\fi} -{\catcode`\~=12 \gdef\TILDE/{~}} % ~ in a URL -{\catcode`\_=12 \gdef\UNDER/{_}} % _ in a URL +\input cwebacromac % load hypertext macros \def\lapstar{\rlap{*}} \def\stsec{\rightskip=0pt % get out of C mode (cf. \B) @@ -159,6 +144,8 @@ [ @thispage /FitH @ypos ]}\fi}}\fi} \let\startsection=\stsec \def\defin#1{\global\advance\ind by 2 \1\&{#1 }} % begin `define' or `format' +\def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt% + \eightrm#1~\ifacrohint{\pdfnote#2.}\else#2\fi.\par}} \def\A{\note{See also section}} % xref for doubly defined section name \def\As{\note{See also sections}} % xref for multiply defined section name \def\B{\rightskip=0pt plus 100pt minus 10pt % go into C mode @@ -186,7 +173,7 @@ \outer\def\M#1{\MN{#1}\ifon\vfil\penalty-100\vfilneg % beginning of section \vskip\intersecskip\startsection\ignorespaces} \outer\def\N#1#2#3.{% beginning of starred section - \ifacro{\toksF={}\makeoutlinetoks#3\outlinedone\outlinedone}\fi + \ifacro{\makeoutlinetoks#3\outlinedone}\fi \gdepth=#1\gtitle={#3}\MN{#2}% \ifon\ifnum#1<\secpagedepth \vfil\eject % force page break if depth is small \else\vfil\penalty-100\vfilneg\vskip\intersecskip\fi\fi @@ -240,15 +227,13 @@ \def\oct{\hbox{$^\circ$\kern-.1em\it\aftergroup\?\aftergroup}} % CWEB style \def\hex{\hbox{$^{\scriptscriptstyle\#}$\tt\aftergroup}} % CWEB style \def\bin{\hbox{$^{\scriptscriptstyle b}$\tt\aftergroup}} % new in CWEB 4.3 -\def\vb#1{\leavevmode\hbox{\kern2pt\vrule\vtop{\vbox{\hrule - \hbox{\strut\kern2pt\.{#1}\kern2pt}} - \hrule}\vrule\kern2pt}} % verbatim string +\def\vb#1{\leavevmode\hbox{\kern2pt\vrule\vtop{\vbox{\hrule\hbox{\strut + \kern2pt\.{#1}\kern2pt}}\hrule}\vrule\kern2pt}} % verbatim string \def\p#1{\cdot 2^{#1}} % power of two (hex exponent) \def\onmaybe{\let\ifon=\maybe} \let\maybe=\iftrue -\newif\ifon \newif\iftitle \newif\ifpagesaved +\newif\ifon \newif\iftitle \newif\ifpagesaved \newif\ifheader -\newif\ifheader \def\lheader{\headertrue\mainfont\the\pageno\eightrm\qquad\grouptitle \hfill\title\qquad\mainfont\topsecno} % top line on left-hand pages \def\rheader{\headertrue\mainfont\topsecno\eightrm\qquad\title\hfill @@ -317,9 +302,7 @@ \vsize=\pageheight \advance\vsize by -\ht\sbox % the remaining height \hsize=.5\pagewidth \advance\hsize by -10pt % column width for the index (20pt between cols) - \ifhint\else - \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines - \fi + \ifhint\else\parfillskip 0pt plus .6\hsize\fi % avoid almost empty lines \def\lr{L} % this tells whether the left or right column is next \output{\if L\lr\global\setbox\lbox=\page \gdef\lr{R} \else\normaloutput{\vbox to\pageheight{\box\sbox\vss @@ -328,9 +311,9 @@ \message{Index:} \parskip 0pt plus .5pt \outer\def\I##1, ##2.{\par\hangindent2em\noindent##1:\kern1em - \ifacrohint\pdfnote##2.\else##2\fi.} % index entry - \def\[##1]{$\underline{##1}$} % underlined index item - \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar + \scan##2!.} % index entry + \def\[##1]{$\underline{\scan##1!}$\scan} % underlined index item + \rm \rightskip0pt plus 2.5em \tolerance 10000 \hyphenpenalty 10000 \parindent0pt \readindex} \def\fin{\par\vfill\eject % this is done when we are ending the index @@ -353,23 +336,21 @@ \ifacro \def\outsecname{Names of the sections} \let\Xpdf\X % \ifpdflua \makebookmarks \pdfdest name {NOS} fitb % in versions < 3.68 \ifpdflua \pdfdest name {NOS} fith % changed in version 3.69 - \pdfoutline goto name {NOS} count -\the\countD {\outsecname} - \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.% - {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}% - \pdfoutline goto num \the\toksA \expandafter{\the\toksE}} + \pdfoutline goto name {NOS} count -\the\countNOS {\outsecname} \else \special{pdf: outline -1 << /Title (\outsecname) - /Dest [ @thispage /FitH @ypos ] >>} - \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.% - {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}% - \special{pdf: outline 0 << /Title (\the\toksE) - /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}} - \fi\fi + /Dest [ @thispage /FitH @ypos ] >>}\fi + \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.% + {\makeoutlinetoks##2\outlinedone}% + \ifpdflua \pdfoutline goto num \the\toksA \expandafter{\the\toksE} + \else \special{pdf: outline 0 << /Title (\the\toksE) + /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}\fi} + \fi % \ifacro \readsections} \def\makebookmarks{\let\ZZ=\writebookmarkline \readcontents\relax} \def\countsections{\message{Number of named sections:} - {\def\I{\global\advance\countD by 1}\def\X##1\X{\relax} + {\def\I{\global\advance\countNOS by 1}\def\X##1\X{\relax} \def\Q##1.{\relax}\def\Qs##1.{\relax}\def\U##1.{\relax}\def\Us##1.{\relax} - \readsections\relax}\message{\the\countD}} + \readsections\relax}\message{\the\countNOS}} \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% \else \csname#1\endcsname \fi} % Petr Olsak's macros from texinfo.tex \def\advancenumber#1{\countA=\expnumber{#1}\relax \advance\countA by1 @@ -395,9 +376,9 @@ \line{\consetup{#2}#1 \rm\leaders\hbox to .5em{.\hfil}\hfil \ \ifhint - \HINTlink{#3}{\romannumeral#3}% No page numbers in HINT + \HINTlink{#3}% No page numbers in HINT \HINTcontents{#1}{#2}{#3}% - \else\ifacro\pdflink{#3}{\romannumeral#3}\else#3\fi + \else\ifacro\pdflink{#3}\else#3\fi \hbox to3em{\hss#4}\fi}} \def\consetup#1{\ifcase#1 \bf % depth -1 (@**) \or % depth 0 (@*) diff --git a/Build/source/texk/web2c/cwebdir/cwebman-w2c.ch b/Build/source/texk/web2c/cwebdir/cwebman-w2c.ch index 30e21842f09..51441cb4958 100644 --- a/Build/source/texk/web2c/cwebdir/cwebman-w2c.ch +++ b/Build/source/texk/web2c/cwebdir/cwebman-w2c.ch @@ -33,7 +33,7 @@ \advance\footnotecount by 1\relax} @z -@x l.29 +@x l.28 \outer\def\section #1.{\penalty-500\bigskip \centerline{\sectionfont\def\.##1{{\twelvett##1}} #1}\nobreak\vskip 6pt \everypar{\hskip-\parindent\everypar{}}} @@ -93,21 +93,21 @@ \fi} @z -@x l.35 -\def\runninghead{{\ninett CWEB} USER MANUAL (VERSION 4.11)} +@x l.34 +\def\runninghead{{\ninett CWEB} USER MANUAL (VERSION 4.12.1)} @y \def\Kpathsea/{{\mc KPATHSEA\spacefactor1000}} -\def\runninghead{{\ninett CWEB} USER MANUAL (Version 4.11 [\TeX~Live])} +\def\runninghead{{\ninett CWEB} USER MANUAL (Version 4.12.1 [\TeX~Live])} @z -@x l.49 -\vskip 18pt\centerline{(Version 4.11 --- December 2023)} +@x l.48 +\vskip 18pt\centerline{(Version 4.12.1 --- January 2025)} @y -\vskip 18pt\centerline{(Version 4.11 --- December 2023)% -\footnote*{This document describes the extended \.{CWEB} (Version 4.11 [\TeX~Live]).}} +\vskip 18pt\centerline{(Version 4.12.1 --- January 2025)% +\footnote*{This document describes the extended \.{CWEB} (Version 4.12.1 [\TeX~Live]).}} @z -@x l.80 +@x l.79 Internet page \.{http://www-cs-faculty.stanford.edu/\char`\~knuth/cweb.html} @y Internet page @@ -115,7 +115,7 @@ Internet page {http://www-cs-faculty.stanford.edu/\TILDE/knuth/cweb.html} @z -@x l.85 +@x l.84 \.{https://github.com/ascherer/cweb} with the really current news. @y \pdfURL{\.{https://github.com/ascherer/cweb}}% @@ -123,7 +123,7 @@ Internet page with the really current news. @z -@x l.103 +@x l.102 should be sent to the \TeX-related mailing list \.{tex-k@tug.org}. @y should be sent to the \TeX-related mailing list @@ -131,15 +131,15 @@ should be sent to the \TeX-related mailing list {mailto:tex-k@tug.org}. @z -@x l.105 +@x l.104 Readers who are familiar with Knuth's memo ``The \.{WEB} System of Structured Documentation'' will be able @y Readers who are familiar with Knuth's memo ``\pdfURL{The \.{WEB} System of -Structured Documentation}{../web/webman.pdf}'' will be able +Structured Documentation}{../web/webman-changes.pdf}'' will be able @z -@x l.524 +@x l.523 email address in a \.{CWEB} file (e.g., \.{tex-k@@tug.org}). @y email address in a \.{CWEB} file (e.g., @@ -147,7 +147,7 @@ email address in a \.{CWEB} file (e.g., {mailto:tex-k@tug.org}). @z -@x l.919 +@x l.918 it cannot find them in the current directory. @y it cannot find them in the current directory.% @@ -160,7 +160,7 @@ for it. (This is true for any other input or change file lookup.)} @z -@x l.1026 +@x l.1025 except for error messages. @y except for error messages.% @@ -168,7 +168,7 @@ except for error messages.% options `\.{b}', `\.{h}', and `\.{p}' are `off' by default.} @z -@x l.1032 +@x l.1031 options are currently implemented: \yskip @@ -202,7 +202,7 @@ argument to switch between different user languages and macro packages. \yskip @z -@x l.1068 +@x l.1067 \option x Include indexes and a table of contents in the \TEX/ file output by \.{CWEAVE}. (On by default.) (Has no effect on \.{CTANGLE}.) @y @@ -212,14 +212,14 @@ output by \.{CWEAVE}. (On by default.) (\.{CWEAVE} only.) \vfill\eject @z -@x l.1124 +@x l.1123 Sometimes things don't work as smoothly, and you get a bunch of @y \pdffalse\acrohintfalse Sometimes things don't work as smoothly, and you get a bunch of @z -@x l.1132 +@x l.1131 `$\\{main}(\\{argc},\39\\{argv}{}$)'. @y `$\\{main}(\\{argc},\39\\{argv}{}$)'. @@ -228,7 +228,7 @@ Sometimes things don't work as smoothly, and you get a bunch of \ifpdf\acrohinttrue\fi \ifhint\acrohinttrue\fi @z -@x l.1142 +@x l.1141 the `\.{@\#}' will put extra space after `$\langle\,$Other locals$\,\rangle$'. @y the `\.{@\#}' will put extra space after `$\langle\,$Other locals$\,\rangle$'.% @@ -236,14 +236,14 @@ the `\.{@\#}' will put extra space after `$\langle\,$Other locals$\,\rangle$'.% to suppress the extra space globally.} @z -@x l.1144 +@x l.1143 \section Hypertext and hyperdocumentation. @y \vfill\eject \section Hypertext and hyperdocumentation. @z -@x l.1168 +@x l.1167 from \.{https://hint.userweb.mwn.de/hint/hintview.html}. @y from @@ -251,7 +251,7 @@ from {https://hint.userweb.mwn.de/hint/hintview.html}.% @z -@x l.1177 +@x l.1176 the program sources at \.{ftp://ftp.cs.stanford.edu/pub/ctwill}. @y the program sources at @@ -261,13 +261,13 @@ the program sources at \.{ctwill} executable -- and its associated helpers -- out of the box.} @z -@x l.1181 +@x l.1180 As an example of a real program written in \.{CWEB}, Appendix~A @y As an example of a real program written in \.{CWEB}, \Appendix A @z -@x l.1186 +@x l.1185 Appendix B displays the files that set \TEX/ up to accept the output of \.{CWEAVE}, and Appendix~C discusses how to use some of those @y @@ -275,7 +275,7 @@ the output of \.{CWEAVE}, and Appendix~C discusses how to use some of those the output of \.{CWEAVE}, and \Appendix C discusses how to use some of those @z -@x l.1192 +@x l.1191 appendices D, E, and~F, which exhibit the complete source code for \.{CTANGLE} and \.{CWEAVE}. @@ -291,7 +291,7 @@ exhibits the source code for \.{CTWILL}, which is based on \.{CWEAVE}.} \vfill\eject\titletrue @z -@x l.1198 +@x l.1197 \section Appendix A: Excerpts from a \.{CWEB} Program. @y \def\subsections{4} @@ -299,28 +299,28 @@ exhibits the source code for \.{CTWILL}, which is based on \.{CWEAVE}.} \subsection CWEB file format. @z -@x l.1202 +@x l.1201 generated sections 27--31 of the file \.{common.w}, which contains @y generated sections 27--31 of the file \pdfURL{\.{common.w}}{common.pdf}, which contains @z -@x l.1273 +@x l.1272 \def\runninghead{APPENDIX A --- TRANSLATION BY {\ninett CTANGLE}} @y \def\runninghead{APPENDIX A --- TRANSLATION BY {\ninett CTANGLE}} \subsection Translation by CTANGLE. @z -@x l.1341 +@x l.1340 \def\runninghead{APPENDIX A --- TRANSLATION BY {\ninett CWEAVE}} @y \def\runninghead{APPENDIX A --- TRANSLATION BY {\ninett CWEAVE}} \subsection Translation by CWEAVE. @z -@x l.1430 +@x l.1429 \def\runninghead{APPENDIX A --- FINAL DOCUMENT} And here's what the same excerpt looks like when typeset. @@ -337,7 +337,7 @@ And here's what the same excerpt looks like when typeset. \def\C#1{\5\5\quad$\triangleright\,${\cmntfont#1}$\,\triangleleft$} @z -@x l.1512 +@x l.1511 \vfil\eject\titletrue @y \vfill\eject\titletrue @@ -346,13 +346,13 @@ And here's what the same excerpt looks like when typeset. \ifacro\acrohinttrue\fi \ifhint\acrohinttrue\fi @z -@x l.1614 - \.{ { }\\vskip 15pt \\centerline\{(Version 4.11)\}{ }\\vfill\}}\cr}$$ +@x l.1613 + \.{ { }\\vskip 15pt \\centerline\{(Version 4.12.1)\}{ }\\vfill\}}\cr}$$ @y - \.{ { }\\vskip 15pt \\centerline\{(Version 4.11)\}{ }\\vfill\}}\cr}$$ + \.{ { }\\vskip 15pt \\centerline\{(Version 4.12.1)\}{ }\\vfill\}}\cr}$$ @z -@x l.1729 +@x l.1728 if you have a duplex printer. Appendices D, E, and F of the complete version of this manual are printed using a commented-out option that substitutes `$\gets$' for `$=$' in the program listings. Looking at those @@ -366,14 +366,14 @@ also make use of the alternative format for \CEE/ comments.} Looking at those @z -@x l.1781 +@x l.1780 \point 20. Furthermore, group titles can be converted to an arbitrary @y \vfill\eject \point 20. Furthermore, group titles can be converted to an arbitrary @z -@x l.1792 +@x l.1791 \bye @y \point 21. With modern \TeX\ engines like `\.{luatex}', `\.{pdftex}', and diff --git a/Build/source/texk/web2c/cwebdir/cwebman.tex b/Build/source/texk/web2c/cwebdir/cwebman.tex index d47c46ff166..c71bda31675 100644 --- a/Build/source/texk/web2c/cwebdir/cwebman.tex +++ b/Build/source/texk/web2c/cwebdir/cwebman.tex @@ -7,7 +7,6 @@ \parskip 0pt plus 1pt \def\RA{\char'31 } % right arrow \def\hang{\hangindent 4em\ignorespaces} -\font\eightrm=cmr8 \font\eighttt=cmtt8 \font\ninett=cmtt9 \font\twelvett=cmtt12 @@ -32,7 +31,7 @@ \def\lheader{\mainfont\the\pageno\hfill\sc\runninghead\hfill} \def\rheader{\hfill\sc\runninghead\hfill\mainfont\the\pageno} -\def\runninghead{{\ninett CWEB} USER MANUAL (VERSION 4.11)} +\def\runninghead{{\ninett CWEB} USER MANUAL (VERSION 4.12.1)} % This verbatim mode assumes that ! marks are !! in the text being copied. \def\verbatim{\begingroup @@ -46,7 +45,7 @@ \null\vfill \centerline{\titlefont The {\ttitlefont CWEB} System of Structured Documentation} -\vskip 18pt\centerline{(Version 4.11 --- December 2023)} +\vskip 18pt\centerline{(Version 4.12.1 --- January 2025)} \vskip 24pt \centerline{\authorfont Donald E. Knuth and Silvio Levy} \vfill @@ -1528,9 +1527,9 @@ features needed by the output of \.{CWEAVE}. \printmacs{\empty} \vskip6pt \baselineskip12pt -\noindent And here comes the file that extends \.{cwebmac.tex} in order to -support the ``hypertext'' features needed by the enhanced \TEX/ engines when -processing the output of \.{CWEAVE}. +\noindent And here comes the file \.{cwebacromac.tex} that extends +\.{cwebmac.tex} in order to support the ``hypertext'' features needed +by the enhanced \TEX/ engines when processing the output of \.{CWEAVE}. \vskip6pt \baselineskip9pt \printmacs{acro} @@ -1611,7 +1610,7 @@ $$\lpile{\.{\\def\\topofcontents\{\\null\\vfill}\cr \.{ { }\\titlefalse \% include headline on the contents page}\cr \.{ { }\\def\\rheader\{\\mainfont The \{\\tt CWEAVE\}{ }processor\\hfil\}}\cr \.{ { }\\centerline\{\\titlefont The \{\\ttitlefont CWEAVE\}{ }processor\}}\cr - \.{ { }\\vskip 15pt \\centerline\{(Version 4.11)\}{ }\\vfill\}}\cr}$$ + \.{ { }\\vskip 15pt \\centerline\{(Version 4.12.1)\}{ }\\vfill\}}\cr}$$ Redefining \.{\\rheader}, which is the headline for right-hand pages, suffices in this case to put the desired information at the top of the contents page. diff --git a/Build/source/texk/web2c/cwebdir/po/cweb-tl.pot b/Build/source/texk/web2c/cwebdir/po/cweb-tl.pot index 19c348da56a..f86c2329262 100644 --- a/Build/source/texk/web2c/cwebdir/po/cweb-tl.pot +++ b/Build/source/texk/web2c/cwebdir/po/cweb-tl.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: CWEBbin 2023\n" +"Project-Id-Version: CWEBbin 2025\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-02 13:08+0100\n" +"POT-Creation-Date: 2025-01-01 15:08+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -30,15 +30,15 @@ msgid "%s: Need one to three file arguments.\n" msgstr "" #: ctang-texlive.ch:39 -msgid "This is CTANGLE, Version 4.11" +msgid "This is CTANGLE, Version 4.12.1" msgstr "" #: ctwill-texlive.ch:39 -msgid "This is CTWILL, Version 4.11" +msgid "This is CTWILL, Version 4.12.1" msgstr "" #: cweav-texlive.ch:39 -msgid "This is CWEAVE, Version 4.11" +msgid "This is CWEAVE, Version 4.12.1" msgstr "" #: comm-texlive.ch:512 diff --git a/Build/source/texk/web2c/cwebdir/po/cweb.pot b/Build/source/texk/web2c/cwebdir/po/cweb.pot index 8db3c5a3168..1db22fc9aa2 100644 --- a/Build/source/texk/web2c/cwebdir/po/cweb.pot +++ b/Build/source/texk/web2c/cwebdir/po/cweb.pot @@ -523,15 +523,15 @@ msgid "Sorting:" msgstr "" #: ctang-i18n.ch:17 -msgid "This is CTANGLE (Version 4.11 [CWEBbin 2023])" +msgid "This is CTANGLE (Version 4.12.1 [CWEBbin 2025])" msgstr "" #: cweav-twill.ch:61 -msgid "This is CTWILL (Version 4.11 [CWEBbin 2023])" +msgid "This is CTWILL (Version 4.12.1 [CWEBbin 2025])" msgstr "" #: cweav-i18n.ch:17 cweav-twill.ch:42 -msgid "This is CWEAVE (Version 4.11 [CWEBbin 2023])" +msgid "This is CWEAVE (Version 4.12.1 [CWEBbin 2025])" msgstr "" #: cweav-i18n.ch:301 cweav-i18n.ch:309 diff --git a/Build/source/texk/web2c/cwebdir/po/de/cweb-tl.po b/Build/source/texk/web2c/cwebdir/po/de/cweb-tl.po index 7d875bdd177..1f39e18a589 100644 --- a/Build/source/texk/web2c/cwebdir/po/de/cweb-tl.po +++ b/Build/source/texk/web2c/cwebdir/po/de/cweb-tl.po @@ -1,14 +1,14 @@ # International version of CWEB (CWEBbin, TeXLive). -# Copyright (C) 2023 Andreas Scherer et al. +# Copyright (C) 2025 Andreas Scherer et al. # This file is distributed under the same license as the CWEB package. # Andreas Scherer <https://ascherer.github.io>. # msgid "" msgstr "" -"Project-Id-Version: CWEBbin 2023\n" +"Project-Id-Version: CWEBbin 2025\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-02 13:10+0100\n" -"PO-Revision-Date: 2023-12-02 13:10+0100\n" +"POT-Creation-Date: 2025-01-01 15:08+0100\n" +"PO-Revision-Date: 2025-01-01 15:08+0100\n" "Last-Translator: Andreas Scherer <andreas_github@freenet.de>\n" "Language-Team: German\n" "Language: de\n" @@ -33,16 +33,16 @@ msgid "%s: Need one to three file arguments.\n" msgstr "%s: Benötige ein bis drei Dateiargumente.\n" #: ctang-texlive.ch:39 -msgid "This is CTANGLE, Version 4.11" -msgstr "Dies ist CTANGLE, Version 4.11" +msgid "This is CTANGLE, Version 4.12" +msgstr "Dies ist CTANGLE, Version 4.12" #: ctwill-texlive.ch:39 -msgid "This is CTWILL, Version 4.11" -msgstr "Dies ist CTWILL, Version 4.11" +msgid "This is CTWILL, Version 4.12" +msgstr "Dies ist CTWILL, Version 4.12" #: cweav-texlive.ch:39 -msgid "This is CWEAVE, Version 4.11" -msgstr "Dies ist CWEAVE, Version 4.11" +msgid "This is CWEAVE, Version 4.12" +msgstr "Dies ist CWEAVE, Version 4.12" #: comm-texlive.ch:512 #, c-format diff --git a/Build/source/texk/web2c/cwebdir/po/de/cweb.po b/Build/source/texk/web2c/cwebdir/po/de/cweb.po index f93952f9a06..7cfcfe5be73 100644 --- a/Build/source/texk/web2c/cwebdir/po/de/cweb.po +++ b/Build/source/texk/web2c/cwebdir/po/de/cweb.po @@ -1,14 +1,14 @@ # International version of CWEB (CWEBbin, TeXLive). -# Copyright (C) 2021 Andreas Scherer et al. +# Copyright (C) 2025 Andreas Scherer et al. # This file is distributed under the same license as the CWEB package. # Andreas Scherer <https://ascherer/github.io>, 2021. # msgid "" msgstr "" -"Project-Id-Version: CWEBbin 2021\n" +"Project-Id-Version: CWEBbin 2025\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-02-06 15:25+0100\n" -"PO-Revision-Date: 2021-02-06 15:57+0100\n" +"POT-Creation-Date: 2025-01-01 15:08+0100\n" +"PO-Revision-Date: 2025-01-01 15:08+0100\n" "Last-Translator: Andreas Scherer <andreas_github@freenet.de>\n" "Language-Team: German\n" "Language: de\n" @@ -603,16 +603,16 @@ msgid "Sorting:" msgstr "Sortieren:" #: ctang-i18n.ch:17 -msgid "This is CTANGLE (Version 4.11 [CWEBbin 2023])" -msgstr "Dies ist CTANGLE (Version 4.11 [CWEBbin 2023])" +msgid "This is CTANGLE (Version 4.12.1 [CWEBbin 2025])" +msgstr "Dies ist CTANGLE (Version 4.12.1 [CWEBbin 2025])" #: cweav-twill.ch:61 -msgid "This is CTWILL (Version 4.11 [CWEBbin 2023])" -msgstr "Dies ist CTWILL (Version 4.11 [CWEBbin 2023])" +msgid "This is CTWILL (Version 4.12.1 [CWEBbin 2025])" +msgstr "Dies ist CTWILL (Version 4.12.1 [CWEBbin 2025])" #: cweav-i18n.ch:17 cweav-twill.ch:42 -msgid "This is CWEAVE (Version 4.11 [CWEBbin 2023])" -msgstr "Dies ist CWEAVE (Version 4.11 [CWEBbin 2023])" +msgid "This is CWEAVE (Version 4.12.1 [CWEBbin 2025])" +msgstr "Dies ist CWEAVE (Version 4.12.1 [CWEBbin 2025])" #: cweav-i18n.ch:301 cweav-i18n.ch:309 msgid "buffer" diff --git a/Build/source/texk/web2c/cwebdir/po/de/web2c-help.po b/Build/source/texk/web2c/cwebdir/po/de/web2c-help.po index 139d3369499..d38dd46ad3e 100644 --- a/Build/source/texk/web2c/cwebdir/po/de/web2c-help.po +++ b/Build/source/texk/web2c/cwebdir/po/de/web2c-help.po @@ -1,14 +1,14 @@ # International version of CWEB (CWEBbin, TeXLive). -# Copyright (C) 2021 Andreas Scherer et al. +# Copyright (C) 2025 Andreas Scherer et al. # This file is distributed under the same license as the CWEB package. # Andreas Scherer <https://ascherer.github.io>, 2021. # msgid "" msgstr "" -"Project-Id-Version: CWEBbin 2024\n" +"Project-Id-Version: CWEBbin 2025\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-03-10 16:35+0100\n" -"PO-Revision-Date: 2024-03-10 16:35+0100\n" +"POT-Creation-Date: 2025-01-01 15:08+0100\n" +"PO-Revision-Date: 2025-01-01 15:08+0100\n" "Last-Translator: Andreas Scherer <andreas_github@freenet.de>\n" "Language-Team: German\n" "Language: de\n" diff --git a/Build/source/texk/web2c/cwebdir/po/it/cweb.po b/Build/source/texk/web2c/cwebdir/po/it/cweb.po index a171f020d28..230d79cc1a8 100644 --- a/Build/source/texk/web2c/cwebdir/po/it/cweb.po +++ b/Build/source/texk/web2c/cwebdir/po/it/cweb.po @@ -1,14 +1,14 @@ # International version of CWEB (CWEBbin, TeXLive). -# Copyright (C) 2023 Andreas Scherer et al. +# Copyright (C) 2025 Andreas Scherer et al. # This file is distributed under the same license as the CWEB package. # Andreas Scherer <https://ascherer/github.io>. # msgid "" msgstr "" -"Project-Id-Version: CWEBbin 2023\n" +"Project-Id-Version: CWEBbin 2025\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-12-02 13:10+0100\n" -"PO-Revision-Date: 2023-12-02 13:10+0100\n" +"POT-Creation-Date: 2025-01-01 15:08+0100\n" +"PO-Revision-Date: 2025-01-01 15:08+0100\n" "Last-Translator: Andreas Scherer <andreas_github@freenet.de>\n" "Language-Team: Italian\n" "Language: it\n" @@ -598,16 +598,16 @@ msgid "Sorting:" msgstr "Ordinamento:" #: ctang-i18n.ch:17 -msgid "This is CTANGLE (Version 4.11 [CWEBbin 2023])" -msgstr "Questo è CTANGLE (Versione 4.11 [CWEBbin 2023])" +msgid "This is CTANGLE (Version 4.12.1 [CWEBbin 2025])" +msgstr "Questo è CTANGLE (Versione 4.12.1 [CWEBbin 2025])" #: cweav-i18n.ch:17 -msgid "This is CWEAVE (Version 4.11 [CWEBbin 2023])" -msgstr "Questo è CWEAVE (Versione 4.11 [CWEBbin 2023])" +msgid "This is CWEAVE (Version 4.12.1 [CWEBbin 2025])" +msgstr "Questo è CWEAVE (Versione 4.12.1 [CWEBbin 2025])" #: cweav-twill.ch:68 -msgid "This is CTWILL (Version 4.11 [CWEBbin 2023])" -msgstr "Questo è CTWILL (Versione 4.11 [CWEBbin 2023])" +msgid "This is CTWILL (Version 4.12.1 [CWEBbin 2025])" +msgstr "Questo è CTWILL (Versione 4.12.1 [CWEBbin 2025])" #: cweav-i18n.ch:301 cweav-i18n.ch:309 msgid "buffer" diff --git a/Build/source/texk/web2c/cwebdir/po/web2c-help.pot b/Build/source/texk/web2c/cwebdir/po/web2c-help.pot index ba493504a29..08104533022 100644 --- a/Build/source/texk/web2c/cwebdir/po/web2c-help.pot +++ b/Build/source/texk/web2c/cwebdir/po/web2c-help.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: CWEBbin 2024\n" +"Project-Id-Version: CWEBbin 2025\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-03-10 16:35+0100\n" +"POT-Creation-Date: 2025-01-01 15:08+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/Build/source/texk/web2c/cwebdir/prod-cweave.w b/Build/source/texk/web2c/cwebdir/prod-cweave.w index 6c75760fa2f..effe5e2830b 100644 --- a/Build/source/texk/web2c/cwebdir/prod-cweave.w +++ b/Build/source/texk/web2c/cwebdir/prod-cweave.w @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.11 --- December 2023 +% Version 4.12.1 --- January 2025 % @ Here is a table of all the productions. Each production that combines two or more consecutive scraps implicitly inserts a {\tt \$} diff --git a/Build/source/texk/web2c/cwebdir/prod-twill.w b/Build/source/texk/web2c/cwebdir/prod-twill.w index 63ebdb4893d..8a362a10973 100644 --- a/Build/source/texk/web2c/cwebdir/prod-twill.w +++ b/Build/source/texk/web2c/cwebdir/prod-twill.w @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.11 --- December 2023 +% Version 4.12.1 --- January 2025 % @ Here is a table of all the productions. Each production that combines two or more consecutive scraps implicitly inserts a {\tt \$} diff --git a/Build/source/texk/web2c/cwebdir/prod.w b/Build/source/texk/web2c/cwebdir/prod.w index b0da3ddce5f..1a21fb5de02 100644 --- a/Build/source/texk/web2c/cwebdir/prod.w +++ b/Build/source/texk/web2c/cwebdir/prod.w @@ -2,7 +2,7 @@ % This program by Silvio Levy and Donald E. Knuth % is based on a program by Knuth. % It is distributed WITHOUT ANY WARRANTY, express or implied. -% Version 4.11 --- December 2023 +% Version 4.12.1 --- January 2025 % @ Here is a table of all the productions. Each production that combines two or more consecutive scraps implicitly inserts a {\tt \$} diff --git a/Build/source/texk/web2c/cwebdir/refsort.ch b/Build/source/texk/web2c/cwebdir/refsort.ch index 67175b030f7..2ebedfca696 100644 --- a/Build/source/texk/web2c/cwebdir/refsort.ch +++ b/Build/source/texk/web2c/cwebdir/refsort.ch @@ -45,12 +45,24 @@ int main() item *x, **y; @z +@x [4] l.83 + @<Copy |buf| to item |x|@>; +@y + @<Copy \9{b}|buf| to item |x|@>; +@z + @x [5] l.89 variable not used { register int k; @y { @z +@x [6] l.99 +@<Copy |buf|...@>= +@y +@<Copy \9{b}|buf|...@>= +@z + @x [9] l.149 'register' removed in C++17 { register int toggle=0; @y diff --git a/Build/source/texk/web2c/cwebdir/tests/ham-sorted.tex b/Build/source/texk/web2c/cwebdir/tests/ham-sorted.tex index 30668f582ed..db91ad23586 100644 --- a/Build/source/texk/web2c/cwebdir/tests/ham-sorted.tex +++ b/Build/source/texk/web2c/cwebdir/tests/ham-sorted.tex @@ -138,6 +138,7 @@ ${}\\{dmin}\K\|d,\39\|x\K\|v;{}$\2\6 \]{GB\_\,GRAPH}20 \|{n} \&{long} \]{GB\_\,GRAPH}10 \\{next} \&{Arc} ${}{*}{}$ \[1 \|{v} \&{register} \&{Vertex} ${}{*}{}$ +\]{GB\_\,GRAPH}9 \|{v} \&{util} \]{GB\_\,GRAPH}20 \\{vertices} \&{Vertex} ${}{*}{}$ \[1 \|{x} \&{Vertex} ${}{*}{}$ }\FI @@ -198,6 +199,7 @@ was entered\X;\6 \]{GB\_\,GRAPH}8 \|{V} \&{Vertex} ${}{*}{}$ \]{GB\_\,GRAPH}20 \\{vertices} \&{Vertex} ${}{*}{}$ \]{GB\_\,GRAPH}9 \|{w} \&{util} +\[1 \|{x} \&{register} \&{Vertex} ${}{*}{}$ \]{GB\_\,GRAPH}9 \|{x} \&{util} \[1 \|{z} \&{Vertex} ${}{*}{}$ }\FI diff --git a/Build/source/texk/web2c/cwebdir/tests/ham.ch b/Build/source/texk/web2c/cwebdir/tests/ham.ch index 52871477779..759b1bf4b0c 100644 --- a/Build/source/texk/web2c/cwebdir/tests/ham.ch +++ b/Build/source/texk/web2c/cwebdir/tests/ham.ch @@ -55,7 +55,7 @@ Section 2. Section 3. -@x +@x l.58 @ Vertices that have already appeared in the path are ``taken,'' and @y @ Vertices that have already appeared in the path are ``taken,'' and diff --git a/Build/source/texk/web2c/cwebdir/texinputs/dcwebmac.tex b/Build/source/texk/web2c/cwebdir/texinputs/dcwebmac.tex index 09e222d3c3a..dd8b43bea93 100644 --- a/Build/source/texk/web2c/cwebdir/texinputs/dcwebmac.tex +++ b/Build/source/texk/web2c/cwebdir/texinputs/dcwebmac.tex @@ -28,7 +28,7 @@ % Version 3.64 [p21] --- Andreas Scherer, Octobre 2005 % Version 3.64 [p22] --- Andreas Scherer, March 2016 % Version 4.9 --- Andreas Scherer, June 2022 -% Version 4.12 --- Andreas Scherer, May 2024 +% Version 4.12 --- Andreas Scherer, August 2024 \ifx\undefined\botofcontents\input cwebmac.tex\fi diff --git a/Build/source/texk/web2c/cwebdir/texinputs/fcwebmac.tex b/Build/source/texk/web2c/cwebdir/texinputs/fcwebmac.tex index 82d67edb1a5..ff0c0b30bd9 100644 --- a/Build/source/texk/web2c/cwebdir/texinputs/fcwebmac.tex +++ b/Build/source/texk/web2c/cwebdir/texinputs/fcwebmac.tex @@ -28,7 +28,7 @@ % Version 3.64 [p21] --- Andreas Scherer, October 2005 % Version 3.64 [p22] --- Andreas Scherer, March 2016 % Version 4.9 --- Andreas Scherer, June 2022 -% Version 4.12 --- Andreas Scherer, May 2024 +% Version 4.12 --- Andreas Scherer, August 2024 % french translations --- Denis Roegel, 18 September 1994 diff --git a/Build/source/texk/web2c/cwebdir/texinputs/icwebmac.tex b/Build/source/texk/web2c/cwebdir/texinputs/icwebmac.tex index 5f2e7d3a45a..cbb5696984e 100644 --- a/Build/source/texk/web2c/cwebdir/texinputs/icwebmac.tex +++ b/Build/source/texk/web2c/cwebdir/texinputs/icwebmac.tex @@ -28,7 +28,7 @@ % Version 3.64 [p21] --- Andreas Scherer, October 2005 % Version 3.64 [p22] --- Andreas Scherer, March 2016 % Version 4.9 --- Andreas Scherer, June 2022 -% Version 4.12 --- Andreas Scherer, May 2024 +% Version 4.12 --- Andreas Scherer, August 2024 \ifx\undefined\botofcontents\input cwebmac.tex\fi @@ -73,7 +73,7 @@ \def\inx{\par\vskip6pt plus 1fil % we are beginning the index \def\page{\box255 } \normalbottom \write\cont{} % ensure that the contents file isn't empty - \write\cont{\catcode `\noexpand\@=12\relax} % \makeatother + \write\cont{\catcode `\noexpand\@=12\relax} % \makeatother \closeout\cont % the contents information has been fully gathered \output{\ifpagesaved\normaloutput{\box\sbox}\lheader\rheader\fi \global\setbox\sbox=\page \global\pagesavedtrue \mark{\topmark}} @@ -82,9 +82,7 @@ \vsize=\pageheight \advance\vsize by -\ht\sbox % the remaining height \hsize=.5\pagewidth \advance\hsize by -10pt % column width for the index (20pt between cols) - \ifhint\else - \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines - \fi + \ifhint\else\parfillskip 0pt plus .6\hsize\fi % avoid almost empty lines \def\lr{L} % this tells whether the left or right column is next \output{\if L\lr\global\setbox\lbox=\page \gdef\lr{R} \else\normaloutput{\vbox to\pageheight{\box\sbox\vss @@ -93,9 +91,9 @@ \message{Indice Analitico:} \parskip 0pt plus .5pt \outer\def\I##1, ##2.{\par\hangindent2em\noindent##1:\kern1em - \ifacrohint\pdfnote##2.\else##2\fi.} % index entry - \def\[##1]{$\underline{##1}$} % underlined index item - \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar + \scan##2!.} % index entry + \def\[##1]{$\underline{\scan##1!}$\scan} % underlined index item + \rm \rightskip0pt plus 2.5em \tolerance 10000 \hyphenpenalty 10000 \parindent0pt \readindex} \def\fin{\par\vfill\eject % this is done when we are ending the index diff --git a/Build/source/texk/web2c/cwebdir/texinputs/pdfctproofmac.tex b/Build/source/texk/web2c/cwebdir/texinputs/pdfctproofmac.tex index f41ad4d6334..4079d5f704b 100644 --- a/Build/source/texk/web2c/cwebdir/texinputs/pdfctproofmac.tex +++ b/Build/source/texk/web2c/cwebdir/texinputs/pdfctproofmac.tex @@ -1,5 +1,5 @@ % standard macros for CWEB listings (in addition to plain.tex) -% Version 4.12 --- May 2024 +% Version 4.12 --- August 2024 % modified for proofs in CTWILL % modified for PDF/HINT output with 'tex "\let\pdf+' or '{hi|lua|pdf|xe}tex' % This file is not copyrighted and can be used freely. @@ -14,15 +14,6 @@ \font\ninerm=cmr9 \let\mc=\ninerm % medium caps -\def\CEE/{{\mc C\spacefactor1000}} -\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}} -\def\TEX/{\TeX} -\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}} -\def\Cee{\CEE/} % for backward compatibility -\def\Cpp{\CPLUSPLUS/} % for backward compatibility -\def\9#1{} - % with this definition of \9 you can say @:sort key}{TeX code@> - % to alphabetize an index entry by the sort key but format with the TeX code \font\eightrm=cmr8 \let\sc=\eightrm % small caps (NOT a caps-and-small-caps font) \let\mainfont=\tenrm @@ -33,6 +24,16 @@ \font\tentex=cmtex10 % TeX extended character set (used in strings) \fontdimen7\tentex=0pt % no double space after sentences +\def\CEE/{{\mc C\spacefactor1000}} +\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}} +\def\TEX/{\TeX} +\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}} +\def\Cee{\CEE/} % for backward compatibility +\def\Cpp{\CPLUSPLUS/} % for backward compatibility +\def\9#1{} + % with this definition of \9 you can say @:sort key}{TeX code@> + % to alphabetize an index entry by the sort key but format with the TeX code + \def\\#1{\leavevmode\hbox{\it#1\/\kern.05em}} % italic type for identifiers \def\|#1{\leavevmode\hbox{$#1$}} % one-letter identifiers look better this way \def\{\leavevmode\hbox{\bf @@ -116,11 +117,9 @@ \def\note#1#2.{\Y\noindent{\hangindent2em% \baselineskip10pt\eightrm#1~\ifacrohint{\pdfnote#2.}\else#2\fi.\par}} -\newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD -\newtoks\toksE \newtoks\toksF \newtoks\usersanitizer +\newtoks\toksA \newtoks\toksE \newcount\countA \countA=0 \newcount\countB \countB=0 -\newcount\countC \countC=0 \newcount\countD \countD=0 -\newif\iftokprocessed \newif\ifTnum \newif\ifinstr +\newcount\countNOS \countNOS=0 {\def\\{\global\let\spacechar= }\\ } % Here we decide the output format, depending on the TeX engine in use: @@ -137,7 +136,7 @@ \def\Black{\pdfliteral{0 g 0 G}} % use rgb colors for direct PDF output too \def\Blue{\pdfliteral{\pdflinkcolor\space rg \pdflinkcolor\space RG}} \fi -\ifacrohint \input cwebacromac \fi % load hypertext macros +\input cwebacromac % load hypertext macros \def\pdfURL#1#2{\ifpdf \ifpdflua\pdfannotlink height \theheight depth \thedepth attr {/Border [0 0 0]} user { /Type /Annot /Subtype /Link /A << /S /URI /URI (#2) >>}\Blue #1\Black \pdfendlink % changed in 3.69 @@ -187,7 +186,7 @@ \outer\def\M#1{\MN{#1}\ifon\vfil\penalty-100\vfilneg % beginning of section \vskip\intersecskip\startsection\ignorespaces} \outer\def\N#1#2#3.{% beginning of starred section - \ifpdf{\toksF={}\makeoutlinetoks#3\outlinedone\outlinedone}\fi + \ifpdf{\makeoutlinetoks#3\outlinedone}\fi \gdepth=#1\gtitle={#3}\MN{#2}% \ifon\ifnum#1<\secpagedepth \vfil\eject % force page break if depth is small \else\vfil\penalty-100\vfilneg\vskip\intersecskip\fi\fi @@ -327,18 +326,16 @@ \newbox\lbox % lefthand column in the index \def\inx{\par\vskip6pt plus 1fil % we are beginning the index \write\cont{} % ensure that the contents file isn't empty - \write\cont{\catcode `\noexpand\@=12\relax} % \makeatother + \write\cont{\catcode `\noexpand\@=12\relax} % \makeatother \closeout\cont % the contents information has been fully gathered \output{\ifpagesaved\normaloutput{\box\sbox}\lheader\rheader\fi - \global\setbox\sbox=\page \global\pagesavedtrue} + \global\setbox\sbox=\page \global\pagesavedtrue \mark{\topmark}} \pagesavedfalse \eject % eject the page-so-far and predecessors \setbox\sbox\vbox{\unvbox\sbox} % take it out of its box \vsize=\pageheight \advance\vsize by -\ht\sbox % the remaining height \hsize=.5\pagewidth \advance\hsize by -10pt % column width for the index (20pt between cols) - \ifhint\else - \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines - \fi + \ifhint\else\parfillskip 0pt plus .6\hsize\fi % avoid almost empty lines \def\lr{L} % this tells whether the left or right column is next \output{\if L\lr\global\setbox\lbox=\page \gdef\lr{R} \else\normaloutput{\vbox to\pageheight{\box\sbox\vss @@ -347,9 +344,9 @@ \message{Index:} \parskip 0pt plus .5pt \outer\def\I##1, ##2.{\par\hangindent2em\noindent##1:\kern1em - \ifacrohint\pdfnote##2.\else##2\fi.} % index entry - \def\[##1]{$\underline{##1}$} % underlined index item - \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar + \scan##2!.} % index entry + \def\[##1]{$\underline{\scan##1!}$\scan} % underlined index item + \rm \rightskip0pt plus 2.5em \tolerance 10000 \hyphenpenalty 10000 \parindent0pt \readindex} \def\fin{\par\vfill\eject % this is done when we are ending the index @@ -370,23 +367,21 @@ \def\I{\par\hangindent 2em}\let\*=* \ifpdf \def\outsecname{Names of the sections} \let\Xpdf\X \ifpdflua \pdfdest name {NOS} fith - \pdfoutline goto name {NOS} count -\the\countD {\outsecname} - \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.% - {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}% - \pdfoutline goto num \the\toksA \expandafter{\the\toksE}} + \pdfoutline goto name {NOS} count -\the\countNOS {\outsecname} \else \special{pdf: outline -1 << /Title (\outsecname) - /Dest [ @thispage /FitH @ypos ] >>} - \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.% - {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}% - \special{pdf: outline 0 << /Title (\the\toksE) - /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}} - \fi\fi + /Dest [ @thispage /FitH @ypos ] >>}\fi + \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.% + {\makeoutlinetoks##2\outlinedone}% + \ifpdflua \pdfoutline goto num \the\toksA \expandafter{\the\toksE} + \else \special{pdf: outline 0 << /Title (\the\toksE) + /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}\fi} + \fi % \ifacro \readsections} \def\makebookmarks{\let\ZZ=\writebookmarkline \readcontents\relax} \def\countsections{\message{Number of named sections:} - {\def\I{\global\advance\countD by 1}\def\X##1\X{\relax} + {\def\I{\global\advance\countNOS by 1}\def\X##1\X{\relax} \def\Q##1.{\relax}\def\Qs##1.{\relax}\def\U##1.{\relax}\def\Us##1.{\relax} - \readsections\relax}\message{\the\countD}} + \readsections\relax}\message{\the\countNOS}} \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% \else \csname#1\endcsname \fi} % Petr Olsak's macros from texinfo.tex \def\advancenumber#1{\countA=\expnumber{#1}\relax \advance\countA by1 @@ -412,17 +407,14 @@ \line{\consetup{#2}#1 \rm\leaders\hbox to .5em{.\hfil}\hfil \ \ifhint - \HINTlink{#3}{\romannumeral#3}% No page numbers in HINT + \HINTlink{#3}% No page numbers in HINT \HINTcontents{#1}{#2}{#3}% - \else\ifacro\pdflink{#3}{\romannumeral#3}\else#3\fi + \else\ifacro\pdflink{#3}\else#3\fi \hbox to3em{\hss#4}\fi}} \def\consetup#1{\ifcase#1 \bf % depth -1 (@**) \or % depth 0 (@*) \or \hskip2em % depth 1 (@*1) - \or \hskip4em % depth 2 (@*2) - \or \hskip6em % depth 3 (@*3) - \or \hskip8em % depth 4 (@*4) - \or \hskip10em % depth 5 (@*5) + \or \hskip4em \or \hskip6em \or \hskip8em \or \hskip10em % depth 2,3,4,5 \else \hskip12em \fi} % depth 6 or more \def\noinx{\let\inx=\end} % no indexes or table of contents \def\nosecs{\let\FIN=\fin \def\fin{\let\parfillskip=\end \FIN}} diff --git a/Build/source/texk/web2c/cwebdir/texinputs/pdfctwimac.tex b/Build/source/texk/web2c/cwebdir/texinputs/pdfctwimac.tex index 2a0499949e6..630669133c8 100644 --- a/Build/source/texk/web2c/cwebdir/texinputs/pdfctwimac.tex +++ b/Build/source/texk/web2c/cwebdir/texinputs/pdfctwimac.tex @@ -1,5 +1,5 @@ % standard macros for CWEB listings (in addition to plain.tex) -% Version 4.12 --- May 2024 +% Version 4.12 --- August 2024 % modified for pages produced by CTWILL % further modified for page size of the MMIXware book % modified for PDF output with 'tex "\let\pdf+' or '{lua|pdf|xe}tex' @@ -26,15 +26,6 @@ \font\ninerm=cmr9 \let\mc=\ninerm % medium caps -\def\CEE/{{\mc C\spacefactor1000}} -\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}} -\def\TEX/{\TeX} -\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}} -\def\Cee{\CEE/} % for backward compatibility -\def\Cpp{\CPLUSPLUS/} % for backward compatibility -\def\9#1{} - % with this definition of \9 you can say @:sort key}{TeX code@> - % to alphabetize an index entry by the sort key but format with the TeX code \font\eightrm=cmr8 \font\sixrm=cmr6 \font\ninei=cmmi9 @@ -146,6 +137,16 @@ \font\titlefont=cmr7 scaled\magstep4 % title on the contents page \font\ttitlefont=cmtt10 scaled\magstep2 % typewriter type in title +\def\CEE/{{\mc C\spacefactor1000}} +\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}} +\def\TEX/{\TeX} +\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}} +\def\Cee{\CEE/} % for backward compatibility +\def\Cpp{\CPLUSPLUS/} % for backward compatibility +\def\9#1{} + % with this definition of \9 you can say @:sort key}{TeX code@> + % to alphabetize an index entry by the sort key but format with the TeX code + \def\\#1{\leavevmode\hbox{\it#1\/\kern.05em}} % italic type for identifiers \def\|#1{\leavevmode\hbox{$#1$}} % one-letter identifiers look better this way \def\{\leavevmode\hbox{\bf @@ -228,11 +229,9 @@ \Y\noindent{\hangindent2\em\baselineskip10pt% \eightrm#1~\ifacro{\pdfnote#2.}\else#2\fi.\par}} -\newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD -\newtoks\toksE \newtoks\toksF \newtoks\usersanitizer +\newtoks\toksA \newtoks\toksE \newcount\countA \countA=0 \newcount\countB \countB=0 -\newcount\countC \countC=0 \newcount\countD \countD=0 -\newif\iftokprocessed \newif\ifTnum \newif\ifinstr +\newcount\countNOS \countNOS=0 {\def\\{\global\let\spacechar= }\\ } % Here we decide the output format, depending on the TeX engine in use: @@ -253,7 +252,7 @@ \def\Black{\pdfliteral{0 g 0 G}} % use rgb colors for direct PDF output too \def\Blue{\pdfliteral{\pdflinkcolor\space rg \pdflinkcolor\space RG}} \fi -\ifacrohint \input cwebacromac \fi % load hypertext macros +\input cwebacromac % load hypertext macros \def\lapstar{\rlap{*}} \def\stsec{\tenpoint\rightskip=0pt % get out of C mode (cf. \B) @@ -297,17 +296,17 @@ {\xdef\secstar{#1}\let\*=\empty\xdef\secno{#1}}% remove \* from section name \vskip\intersecskip\startsection\ignorespaces} \outer\def\N{\ifvoid\partialpage\lefttrue - \else\ifdim\ht\partialpage<\pageht \leftfalse\else\lefttrue\fi\fi\NNN} + \else\ifdim\ht\partialpage<\pageheight \leftfalse\else\lefttrue\fi\fi\NNN} \outer\def\NN{\ifvoid\partialpage\leftfalse - \else\ifdim\ht\partialpage<\pageht \lefttrue\else\leftfalse\fi\fi\NNN} + \else\ifdim\ht\partialpage<\pageheight \lefttrue\else\leftfalse\fi\fi\NNN} \outer\def\NNN#1#2#3.{% beginning of starred section - \ifacro{\toksF={}\makeoutlinetoks#3\outlinedone\outlinedone}\fi + \ifacro{\makeoutlinetoks#3\outlinedone}\fi \gdepth=#1\gtitle={#3}\def\secno{#2}\xdef\secstar{#2} \ifleft \flushout \gdef\rlhead{\let\i=I\uppercase{\ignorespaces#3}} % running left headline \global\let\rrhead=\rlhead % running right headline \else\global\setbox\partialpage=\vbox{ - \vbox to\pageht{\unvbox\partialpage\vfill}\break} + \vbox to\pageheight{\unvbox\partialpage\vfill}\break} \gdef\rrhead{\let\i=I\uppercase{\ignorespaces#3}} \fi \message{*\secno} % progress report @@ -334,7 +333,7 @@ \def\T#1{\leavevmode % octal, hex or decimal constant \hbox{$\def\?{\kern.2em}%$% \let\ \, % C++ digit separator becomes a little white space - \def\$##1{\egroup_{\rm##1}\bgroup}% suffix to constant + \def\$##1{\egroup_{\rm##1}\bgroup}%$% suffix to constant \def\_{\cdot 10^{\aftergroup}}% power of ten (via dirty trick) \let\~=\oct \let\^=\hex \let\\=\bin {#1}$}}%$% \def\U{\note{This code is used in section}} % xref for use of a section @@ -368,12 +367,12 @@ % \count and \toks registers 200--219 are also used to keep track of refs \catcode`\@=11 \newcount\@n \newcount\@m \newcount\@p -\newdimen\pageht \pageht=19cm -\newdimen\pagewd \pagewd=13cm -\newdimen\colwd \colwd=\pagewd +\newdimen\pageheight \pageheight=19cm +\newdimen\pagewidth \pagewidth=13cm +\newdimen\colwd \colwd=\pagewidth \advance\colwd by -2pc \divide\colwd by 3 % for three columns -\newdimen\fullpageht \fullpageht=\pageht \advance\fullpageht by 4pc -\newdimen\pagethresh \pagethresh=2\pageht +\newdimen\fullpageheight \fullpageheight=\pageheight \advance\fullpageheight by 4pc +\newdimen\pagethresh \pagethresh=2\pageheight \newdimen\nsize \newdimen\msize \newskip\intersecskip \intersecskip=8pt plus 2pt minus 3pt \newbox\partialpage @@ -384,7 +383,7 @@ \newif\iftitle \newif\ifleft \def\flushout{\ifvoid\partialpage\else - \setbox0=\vsplit\partialpage to \pageht + \setbox0=\vsplit\partialpage to \pageheight \shipout\vbox{ \vbox to 3pc{\leftheadline\vfill} \nointerlineskip\box0} @@ -398,7 +397,7 @@ \hyphenpenalty 10000 \exhyphenpenalty 10000 \noindent\vbox to1pt{}\par % 1pt = \topskip - \ninept \readin} - \shipout\vbox to\fullpageht{ + \shipout\vbox to\fullpageheight{ \vbox to 3pc{\rightheadline\vfill} \unvbox\partialpage \vfill @@ -417,10 +416,10 @@ \@n=199 \loop \ifnum\@n<222 \toks\@n={} \count\@n=0 \advance\@n 1 \repeat \nrefs=0 \baseno=\secno}} -\def\leftheadline{\hbox to\pagewd{\vbox to10pt{}% +\def\leftheadline{\hbox to\pagewidth{\vbox to10pt{}% \iftitle\global\titlefalse\else\ninerm\title:\enspace \eightsl\rlhead\fi \hfil\eightrm\folio}} -\def\rightheadline{\hbox to\pagewd{\vbox to10pt{}% +\def\rightheadline{\hbox to\pagewidth{\vbox to10pt{}% \eightrm\folio\hfil\ninerm\title:\enspace \eightsl\rrhead\/}} \def\mini{\begingroup \obeylines \globaldefs=1 \newrefs=\bgroup} @@ -502,17 +501,16 @@ \def\donewithpage#1 {\let\readin=\relax} \catcode`\@=12 -\hsize=\pagewd \vsize=\maxdimen \output={\twillout} +\hsize=\pagewidth \vsize=\maxdimen \output={\twillout} %\let\page=\pagebody \raggedbottom -% \def\page{\box255 }\normalbottom % faster, but loses plain TeX footnotes -%\def\normaloutput#1#2#3{\ifodd\pageno\hoffset=\pageshift\fi - %\shipout\vbox{ - %\vbox to\fullpageht{ - %\iftitle\global\titlefalse - %\else\hbox to\pagewd{\vbox to10pt{}\ifodd\pageno #3\else#2\fi}\fi - %\vfill#1}} % parameter #1 is the page itself - %\global\advance\pageno by1} +\def\page{\box255 }\normalbottom % faster, but loses plain TeX footnotes +\def\normaloutput#1#2#3{\shipout\vbox{\vbox to\fullpageheight{% + \iftitle\global\titlefalse + \else\hbox to\pagewidth{\vbox to10pt{}% + \ifodd\pageno\vbox to3pc{#3\vfill}\else\vbox to3pc{#2\vfill}\fi}\fi + #1\vfill}} % parameter #1 is the page itself + \global\advance\pageno by1} %\def\topofcontents{\centerline{\titlefont\title}\vskip.7in %\vfill} % this material will start the table of contents page %\def\botofcontents{\vfill @@ -521,7 +519,7 @@ \def\contentspagenumber{0} % default page number for table of contents %\newdimen\pageshift \pageshift=\hoffset %% shift righthand pages wrt lefthand ones (changed in version 3.70) -%\def\setpage{\hsize\pagewd\vsize\pageht} % use after changing page size +\def\setpage{\hsize\pagewidth\vsize\pageheight} % use after changing page size \def\contentsfile{\jobname.toc} % file that gets table of contents info \def\readcontents{\input \contentsfile} \def\readsections{\input \jobname.scn} @@ -537,28 +535,34 @@ \immediate\write\cont{\catcode `\noexpand\@=12\relax} % \makeatother \immediate\closeout\cont % the contents information has been fully gathered \fi} -\def\fin{\ifacro \message{Section names:} - \def\U##1.{} \def\Us##1.{} \def\Q##1.{} \def\Qs##1.{} \let\I=\relax \let\*=* - \newrefs={} \output={\shipout\box255} +\def\fin{\ifacro \message{Section names:} \let\Xpdf\X + \def\note##1##2.{\quad{\eightrm##1~{\sevenrm\pdfnote##2.}.}} + \def\Q{\note{Cited in section}} % crossref for mention of a section + \def\Qs{\note{Cited in sections}} % crossref for mentions of a section + \def\U{\note{Used in section}} % crossref for use of a section + \def\Us{\note{Used in sections}} % crossref for uses of a section + \def\I{\par\hangindent 2em\noindent}\let\*=* + \def\rlhead{NAMES OF THE SECTIONS} % running left headline + \let\rrhead=\rlhead % running right headline + \output={\normaloutput\page\rightheadline\leftheadline} + \setpage \startpdf \def\outsecname{Names of the sections} \ifpdflua \makebookmarks \countsections \pdfdest name {NOS} fith - \pdfoutline goto name {NOS} count -\the\countD {\outsecname} - \def\X##1:##2\X{\firstsecno##1.% - {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}% - \pdfoutline goto num \the\toksA \expandafter{\the\toksE}} + \pdfoutline goto name {NOS} count -\the\countNOS {\outsecname} \else \special{pdf: outline -1 << /Title (\outsecname) - /Dest [ @thispage /FitH @ypos ] >>} - \def\X##1:##2\X{\firstsecno##1.% - {\toksF={}\makeoutlinetoks##2\outlinedone\outlinedone}% - \special{pdf: outline 0 << /Title (\the\toksE) - /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}} - \fi \readsections \fi} + /Dest [ @thispage /FitH @ypos ] >>}\fi + \def\X##1:##2\X{\Xpdf##1:##2\X \firstsecno##1.% + {\makeoutlinetoks##2\outlinedone}% + \ifpdflua \pdfoutline goto num \the\toksA \expandafter{\the\toksE} + \else \special{pdf: outline 0 << /Title (\the\toksE) + /A << /S /GoTo /D (\romannumeral\the\toksA) >> >>}\fi} + \readsections \fi} \def\makebookmarks{\let\ZZ=\writebookmarkline \readcontents\relax} \def\countsections{\message{Number of named sections:} - {\def\I{\global\advance\countD by 1}\def\X##1\X{\relax} + {\def\I{\global\advance\countNOS by 1}\def\X##1\X{\relax} \def\Q##1.{\relax}\def\Qs##1.{\relax}\def\U##1.{\relax}\def\Us##1.{\relax} - \readsections\relax}\message{\the\countD}} + \readsections\relax}\message{\the\countNOS}} \def\writebookmarkline#1#2#3#4#5{{% \let\(=\let \let\)=\let \let\[=\let \let\]=\let \let\/=\let \pdfoutline goto num #3 count -\expnumber{chunk#2.#3} {#5}}} @@ -579,7 +583,7 @@ %\def\contentsline#1#2#3#4#5{\ifnum#2=0 \smallbreak\fi %\line{\consetup{#2}#1 %\rm\leaders\hbox to .5em{.\hfil}\hfil - %\ \ifacro\pdflink{#3}{\romannumeral#3}\else#3\fi\hbox to3em{\hss#4}}} + %\ \ifacro\pdflink{#3}\else#3\fi\hbox to3em{\hss#4}}} %\def\consetup#1{\ifcase#1 \bf % depth -1 (@**) %\or % depth 0 (@*) %\or \hskip2em % depth 1 (@*1) |