Reference Tutorial Developer 1 Compile 2 Design 3 Implement 4 Modify 5 Misc 6 Licence SEARCH

2.5 Document Structuring

Knuth's WEB system provided just two levels of headings, and this scheme was used in FunnelWeb V1. However, experience showed that there was a need for more levels. Here are some syntaxes that were considered for implementing this:

    @*@<Main Program@>
    @**@<Read the Message@>
    @***@<Encrypt the Buffer@>

    @*@<Main Program@>
    @*@*@<Read the Message@>
    @*@*@*@<Encrypt the Buffer@>

    @s@<Main Program@>
    @ss@<Read the Message@>
    @sss@<Encrypt the Buffer@>

    @s@<Main Program@>
    @s@s@<Read the Message@>
    @s@s@s@<Encrypt the Buffer@>

    @S@<Main Program@>
    @SS@<Read the Message@>
    @SSS@<Encrypt the Buffer@>

    @S@<Main Program@>
    @S@S@<Read the Message@>
    @S@S@S@<Encrypt the Buffer@>

    @1@<Main Program@>
    @2@<Read the Message@>
    @3@<Encrypt the Buffer@>
    (using @A..@I@ as macro
     parameters or overload @1..@9)

    @*@1@<Main Program@>
    @*@2@<Read the Message@>
    @*@3@<Encrypt the Buffer@>
    (using @A..@I@ as macro parameters
     or overload @1..@9)

    @A Main Program
    @B Read the Message
    @C Encrypt the Buffer

    @*A Main Program
    @*B Read the Message
    @*C Encrypt the Buffer

    The following is the syntax finally chosen.
    @A@<Main Program@>
    @B@<Read the Message@>
    @C@<Encrypt the Buffer@>

Choosing between these alternatives was not easy. The following thoughts contributed to the decision.

- Syntaxes that require visual counting are probably not a good idea.
- Syntaxes that do not delimit the heading name somehow are likely to cause problems where heading names are omitted. Users will be tempted to start paragraphs after the start of heading symbol, and the result is that the first line of the paragraph will be sucked into the heading.
- Overloading the `@1`, ..., `@9` sequences is undesirable.

For these reasons, the following syntax was chosen:

    @A@<Main Program@>
    @B@<Read the Message@>
    @C@<Encrypt the Buffer@>
    @D@<Encrypt the Buffer@>
    @E@<Encrypt the Buffer@>

A maximum of five levels was chosen because it's probably sufficient, and `@F` should be reserved for File.

Webmaster Copyright © Ross N. Williams 1992,1999. All rights reserved.