This is Info file fweb.info, produced by Makeinfo-1.55 from the input
file fweb.texinfo.

   This file documents FWEB...

   Copyright 1993 John A. Krommes

   Permission is granted to make and distribute verbatim      copies of
this manual provided the copyright notice and      this permission
notice are preserved on all copies.

   Permission is granted to process this file through TeX      and
print the results, provided the printed document      carries a copying
permission notice identical to this      one except for the removal of
this paragraph (this      paragraph not being relevant to the printed
manual).

   Permission is granted to copy and distribute modified      versions
of this manual under the conditions for      verbatim copying, provided
also that the section      entitled "Copying" is included exactly as in
the original, and provided      that the entire resulting derived work
is distributed      under the terms of a permission notice identical to
this      one.

   Permission is granted to copy and distribute      translations of
this manual into another language,      under the above conditions for
modified versions,      except that this permission notice may be
stated in a      translation approved by the author.


File: fweb.info,  Node: Environment variables,  Next: Initialization,  Prev: Customization,  Up: Customization

Environment variables
=====================

   `FWEB_INCLUDES' -- Colon-delimited list of directories to search for
include files.  (One can append to this list by means of the `-I'
option; see *Note -I_::.)

   `FWEB_INI' -- Name of the initialization file. If not defined, either
`.fweb' or `fweb.ini' is chosen, depending on the machine.  The
initialization file always resides in `$HOME'.

   `FWEB_STYLE_DIR' -- Directory in which style file resides.  If not
defined, the current directory is used.


File: fweb.info,  Node: Initialization,  Next: Memory allocation,  Prev: Environment variables,  Up: Customization

Initialization
==============

The initialization file
-----------------------

   On startup, FWEB attempts to read an initialization file.  This
always resides in the user's HOME directory.  It is usually called
`.fweb' (`fweb.ini' on personal computers).  The default file name can
be overridden by the environment variable `FWEB_INI'.

   One may put into `.fweb' any option that might be used as a
command-line option.  (Presently, there must be just one entry per
line.)  If the option begins with a `+', it is processed before the
actual command-line options; otherwise, it is processed after.
Generally, `.fweb' options should begin with `+' so that one may
override them from the command line.


File: fweb.info,  Node: Memory allocation,  Next: Style,  Prev: Initialization,  Up: Customization

Memory allocation
-----------------

   The command-line option `-y' (*note -y::.) is used to change the
default allocation for a dynamic array.  The arrays have a one- or
two-character abbreviation denoted by aa.  Some error messages will use
this abbreviation when suggesting that you increase a default
allocation.  To query the present allocations of variable aa, just say
`-y'aa.  To query everything, say `-y'.

   (The detailed explanations for these arrays aren't here yet.  The
on-line info has a terse list.)

* Menu:

* -yb::         Maximum bytes for identifiers, index entries, and module names.
* -ybs::        Size of the change buffer.
* -ycb::        Size of line buffer for C output.
* -ycf::        A Ratfor buffer.
* -ycg::        Another Ratfor buffer.
* -yd::         Increment for expanding the dots table.
* -ydt::        Maximum number of deferred macro tokens.
* -ydx::        Maximum Number of deferred macro texts.
* -ykt::        Stack size for FTANGLE.
* -ykw::        Stack size for FWEAVE.
* -yll::        Line length for FWEAVE's output.
* -yln::        Maximum length of module names or strings.
* -ylb::        Maximum number of nested loops in Ratfor.
* -ylx::        Maximum length of expressions that can be expanded with
                        the post-increment operators of Fortran or Ratfor.
* -ym::         Maximum number of sections.
* -yma::        Maximum number of arguments to WEB macros.
* -ymb::        Size of the buffer for expanding WEB macros.
* -yn::         Maximum number of identifiers, strings, and module names.
* -ynf::        Maximum number of open input files.
* -yop::        Maximum number of entries in the table for operator
                        overloading.
* -yr::         Maximum number of cross-references.
* -ys::         Maximum number of scraps.
* -ysb::        Size of style-file buffer.
* -ytt::        Maximum number of tokens that FTANGLE can process.
* -ytw::        Maximum number of tokens in the current section being
                        processed by FWEAVE.
* -yx::         Maximum number of texts.
* -yxb::        Size of line buffer for TeX output.


File: fweb.info,  Node: -yb,  Next: -ybs,  Prev: Memory allocation,  Up: Memory allocation


