Man Linux: Main Page and Category List

NAME

       noweb - a simple literate-programming tool

SYNOPSIS

       noweb [-t] [-o] [-Lformat] [-markup parser] [file] ...

DESCRIPTION

       Noweb  is  a  literate-programming  tool  like FunnelWEB or nuweb, only
       simpler.  A noweb file contains program source  code  interleaved  with
       documentation.   When  noweb  is  invoked, it writes the program source
       code to the output files mentioned in the noweb file, and it  writes  a
       TeX file for typeset documentation.

       The  noweb(1) command is for people who don’t like reading man pages or
       who are switching from nuweb.  To  get  the  most  out  of  noweb,  use
       notangle(1) and noweave(1) instead.

FORMAT OF NOWEB FILES

       A noweb file is a sequence of chunks, which may appear in any order.  A
       chunk may contain code or documentation.   Documentation  chunks  begin
       with  a  line  that  starts  with an at sign (@) followed by a space or
       newline.  They have no names.  Code chunks begin with
       <<chunk name>>=
       on a line by itself.  The double left angle bracket (<<) must be in the
       first column.  Chunks are terminated by the beginning of another chunk,
       or by end of file.  If the first line in the file  does  not  mark  the
       beginning  of  a  chunk,  it  is  assumed  to  be  the  first line of a
       documentation chunk.

       Documentation chunks contain text that is copied verbatim  to  the  TeX
       file  (except  for  quoted  code).   noweb  works with LaTeX; the first
       documentation chunk must contain a  LaTeX  \documentclass  command,  it
       must  contain  \usepackage{noweb}  in the preamble, and finally it must
       also contain a LaTeX \begin{document} command.

       Code chunks contain program source code and references  to  other  code
       chunks.  Several code chunks may have the same name; noweb concatenates
       their definitions to produce a single chunk, just  as  other  literate-
       programming  tools do.  noweb looks for chunks that are defined but not
       used in the source file.  If the name  of  such  a  chunk  contains  no
       spaces,  the  chunk  is an ‘‘output file;’’ noweb expands it and writes
       the result onto the file of the same name.  A code-chunk definition  is
       like  a macro definition; it contains references to other chunks, which
       are themselves expanded, and so on.  noweb’s  output  is  readable;  it
       preserves the indentation of expanded chunks with respect to the chunks
       in which they appear.

       If a star (*) is appended to the name of an output file, noweb includes
       line-number  information  as specified by the -Lformat option (or for C
       if no -Lformat option is given).  The name itself may not contain shell
       metacharacters.

       Code may be quoted within documentation chunks by placing double square
       brackets ([[...]]) around it.  These double square brackets are used to
       give the code special typographic treatment in the TeX file.  If quoted
       code ends with  three  or  more  square  brackets,  noweb  chooses  the
       rightmost pair, so that, for example, [[a[i]]] is parsed correctly.

       In  code,  noweb treats unpaired double left or right angle brackets as
       literal << and >>.  To force any such brackets, even paired brackets or
       brackets in documentation, to be treated as literal, use a preceding at
       sign (e.g. @<<).

OPTIONS

       -t     Suppress generation of a TeX file.

       -o     Suppress generation of output files.

       -Lformat
              Use format to format line-number information for starred  output
              files.   (If  the  option is omitted, a format suitable for C is
              used.)  format is as defined by notangle(1);

       -markup parser
              Use parser to parse the input file.  Enables use of noweb  tools
              on  files  in  other  formats;  for example, the numarkup parser
              understands  nuweb(1)  format.   See  nowebfilters(7)  for  more
              information.  For experts only.

BUGS

       Ignoring  unused  chunks  whose  names  contain spaces sometimes causes
       problems, especially in the case when a chunk has multiple  definitions
       and  one  is  misspelled;  the  misspelled  definition will be silently
       ignored.  noroots(1) can be used as a sanity checker to catch this sort
       of mistake.

       noweb  is intended for users who don’t want the power or the complexity
       of command-line options.  More sophisticated users should  avoid  noweb
       and  use  noweave  and notangle instead.  If the design were better, we
       could all use the same commands.

       noweb requires the new version of awk.  DEC nawk has a bug in that that
       causes  problems  with  braces  in TeX output.  GNU gawk is reported to
       work.

       The  default  LaTeX  pagestyles  don’t  set  the  width  of  the  boxes
       containing  headers and footers.  Since noweb code paragraphs are extra
       wide, this LaTeX  bug  sometimes  results  in  extra-wide  headers  and
       footers.   The  remedy  is  to  redefine  the  relevant  ps@* commands;
       ps@noweb in noweb.sty can be used as an example.

SEE ALSO

       notangle(1),  noweave(1),  noroots(1),  nountangle(1),   nowebstyle(7),
       nowebfilters(7), nuweb2noweb(1)
       Norman   Ramsey,   Literate   programming   simplified,  IEEE  Software
       11(5):97-105, September 1994.

VERSION

       This man page is from noweb version 2.11b.

AUTHOR

       Norman    Ramsey,     Harvard     University.      Internet     address
       nr@eecs.harvard.edu.
       Noweb home page at http://www.eecs.harvard.edu/~nr/noweb.

                                local 3/28/2001