From 756f6b6a1d51d79b5e7b55009924becd45cd8553 Mon Sep 17 00:00:00 2001 From: Luigi Scarso Date: Wed, 30 Jan 2019 06:35:40 +0000 Subject: [PATCH] sync trunk with experimental git-svn-id: https://serveur-svn.lri.fr/svn/modhel/luatex/trunk@7076 0b2b3880-5936-4365-a048-eb17d2e5a6bf --- source/texk/README | 10 +- source/texk/web2c/luatexdir/lua/lpdflib.c | 16 + .../texk/web2c/luatexdir/luatex_svnversion.h | 2 +- source/texk/web2c/man/ChangeLog | 5 + source/texk/web2c/man/ctwill.man | 87 +++-- source/texk/web2c/man/cweb.man | 311 +++++++++--------- source/texk/web2c/mplibdir/ChangeLog | 4 + source/texk/web2c/mplibdir/mpost.w | 77 +++-- 8 files changed, 302 insertions(+), 210 deletions(-) diff --git a/source/texk/README b/source/texk/README index 39308215f..3f5bbbd79 100644 --- a/source/texk/README +++ b/source/texk/README @@ -1,4 +1,4 @@ -$Id: README 49020 2018-10-29 22:11:07Z karl $ +$Id: README 49846 2019-01-28 10:31:05Z kakuto $ Copyright 2006-2018 TeX Users Group. You may freely use, modify and/or distribute this file. @@ -64,7 +64,7 @@ dvipos - maintained here, by us dvipsk - maintained here, by us -dvisvgm 2.6.1 - checked 29oct18 +dvisvgm 2.6.2 - checked 25jan19 https://dvisvgm.de/Downloads/ gregorio 5.1.1 - checked 25mar18 @@ -74,7 +74,7 @@ gsftopk - from Paul Vojta's xdvi? kpathsea - maintained here, by us -lcdf-typetools 2.107 - checked 22feb18 +lcdf-typetools 2.108 - checked 28jan19 http://www.lcdf.org/type/ makeindexk - maintained here, by us @@ -120,8 +120,10 @@ web2c - maintained here, by us - core web2c, plain tex, etc. also: https://osdn.jp/projects/eptex etex - maintained here euptex - http://www.t-lab.opal.ne.jp/tex/uptex_en.html - mflua[jit] - https://foundry.supelec.fr/projects/mflua/ + mflua[jit] - https://serveur-svn.lri.fr/svn/modhel/mflua + also: http://www.luatex.org/download.html mplibdir - http://tug.org/metapost + also: http://www.luatex.org/download.html luatex - http://luatex.org pdftex - http://pdftex.org [u]pmpost - nothing current, see README for old info diff --git a/source/texk/web2c/luatexdir/lua/lpdflib.c b/source/texk/web2c/luatexdir/lua/lpdflib.c index 669fa1f2f..6396baa92 100644 --- a/source/texk/web2c/luatexdir/lua/lpdflib.c +++ b/source/texk/web2c/luatexdir/lua/lpdflib.c @@ -808,6 +808,12 @@ static int getpdfomitcidset(lua_State * L) return 1 ; } +static int getpdfomitcharset(lua_State * L) +{ + lua_pushinteger(L, (pdf_omit_charset)); + return 1 ; +} + static int setpdfgentounicode(lua_State * L) { if (lua_type(L, 1) == LUA_TNUMBER) { @@ -824,6 +830,14 @@ static int setpdfomitcidset(lua_State * L) return 0 ; } +static int setpdfomitcharset(lua_State * L) +{ + if (lua_type(L, 1) == LUA_TNUMBER) { + set_pdf_omit_charset(lua_tointeger(L, 1)); + } + return 0 ; +} + /* for tracing purposes when no pages are flushed */ static int setforcefile(lua_State * L) @@ -1335,10 +1349,12 @@ static const struct luaL_Reg pdflib[] = { { "getignoreunknownimages", getpdfignoreunknownimages }, { "getgentounicode", getpdfgentounicode }, { "getomitcidset", getpdfomitcidset }, + { "getomitcharset", getpdfomitcharset }, { "setinclusionerrorlevel", setpdfinclusionerrorlevel }, { "setignoreunknownimages", setpdfignoreunknownimages }, { "setgentounicode", setpdfgentounicode }, { "setomitcidset", setpdfomitcidset }, + { "setomitcharset", setpdfomitcharset }, { "setforcefile", setforcefile }, { "mapfile", l_mapfile }, { "mapline", l_mapline }, diff --git a/source/texk/web2c/luatexdir/luatex_svnversion.h b/source/texk/web2c/luatexdir/luatex_svnversion.h index 638080959..67b691c37 100644 --- a/source/texk/web2c/luatexdir/luatex_svnversion.h +++ b/source/texk/web2c/luatexdir/luatex_svnversion.h @@ -1 +1 @@ -#define luatex_svn_revision 7070 +#define luatex_svn_revision 7075 diff --git a/source/texk/web2c/man/ChangeLog b/source/texk/web2c/man/ChangeLog index af11ec2d8..bdc3310fd 100644 --- a/source/texk/web2c/man/ChangeLog +++ b/source/texk/web2c/man/ChangeLog @@ -1,3 +1,8 @@ +2019-01-28 Andreas Scherer + + * ctwill.man, + * cweb.man: Updated manpages; describe differences to original CWEB. + 2019-01-10 Andreas Scherer * ctwill.man: New manpage for CTWILL and its tools. diff --git a/source/texk/web2c/man/ctwill.man b/source/texk/web2c/man/ctwill.man index e92a6e0b6..78820df93 100644 --- a/source/texk/web2c/man/ctwill.man +++ b/source/texk/web2c/man/ctwill.man @@ -1,6 +1,6 @@ .\" Automatically generated by Pandoc 2.5 .\" -.TH "CTWILL" "1" "January 11, 2019" "Web2c @VERSION@" "General Commands Manual" +.TH "CTWILL" "1" "January 27, 2019" "Web2c @VERSION@" "General Commands Manual" .hy .SH NAME .PP @@ -24,18 +24,19 @@ with mini\-indexes per spread or per section index.tex .SH DESCRIPTION .PP -The \f[B]ctwill\f[R] program converts a CWEB source document into a TeX -file that may be formatted and printed in the usual way. +The \f[B]ctwill\f[R] program converts a CWEB source document into a +TeX\ file that may be formatted and printed in the usual way. It takes appropriate care of typographic details like page layout and the use of indentation, \f[I]italics\f[R], \f[B]boldface\f[R], etc., and it supplies extensive cross\-index information that it gathers automatically. .PP CWEB allows you to prepare a single document containing all the -information that is needed both to produce a compilable C program and to -produce a well\-formatted document describing the program in as much -detail as the writer may desire. -The user of CWEB ought to be familiar with TeX as well as C. +information that is needed both to produce a compilable C/C++\ program +and to produce a well\-formatted document describing the program in as +much detail as the writer may desire. +The user of CWEB ought to be familiar with TeX as well as C/C++. +.SH USAGE .PP The command line should have one, two, or three names on it. The first is taken as the CWEB input file (and \f[B].w\f[R] is added if @@ -89,7 +90,7 @@ Like the \f[B].aux\f[R] files, \f[B].bux\f[R] files should contain only .PP The meaning specified by \f[B]\[at]$\&...\[at]>\f[R] generally has four components: an identifier (followed by space), a program name (enclosed -in braces), a section number (followed by space), and a TeX part. +in braces), a section number (followed by space), and a TeX\ part. .PP A special \f[I]proofmode\f[R] is provided so that you can check \f[B]ctwill\f[R]\[cq]s conclusions about cross\-references. @@ -100,13 +101,40 @@ you can check that your specifications are correct. More details how to use \f[B]ctwill\f[R] can be found in the first sections of its source code, respectively the change file \f[B]cweav\-twill.ch\f[R] applicable to the \f[B]cweave.w\f[R] source. +.SH DIFFERENCES TO ORIGINAL CTWILL +.PP +The present incarnation of \f[B]ctwill\f[R] and its utilities tries hard +to be a drop\-in replacement for the original package. +There are, however, a few differences worth noting: +.IP \[bu] 2 +This version is based on the most recent version of CWEB (3.64c). +.IP \[bu] 2 +In TeX\ Live the utility programs are prefixed with \f[B]ctwill\-\f[R] +and the macro files with \f[B]ct\f[R] for technical reasons. +.IP \[bu] 2 +Options \f[B]\-\-help\f[R], \f[B]\-\-quiet\f[R], \f[B]\-\-verbose\f[R], +\f[B]\-\-version\f[R], and flags \f[B]\-i\f[R], \f[B]\-o\f[R], and +\f[B]+lX\f[R] are new in CWEBbin and TeX\ Live. +.IP \[bu] 2 +Option \f[B]+lX\f[R] is accompanied by example wrapper files for +\f[B]ctwimac.tex\f[R] and \f[B]ctproofmac.tex\f[R] with translated +captions for German (\f[B]+ld\f[R]). +.IP \[bu] 2 +\f[B]ctwill\f[R] in TeX\ Live operates silently by default; use the +\f[B]\-\-verbose\f[R] option to get the original behavior. +.IP \[bu] 2 +File lookup with the environment variable CWEBINPUTS is extended to +permit several, colon\-separated, paths. +.IP \[bu] 2 +If properly configured, the main program \f[B]ctwill\f[R] is localized +with the \[lq]GNU gettext utilities\[rq]. .SH OPTIONS .PP Options on the command line may be either turned off with `\f[B]\-\f[R]' (if they are on by default) or turned on with `\f[B]+\f[R]' (if they are off by default). In fact, the options are processed from left to right, so a sequence -like \f[B]\[en]verbose \-h\f[R] will only show the \f[B]banner line\f[R] +like \f[B]\-\-verbose \-h\f[R] will only show the \f[B]banner line\f[R] (\f[B]+b\f[R]) and the \f[B]progress report\f[R] (\f[B]+p\f[R]), but leave out the \f[B]happy message\f[R] (\f[B]\-h\f[R]). .IP \[bu] 2 @@ -117,14 +145,15 @@ leave out the \f[B]happy message\f[R] (\f[B]\-h\f[R]). \f[B]+p\f[R]: print progress report messages .IP \[bu] 2 \f[B]+q\f[R]/\f[B]\-q\f[R]: shortcut for \f[B]\-bhp\f[R]; also -\f[B]\[en]quiet\f[R] (default) +\f[B]\-\-quiet\f[R] (default) .IP \[bu] 2 \f[B]+v\f[R]/\f[B]\-v\f[R]: shortcut for \f[B]+bhp\f[R]; also -\f[B]\[en]verbose\f[R] +\f[B]\-\-verbose\f[R] .IP \[bu] 2 -\f[B]\-e\f[R]: do not enclose C material in \f[B]\f[R] +\f[B]\-e\f[R]: do not enclose C/C++\ material in \f[B]\f[R] .IP \[bu] 2 -\f[B]\-f\f[R]: do not force a newline after every C statement in output +\f[B]\-f\f[R]: do not force a newline after every C/C++\ statement in +output .IP \[bu] 2 \f[B]\-i\f[R]: suppress indentation of parameter declarations .IP \[bu] 2 @@ -140,20 +169,28 @@ leave out the \f[B]happy message\f[R] (\f[B]\-h\f[R]). .IP \[bu] 2 \f[B]+s\f[R]: print usage statistics .IP \[bu] 2 -\f[B]\[en]help\f[R]: display help message and exit +\f[B]\-\-help\f[R]: display help message and exit .IP \[bu] 2 -\f[B]\[en]version\f[R]: output version information and exit +\f[B]\-\-version\f[R]: output version information and exit .SH ENVIRONMENT .PP The environment variable CWEBINPUTS is used to search for the input files, or the system default if CWEBINPUTS is not set. See tex(1) for the details of the searching. +.PP +If prepared for NLS support, \f[B]ctwill\f[R] like \f[B]ctangle\f[R] and +\f[B]cweave\f[R] uses the environment variable TEXMFLOCALEDIR to +configure the parent directory where the \[lq]GNU gettext utilities\[rq] +search for translation catalogs. +.PP +These variables are preconfigured in TeX\ Live\[cq]s +\f[B]texmf.cnf\f[R]. .SH FILES .PP The location of the files mentioned below varies from system to system. Use the \f[B]kpsewhich\f[R] utility to find their locations. .IP \[bu] 2 -\f[B]ctwimac.tex\f[R]: The default TeX macros \f[B]\[rs]input\f[R] in +\f[B]ctwimac.tex\f[R]: The default TeX\ macros \f[B]\[rs]input\f[R] in the first line of the output file. .IP \[bu] 2 \f[B]ctproofmac.tex\f[R]: If \f[B]ctwill\f[R] is invoked with the @@ -168,14 +205,15 @@ dctproofmac.tex\f[R]. \f[I]webfile\f[R]\f[B].bux\f[R]: Reference definitions to resolve from other modules. .IP \[bu] 2 -\f[B]system.bux\f[R]: Reference definitions to resolve from C standard -library header files like \f[B]\f[R]. +\f[B]system.bux\f[R]: Reference definitions to resolve from +C/C++\ standard library header files like \f[B]\f[R]. .PP Other \f[B]aux\f[R]iliary files with references are created automatically by \f[B]ctwill\f[R] and the actual index files are created by TeX. .IP \[bu] 2 -\f[B]cwebman.tex\f[R]: The CWEB user manual. +\f[B]cwebman.tex\f[R]: The CWEB user manual, available in PDF from +CTAN (https://ctan.org/pkg/cweb). .SH SEE ALSO .IP \[bu] 2 The CWEB System of Structured Documentation: by Donald E.\ Knuth and @@ -188,11 +226,14 @@ Literate Programming: by D.\ E.\ Knuth. Weaving a Program: by Wayne Sewell. .PP cweb(1), tex(1), cc(1) +.SH AUTHORS .PP +Don Knuth wrote \f[B]ctwill\f[R] based on \f[B]cweave\f[R] by Silvio +Levy and Knuth. +.PD 0 +.P +.PD As of 2019, \f[B]ctwill\f[R] and its utilities \f[B]ctwill-refsort\f[R] and \f[B]ctwill-twinx\f[R] have been fully integrated with the extended CWEBbin -system that serves as the basis for CWEB in TeX Live; see the project +system that serves as the basis for CWEB in TeX\ Live; see the project page (https://github.com/ascherer/cwebbin). -.SH AUTHORS -Don Knuth wrote \f[B]ctwill\f[R] based on \f[B]cweave\f[R] by Silvio -Levy and Knuth. diff --git a/source/texk/web2c/man/cweb.man b/source/texk/web2c/man/cweb.man index 6f00a0ed9..c60a74d0c 100644 --- a/source/texk/web2c/man/cweb.man +++ b/source/texk/web2c/man/cweb.man @@ -1,162 +1,171 @@ -.TH CWEB 1 "10 January 2018" "Web2C @VERSION@" -.\"===================================================================== +.\" Automatically generated by Pandoc 2.5 +.\" +.TH "CWEB" "1" "January 27, 2019" "Web2c @VERSION@" "General Commands Manual" +.hy .SH NAME -ctangle, cweave \- translate CWEB to C and/or TeX -.\"===================================================================== +.PP +ctangle, cweave \[en] translate CWEB to TeX .SH SYNOPSIS -.B ctangle -.RB [ +bhps ] -.IR webfile [ \fB.w\fP ] -.RI [{ changefile [ \fB.ch\fP ]| \fB\-\fP } -.RI [ outfile [ \fB.c\fP ]]] -.br -.B cweave -.RB [ +bhps ] -.RB [ \-efiox ] -.RB [ \-lX | +lX ] -.IR webfile [ \fB.w\fP ] -.RI [{ changefile [ \fB.ch\fP ]| \fB\-\fP } -.RI [ outfile [ \fB.tex\fP ]]] -.\"===================================================================== +.PP +\f[B]ctangle\f[R] [\f[I]options\f[R]] \f[I]webfile\f[R][.w] +[{\f[I]changefile\f[R][.ch]|\-} [\f[I]outfile\f[R][.c]]] +.PD 0 +.P +.PD +\f[B]cweave\f[R] [\f[I]options\f[R]] \f[I]webfile\f[R][.w] +[{\f[I]changefile\f[R][.ch]|\-} [\f[I]outfile\f[R][.tex]]] .SH DESCRIPTION -The -.B ctangle -program converts a CWEB -source document into a C\ program that may be compiled in the usual way. -The output file includes #line specifications so that debugging can be -done in terms of the CWEB source file. -.PP -The -.B cweave -program converts the same CWEB file into a TeX file that may be -formatted and printed in the usual way. -It takes appropriate care of typographic details like page -layout and the use of indentation, italics, boldface, etc., and it supplies -extensive cross-index information that it gathers automatically. -.PP -CWEB allows you to prepare a single -document containing all the information that is needed both to produce -a compilable C\ program and to produce a well-formatted document -describing the program in as much detail as the writer may desire. -The user of CWEB ought to be familiar with TeX as well as\ C. +.PP +The \f[B]ctangle\f[R] program converts a CWEB source document into a +C/C++\ program that may be compiled in the usual way. +The output file includes \f[B]#line\f[R] specifications so that +debugging can be done in terms of the CWEB source file. +.PP +The \f[B]cweave\f[R] program converts the same CWEB file into a +TeX\ file that may be formatted and printed in the usual way. +It takes appropriate care of typographic details like page layout and +the use of indentation, \f[I]italics\f[R], \f[B]boldface\f[R], etc., and +it supplies extensive cross\-index information that it gathers +automatically. +.PP +CWEB allows you to prepare a single document containing all the +information that is needed both to produce a compilable C/C++\ program +and to produce a well\-formatted document describing the program in as +much detail as the writer may desire. +The user of CWEB ought to be familiar with TeX as well as C/C++. +.SH USAGE .PP The command line should have one, two, or three names on it. -The first is taken as the CWEB file (and -.B .w -is added if there is no extension). -If that file cannot be opened, the extension -.B .web -is tried instead. (But -.B .w -is recommended, since -.B .web -usually implies Pascal.) -If there is a second name, it is a change file (and -.B .ch -is added if there is no extension). -The change file overrides parts of the WEB file, -as described in the documentation. -If there is a third name, it overrides -the default name of the output file, which is ordinarily the same as -the name of the input file (but on the current directory) with the -extension -.B .c -or -.BR .tex . -.PP -Options in the command line may be either turned off with\ '\-' -(if they are on by default) or turned on with\ '+' (if they are off by -default). -In fact, the options are processed from left to right, -so a sequence like '-f\ +f' corresponds to '+f' (which is the default). -.PP -Both programs operate silently by default (as of 2019). -.PP -The -.B +b -option prints the banner line on your terminal -when ctangle or cweave begins. -The -.B +h -option prints the happy message if the processing -was successful. -The -.B +p -option prints progress reports (starred module numbers) as the processing -takes place. -.PP -The -.B +s -option prints statistics about memory usage at the end of a run. -.PP -There are six other options applicable to -.B cweave -only: -.B \-e -inhibits the enclosure of C\ material formatted by -.B cweave -in -\ePB{.\|.\|.} -brackets. -Such brackets are normally inserted so that special hooks -can be used by -.I cweb-latex -and similar programs. -By default, -\ePB{.\|.\|.}. -is defined as a no-op. -.B \-f -means do not force a newline after every statement in the formatted output. -.B \-i -suppresses the indentation of parameter declarations. -.B \-lX -(or +lX) uses macros for language X\ from Xcwebmac.tex. -.B \-o -suppresses the visual separation of declarations and statements. -.B \-x -means omit the index and table of contents. -.\"===================================================================== +The first is taken as the CWEB input file (and \f[B].w\f[R] is added if +there is no extension). +If there is a second name, it is a change file (and \f[B].ch\f[R] is +added if there is no extension). +The change file overrides parts of the CWEB file, as described in the +documentation. +If there is a third name, it overrides the default name of the output +file, which is ordinarily the same as the name of the input file (but on +the current directory) with the extension \f[B].tex\f[R]. +If you just want to change the output file name, but don\[cq]t have a +change file to apply, you can use `\f[B]\-\f[R]' as the second argument. +.SH DIFFERENCES TO ORIGINAL CWEB +.PP +CWEBbin tries hard to be a drop\-in replacement for CWEB, so in general +you should not notice any differences in invoking the programs nor in +the resulting output. +There are, however, a few differences worth noting: +.IP \[bu] 2 +Options \f[B]\-\-help\f[R], \f[B]\-\-quiet\f[R], \f[B]\-\-verbose\f[R], +\f[B]\-\-version\f[R], and flags \f[B]\-i\f[R], \f[B]\-o\f[R], and +\f[B]+lX\f[R] are new in CWEBbin and TeX\ Live. +.IP \[bu] 2 +Option \f[B]+lX\f[R] is accompanied by several wrapper files for +\f[B]cwebmac.tex\f[R] with translated captions for German +(\f[B]+ld\f[R]), French (\f[B]+lf\f[R]), and Italian (\f[B]+li\f[R]). +.IP \[bu] 2 +CWEB in TeX\ Live operates silently by default (as of 2019); use the +\f[B]\-\-verbose\f[R] option to get the original behavior. +.IP \[bu] 2 +File lookup with the environment variable CWEBINPUTS is extended to +permit several, colon\-separated, paths. +.IP \[bu] 2 +If properly configured, the main programs \f[B]ctangle\f[R] and +\f[B]cweave\f[R] are localized with the \[lq]GNU gettext utilities\[rq]. +.SH OPTIONS +.PP +Options on the command line may be either turned off with `\f[B]\-\f[R]' +(if they are on by default) or turned on with `\f[B]+\f[R]' (if they are +off by default). +In fact, the options are processed from left to right, so a sequence +like \f[B]\-\-verbose \-h\f[R] will only show the \f[B]banner line\f[R] +(\f[B]+b\f[R]) and the \f[B]progress report\f[R] (\f[B]+p\f[R]), but +leave out the \f[B]happy message\f[R] (\f[B]\-h\f[R]). +.PP +The first batch of options are common to both \f[B]ctangle\f[R] and +\f[B]cweave\f[R]: +.IP \[bu] 2 +\f[B]+b\f[R]: print banner line on terminal +.IP \[bu] 2 +\f[B]+h\f[R]: print success message on completion +.IP \[bu] 2 +\f[B]+p\f[R]: print progress report messages +.IP \[bu] 2 +\f[B]+q\f[R]/\f[B]\-q\f[R]: shortcut for \f[B]\-bhp\f[R]; also +\f[B]\-\-quiet\f[R] (default) +.IP \[bu] 2 +\f[B]+v\f[R]/\f[B]\-v\f[R]: shortcut for \f[B]+bhp\f[R]; also +\f[B]\-\-verbose\f[R] +.IP \[bu] 2 +\f[B]+s\f[R]: print usage statistics +.IP \[bu] 2 +\f[B]\-\-help\f[R]: display help message and exit +.IP \[bu] 2 +\f[B]\-\-version\f[R]: output version information and exit +.PP +There are six other options applicable to \f[B]cweave\f[R] only: +.IP \[bu] 2 +\f[B]\-e\f[R]: do not enclose C/C++\ material in +\f[B]\[rs]PB{\&...}\f[R] +.IP \[bu] 2 +\f[B]\-f\f[R]: do not force a newline after every C/C++\ statement in +output +.IP \[bu] 2 +\f[B]\-i\f[R]: suppress indentation of parameter declarations +.IP \[bu] 2 +\f[B]\-o\f[R]: suppress separation of declarations and statements +.IP \[bu] 2 +\f[B]\-x\f[R]: omit indices, section names, table of contents +.IP \[bu] 2 +\f[B]+lX\f[R]/\f[B]\-lX\f[R]: use macros for language \f[I]X\f[R] as of +\f[I]X\f[R]\f[B]cwebmac.tex\f[R] .SH ENVIRONMENT -The environment variable CWEBINPUTS is used to search for the input files, -or the system default if CWEBINPUTS is not set. See -.BR tex (1) -for the details of the searching. -.\"===================================================================== +.PP +The environment variable CWEBINPUTS is used to search for the input +files, or the system default if CWEBINPUTS is not set. +See tex(1) for the details of the searching. +.PP +If prepared for NLS support, \f[B]ctangle\f[R] and \f[B]cweave\f[R] use +the environment variable TEXMFLOCALEDIR to configure the parent +directory where the \[lq]GNU gettext utilities\[rq] search for +translation catalogs. +.PP +These variables are preconfigured in TeX\ Live\[cq]s +\f[B]texmf.cnf\f[R]. .SH FILES -The location of the files mentioned below varies from system to -system. Use the -.B kpsewhich -utility to find their locations. -.TP -.I cwebmac.tex -TeX macros used by cweave output. -.TP -.I cwebman.tex -The user manual. -.\"===================================================================== -.SH "SEE ALSO" -.TP -.I Literate Programming -by D. E. Knuth. -.TP -.I Weaving a Program -by Wayne Sewell. -.TP -.I The CWEB System of Structured Documentation -by Donald E. Knuth and Silvio Levy (hardcopy version of cwebman.tex -and the source code listings). -.PP -.BR tex (1), -.BR cc (1). -.\"===================================================================== +.PP +The location of the files mentioned below varies from system to system. +Use the \f[B]kpsewhich\f[R] utility to find their locations. +.IP \[bu] 2 +\f[B]cwebmac.tex\f[R]: The default TeX\ macros \f[B]\[rs]input\f[R] in +the first line of the \f[B]cweave\f[R] output file. +.IP \[bu] 2 +\f[B]cwebman.tex\f[R]: The CWEB user manual, available in PDF from +CTAN (https://ctan.org/pkg/cweb). +.SH SEE ALSO +.IP \[bu] 2 +The CWEB System of Structured Documentation: by Donald E.\ Knuth and +Silvio Levy (hardcopy version of \f[B]cwebman.tex\f[R] and the source +code listings of \f[B]common.w\f[R], \f[B]ctangle.w\f[R], and +\f[B]cweave.w\f[R]). +.IP \[bu] 2 +Literate Programming: by D.\ E.\ Knuth. +.IP \[bu] 2 +Weaving a Program: by Wayne Sewell. +.PP +cweb(1), tex(1), cc(1) .SH AUTHORS +.PP Don Knuth wrote WEB for TeX and Pascal. -.br -Silvio Levy designed and developed CWEB -by adapting the WEB conventions to\ C and by recoding everything in CWEB. +.PD 0 +.P +.PD +Silvio Levy designed and developed CWEB by adapting the WEB conventions +to C and by recoding everything in CWEB. Knuth began using CWEB and made further refinements. Many other helpers are acknowledged in the CWEB manual. -.br -As of 2019, the CWEB system in TeX Live is based on the CWEBbin extension -that collects ideas and improvements from numerous contributors; -see https://github.com/ascherer/cwebbin. +.PD 0 +.P +.PD +As of 2019, the CWEB system in TeX\ Live is based on the CWEBbin +extension that collects ideas and improvements from numerous +contributors; see the project +page (https://github.com/ascherer/cwebbin). diff --git a/source/texk/web2c/mplibdir/ChangeLog b/source/texk/web2c/mplibdir/ChangeLog index 73cebd692..f2fb620ef 100644 --- a/source/texk/web2c/mplibdir/ChangeLog +++ b/source/texk/web2c/mplibdir/ChangeLog @@ -1,3 +1,7 @@ +2019-01-28 Andreas Scherer + * mpost.w: TeXnical nitpicking. + + 2019-01-26 Luigi Scarso * Fixed bisection algorithm (overflow of number of bisections in decimal mode with low precision) * Added 2 levels to the bisection algorithm for cubic intersection. Need testing. diff --git a/source/texk/web2c/mplibdir/mpost.w b/source/texk/web2c/mplibdir/mpost.w index 3a99f6db4..5e01a4115 100644 --- a/source/texk/web2c/mplibdir/mpost.w +++ b/source/texk/web2c/mplibdir/mpost.w @@ -14,13 +14,25 @@ \def\[#1]{#1.} \pdfoutput=1 +@s line normal + +@s MP int +@s MPX int +@s MP_options int +@s boolean int +@s const_string int +@s mpx_options int +@s option int +@s string int +@s timeb int +@s timeval int + @*\MP\ executable. Now that all of \MP\ is a library, a separate program is needed to have our customary command-line interface. -@ First, here are the C includes. |avl.h| is needed because of an -|avl_allocator| that is defined in |mplib.h| +@ First, here are the \CEE/ includes. @d true 1 @d false 0 @@ -35,7 +47,7 @@ have our customary command-line interface. #elif defined (HAVE_SYS_TIMEB_H) #include #endif -#include /* For `struct tm'. Moved here for Visual Studio 2005. */ +#include /* For `|struct tm|'. Moved here for Visual Studio 2005. */ #if HAVE_SYS_STAT_H #include #endif @@ -43,7 +55,7 @@ have our customary command-line interface. #include #include @= /*@@null@@*/ @> static char *mpost_tex_program = NULL; -static int debug = 0; /* debugging for makempx */ +static int debug = 0; /* debugging for \.{makempx} */ static int nokpse = 0; static boolean recorder_enabled = false; static string recorder_name = NULL; @@ -52,11 +64,11 @@ static char *job_name = NULL; static char *job_area = NULL; static int dvitomp_only = 0; static int ini_version_test = false; -string output_directory; /* Defaults to NULL. */ +string output_directory; /* Defaults to |NULL|. */ static boolean restricted_mode = false; -@; -@; +@@; +@@; @ Allocating a bit of memory, with error detection: @@ -175,7 +187,7 @@ static void mpost_run_editor (MP mp, char *fname, int fline) { break; case '\0': *temp++ = '%'; - /* Back up to the null to force termination. */ + /* Back up to the |NULL| to force termination. */ edit_value--; break; default: @@ -243,7 +255,7 @@ options->run_editor = mpost_run_editor; static string normalize_quotes (const char *name, const char *mesg) { boolean quoted = false; boolean must_quote = (strchr(name, ' ') != NULL); - /* Leave room for quotes and NUL. */ + /* Leave room for quotes and |NULL|. */ string ret = (string)mpost_xmalloc(strlen(name)+3); string p; const_string q; @@ -326,8 +338,8 @@ void recorder_start(char *jobname) { return kpse_find_file (nam, fmt, req); } -@ Invoke {\tt makempx} (or {\tt troffmpx}) to make sure there is an - up-to-date {\tt .mpx} file for a given {\tt .mp} file. (Original +@ Invoke \.{makempx} (or \.{troffmpx}) to make sure there is an + up-to-date \.{.mpx} file for a given \.{.mp} file. (Original from John Hobby 3/14/90) @d default_args " --parse-first-line --interaction=nonstopmode" @@ -683,7 +695,7 @@ if (!nokpse) options->find_file = mpost_find_file; @ The |mpost| program supports setting of internal values -via a |-s| commandline switch. Since this switch is repeatable, +via a \.{-s} commandline switch. Since this switch is repeatable, a structure is needed to store the found values in, which is a simple linked list. @@ -695,7 +707,7 @@ typedef struct set_list_item { struct set_list_item *next; } set_list_item ; -@ Here is the global value that is the head of the list of |-s| options. +@ Here is the global value that is the head of the list of \.{-s} options. @c struct set_list_item *set_list = NULL; @@ -805,9 +817,8 @@ static void *mpost_open_file(MP mp, const char *fname, const char *fmode, int ft if (!nokpse) options->open_file = mpost_open_file; -@ -@= -#define ARGUMENT_IS(a) STREQ (mpost_options[optionid].name, a) +@ @d ARGUMENT_IS(a) STREQ (mpost_options[optionid].name, a) +@= /* SunOS cc can't initialize automatic structs, so make this static. */ static struct option mpost_options[] @@ -847,7 +858,7 @@ static struct option mpost_options[] @= { - int g; /* `getopt' return code. */ + int g; /* `|getopt|' return code. */ int optionid; for (;;) { g = getopt_long_only (argc, argv, "+", mpost_options, &optionid); @@ -952,9 +963,8 @@ static struct option mpost_options[] options->ini_version = (int)ini_version_test; } -@ -@= -#define option_is(a) STREQ (dvitomp_options[optionid].name, a) +@ @d option_is(a) STREQ (dvitomp_options[optionid].name, a) +@= /* SunOS cc can't initialize automatic structs, so make this static. */ static struct option dvitomp_options[] @@ -968,9 +978,9 @@ static struct option dvitomp_options[] @ -@= +@= { - int g; /* `getopt' return code. */ + int g; /* `|getopt|' return code. */ int optionid; for (;;) { g = getopt_long_only (argc, argv, "+", dvitomp_options, &optionid); @@ -1113,9 +1123,9 @@ input. int optind_aux = optind; size_t buflen = 0; for(;optind_aux max_command_line_size) { fprintf(stderr,"length of command line too long!\n"); exit(EXIT_FAILURE); @@ -1141,7 +1151,7 @@ input. } } -@ A simple function to get numerical |texmf.cnf| values +@ A simple function to get numerical \.{texmf.cnf} values @c static int setup_var (int def, const char *var_name, boolean nokpse) { if (!nokpse) { @@ -1348,15 +1358,16 @@ if (options->job_name != NULL) { } } else { job_name = tmp_job; - /* |job_area| stays NULL */ + /* |job_area| stays |NULL| */ } } } } options->job_name = job_name; -@ We |#define DLLPROC dllmpostmain| in order to build \MP\ as DLL for -W32\TeX. +@ We | +#define DLLPROC dllmpostmain +| in order to build \MP\ as DLL for W32\TeX. @= #define DLLPROC dllmpostmain @@ -1386,12 +1397,13 @@ DLLPROC (int argc, char **argv) #else main (int argc, char **argv) #endif -{ /* |start_here| */ +@; +{ @t\1@> /* |start_here| */ int k; /* index into buffer */ int history; /* the exit status */ MP mp; /* a metapost instance */ struct MP_options * options; /* instance options */ - char *user_progname = NULL; /* If the user overrides |argv[0]| with {\tt -progname}. */ + char *user_progname = NULL; /* If the user overrides |argv[0]| with \.{-progname}. */ options = mp_options(); options->ini_version = (int)false; options->print_found_names = (int)true; @@ -1408,7 +1420,7 @@ main (int argc, char **argv) dvitomp_only=1; } if (dvitomp_only) { - @; + @; } else { @; } @@ -1473,4 +1485,7 @@ main (int argc, char **argv) exit(history); else exit(0); +@t\8@> } + +@* Index.