diff options
author | Karl Berry <karl@freefriends.org> | 2024-08-12 20:04:42 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-08-12 20:04:42 +0000 |
commit | a0eba49a45174e5dfe2d91a267992031f2e89578 (patch) | |
tree | 673732e19ca58ee63ea5bff478c9a96c12032e4a /Master/texmf-dist/doc/plain | |
parent | 802f0c6424c3a36fbb0acceab96b1db04f9fffce (diff) |
pwebmac (12aug24)
git-svn-id: svn://tug.org/texlive/trunk@72015 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/plain')
-rw-r--r-- | Master/texmf-dist/doc/plain/pwebmac/README.md | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/plain/pwebmac/editorsnote.tex | 22 | ||||
-rw-r--r-- | Master/texmf-dist/doc/plain/pwebmac/index.md | 17 | ||||
-rw-r--r-- | Master/texmf-dist/doc/plain/pwebmac/makeall | 380 | ||||
-rw-r--r-- | Master/texmf-dist/doc/plain/pwebmac/webman.ch | 82 |
5 files changed, 285 insertions, 218 deletions
diff --git a/Master/texmf-dist/doc/plain/pwebmac/README.md b/Master/texmf-dist/doc/plain/pwebmac/README.md index f2554f6fb9c..8d0c1d16674 100644 --- a/Master/texmf-dist/doc/plain/pwebmac/README.md +++ b/Master/texmf-dist/doc/plain/pwebmac/README.md @@ -38,4 +38,4 @@ file), and `hitex` creates HINT output that can be viewed with the The `pwebmac` package is free software and may be used without constraints. -This is version **4.12** of the `pwebmac` package — 2024-05-24, Andreas Scherer. +This is version **5.0** of the `pwebmac` package — 2024-08-12, Andreas Scherer. diff --git a/Master/texmf-dist/doc/plain/pwebmac/editorsnote.tex b/Master/texmf-dist/doc/plain/pwebmac/editorsnote.tex new file mode 100644 index 00000000000..06c21010d9c --- /dev/null +++ b/Master/texmf-dist/doc/plain/pwebmac/editorsnote.tex @@ -0,0 +1,22 @@ +\font\ninett=cmtt9 + +\def\editorsnote{\noindent Editor's Note: The present variant of + this {\ninett C/WEB} source file has been modified for use in + the \TeX~Live system.} + +\def\changedsections{\jobname.chs} +\def\readchanges{\input \changedsections} +\newread\testread \newwrite\writechanges +\openin\testread=\changedsections\relax +\ifeof\testread % First run + \let\readchanges=\relax + \let\CH=\ch + \def\ch#1.{\begingroup + \let\\=\BS \let\*=\let \let\ch=\relax + \immediate\openout\writechanges=\changedsections + \immediate\write\writechanges{\par\noindent\ch#1.} + \immediate\closeout\writechanges + \let\ch=\CH \ch#1. + \endgroup} +\else\closein\testread % Second run +\fi diff --git a/Master/texmf-dist/doc/plain/pwebmac/index.md b/Master/texmf-dist/doc/plain/pwebmac/index.md index 711e0c2ba92..870b524af00 100644 --- a/Master/texmf-dist/doc/plain/pwebmac/index.md +++ b/Master/texmf-dist/doc/plain/pwebmac/index.md @@ -61,7 +61,9 @@ directly. [`WEBMAN`](web/webman.pdf) \| [`WEAVE`](web/weave.pdf)+[`chg`](web/weave-changes.pdf) \| [`TANGLE`](web/tangle.pdf)+[`chg`](web/tangle-changes.pdf) \| - [`TWILL`](web/twill.pdf) \] + [`TWILL`](web/twill.pdf)[^1] \] + +[^1]: `TWILL` is presented here as a changed variant of `WEAVE`. ## Complementary WEB programs by other authors @@ -81,13 +83,20 @@ directly. [`COMMON`](cweb/common.pdf)+[`chg`](cweb/common-changes.pdf) \| [`CTANGLE`](cweb/ctangle.pdf)+[`chg`](cweb/ctangle-changes.pdf) \| [`CWEAVE`](cweb/cweave.pdf)+[`chg`](cweb/cweave-changes.pdf) \|\ - [`CTWILL`](cweb/ctwill.pdf) \| + [`CTWILL`](cweb/ctwill.pdf)[^2] \| [`REFSORT`](cweb/refsort.pdf)+[`chg`](cweb/refsort-changes.pdf) \| [`TWINX`](cweb/twinx.pdf)+[`chg`](cweb/twinx-changes.pdf) \] * `ctie/` \[ [`CTIE`](ctie/ctie.pdf)+[`chg`](ctie/ctie-changes.pdf) \] * `tie/` \[ [`TIE`](tie/tie.pdf)+[`chg`](tie/tie-changes.pdf) \] * `hitex/` \[ [`HiTeX`](hitex/hitex.pdf) \] -* `mp/` \[ [`MetaPost`](mp/mp.pdf) \] +* `mp/` \[ [`MP`](mp/mp.pdf) \| [`MPOST`](mp/mpost.pdf) \][^3] + +[^2]: `CTWILL` is presented here in its own format with “mini-indexes” for + every two consecutive pages. + +[^3]: `MP` and `MPOST` have received quite a few changes “behind the scenes” in + order to present them in this collection; see project + [`mplibdir`](https://github.com/ascherer/mplibdir) for details. ## Errata for “Computers & Typesetting” by Donald E.\ Knuth @@ -109,4 +118,4 @@ directly. ## Happy C/WEB Programming! -2024-05-20 Andreas Scherer +2024-08-11 Andreas Scherer diff --git a/Master/texmf-dist/doc/plain/pwebmac/makeall b/Master/texmf-dist/doc/plain/pwebmac/makeall index 6be5b6e91a2..0b42f35ee87 100644 --- a/Master/texmf-dist/doc/plain/pwebmac/makeall +++ b/Master/texmf-dist/doc/plain/pwebmac/makeall @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/sh -e PROG=$(basename $0) @@ -11,7 +11,7 @@ Test driver for 'pwebmac.tex' in combination with various TeX engines. Produce TeX output in DVI, PDF or HINT format from a set of C/WEB programs included in the 'TeX Live' source tree. -Options are (--long options only with GNU getopt): +Options are (--long options only with Linux-getopt): -c, --changes Apply change file to C/WEB source -f, --files STRING Process only subset of C/WEB programs -h, --help Print this help message and exit @@ -28,7 +28,7 @@ HELP LONGOPTS=changes,files:,help,new,outdir:,pdftocfront,tex:,validpdf SHRTOPTS=cf:hno:pt:v -CHANGES=false # apply changefile to C/WEB source +CHANGES= # apply changefile to C/WEB source FILESELECT=false # user-defined '--files' selection NEW=false # '\input pwebmac' instead of '\input webmac' for PDF et al. OUTDIR=. # path where the resulting tarballs are placed @@ -36,6 +36,9 @@ PDFTOCFRONT=false # push table-of-contents to front of PDF output TEX=tex # or 'pdftex' or 'xetex' or 'hitex' or 'luatex' VALID=false # give 'pdftex' a chance to produce valid output +# Extra material -- unpublished +LOCALSTUFF=/opt/github/web + # Initial list of C/WEB sources to process, overridable with option '-f': KNUTHWHERE=$(locate /bibtex.web) if [ -z "$KNUTHWHERE" ] @@ -46,7 +49,8 @@ KNUTHWARE=$(dirname $KNUTHWHERE) FILES="$KNUTHWARE/*.web pdftex.web xetex.web twill" WEBINPUTS=$KNUTHWARE//: -FILES="$FILES common ctangle cweave ctwill refsort twinx ctie tie hitex mp" +FILES="$FILES common ctangle cweave ctwill refsort twinx ctie tie hitex \ + mp mpost mpmath mpmathbinary mpmathdecimal mpmathdouble mpstrings tfmin" CWEBINPUTS=$KNUTHWARE//: KNUTHWHERE=$(locate /glue.web) @@ -58,7 +62,7 @@ fi export WEBINPUTS CWEBINPUTS -getopt -T >/dev/null +getopt -T >/dev/null && true # keep going if [ $? -eq 4 ] # Check for Linux-getopt with extensions then OPTS=$(getopt -n $PROG -o $SHRTOPTS -l $LONGOPTS -- "$@") @@ -73,7 +77,7 @@ fi while true do case "$1" in - -c | --changes ) CHANGES=true; shift ;; + -c | --changes ) CHANGES="-changes"; shift ;; -f | --files ) FILES="$2"; FILESELECT=true; shift 2 ;; -h | --help ) usage; exit 0 ;; -n | --new ) NEW=true; shift ;; @@ -106,50 +110,51 @@ case "$TEX" in pdftex | luatex ) # actually only necessary for 'pwebmac.tex' VALID=true ;; - tex ) # plain TeX - XETEX="$XETEX --no-pdf" # XeTeX's extended DVI format + * ) # plain TeX and XeTeX use different approaches + [ tex = "$TEX" ] && XETEX="$XETEX --no-pdf" + # XeTeX's extended DVI format VALID=false ;; - - * ) VALID=false ;; # plain TeX and XeTeX use different approach esac # Valid PDF output from 'pdftex' and 'luatex': In 'pwebmac.tex' set '\countD' # to the actual number of @<named modules@>, not the number of all sections. -if $VALID +if $VALID && { [ pdftex = "$TEX" ] || [ luatex = "$TEX" ]; } then NEW=true # PDF output requires 'pwebmac.tex' TEX="$TEX --shell-escape" fi # Use alternative TeX macros more suited for PDF output. -if $NEW -then WEAVE="$WEAVE -p" -fi +[ -n "$CHANGES" ] && NEW=true +$NEW && WEAVE="$WEAVE -p" -# WEB and CWEB programs we want to get formatted +# Loop over WEB and CWEB programs we want to get formatted for f in $FILES do f=$(basename $f .web) case $f in pdftex ) # Fix several 'Overfull \hbox'es - tie -m $f.web $f.web /opt/github/web/$f.ch ;; + tie -m $f.web $f.web $LOCALSTUFF/$f.ch ;; - hitex | mp ) # Beautifications for 'hitex.w' and 'mp.w' - tie -m $f.w $f.w /opt/github/web/$f.ch ;; + mp | mpost | mpmath* | mpstrings | tfmin ) + # Beautifications for MetaPost + tie -m $f.w $f.w $LOCALSTUFF/$f.ch ;; weave | twill ) - cp $KNUTHWARE/weave.web . if [ "$HITEX" = "$TEX" ] # Fix non-constant factor - then $SED_I -e "s/\\\\the\\\\hsize/460pt/" weave.web + then + cp $KNUTHWARE/weave.web . + $SED_I weave.web -e 's/\\the\\hsize/460pt/' fi ;; esac - if $CHANGES + if [ -n "$CHANGES" ] then case $f in # These are changes in and of themselves - ctwill | twill | glue | hitex | mp ) continue ;; + ctwill | twill | glue | hitex | mp | mpost | \ + mpmath* | mpstrings | tfmin ) continue ;; # CWEB programs have individual changefiles common ) $CWEAVE $f comm-w2c ;; @@ -162,93 +167,82 @@ do # main WEB programs have complex change files tex | mf | pdftex | xetex ) WEBINPUTS=.:$KNUTHWARE/../../Work//:$WEBINPUTS: \ - $WEAVE $f $f-final - - # FIX: XeTeX uses '\pdfTeX' from section 114, - # which is not changed and thus 'disappears'; - # repeat in preamble. - if [ xetex = $f ] - then $SED_I -e "s/\(\\\\let\\\\maybe\)/\\\\def\\\\pdfTeX{pdf\\\\TeX}\n\1/" $f.tex - fi ;; + $WEAVE $f $f-final ;; # all other WEB codes have singular changefiles * ) $WEAVE $f $f ;; esac # only document changed modules/sections - $SED_I -e "s/\(\\\\let\\\\maybe=\)\\\\iftrue/\1\\\\iffalse/" \ - $f.tex - else + $SED_I $f.tex -e '/\\let\\maybe/s/\\iftrue/\\iffalse/' + else # -z $CHANGES case $f in - ctwill ) - # apply tons of editorial changes to 'ctwill.w' - if [ "$HITEX" = "$TEX" ] - then ctie -m $f.w cweave.w $f-w2c.ch $f-hint.ch - else ctie -m $f.w cweave.w $f-w2c.ch $f-mini.ch - fi + ctwill ) # apply tons of editorial changes to 'ctwill.w' + [ "$HITEX" = "$TEX" ] && + ctie -m $f.w cweave.w $f-w2c.ch $f-hint.ch || + ctie -m $f.w cweave.w $f-w2c.ch $f-mini.ch $CTWILL $f # prime the pump $CTWILL $f ;; # get decent answers c* | refsort | twinx | tie ) $CWEAVE $f ;; + hitex ) $CWEAVE $f || true ;; # lots of unused sections - hitex | mp ) CWEBINPUTS=.: $CWEAVE $f ;; + mp | mpost | mpmath* | mpstrings | tfmin ) + CWEBINPUTS=.: $CWEAVE $f ;; - twill ) - WEBINPUTS=.:$WEBINPUTS \ - tie -m $f.web weave.web weave.ch weav-$f.ch - WEBINPUTS=.: $WEAVE $f ;; + twill ) WEBINPUTS=.:$WEBINPUTS \ + tie -c $f.ch weave.web weave.ch weav-$f.ch + WEBINPUTS=.:$WEBINPUTS $WEAVE weave $f $f ;; - pdftex | weave ) WEBINPUTS=.: $WEAVE $f ;; + pdftex | weave ) WEBINPUTS=.:$WEBINPUTS $WEAVE $f ;; * ) $WEAVE $f ;; esac - fi + fi # $CHANGES # 'pwebmac' is for WEB only; do nothing for CWEB programs - if $NEW && echo $f | grep -v -q -E '^c|refsort|twinx|tie|hitex|mp' + if $NEW && echo $f | grep -v -q -E \ + '^c|refsort|twinx|tie|hitex|^mp|tfmin' then # timestamp on table-of-contents page or the first page case $f in bibtex | patgen | tangle | weave | twill ) - $SED_I -e "s/\(\\\\def\\\\title\)/\\\\datecontentspage\n\1/" $f.tex ;; + $SED_I $f.tex -e 's/\\def\\title{/\\datecontentspage\n&/' ;; # } mf | tex | pdftex | xetex ) - $SED_I -e "s/\(\\\\def\\\\topofcontents\)/\\\\datethis\n\\\\emergencystretch=.1\\\\hsize\n\1/" $f.tex - # amend '\N' redefinition for PDF outlines in # Metafont and TeX (also pdfTeX and XeTeX) # 'pwebmac' defines headers differently - $SED_I -e "s/\(\\\\outer\\\\def\\\\N.*{\)/\1%/" \ - -e "s/\\\\def\\\\rhead\(.*}\)/\\\\gtitle=\1\\\\MN#1.\\\\vfill\\\\eject/" \ - $f.tex - + cat > texmf-pdf.sed << 'FI' +s/\\outer\\def\\N.*{/&%/ +s/\\def\\rhead\({.*}\)/\\gtitle=\1\\MN#1.\\vfill\\eject/ +s/\\def\\title{/\\datethis\n\\emergencystretch=.1\\hsize\n&/ +FI # active links in PDF outlines/bookmarks - cat > texmf-pdf.patch << FI - \ifpdf{\toksF={}\makeoutlinetoks{[#2] #3}\outlinedone\outlinedone}\fi + cat > texmf-pdf.patch1 << FI + \ifpdf{\makeoutlinetoks{[#2] #3}\outlinedone}\fi FI - $SED_I -e "/\\\\outer\\\\def\\\\N/ { - r texmf-pdf.patch - }" $f.tex - - $SED_I -e "s/{\\\\the\\\\pageno}}}\\\\next/{\\\\the\\\\pageno}{\\\\the\\\\toksE}}}\\\\next/" $f.tex - - cat > texmf-pdf.patch << FI + cat >> texmf-pdf.sed << 'FI' +/\\outer\\def\\N/r texmf-pdf.patch1 +s/{\\the\\pageno}/&{\\the\\toksE}/ +FI + cat > texmf-pdf.patch2 << FI \ifpdflua\relax\else \ifpdf\special{pdf: outline 0 << /Title (\the\toksE) /Dest [ @thispage /FitH @ypos ] >>}\fi\fi FI - $SED_I -e "/ \\\\edef\\\\next/ { - r texmf-pdf.patch - }" $f.tex - rm texmf-pdf.patch ;; - - * ) $SED_I -e "s/\(\\\\def\\\\botofcontents\)/%\1/" \ - -e "s/ \\\\centerline{\(\\\\hsize\)/\\\\def\\\\covernote{\1/" \ - -e "s/\(Publishing Company.}}\)}/\1\n\\\\datecontentspage/" \ - -e "s/\(trademark of the American Mathematical Society.}}\)}/\1\n\\\\datecontentspage/" \ - $f.tex ;; + cat >> texmf-pdf.sed << 'FI' +/\\edef\\next/r texmf-pdf.patch2 +FI + $SED_I $f.tex -f texmf-pdf.sed + rm -f texmf-pdf.* ;; + + * ) $SED_I $f.tex -e '/\\def\\botofcontents/d' \ + -e 's/ \\centerline{\(\\hsize\)/\\def\\covernote{\1/' \ + -e 's/\(Publishing Company.}}\)}/\1\n\\datecontentspage/' \ + -e 's/\(Mathematical Society.}}\)}/\1\n\\datecontentspage/' ;; esac - fi + fi # $NEW # special treatment for individual C/WEB programs case $f in @@ -258,56 +252,92 @@ FI # 'E' no longer free to be active character # fix table-of-contents page for bibtex # FIX: don't wait for Oren Patashnik. - bibtex ) $SED_I -e "s/\\\\def\\\\titlepage{F}/\\\\titletrue/" $f.tex - if ! $CHANGES - then $SED_I -e "71,78d" $f.tex - fi ;; + bibtex ) $SED_I $f.tex -e 's/\\def\\titlepage{F}/\\titletrue/' + [ -z "$CHANGES" ] && $SED_I $f.tex -e "71,78d" ;; + + # FIX: GFtoDVI uses 'Metafont' in a module name; + # this should appear correctly in the bookmarks, too. + gftodvi ) $NEW && $SED_I $f.tex \ + -e 's/\\def\\(/\\ifpdf\\sanitizecommand\\MF{Metafont}\\fi\n\n&/' ;; # ) # FIX: 'glue.web' obviously uses an old 'webmac.tex'. - glue ) $SED_I -e "s/\(\\\\def\\\\title{GLUE}\)/\1\n\\\\pageno=\\\\contentspagenumber \\\\advance\\\\pageno by1\\\\relax/" \ - -e "s/titlefalse/titletrue/" $f.tex ;; + glue ) $SED_I $f.tex -e 's/titlefalse/titletrue/' \ + -e 's/\\def\\title{GLUE}/&\n\\pageno=\\contentspagenumber \\advance\\pageno by1\\relax/' ;; + + # FIX: Metafont uses '\over' in several module names; + # this should appear correctly in the bookmarks, too. + mf ) $NEW && $SED_I $f.tex \ + -e 's/\\def\\(/\\ifpdf\n\\sanitizecommand\\MF{Metafont}\n\\sanitizecommand\\over{\/}\n\\sanitizecommand\\langle{<}\n\\sanitizecommand\\rangle{>}\n\\fi\n\n&/' ;; # ) + + # FIX: MFT uses '\pb' in several module names; + # this should appear correctly in the bookmarks, too. + mft ) $NEW && $SED_I $f.tex \ + -e 's/\\def\\pb.*/&\n\\ifpdf\\sanitizecommand\\pb{\|...\|}\\fi/' ;; # FIX: pdfTeX uses '\pdfTeX' in section names; these should # appear correctly in the bookmarks, too. - pdftex ) - if $NEW && [ tex != "$TEX" ] && [ "$HITEX" != "$TEX" ] - then $SED_I -e "s/\(\\\\def\\\\pdfTeX{pdf\\\\TeX}\)/\1 \\\\sanitizecommand\\\\pdfTeX{pdfTeX}\\\\sanitizecommand\\\\eTeX{e-TeX}/" $f.tex - fi ;; + pdftex ) $NEW && $SED_I $f.tex \ + -e 's/\\def\\pdfeTeX{pdf\\eTeX}/&\n\\ifpdf\n\\sanitizecommand\\pdfTeX{pdfTeX}\n\\sanitizecommand\\eTeX{e-TeX}\n\\sanitizecommand\\over{\/}\n\\fi/' ;; # FIX: weave uses '\max' in name of module 173; this should # appear correctly in the bookmarks, too. - weave ) - if $NEW && [ tex != "$TEX" ] && [ "$HITEX" != "$TEX" ] - then $SED_I -e "s/\(\\\\def\\\\({}\)/\\\\sanitizecommand\\\\max{max}\n\1/" $f.tex - fi ;; + weave ) $NEW && $SED_I $f.tex \ + -e 's/\\def\\({}/\\ifpdf\\sanitizecommand\\max{max}\\fi\n&/' ;; # ) # FIX: purge obsolete macros from XeTeX. - xetex ) $SED_I -e "/\\\\input xewebmac/d" $f.tex ;; + # FIX: XeTeX uses '\pdfTeX' from section 114, which is not + # changed and thus 'disappears'; repeat in preamble. + # FIX: apply '\sanitizecommand' for bookmarks. + xetex ) $SED_I $f.tex -e '/\\input xewebmac/d' \ + -e 's/\\let\\maybe/\\def\\pdfTeX{pdf\\TeX}\n&/' + $NEW && $SED_I $f.tex \ + -e 's/\\def\\pdfTeX{pdf\\TeX}/&\n\\ifpdf\\sanitizecommand\\pdfTeX{pdfTeX}\\fi/' \ + -e 's/\\def\\eTeX/\\ifpdf\n\\sanitizecommand\\eTeX{e-TeX}\n\\sanitizecommand\\over{\/}\n\\fi\n&/' ;; # timestamp on table-of-contents page or the first page - hitex | mp ) $SED_I -e "s/\(\\\\def\\\\topofcontents\)/\\\\datethis\n\\\\emergencystretch=.1\\\\hsize\n\1/" $f.tex ;; + hitex | mp ) $SED_I $f.tex -e 's/\\def\\topofcontents/\\datethis\n\\emergencystretch=.1\\hsize\n&/' ;; + common | ctangle | cweave | ctie | tie ) $SED_I $f.tex -e 's/\\def\\botofcontents/\\datethis\n&/' ;; + mpost | mpmath* | mpstrings | tfmin ) $SED_I $f.tex -e 's/\\def\\title{/\\datecontentspage\n\n&/' ;; # } esac # shift table-of-contents pages to the front in PDF if $PDFTOCFRONT && echo $f | grep -v -q -E 'ctwill|hitex' + then $SED_I $f.tex \ + -e '0,/\\N[1{]/s/\\N[1{]/\\input pdfwebtocfront\n\n&/' + fi # $PDFTOCFRONT + + if [ -n "$CHANGES" ] || [ twill = "$f" ] then - $SED_I -e "0,/\\\\N[1{]/s/\(\\\\N[1{]\)/\\\\input pdfwebtocfront\n\n\1/" $f.tex + # We add an Editor's Note and the list of changed + # sections on the ToC page. + cp $LOCALSTUFF/editorsnote.tex . - # only XeTeX can process XETEX.WEB - if [ xetex = $f ] - then $XETEX $f # run XeTeX twice - else $TEX $f # run TeX twice - fi + case $f in + mf ) $SED_I $f.tex -e 's/\\datethis/\\input editorsnote.tex\n\\def&{\\def\\startsection{\\leftline{\\sc\\today\\ at \\hours}\n \\medskip\\editorsnote\\readchanges\\bigskip\n \\let\\startsection=\\stsec\\stsec}}\n&/' ;; - # run TEX.WEB three times to fix table-of-contents - if [ tex = $f ] - then $TEX $f - fi - fi + # TeX and XeTeX grow significantly for TeX Live + # so there's enough room on the last ToC page. + pdftex | tex | xetex ) $SED_I $f.tex \ + -e '/\\datethis/d' \ + -e 's/\(\\def\\botofcontents\).*/\\input editorsnote.tex\n\1{\\hsize6.5in\\vskip 0pt plus 1filll\n \\editorsnote\\readchanges\\medskip\\noindent\\sc\\today\\ at \\hours}/' \ + -e 's/\\input pdfwebtocfront/&\n\n\\def\\tocpages{2}/' ;; - case $f in - xetex ) $XETEX $f ;; # only XeTeX can process XETEX.WEB + bibtex | patgen | tangle | weave | refsort | twinx ) $SED_I $f.tex -e 's/\\date.*/\\input editorsnote\n\\def\\covernote{\\vbox{\\editorsnote\\readchanges\\par}}\n\\datecontentspage/' ;; + + common | ctangle | cweave | ctie | tie ) $SED_I $f.tex \ + -e 's/\\def\\covernote/\\input editorsnote.tex\n&/' \ + -e 's/^}}/\\bigskip\\editorsnote\\readchanges\\par&/' ;; + + twill ) $SED_I $f.tex \ + -e 's/\\datecontentspage/\\input editorsnote.tex\n\\def\\covernote{\\vbox{\\editorsnote\\readchanges\\par}}\n&/' ;; + * ) $SED_I $f.tex \ + -e 's/\\def\\title{/\\input editorsnote.tex\n&/' \ + -e 's/\\vbox{\\ninerm/&\\editorsnote\\readchanges\\medskip/' ;; + esac + fi # $CHANGES + + case $f in ctwill ) # gives two different outcomes if [ "$HITEX" = "$TEX" ] # sort mini-indexes then # directly in the TeX file @@ -318,124 +348,98 @@ FI fi $TEX $f ;; - refsort ) $TEX -interaction nonstopmode $f ;; - - * ) $TEX $f ;; + * ) # run TeX twice + if $PDFTOCFRONT || [ -n "$CHANGES" ] + then # only XeTeX can process XETEX.WEB + [ xetex = $f ] && $XETEX $f || $TEX $f + fi + [ xetex = $f ] && $XETEX $f || $TEX $f ;; esac done +# create tarballs w/o changes for publication if ( $PDFTOCFRONT || [ "$HITEX" = "$TEX" ] ) && ! $FILESELECT then - # create tarballs w/o changes for publication - if $CHANGES + if [ -z "$CHANGES" ] then - for f in *.$PDF - do - case $f in *-changes.$PDF ) rm -f $f; continue ;; - esac - mv $f $(basename $f .$PDF)-changes.$PDF + export TEXINPUTS=.:$(kpsewhich --var-value=TEXMFDIST)//:$KNUTHWARE// + touch pages.tex # let 'manmac' produce output at all + + $TEX -jobname=errorlog $LOCALSTUFF/Xerrorlog.tex + for f in one two three four five six seven eight nine ten \ + eleven twelve + do $TEX -jobname errata.$f errata.$f done - if [ "$HITEX" = "$TEX" ] - then - rm -f xetex-changes.pdf - mv xetex.pdf xetex-changes.pdf - fi - $PAX "$OUTDIR/etc-changes.tar.gz" -s ,^,etc/, \ - vftovp-changes.$PDF vptovf-changes.$PDF - $PAX "$OUTDIR/mf-changes.tar.gz" -s ,^,mf/, \ - mf-changes.$PDF - $PAX "$OUTDIR/mfware-changes.tar.gz" -s ,^,mfware/, \ - gftodvi-changes.$PDF gftopk-changes.$PDF \ - gftype-changes.$PDF mft-changes.$PDF - $PAX "$OUTDIR/tex-changes.tar.gz" -s ,^,tex/, \ - tex-changes.$PDF - $PAX "$OUTDIR/texware-changes.tar.gz" -s ,^,texware/, \ - dvitype-changes.$PDF pltotf-changes.$PDF \ - pooltype-changes.$PDF tftopl-changes.$PDF - $PAX "$OUTDIR/web-changes.tar.gz" -s ,^,web/, \ - tangle-changes.$PDF weave-changes.$PDF - $PAX "$OUTDIR/bibtex-changes.tar.gz" -s ,^,bibtex/, \ - bibtex-changes.$PDF - $PAX "$OUTDIR/other-changes.tar.gz" -s ,^,other/, \ - dvicopy-changes.$PDF patgen-changes.$PDF \ - pktogf-changes.$PDF pktype-changes.$PDF - $PAX "$OUTDIR/pdftex-changes.tar.gz" -s ,^,pdftex/, \ - pdftex-changes.$PDF - $PAX "$OUTDIR/xetex-changes.tar.gz" -s ,^,xetex/, \ - xetex-changes.pdf - $PAX "$OUTDIR/ctie-changes.tar.gz" -s ,^,ctie/, \ - ctie-changes.$PDF - $PAX "$OUTDIR/tie-changes.tar.gz" -s ,^,tie/, \ - tie-changes.$PDF - $PAX "$OUTDIR/cweb-changes.tar.gz" -s ,^,cweb/, \ - common-changes.$PDF ctangle-changes.$PDF \ - cweave-changes.$PDF refsort-changes.$PDF \ - twinx-changes.$PDF - else + $TEX errata + $PAX "$OUTDIR/errata.tar.gz" -s ,^,errata/, err*.$PDF + + $PAX "$OUTDIR/hitex.tar.gz" -s ,^,hitex/, hitex.$PDF + $PAX "$OUTDIR/mp.tar.gz" -s ,^,mp/, mp.$PDF mpost.$PDF + # Finally, build the remaining documents # * TeX and Metafont test routines # * WEB and CWEB manuals - export TEXINPUTS=.:$(kpsewhich --var-value=TEXMFDIST)//:$KNUTHWARE// - rm -f trapman.tex webman.tex cwebman.tex # FIX: Prepare 'trapman' for automatic processing; several # input files are renamed in TeX Live (in fact, there are # additional files for MetaPost). - f=$(kpsewhich -engine tex trapman) - tie -m $(basename $f) $f /opt/github/web/$(basename $f .tex).ch - # Prepare 'webman' with section links and bookmarks. - f=$(kpsewhich -engine tex webman) - tie -m $(basename $f) $f /opt/github/web/$(basename $f .tex).ch + for f in trapman webman + do + f=$(kpsewhich -engine tex $f) + tie -m $(basename $f) $f $LOCALSTUFF/$(basename $f .tex).ch + done # Prepare 'cwebman' with footnotes describing the extended CWEB. f=$(kpsewhich -engine tex cwebman) tie -m $(basename $f) $f $(basename $f .tex)-w2c.ch - if [ "$HITEX" = "$TEX" ] - then $SED_I -e "s/\(\\\\input cwebmac\)/\1\n\\\\input hiplainpage/" cwebman.tex - fi - - touch pages.tex # let 'manmac' produce output at all for f in tripman trapman webman cwebman do $TEX $f done - $TEX -jobname=errorlog /opt/github/web/Xerrorlog.tex - - for f in one two three four five six seven eight nine ten \ - eleven twelve - do $TEX -jobname errata.$f errata.$f - done - - $TEX errata - - $PAX "$OUTDIR/errata.tar.gz" -s ,^,errata/, \ - errorlog.$PDF errata.*.$PDF errata.$PDF - $PAX "$OUTDIR/etc.tar.gz" -s ,^,etc/, vftovp.$PDF vptovf.$PDF $PAX "$OUTDIR/mf.tar.gz" -s ,^,mf/, mf.$PDF trapman.$PDF - $PAX "$OUTDIR/mfware.tar.gz" -s ,^,mfware/, \ - gftodvi.$PDF gftopk.$PDF gftype.$PDF mft.$PDF $PAX "$OUTDIR/tex.tar.gz" -s ,^,tex/, \ glue.$PDF tex.$PDF tripman.$PDF - $PAX "$OUTDIR/texware.tar.gz" -s ,^,texware/, \ - dvitype.$PDF pltotf.$PDF pooltype.$PDF tftopl.$PDF $PAX "$OUTDIR/web.tar.gz" -s ,^,web/, \ webman.$PDF tangle.$PDF weave.$PDF twill.$PDF - $PAX "$OUTDIR/bibtex.tar.gz" -s ,^,bibtex/, bibtex.$PDF - $PAX "$OUTDIR/other.tar.gz" -s ,^,other/, \ - dvicopy.$PDF patgen.$PDF pktogf.$PDF pktype.$PDF - $PAX "$OUTDIR/hitex.tar.gz" -s ,^,hitex/, hitex.$PDF - $PAX "$OUTDIR/mp.tar.gz" -s ,^,mp/, mp.$PDF - $PAX "$OUTDIR/pdftex.tar.gz" -s ,^,pdftex/, pdftex.$PDF - $PAX "$OUTDIR/xetex.tar.gz" -s ,^,xetex/, xetex.pdf - $PAX "$OUTDIR/ctie.tar.gz" -s ,^,ctie/, ctie.$PDF - $PAX "$OUTDIR/tie.tar.gz" -s ,^,tie/, tie.$PDF $PAX "$OUTDIR/cweb.tar.gz" -s ,^,cweb/, \ cwebman.$PDF common.$PDF ctangle.$PDF cweave.$PDF \ ctwill.$PDF refsort.$PDF twinx.$PDF - fi + else # -n $CHANGES + for f in *.$PDF + do + case $f in *$CHANGES.$PDF ) rm -f $f; continue ;; esac + mv $f $(basename $f .$PDF)$CHANGES.$PDF + done + [ "$HITEX" = "$TEX" ] && mv -f xetex.pdf xetex$CHANGES.pdf + $PAX "$OUTDIR/mf$CHANGES.tar.gz" -s ,^,mf/, mf$CHANGES.$PDF + $PAX "$OUTDIR/tex$CHANGES.tar.gz" -s ,^,tex/, tex$CHANGES.$PDF + $PAX "$OUTDIR/web$CHANGES.tar.gz" -s ,^,web/, \ + tangle$CHANGES.$PDF weave$CHANGES.$PDF + $PAX "$OUTDIR/cweb$CHANGES.tar.gz" -s ,^,cweb/, \ + common$CHANGES.$PDF ctangle$CHANGES.$PDF \ + cweave$CHANGES.$PDF refsort$CHANGES.$PDF \ + twinx$CHANGES.$PDF + fi # $CHANGES + + $PAX "$OUTDIR/etc$CHANGES.tar.gz" -s ,^,etc/, \ + vftovp$CHANGES.$PDF vptovf$CHANGES.$PDF + $PAX "$OUTDIR/mfware$CHANGES.tar.gz" -s ,^,mfware/, \ + gftodvi$CHANGES.$PDF gftopk$CHANGES.$PDF \ + gftype$CHANGES.$PDF mft$CHANGES.$PDF + $PAX "$OUTDIR/texware$CHANGES.tar.gz" -s ,^,texware/, \ + dvitype$CHANGES.$PDF pltotf$CHANGES.$PDF \ + pooltype$CHANGES.$PDF tftopl$CHANGES.$PDF + $PAX "$OUTDIR/other$CHANGES.tar.gz" -s ,^,other/, \ + dvicopy$CHANGES.$PDF patgen$CHANGES.$PDF \ + pktogf$CHANGES.$PDF pktype$CHANGES.$PDF + $PAX "$OUTDIR/xetex$CHANGES.tar.gz" -s ,^,xetex/, \ + xetex$CHANGES.pdf + for f in bibtex pdftex ctie tie + do $PAX "$OUTDIR/$f$CHANGES.tar.gz" -s ,^,$f/, $f$CHANGES.$PDF + done # Notes to self: # (1) Create a user-friendly central entrypoint with diff --git a/Master/texmf-dist/doc/plain/pwebmac/webman.ch b/Master/texmf-dist/doc/plain/pwebmac/webman.ch index 1817ab46659..f3e5a8a31e3 100644 --- a/Master/texmf-dist/doc/plain/pwebmac/webman.ch +++ b/Master/texmf-dist/doc/plain/pwebmac/webman.ch @@ -56,6 +56,12 @@ \else Appendix~#1\fi} @z +@x l.21 +\def\runninghead{{\tentt WEB} USER MANUAL} +@y +\def\runninghead{{\ninett WEB} USER MANUAL} +@z + @x l.34 \vskip 15pt plus 3pt minus 3pt \noindent This memo describes how to write programs in the @@ -64,22 +70,27 @@ This memo describes how to write programs in the @z -@x l.180 -\yskip\item{1)} A \TeX\ part, containing explanatory material about what +@x l.126 +well known work of Pierre-Arnoul de Marneffe [``Holon programming: A +survey,'' Univ.\ de Liege, Service Informatique, Liege, Belgium, 1973; 135 @y -\yskip\itemitem{1)} A \TeX\ part, containing explanatory material about what +well known work of Pierre-Arnoul de Marneffe [``\pdfURL{Holon programming: +A survey}{https://github.com/holon-scribe/holon-programming},'' Univ.\ de +Li\`ege, Service d'Informatique, Li\`ege, Belgium, 1973; 135 @z -@x l.183 -\item{2)} A definition part, containing macro definitions that serve as +@x l.180 +\yskip\item{1)} A \TeX\ part, containing explanatory material about what @y -\itemitem{2)} A definition part, containing macro definitions that serve as +\begingroup\parindent=2.5em +\yskip\item{1)} A \TeX\ part, containing explanatory material about what @z -@x l.187 -\item{3)} A \PASCAL\ part, containing a piece of the program that +@x l.190 +that its structure is readily perceived. @y -\itemitem{3)} A \PASCAL\ part, containing a piece of the program that +that its structure is readily perceived.\par +\endgroup @z @x l.304 @@ -102,14 +113,29 @@ program for \.{TANGLE}, in \pdfURL{Appendix~E}{tangle.pdf}, gives precise details about this @z -@x l.626 +@x l.628 outputs of \.{WEAVE} and \.{TANGLE} (see Appendix~C\null). Meta-comments @y outputs of \.{WEAVE} (see \Appendix B\null) and \.{TANGLE} (see \Appendix C\null). Meta-comments @z -@x l.893 +@x l.788 +\yskip\itemitem{a)}Comments in \PASCAL\ text should appear only after +@y +\yskip +\begingroup\parindent=1.5em +\itemitem{a)}Comments in \PASCAL\ text should appear only after +@z + +@x l.796 +statements. +@y +statements.\par +\endgroup +@z + +@x l.895 examples of ``real'' programs. Appendix~A shows the \.{WEB} input that generated modules 55--59 of the \.{WEAVE} program; Appendix~B shows the corresponding \TeX\ code output by \.{WEAVE}; and Appendix~C shows excerpts @@ -119,7 +145,7 @@ generated modules 55--59 of the \.{WEAVE} program; \Appendix B shows the corresponding \TeX\ code output by \.{WEAVE}; and \Appendix C shows excerpts @z -@x l.900 +@x l.901 report, in Appendices D and~E. The reader should first compare Appendix~A to the corresponding portion of Appendix~D; then the same material should be compared to Appendices B and~C. Finally, if time permits, the reader may @@ -133,7 +159,7 @@ studying the complete programs in Appendices \pdfURL{D}{weave.pdf} and~\pdfURL{E}{tangle.pdf}, since \.{WEAVE} @z -@x l.908 +@x l.909 Finally, Appendix F is the `\.{webmac}' file that sets \TeX\ up to accept the output of \.{WEAVE}; Appendix~G discusses how to use some of its macros to vary the output formats; and Appendix~H discusses what needs to be done @@ -145,7 +171,7 @@ engines; \Appendix G discusses how to use some of these macros to vary the output formats; and \Appendix H discusses what needs to be done @z -@x l.913 +@x l.914 The programs in Appendices D and E will optionally keep statistics on @y The programs in Appendices \pdfURL{D}{weave.pdf} and \pdfURL{E}{tangle.pdf} @@ -153,9 +179,11 @@ will optionally keep statistics on @z @x l.989 +\def\runninghead{APPENDIX A --- {\tentt WEB} FILE FORMAT} \section Appendix A. This excerpt from \.{WEAVE.WEB} produced modules 55--59 in Appendix~D. @y +\def\runninghead{APPENDIX A --- {\ninett WEB} FILE FORMAT} \def\bkminfo{WEB file format} \section Appendix A. This excerpt from \.{WEAVE.WEB} produced modules 55--59 in @@ -169,9 +197,11 @@ ASCII codes is $c_1c_2\ldots c_n$, its hash value will be @z @x l.1061 +\def\runninghead{APPENDIX B --- TRANSLATION BY {\tentt WEAVE}} \section Appendix B. This excerpt from \.{WEAVE.TEX} corresponds to Appendix A. @y +\def\runninghead{APPENDIX B --- TRANSLATION BY {\ninett WEAVE}} \def\bkminfo{Translations by WEAVE} \section Appendix B. This excerpt from \.{WEAVE.TEX} corresponds to \Appendix A. @@ -190,8 +220,10 @@ ASCII codes is $c_1c_2\ldots c_n$, its hash value will be @z @x l.1143 +\def\runninghead{APPENDIX C --- TRANSLATION BY {\tentt TANGLE}} \section Appendix C. @y +\def\runninghead{APPENDIX C --- TRANSLATION BY {\ninett TANGLE}} \def\bkminfo{Translation by TANGLE} \section Appendix C. @z @@ -543,35 +575,35 @@ The macros in \.{webmac} and \.{pwebmac} make it possible to produce a variety of formats @z -@x l.1425 +@x l.1463 in small caps. For example, Appendix~D was produced after saying @y in small caps. For example, \pdfURL{Appendix~D}{weave.pdf} was produced after saying @z -@x l.1468 +@x l.1469 \.{\\pageno=\\contentspagenumber} \.{\\advance\\pageno by 1}'. (Appendix~D @y \.{\\pageno=\\contentspagenumber} \.{\\advance\\pageno by 1}'. (\pdfURL{Appendix~D}{weave.pdf} @z -@x l.1479 +@x l.1480 For example, Appendix~D was produced with the following definitions: @y For example, \pdfURL{Appendix~D}{weave.pdf} was produced with the following definitions: @z -@x l.1491 +@x l.1492 for every starred module. For example, when Appendix~D was being generated, @y for every starred module. For example, when \pdfURL{Appendix~D}{weave.pdf} was being generated, @z -@x l.569 +@x l.1569 \.{\\ch}, \.{\\fin}, and \.{\\con}. \.{WEAVE} itself need not be changed. @y \.{\\ch}, \.{\\fin}, and \.{\\con}. \.{WEAVE} itself need not be changed. @@ -582,7 +614,7 @@ and run \TeX\ \\{twice} on your woven \.{WEB} document, in order to shift the table-of-contents to the front of the {\mc PDF} output. @z -@x l.1583 +@x l.1584 dependencies'' in the index of Appendix~E above, and figure out what changes @y dependencies'' in the index of \pdfURL{Appendix~E}{tangle.pdf} above, @@ -595,25 +627,25 @@ first change files; then you can sure that your compiler will handle first change files; then you can be sure that your compiler will handle @z -@x l.1609 +@x l.1610 the index to Appendix~D. @y the index to \pdfURL{Appendix~D}{weave.pdf}. @z -@x l.1616 +@x l.1617 Appendix~E. This listing will incorporate your changes. @y \pdfURL{Appendix~E}{tangle.pdf}. This listing will incorporate your changes. @z -@x l.1620 +@x l.1621 Appendix~D that incorporates your changes. @y \pdfURL{Appendix~D}{weave.pdf} that incorporates your changes. @z -@x l.1632 +@x l.1631 \def\substep(10.#1){\par\hangindent 4em\noindent \hbox to 4em{\hfil(10.#1) }\ignorespaces} @y @@ -621,7 +653,7 @@ Appendix~D that incorporates your changes. \hbox to 3em{\hfil(10.#1) }\ignorespaces} @z -@x l.1666 +@x l.1667 computer by following Appendices D and E. Then you have to simulate the @y computer by following Appendices \pdfURL{D}{weave.pdf} |