The tt(PARAGRAPH) macro is defined by the Yodl program, but is had normally no
actions. The macro works as follows.

If you define the macro, then Yodl's parser will trigger it whenever a new
paragraph is started. The macro must be defined as one with zero arguments,
but leading to some (necessary) action. New paragraphs are -by definition-
indicated in the source file as two or more consecutive newline characters,
optionally separated by spaces. I.e., in the text

verb(\
Here is a line of text.

And here's another one.)

one new paragraph occurs: the first line is terminated by a newline, then one
newline follows right behind. Given such input, the tt(PARAGRAPH) macro is
triggered right before the parsing process of the line starting with tt(And).

Some macro packages do not need paragraph starts; e.g., LaTeX does its own
paragraph handling. Other macro packages do need it:  typically, tt(PARAGRAPH)
is then defined in a macro file to trigger some special action. E.g., a HTML
converter might define a paragraph as:

verb(\
DEFINEMACRO(PARAGRAPH)(0)(CHAR(<)p+CHAR(>)))

bf(Note that) the definition of the action of the tt(PARAGRAPH) macro is again
parsed and expanded by Yodl. Therefore, if you put two consecutive newlines in
the definition itself, the definition will again trigger the tt(PARAGRAPH)
macro, etcetera, ad infinitum. If you want the tt(PARAGRAPH) redefinition to
insert a blank line, protect the line in a tt(NOEXPAND), as in:

verb(\
DEFINEMACRO(PARAGRAPH)(0)(NOEXPAND(

)CHAR(<)p+CHAR(>)))