File: fweb.info,  Node: -ybs,  Next: -ycb,  Prev: -yb,  Up: Memory allocation


File: fweb.info,  Node: -ycb,  Next: -ycf,  Prev: -ybs,  Up: Memory allocation


File: fweb.info,  Node: -ycf,  Next: -ycg,  Prev: -ycb,  Up: Memory allocation


File: fweb.info,  Node: -ycg,  Next: -yd,  Prev: -ycf,  Up: Memory allocation


File: fweb.info,  Node: -yd,  Next: -ydt,  Prev: -ycg,  Up: Memory allocation


File: fweb.info,  Node: -ydt,  Next: -ydx,  Prev: -yd,  Up: Memory allocation


File: fweb.info,  Node: -ydx,  Next: -ykt,  Prev: -ydt,  Up: Memory allocation


File: fweb.info,  Node: -ykt,  Next: -ykw,  Prev: -ydx,  Up: Memory allocation


File: fweb.info,  Node: -ykw,  Next: -yll,  Prev: -ykt,  Up: Memory allocation


File: fweb.info,  Node: -yll,  Next: -yln,  Prev: -ykw,  Up: Memory allocation


File: fweb.info,  Node: -yln,  Next: -ylb,  Prev: -yll,  Up: Memory allocation


File: fweb.info,  Node: -ylb,  Next: -ylx,  Prev: -yln,  Up: Memory allocation


File: fweb.info,  Node: -ylx,  Next: -ym,  Prev: -ylb,  Up: Memory allocation


File: fweb.info,  Node: -ym,  Next: -yma,  Prev: -ylx,  Up: Memory allocation


File: fweb.info,  Node: -yma,  Next: -ymb,  Prev: -ym,  Up: Memory allocation


File: fweb.info,  Node: -ymb,  Next: -yn,  Prev: -yma,  Up: Memory allocation


File: fweb.info,  Node: -yn,  Next: -ynf,  Prev: -ymb,  Up: Memory allocation


File: fweb.info,  Node: -ynf,  Next: -yop,  Prev: -yn,  Up: Memory allocation


File: fweb.info,  Node: -yop,  Next: -yr,  Prev: -ynf,  Up: Memory allocation


File: fweb.info,  Node: -yr,  Next: -ys,  Prev: -yop,  Up: Memory allocation


File: fweb.info,  Node: -ys,  Next: -ysb,  Prev: -yr,  Up: Memory allocation


File: fweb.info,  Node: -ysb,  Next: -ytt,  Prev: -ys,  Up: Memory allocation


File: fweb.info,  Node: -ytt,  Next: -ytw,  Prev: -ysb,  Up: Memory allocation


File: fweb.info,  Node: -ytw,  Next: -yx,  Prev: -ytt,  Up: Memory allocation


File: fweb.info,  Node: -yx,  Next: -yxb,  Prev: -ytw,  Up: Memory allocation


File: fweb.info,  Node: -yxb,  Prev: -yx,  Up: Memory allocation


File: fweb.info,  Node: Style,  Prev: Memory allocation,  Up: Customization

