From d66c6db555242a17b7039104ea50a2a5f391723b Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 6 Jun 2022 20:30:44 +0000 Subject: pwebmac (6jun22) git-svn-id: svn://tug.org/texlive/trunk@63501 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/plain/pwebmac/README.md | 4 +-- Master/texmf-dist/doc/plain/pwebmac/makeall | 40 ++++++++++++++++--------- Master/texmf-dist/tex/plain/pwebmac/pwebmac.tex | 32 ++++++++++---------- 3 files changed, 44 insertions(+), 32 deletions(-) (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/plain/pwebmac/README.md b/Master/texmf-dist/doc/plain/pwebmac/README.md index 1fec3c29a58..470bba611dc 100644 --- a/Master/texmf-dist/doc/plain/pwebmac/README.md +++ b/Master/texmf-dist/doc/plain/pwebmac/README.md @@ -21,7 +21,7 @@ WEB programs for “TeX and friends” as distributed in [TeX Live](https://www.tug.org/texlive). For this purpose, the shell script `makeall` was whipped together; it provides various commandline options and works around several “quirks” in the WEB sources. The resulting collection -of PDF documents can be browsed in the `knuth-pdf` package amd the collection +of PDF documents can be browsed in the `knuth-pdf` package and the collection of HINT documents are available in the `knuth-hint` package. WEB programmers who want to use `pwebmac.tex` instead of the default @@ -34,4 +34,4 @@ creates HINT output that can be viewed with the `hintview` program. The `pwebmac` package is free software and may be used without constraints. -This is version “4.7” of the `pwebmac` package — 2022-02-05, Andreas Scherer. +This is version “4.8” of the `pwebmac` package — 2022-06-05, Andreas Scherer. diff --git a/Master/texmf-dist/doc/plain/pwebmac/makeall b/Master/texmf-dist/doc/plain/pwebmac/makeall index 2a058c5c6f4..eeed9c76bc4 100644 --- a/Master/texmf-dist/doc/plain/pwebmac/makeall +++ b/Master/texmf-dist/doc/plain/pwebmac/makeall @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh PROG=$(basename $0) @@ -18,7 +18,7 @@ Options are (--long options only with GNU getopt): -n, --new Use 'pwebmac' instead of 'webmac' -o, --outdir ARG Create tarballs in path ARG -p, --pdftocfront Place TOC page at the front (PDF only) - -t, --tex ARG Use TeX variant ARG={tex,{hi,pdf,xe}tex} + -t, --tex ARG Use TeX variant ARG=[(hi|pdf|xe)]tex Public domain. Originally written by Andreas Scherer, 2020. HELP @@ -87,14 +87,14 @@ CWEAVE="cweave -f +lX" CTWILL="ctwill -f +lpdf" PAX="pax -wvzf" SED_I="sed -i" # non-GNU-sed requires an extra '' argument for '-i' option. -PDF=pdf +PDF=pdf # default extension for 'knuth-pdf' +HITEX="hitex --compress" # HINT format if [ hitex = $TEX ] then - $TEX -ini -jobname=hitex tex.ini - TEX="hitex --compress" - PDF=hnt + TEX="$HITEX" + PDF=hnt # default extension for 'knuth-hint' fi # WEB and CWEB programs we want to get formatted @@ -231,12 +231,21 @@ FI # FIX: pdfTeX uses '\pdfTeX' in section names; these should # appear correctly in the bookmarks, too. pdftex ) - if $NEW && [ tex != "$TEX" ] && [[ ! $TEX =~ hitex ]] + 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 ;; + # 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 ;; + # FIX: purge obsolete macros from XeTeX. xetex ) $SED_I -e "/\\\\input xewebmac/d" $f.tex ;; esac @@ -264,11 +273,9 @@ FI then $f $f elif [ ctwill = $f ] then - if [[ $TEX =~ hitex ]] - then - CTWILLTEX=pdftex - else - CTWILLTEX="$TEX" + if [ "$HITEX" = "$TEX" ] + then CTWILLTEX=pdftex + else CTWILLTEX="$TEX" fi $CTWILLTEX $f # sort mini-indexes @@ -280,7 +287,7 @@ FI fi done -if ( $PDFTOCFRONT || [[ $TEX =~ hitex ]] ) && ! $FILESELECT +if ( $PDFTOCFRONT || [ "$HITEX" = "$TEX" ] ) && ! $FILESELECT then # create tarballs w/o changes for publication if $CHANGES @@ -292,7 +299,7 @@ then esac mv $f $(basename $f .$PDF)-changes.$PDF done - if [[ $TEX =~ hitex ]] + if [ "$HITEX" = "$TEX" ] then rm -f xetex-changes.pdf mv xetex.pdf xetex-changes.pdf @@ -349,6 +356,11 @@ then # 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 diff --git a/Master/texmf-dist/tex/plain/pwebmac/pwebmac.tex b/Master/texmf-dist/tex/plain/pwebmac/pwebmac.tex index 3f4bd335e61..6c951058f96 100644 --- a/Master/texmf-dist/tex/plain/pwebmac/pwebmac.tex +++ b/Master/texmf-dist/tex/plain/pwebmac/pwebmac.tex @@ -18,10 +18,10 @@ \def\Black{\pdfliteral{0 g 0 G}} % use rgb colors for direct PDF output too \def\PDFlinkcolor{\pdfliteral{\pdflinkcolor\space rg \pdflinkcolor\space RG}} \fi\fi -\newif\ifHINT -\ifx\HINTversion\undefined \HINTfalse \else \HINTtrue \fi +\newif\ifhint +\ifx\HINTversion\undefined \hintfalse \else \hinttrue \fi \newif\ifacro \ifpdf\acrotrue\fi \ifpdftex\acrotrue\fi -\newif\ifacroHINT \ifacro\acroHINTtrue\fi \ifHINT\acroHINTtrue\fi +\newif\ifacrohint \ifacro\acrohinttrue\fi \ifhint\acrohinttrue\fi \parskip 0pt % no stretch between paragraphs \parindent 1em % for paragraphs and for the first line of Pascal text @@ -85,7 +85,7 @@ \let\yskip=\smallskip \def\to{\mathrel{.\,.}} % double dot, used only in math mode \def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt% - \eightrm#1~\ifacroHINT{\pdfnote#2.}\else#2\fi.\par}} + \eightrm#1~\ifacrohint{\pdfnote#2.}\else#2\fi.\par}} \newtoks\toksA \newtoks\toksB \newtoks\toksC \newtoks\toksD \newtoks\toksE \newtoks\toksF \newtoks\usersanitizer @@ -175,7 +175,7 @@ \outlinest\let\outlinedone=\relax} \fi % End of pdf macros -\ifHINT +\ifhint % The following uses HINT primitives to implement: % \HINThome to mark the position of the home page % \HINTlabel to attach a label to the top of a section @@ -191,14 +191,14 @@ \let\pdflink=\HINTlink \fi % End of HINT macros -% Common macros for \ifacro and \ifHINT -\ifacroHINT +% 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} -\ifHINT\else\sanitizecommand\to{..}\fi % a trivial example; requires \addtokens +\ifhint\else\sanitizecommand\to{..}\fi % a trivial example; requires \addtokens \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|% @@ -233,7 +233,7 @@ \def\lapstar{\rlap{*}} \def\stsec{\rightskip=0pt % get out of Pascal mode (cf. \P) \sfcode`;=1500 \pretolerance 200 \hyphenpenalty 50 \exhyphenpenalty 50 - \ifHINT\HINTlabel\fi% Start page before section + \ifhint\HINTlabel\fi% Start page before section \noindent{\let\*=\lapstar\bf\modstar.\quad}% \ifacro \smash{\raise\baselineskip\hbox to0pt{\let\*=\empty \ifpdftex \pdfdest num \modstar fith% @@ -291,7 +291,7 @@ \let\W=\land % logical and \def\X#1:#2\X{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi %$% section name \XX$\langle\,$#2{\eightrm\kern.5em - \ifacroHINT{\pdfnote#1.}\else#1\fi}$\,\rangle$\XX} + \ifacrohint{\pdfnote#1.}\else#1\fi}$\,\rangle$\XX} \def\Y{\par\yskip} \let\Z=\let % now you can \send the control sequence \Z \def\){\hbox{\.{@\$}}} % sign for string pool check sum @@ -371,7 +371,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 + \ifhint\else \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines \fi \def\lr{L} % this tells whether the left or right column is next @@ -382,7 +382,7 @@ \message{Index:} \parskip 0pt plus .5pt \outer\def\:##1, ##2.{\par\hangindent2em\noindent##1:\kern1em - \ifacroHINT\pdfnote##2.\else##2\fi.} % index entry + \ifacrohint\pdfnote##2.\else##2\fi.} % index entry \let\ttentry=\. \def\.##1{\ttentry{##1\kern.2em}} % give \tt a little room \def\[##1]{$\underline{##1}$} % underlined index item \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar @@ -397,7 +397,7 @@ \message{Section names:} \output={\normaloutput\page\lheader\rheader} \setpage - \def\note##1##2.{\quad{\eightrm##1~\ifacroHINT{\pdfnote##2.}\else{##2}\fi.}} + \def\note##1##2.{\quad{\eightrm##1~\ifacrohint{\pdfnote##2.}\else{##2}\fi.}} \linepenalty=10 % try to conserve lines \def\U{\note{Used in section}} % crossref for use of a section \def\Us{\note{Used in sections}} % crossref for uses of a section @@ -432,16 +432,16 @@ \pageno=\contentspagenumber \def\grouptitle{TABLE OF CONTENTS} \message{Table of contents:} - \ifHINT\HINThome\fi% Mark the Table of contents as home page + \ifhint\HINThome\fi% Mark the Table of contents as home page \topofcontents \startpdf - \line{\hfil Section\ifHINT\else\hbox to3em{\hss Page}\fi}% No Page in HINT + \line{\hfil Section\ifhint\else\hbox to3em{\hss Page}\fi}% No Page in HINT \let\Z=\contentsline \readcontents\relax % read the contents info \botofcontents \end} % print the contents page(s) and terminate \def\contentsline#1#2#3#4{% \line{\ignorespaces#1 \rm\leaders\hbox to .5em{.\hfil}\hfil - \ \ifHINT + \ \ifhint \HINTlink{#2}{\romannumeral#2}% No page numbers in HINT \HINTcontents{#1}{#2}{#3}% \else\ifacro\pdflink{#2}{\romannumeral#2}\else#2\fi -- cgit v1.2.3