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.
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.