diff options
Diffstat (limited to 'Build/source/texk/web2c/cwebdir/cwebman-w2c.ch')
-rw-r--r-- | Build/source/texk/web2c/cwebdir/cwebman-w2c.ch | 325 |
1 files changed, 325 insertions, 0 deletions
diff --git a/Build/source/texk/web2c/cwebdir/cwebman-w2c.ch b/Build/source/texk/web2c/cwebdir/cwebman-w2c.ch new file mode 100644 index 00000000000..491cb64c82d --- /dev/null +++ b/Build/source/texk/web2c/cwebdir/cwebman-w2c.ch @@ -0,0 +1,325 @@ +@q Changes for CWEB in TeX Live from numerous contributors. @> +@q This file is in the Public Domain. @> + +@q Most of the original Kpathsea changes by Wlodek Bzyl and Olaf Weber @> +@q were merged with the set of change files of the CWEBbin project; @> +@q see https://github.com/ascherer/cwebbin for the original parts. @> + +@q This stripped change file {comm,ctang,cweav,ctwill,cwebman}-w2c.ch @> +@q has been created from the elaborate set of change files @> +@q {comm,ctang,cweav,cwebman}-patch.ch, @> +@q {comm,cweav,cwebman}-extensions.ch, {comm,ctang,cweav}-output.ch, @> +@q {comm,ctang,cweav}-i18n.ch, and cweav-twill.ch for CTWILL, and @> +@q {comm,ctang,cweav,ctwill,cwebman}-texlive.ch with the 'tie' processor @> +@q and is used as a monolithic changefile for {common,ctangle,cweave}.w @> +@q and cwebman.tex in TeX Live. @> + +@q Please send comments, suggestions, etc. to tex-k@@tug.org. @> + +@x +\input cwebmac +\acrofalse\pdffalse\pdftexfalse +@y +\input cwebmac +@z + +@x +\def\page{\box255 } \normalbottom +@y +\let\page=\pagebody \raggedbottom +\newcount\footnotecount \footnotecount 1\relax +\def\cwebfootnote#1{\footnote{${}^{\the\footnotecount}$}{#1}% + \advance\footnotecount by 1\relax} +@z + +@x +\outer\def\section #1.{\penalty-500\bigskip + \centerline{\sectionfont\def\.##1{{\twelvett##1}} #1}\nobreak\vskip 6pt + \everypar{\hskip-\parindent\everypar{}}} +@y +\ifacro + \pdfpagewidth=\pagewidth \advance\pdfpagewidth by 2cm + \pdfpageheight=\pageheight \advance\pdfpageheight by 3cm + \ifpdftex \pdfhorigin=1cm \pdfvorigin=1cm + \else \advance\pdfpageheight by 1cm \global\pageshift=-1.54cm + \global\hoffset=-1.54cm \global\voffset=-1.54cm \fi +\fi + +\newcount\destcount \destcount=1\relax + +\def\subsections{0} +\outer\def\section #1.{\penalty-500\bigskip + \centerline{\sectionfont\def\.##1{{\twelvett##1}} + \ifacro\vbox to 0pt{\kern-2.5ex\relax + \ifpdftex\pdfdest num \destcount fitbh\relax + \else\special{pdf: dest (\the\destcount) [ @thispage /FitBH @ypos ]}\fi + \def\.##1{##1}\def\TeX{TeX}% + \ifpdftex\pdfoutline goto num \destcount + \ifnum\subsections>0 count -\subsections\fi {#1}\relax + \else\special{pdf: outline 0 << /Title (#1) + /A << /S /GoTo /D (\the\destcount) >> >>}\fi + \gdef\subsections{0}% + \global\advance\destcount by 1\relax + \kern2.5ex\relax + }\fi #1}\nobreak\vskip 6pt + \everypar{\hskip-\parindent\everypar{}}} + +\def\appA{15} +\def\appB{16} +\def\appC{17} + +\def\Appendix#1{\leavevmode + \ifacro\ifpdftex + \pdfstartlink attr{/Border[0 0 0]} goto num\csname app#1\endcsname\relax + \Blue\hbox{Appendix}~#1\Black + \pdfendlink + \else + \setbox0=\hbox{\special{pdf: bc [ \pdflinkcolor ]}{\hbox{Appendix}~#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 (\csname app#1\endcsname) >> >>}\box0\relax + \fi\else Appendix~#1\fi} + +\newcount\subdestcount \subdestcount=151\relax + +\outer\def\subsection #1.{\ifacro + \ifpdftex\pdfdest num \subdestcount fitbh\relax + \pdfoutline goto num \subdestcount {#1}\relax + \else\special{pdf: dest (\the\subdestcount) [ @thispage /FitBH @ypos ]}% + \special{pdf: outline 1 << /Title (#1) + /A << /S /GoTo /D (\the\subdestcount) >> >>}\fi + \global\advance\subdestcount by 1\relax + \fi} +@z + +@x +\def\runninghead{{\tentt CWEB} USER MANUAL (VERSION 4.1)} +@y +\def\Kpathsea/{{\mc KPATHSEA\spacefactor1000}} +\def\runninghead{{\tentt CWEB} USER MANUAL (4.1 [\TeX~Live])} +@z + +@x +\vskip 18pt\centerline{(Version 4.1 --- February 2021)} +@y +\vskip 18pt\centerline{(Version 4.1 --- February 2021)% +\footnote*{This document describes the extended \.{CWEB} (4.1 [\TeX~Live]).}} +@z + +@x +Internet page \.{http://www-cs-faculty.stanford.edu/\char`\~knuth/cweb.html} +@y +Internet page +\pdfURL{\.{http://www-cs-faculty.stanford.edu/\char`\~knuth/cweb.html}}% + {http://www-cs-faculty.stanford.edu/\TILDE/knuth/cweb.html} +@z + +@x +\.{https://github.com/ascherer/cweb} with the really current news. +@y +\pdfURL{\.{https://github.com/ascherer/cweb}}% + {https://github.com/ascherer/cweb} +with the really current news. +@z + +@x +should be sent to the \TeX-related mailing list \.{tex-k@tug.org}. +@y +should be sent to the \TeX-related mailing list +\pdfURL{\.{tex-k@tug.org}}% + {mailto:tex-k@tug.org}. +@z + +@x +email address in a \.{CWEB} file (e.g., \.{tex-k@@tug.org}). +@y +email address in a \.{CWEB} file (e.g., +\pdfURL{\.{tex-k@@tug.org}}% + {mailto:tex-k@tug.org}). +@z + +@x +it cannot find them in the current directory. +@y +it cannot find them in the current directory.% +\cwebfootnote{\acrofalse In this extended implementation, if an \.{@i}nclude +file can not be found in the current directory, \.{CWEB} will use the +conventions of the \Kpathsea/ library as outlined in section~\X91:File lookup +with \Kpathsea/\X~of \pdfURL{appendix~D}{common-changes.pdf} to look for it. +% FIXME +(This is true for any other input or change file lookup.)} +@z + +@x +output by \.{CWEAVE}. (On by default.) (Has no effect on \.{CTANGLE}.) +@y +output by \.{CWEAVE}. (On by default.) (Has no effect on \.{CTANGLE}.)% +\cwebfootnote{This extended version of \.{CWEB} adds the following options +to the list: +\hfil\smallskip +\option d Set the debugging variable \\{kpathsea\_debug} to the numeric +value $N\in[0,127]$ of this option. See section~93 % FIXME +of \pdfURL{appendix~D}{common-changes.pdf} for details. +\hfil\vskip\normallineskip +\option i Indent parameters in function declarations. This causes the +formal parameter declarations in function heads to be indented. (On by +default; \.{-i} typesets declarations flush left; some people think this +to be more logical than indenting them) (Has no effect on \.{CTANGLE}.) +\hfil\vskip\normallineskip +\option l This option takes the string of characters to its right as its +argument to switch between different user languages and macro packages. +For example, if you call \.{CWEAVE} with the `\.{+ld}' (or `\.{-ld}') option, +the German \.{CWEB} macros \.{dcwebmac.tex} will be loaded in the first line +of output instead of the English ones. To avoid conflicts, the Danish +macros could be called \.{dkcwebmac.tex} and would be included by `\.{+ldk}'. +(Off by default) (Has no effect on \.{CTANGLE}.) +\hfil\vskip\normallineskip +\option o Separate declarations and the first statement in a function block. +\.{CWEAVE} automatically inserts a bit of extra space. (On by default.) +(Has no effect on \.{CTANGLE}.) +\hfil\vskip\normallineskip +\option t Overwrite output files with temporary output only if changes occur. +(On by default.)} +@z + +@x +Sometimes things don't work as smoothly, and you get a bunch of +@y +\acrofalse\pdftexfalse\pdffalse +Sometimes things don't work as smoothly, and you get a bunch of +@z + +@x +`$\\{main}(\\{argc},\39\\{argv}{}$)'. +@y +`$\\{main}(\\{argc},\39\\{argv}{}$)'. +\ifx\pdf+\pdftrue\fi +\ifx\pdfoutput\undefined \pdftexfalse \else\ifnum\pdfoutput=0 \pdftexfalse +\else \pdftextrue \pdfoutput=1\fi\fi +\ifpdf\acrotrue\fi \ifpdftex\acrotrue\fi +@z + +@x +\section Hypertext and hyperdocumentation. +@y +\vfill\eject +\section Hypertext and hyperdocumentation. +@z + +@x +the program sources at \.{ftp://ftp.cs.stanford.edu/pub/ctwill}. +@y +the program sources at +\pdfURL{\.{ftp://ftp.cs.stanford.edu/pub/ctwill}}% + {ftp://ftp.cs.stanford.edu/pub/ctwill}.% +\cwebfootnote{\TeX~Live comes with an up-to-date \.{ctwill} executable -- and +its associated helpers -- out of the box.} +@z + +@x +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 +Appendix B is the file that sets \TEX/ up to accept +the output of \.{CWEAVE}, and Appendix~C discusses how to use some of those +@y +\Appendix B is the file that sets \TEX/ up to accept +the output of \.{CWEAVE}, and \Appendix C discusses how to use some of those +@z + +@x +appendices D, E, and~F, which exhibit the complete source code for +\.{CTANGLE} and \.{CWEAVE}. + +\vfil\eject\titletrue +@y +appendices \pdfURL{D}{common.pdf}, \pdfURL{E}{ctangle.pdf}, +and~\pdfURL{F}{cweave.pdf}, which exhibit the complete source code for +\.{CTANGLE} and \.{CWEAVE}.% +\cwebfootnote{Actually, \pdfURL{Appendix~D}{common.pdf} contains the source +code for \.{COMMON}, and the additional \pdfURL{Appendix~G}{ctwill.pdf} +exhibits the source code for \.{CTWILL}, which is based on \.{CWEAVE}.} + +\eject\titletrue +@z + +@x +\section Appendix A: Excerpts from a \.{CWEB} Program. +@y +\def\subsections{4} +\section Appendix A: Excerpts from a \.{CWEB} Program. +\subsection CWEB file format. +@z + +@x +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 +\def\runninghead{APPENDIX A --- TRANSLATION BY {\tentt CTANGLE}} +@y +\def\runninghead{APPENDIX A --- TRANSLATION BY {\tentt CTANGLE}} +\subsection Translation by CTANGLE. +@z + +@x +\def\runninghead{APPENDIX A --- TRANSLATION BY {\tentt CWEAVE}} +@y +\def\runninghead{APPENDIX A --- TRANSLATION BY {\tentt CWEAVE}} +\subsection Translation by CWEAVE. +@z + +@x +\def\runninghead{APPENDIX A --- FINAL DOCUMENT} + +And here's what the same excerpt looks like when typeset. +(Can you spot the typographical nicety used in the \.{CWEB} code?) +\let\K=\leftarrow +@y +\def\runninghead{APPENDIX A --- FINAL DOCUMENT} +\subsection Final document. + +\acrofalse\pdftexfalse\pdffalse +And here's what the same excerpt looks like when typeset. +(Can you spot the typographical niceties used in the \.{CWEB} code?) +\let\K=\leftarrow +\def\C#1{\5\5\quad$\triangleright\,${\cmntfont#1}$\,\triangleleft$} +@z + +@x +\vfil\eject\titletrue +@y +\vfil\eject\titletrue +\ifx\pdf+\pdftrue\fi +\ifx\pdfoutput\undefined \pdftexfalse \else\ifnum\pdfoutput=0 \pdftexfalse +\else \pdftextrue \pdfoutput=1\fi\fi +\ifpdf\acrotrue\fi \ifpdftex\acrotrue\fi +@z + +@x + \.{ { }\\vskip 15pt \\centerline\{(Version 4.1)\}{ }\\vfill\}}\cr}$$ +@y + \.{ { }\\vskip 15pt \\centerline\{(Version 4.1)\}{ }\\vfill\}}\cr}$$ +@z + +@x +if you have a duplex printer. Appendices D, E, and F of the complete +@y +if you have a duplex printer. Appendices \pdfURL{D}{common.pdf}, +\pdfURL{E}{ctangle.pdf}, and \pdfURL{F}{cweave.pdf}\cwebfootnote{And +\pdfURL{Appendix~G}{ctwill.pdf}.} of the complete +@z + +@x +\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 + |