Go to the first, previous, next, last section, table of contents.
This info documentation is now accessible on the World-Wide Web; see section SUPPORT.
Some things that have been added or changed in recent releases are described in the following.
- @FWEB{} supports color modes in which messages to the terminal can appear in colors chosen by the user; see section Color output. The color mode is set by the new command-line option `-C' (see section `-C': Set the color mode).
- A previously undocumented feature is that for the C-like and Fortran-like languages, @FTANGLE{} expands the binary notation `0b...' to an unsigned decimal number. See section Phases of processing.
A few obscure commands have been slightly redefined. Sorry about that, but it makes for more symmetry and ease of recall, and/or solves some technical problems.
- Although it was never documented, previous versions permitted either lower or upper case for the `@' commands that set the language--e.g., both `@c' and `@C' worked. Now only the lower-case forms work. (The upper-case forms may have other meanings.)
- The style-file parameter `Ext_delimiter' now begins with an upper-case `E'; formerly it was lower-case.
- The behavior of the optional argument of the
\Title
macro has been slightly redefined. The new, more symmetrical form is\Title[Short title]{Long title}whereLong title
is printed on the title page andShort title
is used for the running header within the document. See section LaTeX's Table of Contents.- The line-break commands `@/' and `@\' (formerly identical) now behave slightly differently. `@/' breaks the line just as it would if the line had been too long and been spontaneously broken. See section `@/': Force a line break, preserving indentation.. `@\' backspaces one unit of indentation after breaking the line. See section `@\': Force a line break, then indent. Usually, one should use `@/' (sorry; I was previously recommending `@\'. For an example in which it is natural to use `@\', see section `@\': Force a line break, then indent.
- The names of some of the code-typesetting macros in
fwebmac.sty
have been changed to conform to the convention that they should all start with `W'. This change will be invisible to you unless you happen to have user macros of your own that start that way or (perish the thought) you have redefined low-level and obscure code in `fwebmac.sty'.
This release adds some features for managing large projects, including
(i) the idxmerge
utility that merges indexes produced by several
@FWEB{} files, (ii) a mechanism for accessing RCS-like information in
the ignorable commentary at the beginning of the file, and (iii) the
ability to include @FWEAVE{}-formatted code into a standard LaTeX
document. It also fixes a variety of miscellaneous bugs.
- A stand-alone index file suitable for processing by
makeindex
can be produced by the `-XI' option. See section Creating a stand-alone index withmakeindex
.- Stand-alone indexes produced by `-XI' can be merged with the
idxmerge
utility. See section Using theidxmerge
utility to merge indexes.- @FWEAVE{}-formatted code can be included in a standard LaTeX2e document by means of the
fwebinsert
package. See section Packagefwebinsert
: Inserting @FWEAVE{}'s output into a LaTeX document.- Revision-control-system (RCS) information that appears in the ignorable commentary between the optional `@z' and `@x' that begin an @FWEB{} file (see section @samp{@z}: Begin ignorable material, or terminate change) is accessible in the body of the file through the built-in function
$KEYWORD
(see section$KEYWORD
: Value of global RCS-like keyword) and the new commands `@K' (see section `@K': Extract global RCS-like keyword) and `@k' (see section `@k': Access local RCS-like keyword). These features can access RCS-like keywords that are not known to RCS itself, as long as they fit the proper syntax (see section `@z': Begin ignorable material, or terminate change).- The `-h' option now permits easy access to the GNU
info
browser if it is installed. See section `-h': Get help.- Underscored versions of built-in functions have been removed!!! E.g., use
$IF
, not_IF
. This change was warned about in the last release.- Single-character identifiers can now be completely cross-referenced via the `-W1' option. See section `-W1': Cross-reference single-character identifiers.
- Some module warning messages can be eliminated with the `-W@' option. See section `-W@': Set module warning flag..
- The `@q' command (still experimental) has been added to locally turn on or off the the line and module comments in the tangled output. See section `@q': Turn off module and line info locally.
- The level of verbosity of @FWEB{}'s informational messages can be controlled with the `-M' option. See section `-M': Set output message level.
- C/C++ programmers may find the command `@{' useful. See section Special left brace.
- The `-nC' option has been added for FORTRAN users; it kills commented lines at a very early stage in the processing. This can be useful when converting existing codes to @FWEB{}. See section `-nC': Ignore single-line comments [FORTRAN]
- FORTRAN-90 (see section `-n9': Set global language to FORTRAN--90) now defaults to free-form syntax.
- As of the non-beta Version 1.61, free-form FORTRAN-90 now inserts semicolons automatically in the code part. Thus, textbook FORTRAN-90 examples will weave correctly without the annoyance of explicitly terminating each statement with a semicolon. (If you prefer to put in the semicolons explicitly, use `--n;' to turn off the auto-insertion.) See section `-n;': Supply automatic semicolons [FORTRAN]
- The default meaning of the `-k' option was changed; now both lower- and upper-case forms of FORTRAN I/O keywords are recognized. See section `-k': Don't recognize lower-case forms of keywords.
- Various changes were made to internal code in `fwebmac.sty'. This should not affect anyone unless you have redefined
fwebmac
macros. If so, you'll have to compare your versions with the present ones. For example, colons as argument delimiters in\def
s have been removed.- It is now (barely) possible to use
\documentstyle{revtex}
instead of the default\documentclass{article}
. See section Using REVTeX.
- Perhaps the most significant bug is that some high-order (>= 128) characters in strings may not typeset or be processed correctly. This may be an issue for some users of foreign-language packages. The difficulty arises from a design decision made by a previous author. This has at least partly been fixed, but I eschewed a substantial overhaul for fear of breaking other things.
This release fixes a relatively small number of obscure bugs in
fweb-1.52-beta
. A few minor enhancements were also made. They include
- Sections can be numbered by consecutive integers rather than LaTeX's default Dewey-decimal form by saying
LaTeX.package = "fwebnum"See section Sections in LaTeX.- The `-H' option (experimental and incomplete) was added. For C and C++, this option tells @FWEAVE{} to scan
#include
files for `typedef' and/or `class' definitions. See section `-H': Scan C/C++ include files (@FWEAVE{}).- The `-k' option was added. This tells FORTRAN and RATFOR to understand the lower-case forms of I/O keywords such as `iostat' (with the exception of `read', `write', and `end'). See section `-k': Don't recognize lower-case forms of keywords.
- The `-n:' option was added. This tells FORTRAN to place statement labels on a separate line, which is useful when the labels are relatively long. (By default, FORTRAN labels are placed on the same line as the thing they are labeling, which looks good for short labels.) See section `-n:': Put statement label on separate line [FORTRAN]
- The preprocessor command `@#line' was added. For C code, this adds an explicit `#line' command to the tangled output file. This helps to keep the line numbers between debugger and source file in sync when an @FWEB{} preprocessor statement expands to several lines. See section Debugging with macros. An implicit `@#line' command is added after each `@%' (see section `@%': Ignorable comment) that begins a line (this keeps line numbering correct). To override this, use the option `-T#'. See section `-T#': Don't insert `#line' command after `@%'.
- `-p' (style-file) options (see section `-p': Buffer up a style-file entry) on the command line are now processed after the local style file. See section The Style file.
- The functionality of the `-D' command was enhanced to include optional arguments that limit the information that will be listed. See section `-D': Display reserved words.
This release was issued only as a beta version. It consists mostly of bug fixes. However, there are a few other interesting points.
fwebmac.sty
was enhanced to warn the user to run LaTeX again when the section numbering hasn't yet been brought up to date. I'm not sure I've covered all the bases, but before it didn't complain at all.- C++ classes are now formatted (identified as reserved words) on the first pass, so forward references such as
@ The class |C|... @a class C {}will now work. Note that typedef has done this for a while, although there are still a few glitches.- For two years, the documentation has described two control codes as follows:
@~ -- inhibit line break. @+ -- force an index entry.Apparently the code had these definitions inverted; it has now been brought up to date with the documentation. Fortunately these commands are evidently not heavily used, since no one complained.fwebmac.sty
was further reworked to interact properly with the user packagemulticol
. If infweb.sty
one says `LaTeX.package "multicol"', then the two-column index is done withmulticol
; this gives various improvements over the\twocolumn
format that was used previously. Furthermore, it's possible to use `multicol' to do one's entire document in two-column format. This turned out to be relatively simple, but one needs to get the commands in the proper order. See section LaTeX's index. for more details. Two-column format substantially cuts down the white space; I saved about 50% on a 200-page code. One known glitch with @FWEB{}/multicol
is that if one selects page-number cross-references instead of LaTeX section numbers, page references such as 98c don't get the 'c' correct. This is presumably not a big deal. At this point, assume that the use ofmulticol
is highly experimental.- Further bugs in the C and C++ production rules were fixed.
- The syntax for entries in the initialization file `.fweb' (see section Initialization) has been modified (in a way that is as backward-compatible as possible). Previously, `+' meant process the option before the command-line options, `-' meant process it after. This convention was somewhat hard to remember, given the statement that any command-line option could be put into `.fweb'; furthermore, just about everything in `.fweb' should, in fact, be processed before the command-line options. So now both `+' and `-' mean the same thing, namely process before (and the `+' notation should fade away as time goes on). If you explicitly want something to be processed after all command-line options for some tricky reason, begin it with `&'. I.e., scan your `.fweb' file for any line beginning with `-' and replace that with `&'.
- The LaTeX processor (`-PL') is now the default.
- The experimental `fwebmacL.sty' macro package supplied with version 1.40 has been substantially reworked and is now the default `fwebmac.sty'. Remove any reference to `fwebmacL.sty' from your `.fweb' file.
- Support for LaTeX2e is now provided. See section LaTeX support.
- The style-file parameter
index.name
was added. This is the section name to be given to the Index (see section @FWEB{}'s INDEX.), which should be the last major (starred) section. It becomes the contents of the macro\INDEX
. Therefore, one can end one's source file by saying@* \INDEX.- The `$IF...' class of built-in functions was reworked. They should now be more robust, recursive, and intuitive. Simple uses of these functions should work as before. However, complicated uses that depended on tricky things about the order of expansion of arguments may require revision. Carefully compare the descriptions of these functions in the documentation (e.g., see section
$IF
: Two-way conditional) with your usage of them in any pre-existing code. In some cases, if a previous constructions using$IF
no longer works, it might work if you say@m $IF(a,b,c) $$IF(a,b,c)and then use$$IF
in your code. (This forces an extra level of macro expansion.) The same remark goes for$DEFINE
. The old forms `_IF' etc. no longer work; convert to `$IF'.- The option `-j' was added. This inhibits multiple inclusions via `@i' of the same include file. See section `-j': Inhibit multiple includes.
- One now has the ability to change the comment character that begins @FTANGLE{}'s `line' command. In the style file, say, e.g.,
line_char.N '#'to change the default `*line' output by @FTANGLE{} in FORTRAN mode to `#line'. This could be useful if one runs the C preprocessor on the tangled FORTRAN output.- @FWEAVE{}'s processing of typedef statements in C and C++ was improved.
- @FWEB{} should now be able to process C++ templates and exception handling, at least in simple situations. The typesetting of C++ references (e.g., `int&') was also improved. Please report any difficulties.
- There were various miscellaneous obscure bug fixes.
- 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.- 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, do not use the underscore forms; they will be deleted in future releases.
- 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.)- Verbatim language. `@Lv' selects a language-independent format. See section Special considerations for the VERBATIM language
- 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'. See section `@N': Turn on N mode.
- 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. See section `-F': Compare output files with old versions (@FTANGLE{}).
- Converting output tokens to lower case. See section `-U': Convert reserved output tokens to lower case (@FTANGLE{}).
- The built-in functions `$E' and `$PI'. See section
$E
: Base of the natural logarithms, section$PI
: Pi.- The built-in functions `$EXP', `$LOG', and `$LOG10'. See section
$EXP
: Exponential function, section$LOG
: Natural logarithm, and section$LOG10
: Logarithm to the base 10.- `$MAX' and `$MIN' generalized to take arbitrary list of arguments. See section
$MAX
: Maximum of a list, section$MIN
: Minimum.- The marriage-saver option. In response to a serious user request, see section `-B': Turn off audible beeps.
Go to the first, previous, next, last section, table of contents.