The Style file
==============

   A style file (default name `fweb.sty') may reside in the user's
current directory (or directory specified by the environment variable
`FWEB_STYLE_DIR').  The default name can be changed by the command-line
option `-z' (*note -z::.).

   The style file is processed after all command-line options have been
processed.  Note that the command-line option `-p' (*note -p::.)
buffers up style-file entries.  Effectively, these are treated as
residing in a temporary file that is read just before the local style
file.  Thus, `-p' options placed in `.fweb' behave as `global'
style-file entries and will be overridden by a matching entry in the
local style file.

   Style-file entries have the form

             keyword [=] value

For example,

             LaTeX.options = "eqalign"

The syntax is completely free-form.

   The descriptions of the parameters aren't completed yet.  Please see
the reference guide.

* Menu:

* Index params::                Customizing the index.
* Module params::               Customizing the list of sections.
* Contents params::             Customizing the table of contents.
* Subscript params::            Customizing subscripting for cross-references.
* Fwebmac params::              Customizing behavior of FWEB's macros.
* Completion params::           Automatic selection of file extensions, etc.
* Control-code mappings::       Remapping FWEB's control codes (danger)!
* Miscellaneous params::        Other customizations.


File: fweb.info,  Node: Index params,  Next: Module params,  Prev: Style,  Up: Style

Customizing FWEAVE's index
--------------------------

* Menu:

* delim_0: S_delim.             Insert after identifier in index entry.
* delim_n: S_delim.             Insert between section numbers in index entry.

* encap.infix: S_encap.         Start the section number.
* encap.prefix: S_encap.        TeX macro to begin a section number.
* encap.suffix: S_encap.        Ends the section number.

* group_skip::

* index.collate: S_index.       Collating sequence for index.
* index.postamble: S_index.     TeX material to end the index.
* index.preamble: S_index.      TeX material to begin the index.
* index.tex: S_index.           Name of file holding index.

* item_0::                      TeX command to begin an index entry.

* language.prefix: S_language.  Begin a language entry in the index.
* language.suffix: S_language.  End a language entry in the index.

* lethead.prefix: S_lethead.    Begin a letter group.
* lethead.suffix: S_lethead.    End a letter group.
* lethead.flag: S_lethead.      Control beginning of letter group.

* underline.prefix: S_underline. Begin an underlined index entry.
* underline.suffix: S_underline. End an underlined index entry.


File: fweb.info,  Node: S_index,  Next: S_delim,  Prev: Index params,  Up: Index params

`index'
.......

   `index.tex' is the name of the file into which the index is written.
The character '#' is translated into the root name of the web file.

   `index.preamble' are TeX commands that begin the index.

   `index.postamble' are TeX commands that end the index.

   `index.collate' specifies the collating sequence for the index.


File: fweb.info,  Node: S_delim,  Next: S_encap,  Prev: S_index,  Up: Index params

`delim'
.......

   `delim_0' is the string to insert after the identifier in an index
entry.

   `delim_n' is the string to insert between two section numbers in an
index entry.


File: fweb.info,  Node: S_encap,  Next: group_skip,  Prev: S_delim,  Up: Index params


File: fweb.info,  Node: group_skip,  Next: item_0,  Prev: S_encap,  Up: Index params

`group_skip'
............

   `group_skip' is a string of TeX commands to insert between letter
groups.


File: fweb.info,  Node: item_0,  Next: S_language,  Prev: group_skip,  Up: Index params

`item_0'
........

   `item_0' is the TeX command to begin an index entry.


File: fweb.info,  Node: S_language,  Next: S_lethead,  Prev: item_0,  Up: Index params

`language'
..........

   `language.prefix' begins a language entry.; `language.suffix' ends
one.


File: fweb.info,  Node: S_lethead,  Next: S_underline,  Prev: S_language,  Up: Index params

`lethead'
.........

   `lethead.prefix' begins a letter group; `lethead.suffix' ends one.
The flag `lethead.flag' controls the format of the letter group: if it
is zero, nothing is inserted; if it is positive, an upper-case letter
is inserted; if it is negative, a lower-case letter is inserted.


File: fweb.info,  Node: S_underline,  Prev: S_lethead,  Up: Index params

`underline'
...........

   `underline.prefix' is the TeX command to begin an underlined index
entry.

   `underline.suffix' is the TeX command to end an underlined index
entry.


File: fweb.info,  Node: Module params,  Next: Contents params,  Prev: Index params,  Up: Style

Customizing the module list
---------------------------

* Menu:

* modules.info: S_modules.
* modules.postamble: S_modules. TeX commands to end module list.
* modules.preamble: S_modules.  TeX commands to begin module list.
* modules.tex: S_modules.       Name of file containing list of modules.


File: fweb.info,  Node: S_modules,  Prev: Module params,  Up: Module params

   `modules.tex' is the name of the file into which the module names
are written.

   `modules.preamble' is a string of TeX commands to begin the list of
modules.

   `modules.postamble' is a string of TeX commands to end the list of
modules.

   `modules.info' is the name of the TeX macro that formats the command
line and related information.


File: fweb.info,  Node: Contents params,  Next: Subscript params,  Prev: Module params,  Up: Style

Customizing the table of contents
---------------------------------

* Menu:

* contents.postamble: S_contents. TeX commands to end table of contents.
* contents.preamble: S_contents.  TeX commands to begin table of contents.
* contents.tex: S_contents.       Name of contents file.


File: fweb.info,  Node: S_contents,  Prev: Contents params,  Up: Contents params

   `contents.tex' is the name of the file into which the table of
contents is written.

   `contents.preamble' is the TeX string that begins printing the table
of contents.

   `contents.postamble' is the TeX string that ends the table of
contents.


File: fweb.info,  Node: Subscript params,  Next: Fwebmac params,  Prev: Contents params,  Up: Style

Customizing cross-reference subscripts
--------------------------------------

   When FWEAVE pretty-prints code, it can attach cross-reference
subscripts to various kinds of identifiers.  The following flags select
which identifiers are so subscripted.

* Menu:

* mark_defined.generic_name: S_mark_defined.
* mark_defined.fcn_name: S_mark_defined.
* mark_defined.WEB_macro: S_mark_defined.
* mark_defined.outer_macro: S_mark_defined.
* mark_defined.exp_type: S_mark_defined.
* mark_defined.typedef_name: S_mark_defined.


File: fweb.info,  Node: S_mark_defined,  Prev: Subscript params,  Up: Subscript params


File: fweb.info,  Node: Fwebmac params,  Next: Completion params,  Prev: Subscript params,  Up: Style

Customizing the behavior of `fwebmac.sty' macros
------------------------------------------------

   To some extent, the behavior of FWEB's macro package `fwebmac.sty'
can be changed by means of the following parameters, instead of
actually editing `fwebmac.web' itself.

* Menu:

* format.reserved: S_format.
* format.short_identifier: S_format.
* format.outer_macro: S_format.
* format.WEB_macro: S_format.
* format.intrinsic: S_format.
* format.keyword: S_format.
* format.typewriter: S_format.
* format.wildcard: S_format.

* indent.TeX: S_indent.         Paragraph indentation for TeX part.
* indent.code: S_indent.        Paragraph indentation for code part.

* LaTeX.options: S_LaTeX.       Set options for document style.
* LaTeX.style: S_LaTeX.         Specify document style.


File: fweb.info,  Node: S_format,  Next: S_indent,  Prev: Fwebmac params,  Up: Fwebmac params

`format'
........

   The `format' fields specify the macro to use to pretty-print various
kinds of identifiers, as follows: (not finished).


File: fweb.info,  Node: S_indent,  Next: S_LaTeX,  Prev: S_format,  Up: Fwebmac params

`indent'
........

   `indent.TeX' specifies paragraph indentation for the TeX part.

   `indent.code' specifies similar indentation for the code part.


File: fweb.info,  Node: S_LaTeX,  Prev: S_indent,  Up: Fwebmac params

   When running under LaTeX, the documents is (effectively) begun by the
command `\documentstyle[options]{style}'.  The options field can be
specified by `LaTeX.options'; the style field by `LaTeX.style'.


File: fweb.info,  Node: Control-code mappings,  Next: Miscellaneous params,  Prev: Completion params,  Up: Style

   (To be finished.)


File: fweb.info,  Node: Miscellaneous params,  Prev: Control-code mappings,  Up: Style

Miscellaneous style-file parameters
-----------------------------------

* Menu:

For FTANGLE:

* ASCII_fcn::                   Routine for converting strings to ASCII.
* cchar::                       Continuation character for Fortran.
* cdir_start::                  `?' translates to this.
* line_length: S_line_length.

* meta.top: S_meta_t.           Material to precede tangled meta-comment.
* meta.prefix: S_meta_t.        Begins each line of meta-comment.
* meta.bottom: S_meta_t.        Material that follows the meta-comment.

* outer.def: S_outer.           FTANGLE converts `@d' to this.
* outer.undef: S_outer.         FTANGLE converts `@u' to this.

* protect::                     Protection character to end a continued line.
* suffix::                      Suffixes for output files.

For FWEAVE:

* macros::                      Default name of the macro package to be
                                        read in by FWEAVE.
* limbo::                       Default material to begin the limbo part

* meta.code.begin: S_meta_w.
* meta.code.end: S_meta_w.

* meta.TeX.begin: S_meta_w.     TeX material to begin FWEAVE's
                                                output of a meta-comment.
* meta.TeX.end: S_meta_w.       As above, but end the meta-comment.

* preamble.named: S_preamble.   TeX material to begin named section.
* preamble.unnamed: S_preamble. TeX material to begin unnamed section.

For both processors:

* dot_constant.begin: S_dot_constant.   Beginning character for dot constant.
* dot_constant.end: S_dot_constant.     Ending character for dot constant.

* null_file::                   Name of the null file.


File: fweb.info,  Node: ASCII_fcn,  Next: cchar,  Prev: Miscellaneous params,  Up: Miscellaneous params

`ASCII_Fcn'
...........

   *Note AT"::.


File: fweb.info,  Node: cchar,  Next: cdir_start,  Prev: ASCII_fcn,  Up: Miscellaneous params

`cchar'
.......

   Continuation character for Fortran code output.


File: fweb.info,  Node: cdir_start,  Next: S_line_length,  Prev: cchar,  Up: Miscellaneous params

`cdir_start'
............

   This parameter has the form `cdir_start.l', where l is one of `C',
`Cpp', `N', `N90', `R', `R90', `X', or `V'.  The contents of this
parameter is written immediately after the `@?' that begins a compiler
directive.


File: fweb.info,  Node: S_line_length,  Next: S_meta_t,  Prev: cdir_start,  Up: Miscellaneous params


File: fweb.info,  Node: S_meta_t,  Next: S_outer,  Prev: S_line_length,  Up: Miscellaneous params

`meta' (FTANGLE)
................

   `meta.top.l' specifies text that precedes material enclosed by
`@(...@)'.

   `meta.prefix.l' begins each line of the meta-comment.

   `meta.bottom.l' specifies text that follows the meta-comment.


File: fweb.info,  Node: S_outer,  Next: protect,  Prev: S_meta_t,  Up: Miscellaneous params

`outer'
.......

   FTANGLE converts `@d' to `outer.def', and `@u' to `outer.undef'.


File: fweb.info,  Node: protect,  Next: suffix,  Prev: S_outer,  Up: Miscellaneous params

`protect'
.........

   The strings `protect.l' specify the protection character(s) to end a
continued line.


File: fweb.info,  Node: suffix,  Next: macros,  Prev: protect,  Up: Miscellaneous params

`suffix'
........

   The extension for the files output by FTANGLE is specified by
`suffix.l'.


File: fweb.info,  Node: macros,  Next: limbo,  Prev: suffix,  Up: Miscellaneous params

`macros'
........

   The default name of the macro package to be read in.  (This can be
overridden by the command-line option `-w'; see *Note -w::.)


File: fweb.info,  Node: limbo,  Next: S_meta_w,  Prev: macros,  Up: Miscellaneous params

`limbo'
.......

   TeX material to be printed at the beginning of the limbo part, just
before the text from `@l' commands.  *Note ATl::.


File: fweb.info,  Node: S_meta_w,  Next: S_preamble,  Prev: limbo,  Up: Miscellaneous params

`meta' (FWEAVE)
...............


File: fweb.info,  Node: S_preamble,  Next: S_dot_constant,  Prev: S_meta_w,  Up: Miscellaneous params

`preamble'
..........

   Additional TeX material can be inserted at the beginning of a named
section with `preamble.named' and at the beginning of an unnamed one
with `preamble.unnamed'.


File: fweb.info,  Node: S_dot_constant,  Next: null_file,  Prev: S_preamble,  Up: Miscellaneous params

`dot_constant'
..............

   In Fortran, `dot' constants such as `.LT.' are begun and ended by
periods.  In special circumstances, the beginning and ending characters
may be modified by `dot_constant.begin.l' and `dot_constant.end.l'.


File: fweb.info,  Node: null_file,  Prev: S_dot_constant,  Up: Miscellaneous params

`null_file'
...........

   The name of the null file.  For more discussion, see *Note Change
files::.


File: fweb.info,  Node: Completion params,  Next: Control-code mappings,  Prev: Fwebmac params,  Up: Style

Automatic file name completion:
-------------------------------

* Menu:

* ext.web: S_ext.        Extensions for the web file.
* ext.change: S_ext.     Extensions for the change file.
* ext.hweb: S_ext.       Extensions for include files.
* ext.hchange: S_ext.    Extensions for change files associated with
                                include files.


File: fweb.info,  Node: S_ext,  Prev: Completion params,  Up: Completion params

   For more information, see *Note -e::.


File: fweb.info,  Node: Hints,  Next: New features,  Prev: Customization,  Up: Top

USAGE TIPS and SUGGESTIONS
**************************

   In this section we collect various tips and suggestions to help one
make full use of FWEB.  *(There's more to come here!)*

Converting an existing code to FWEB
===================================

   In summary, to convert an existing code to FWEB, you should do the
following. (The following simple procedure assumes that you put all the
subroutines into the unnamed module. However, other more elaborate
schemes are possible.)

  1. Place invisible commentary about the author, version, etc. at the
     beginning of the source file by bracketing it with `@z...@x'.  The
     `@z' must be the first two characters of the file.

  2. Next, set the language by including a command such as `@n'.

  3. Place an `@a' command before each program unit (e.g., main
     program, subroutine, or function).

  4. Before each `@a', place an `@*' or `@ ' command, followed by TeX
     documentation about that particular section of code.

  5. If you have program units longer than about twelve lines, either
     make them function calls, if you can afford the overhead and can
     impart sufficient information via the function name, or break them
     up into shorter fragments by using named modules. Insert the
     command `@<Name of module@>' in place of the fragment you're
     replacing, then put that fragment somewhere else, prefaced by `@ '
     and `@<Name of module@>='.

  6. Make sure your comments are valid TeX. (You can't have things like
     raw underscores or dollar signs in comments, since those cause TeX
     to take special actions.)

  7. Beautify and clarify your documentation by using code mode
     (enclosing stuff between vertical bars) liberally within your TeX.

  8. After you've seen the woven output, you may need to go back and
     format a few identifiers or section names so that FWEAVE
     understands them properly, or you may need to insert some
     pseudo-semicolons (`@;'), pseudo-expressions (`@i'), or
     pseudo-colons (`@:').

  9. Consider using the built-in macro preprocessor to make your code
     more readable--for example, replace raw numerical constants by
     symbolic names.

 10. If you are a FORTRAN user,  for ultimate readability consider
     converting to RATFOR. The initial annoyance is getting rid of
     column~6 continuations. With the aid of a good editor, this can be
     done simply. For example, in `emacs' one can replace the regular
     expression [carriage return, five spaces, something not equal to
     space, tab, or 0] with [backslash, carriage return, six spaces]:

          M-x replace-regexp RET
          C-q C-j \.{\ \ \ \ \ }[\^\.\ tab 0]RET
          \\\\ C-q C-j \.{\ \ \ \ \ \ }RET

     Get rid of the keywords such as then or end if in favor of braces.
     Change singly-quoted character strings to doubly-quoted ones.


Programming tips and other suggestions
======================================

   *This section will be enlarged in the future!*  Meanwhile, please
feel free to contact `krommes@princeton.edu' for help and advice, and to
suggest items to include here.

  1. Periodically check `ftp.pppl.gov:/pub/fweb/READ_ME' for bug
     reports and other news.  Make bug reports!  *Note Support::.

  2. Most options in `.fweb' should begin with `+' so they can be
     overridden by command-line options for the job itself.  *Note
     Initialization::

  3. Put standard command-line options into `.fweb'.  Also put there
     standard style parameters--e.g.,

          +pindex.tex "#.ndx"
          +pmodules.tex "#.mds"
          +pcontents.tex "#.cts"

  4. Learn how to use the style file. *Note Style::.

  5. Use the info options `-@', `-D', `-y', and `-Z' to find out about
     various internal FWEB tables (control codes, reserved words,
     memory allocations, and style-file parameters).  *Note Info
     options::.

  6. Begin all FWEB sources with invisible commentary bracketed by
     `@z...@x'.  *Note ATz::.

  7. Always include an explicit language-setting command in the limbo
     section.  *Note Languages::.

  8. Keep sections quite short.  Knuth suggests a dozen lines.  That's
     quite hard to achieve sometimes, but almost never should a section
     be more than a page long.

  9. It's easy to define macros from the command line to expedite
     conditional preprocessing.  *Note -m::.

 10. Use the preprocessor construction `@#if 0...@#endif' to comment
     out unwanted code.  *Note Preprocessing::.

 11. For logical operations with the preprocessor, use `||', not `|'.

 12. It's conventional to identify the ends of long preprocessor
     constructions as follows:

          @#if A
          .
          .
          @#endif // |A|

 13. To debug an errant WEB macro, use the built-in function `$DUMPDEF'.
     *Note $DUMPDEF::.

 14. Use `@?' for compiler directives.  *Note AT?::.  Use the
     style-file parameters `cdir_start' to specify information that
     will be written out at the beginning of the line.

 15. Stick to the standard FWEB commenting style `/*...*/' or `//...'.
     Don't use alternatives such as FORTRAN's column 1 convention;
     these may not work or may not be supported someday.  *Note
     Comments::.

 16. The meta-comment feature `@(...@)' provides a poor-man's alignment
     feature.  But that's not in the spirit of TeX; learn to use
     `\halign' or the LaTeX alternatives.

 17. In FORTRAN, use `#:0' to declare readable alphabetic statement
     labels.  *Note Macros::

 18. When mixing languages, define the language of a module at the
     highest possible level--e.g., in the unamed module, not after
     `@<...@>='.



File: fweb.info,  Node: New features,  Next: Support,  Prev: Hints,  Up: Top

NEW FEATURES, version 1.40
**************************

  1. *The meaning of `@+' has changed.*  (SORRY!)  Formerly, this
     inhibited a line break; that function is now performed by `@~'.
     The new meaning of `@+' is to force an index entry (the opposite
     of `@-', which inhibits an index entry).

     If you have large codes using the old `@+' that you do not wish to
     convert, you can recover the old mappings by placing the following
     commands into `fweb.sty':

          yes_index = "~"
          no_line_break = "+"

     However, please try to make the conversion; the new codes are
     intended to be more symmetrical and easier to remember.

  2. *Built-in functions now begin with `$', not `_'.*  The underscore
     prefix was a bad design decision; it introduces conflicts with
     ANSI C in certain circumstances.  To ease conversion, the old forms
     are still understood.  Thus, one can use `$EVAL' and `_EVAL'
     interchangably.  However, the underscore forms may be deleted in
     future releases.

  3. *Full LaTeX support.*  FWEB no longer usurps LaTeX's `\output'
     routine, and LaTeX's sectioning commands, table-of-contents
     commands, etc. are used.  The appearance of the woven output is
     changed to be more book-like.  (This is an experiment.)

  4. *Verbatim language.*  `@Lv' selects a language-independent format.
     *Note Verbatim::

  5. *Language-independent mode.*  The N mode inhibits pretty-printing,
     blank compression, etc.; source code is essentially copied
     literally from input to output.  This mode is turned on
     automatically by the VERBATIM language, but it can also be used
     with the other languages.  It is turned on by the command-line
     option `-N' or the local command `@N'. *Note ATN_::.

  6. *Writing of temporary files.*  When the `-F' command-line option is
     in effect, tangled output is written to temporary files instead of
     the final target files, and the temporary files are compared to
     the last version of the target files on disk.  If there is no
     change, the target files are not updated.  This avoid unnecessary
     recompilation if only the documentation, not the code, was
     changed.  *Note -F_::.

  7. *Converting output tokens to lower case.*  *Note -U_::.

  8. *The built-in functions `$E' and `$PI'.*  *Note $E::, *Note $PI::.

  9. *The built-in functions `$EXP', `$LOG', and `$LOG10'.*  *Note
     $EXP::, *Note $LOG::, and *Note $LOG10::.

 10. *`$MAX' and `$MIN' generalized to take arbitrary list of
     arguments.*  *Note $MAX::, *Note $MIN::.

 11. *The marriage-saver option*.  In response to a serious user
     request, see *Note -B_::.



File: fweb.info,  Node: Support,  Next: Index,  Prev: New features,  Up: Top

SUPPORT
*******

   FWEB is supported by John Krommes, `krommes@princeton.edu'.  This
project is a *spare-time activity*!  I try for, but cannot promise,
reasonably quick (one week) response to questions.  Bug reports
submitted with very short test files will be verified.  For very simple
fixes, a change file will be provided.  Generally, however, bugs are not
fixed until the next release.  Releases occur intermittently, depending
on my other professional obligations.

   Suggestions are very welcome.  Many of FWEB's current features were
incorporated in response to users' requests.  However, the queue for
future improvements is long; nothing may happen immediately.

   Marcus Speh moderates an FWEB FAQ.  See `/pub/fweb/faq'.


File: fweb.info,  Node: Index,  Prev: Support,  Up: Top

Index
*****

   The index is obviously not complete; the following are tests.

* Menu:

* Files:                                Files.
* Literate programming:                 Intro.
* Modules:                              Modules.
* Named module:                         Modules.
* Parts:                                Structure.
* Sections:                             Structure.
* tempnam:                              -F_.
* tmpnam:                               -F_.
* Unnamed module:                       Modules.


