Provided by: cwebx_3.52-2build1_amd64 bug


       ctanglex, cweavex - translate CWEB(x) to C (or C++) and/or TeX


       ctanglex [ -bhpl ] [ +cs+ ] cwebfile[.w] [(changefile[.ch]|+|-) [outputfile[.c]]]
       cweavex  [  -bhpx  ] [ +cs+dtefauwm ] [ +isearchpath ] cwebfile[.w] [(changefile[.ch]|+|-)


       The ctanglex program converts a CWEB(x) source document into  a  C  program  that  may  be
       compiled  in  the  usual way.  The output file includes #line specifications so that error
       reporting and debugging can be done in terms of the CWEB(x) source file.

       The cweavex program converts the same CWEB(x) 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-reference information that it gathers automatically.

       CWEBx  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 CWEBx
       ought to have some familiarity with TeX as well as knowledge of C.

       The command line should have one, two, or three names on it. The first  is  taken  as  the
       CWEB(x)  file (and `.w' is added if there is no extension). If that file cannot be opened,
       the extension `.web' is tried instead. If there is a second name, it is a change file (and
       `.ch'  is added if there is no extension), otherwise the name of the CWEB(x) file with its
       extension replaced by `.ch' is tried as change file name; if there no such file, no change
       file  is used. Instead of a change file one may specify `-' or `+'; `-' means do not use a
       change file, and `+' means use a change file only if a file of  the  default  name  exists
       (just as if only one name was given). The change file overrides parts of the CWEB(x) file,
       as described in the documentation. A third name, if present,  specifies  the  output  file
       name  explicitly.  The default output file name is that of the CWEB(x) file with extension
       `.c' (for ctanglex ) or `.tex' (for cweavex ); the default extension is also applied if  a
       third name is given without extension.

       Options  in  the  command  line may be either turned on with `+' and off with `-'; several
       characters may follow in the same argument, which indicate several options that are turned
       on  respectively  off  simultaneously.   In  fact,  the options are processed from left to
       right, so a sequence like `-b +b' is equivalent to `+b' (which is the default).

       The +b option shows a banner line on your terminal. The +h option shows a happy message if
       the  processing  was  successful.  The  +p  option  shows progress reports (starred module
       numbers) as the processing takes place. If you say `-bhp', you get no terminal output  but
       error messages.

       The  +c  option  emulates  Levy/Knuth  CWEB.  The +s option prints statistics about memory
       usage at the end of a run (assuming that the programs have been compiled with  the  -DSTAT
       switch,  as  they  are  by  default  on Debian systems).  By setting the option ++ one can
       select the C++ language instead of C.

       The option -l is applicable to ctanglex only; when selected, the C  output  is  made  more
       readable for humans by omitting #line directives and preserving layout and comments.

       There  are  several other options applicable to cweavex only. The option -x means omit the
       index and table of contents. By setting  the  option  +d  one  causes  cweavex  to  report
       problems  encountered in parsing the program fragments. With +t the index and module names
       will be written to separate files. With +e the table of contents is forced to start  on  a
       new  sheet  when using a two-sided printer.  The options +f , +a , +u , +w , and +m change
       the style in which programs are formatted: +f means force a  newline  after  every  simple
       statement  in  the formatted output, and +a means also force a newline before every simple
       statement, even if it follows a label or a condition; the option +u will change the  style
       so  that a line break goes after `{' instead of before, thus preventing them from aligning
       with their matching `}' (this is the style of Levy/Knuth CWEB), while the option +w puts a
       line  break both before and after `{', producing a more symmetric layout at the expense of
       some extra paper. Finally, the option +m avoids forcing  line  breaks  between  successive
       declarations  in  a  local block.  With the option +isearchpath one can specify a place to
       look for header files, when they are not  found  in  the  current  directory.  The  string
       following  the  `+i'  will  be  stored and prepended to a header file name if it cannot be
       found otherwise (so the string should probably end with a pathname  separator  '/').  More
       than  one  such  search  path  can  be specified; they will be tried in order from left to


       /usr/share/texmf/macros/litprog/cwebxmac.tex TeX macros used by cweavex output.
       /usr/share/texmf/macros/litprog/cwebcmac.tex TeX macros used in compatibility mode.
       /usr/share/texmf/macros/litprog/cwebhmac.tex TeX macros which can be input after  cwebxmac
       to produce hyperlinks in the output.
       /usr/share/doc/cwebx/manual.tex The user manual source.
       /usr/share/doc/cwebx/manual.tex The user manual in DVI format.


       Literate Programming by D. E. Knuth. (CSLI, Stanford, 1992)
       tex(1), cc(1), cweb(1) and web(1).


       Don  Knuth  wrote  WEB  for  TeX  and  Pascal.  Silvio Levy designed and developed CWEB by
       adapting the WEB conventions to C and  by  recoding  everything  in  CWEB.   Frank  Jensen
       adapted the programs to ANSI/ISO C, and Marc van Leeuwen made numerous changes for version
       x3.0, and wrote a new manual.


       The syntactic support for C++ does not cover that language completely,  so  formatting  of
       complex C++ code may be bad.

                                             7/12/90                                     CWEBX(1)