From a linux.announce newgroup:

===============================================================================

				   Y O D L
			Yet Oneother Document Language

		       Karel Kubat (karel@icce.rug.nl)

===============================================================================

    [ This file double-serves as the announcement that goes to
    comp.os.linux.announce, and as a message to the maintainers of
    sunsite.unc.edu and tsx-11.mit.edu. So it's a slightly unpersonal
    message... ]

YODL (Yet Oneother Document Language) is a package that consists of programs,
some shell scripts, and auxiliary "lib" files for one of the programs. The
whole purpose of the package is to provide a simple-to-use and extensible
document language, that can be used to convert documents in the YODL format to
a variety of other formats. In this purpose, YODL somewhat resembles generic
markup languages (e.g. SGML), but:

    - YODL is easier to use. Well I find so.

    - YODL is very well documented. That my version of SGML isn't is, I guess,
      no fault of SGML, but I had a _very_ hard time getting SGML to do what I
      wanted it to do! Well, YODL should be easier to handle. The docs include
      various manpages and a more than 50 pages DIN A4 document.

    - YODL doesn't insist on weird tags. YODL is not a markup language in that
      sense (starting and ending tags), YODL handles all its commands in a
      C-style manner; e.g. em(text) will set the text emphasized. Similarly,
      macros can have two arguments or more, also all in a parameter-list
      format. This is more of an advantage than you might think at first
      glance: e.g., my editor won't match a closing tag in HTML with the
      opening tag, but it _will_ show the open-parenthesis when I type a
      closing parenthesis!

    - YODL has support for conditional processing: by testing for some symbol,
      or say for the presence of an argument, you can do different things in a
      macro. Or you can redefine macros, and the such.

Currently the package supports conversions to LaTeX, HTML, to the "man"
format, and poor-mans conversions to plain ASCII and SGML (for compatibility
reasons at our site).  Other conversions are of course possible, but these are
the formats that I use and why I wrote YODL in the first place.

If you want to obtain YODL and try it out, ftp to
ftp://ftp.icce.rug.nl/pub/unix/ and look for a file yodl-X.YY.tar.gz, with
X.YY being a version number (0.00 is of course the first). Unpack it in a
"sources" directory and type "make htmldoc" or "make latexdoc" and see for
yourself...

YODL has evolved from the previous DOM package, that I developed but didn't
distribute yet. DOM used to be "DOcument Maintainer", but I don't think that
the nomenclature was too good. (Besides, I can now use ".yo" for file
extensions ;-)

YODL is currently beta-state, that means that it may not be very complete (but
I'm working on it), that there may be bugs in it (not that I know of), and
that new versions may arrive quickly.  Yes, I am looking for testers! If
you're interested, get YODL and mail me what you think.

Just for fun, here's a piece of a YODL file that I took at random from YODL's
own docs. Not that you should carefully read it, it's just to give you an idea
of the YODL language.

------------------------------------------------------------------------------
chapter(Using the yodl program)

The tt(yodl) program is reads one or more input files, interprets the commands
therein, and writes one output file. The program is started as:

center(
    tt(yodl) em(flags) em(inputfile) em([inputfile...])
)

In this specification, the flags are optional and may be:

itemize(

    it() tt(-D) em(name): Defines em(name) as a symbol. This flag is similar
    to the tt(DEFINESYMBOL) statement which may appear in the text. The
    purpose of defining symbols is described later.

    it() tt(-I) em(directory): This defines the system-wide include directory
    where tt(yodl) searches for its input files when they cannot be located
    by their bare name. E.g. a statement to include a given file:

    verb(INCLUDEFILE(latex))

    will search for the file tt(latex) in the current directory, and when that
    fails, in the system-wide include directory. The system-wide include
    directory is typically the place where the maintainer of a system stores
    macro-files for YODL. This searching process applies to files that are
    included inside a document but also applies to filenames on the command
    line when invoking the tt(yodl) program.

    The name of the included file (tt(latex) in the above example) is the
    bare name, the tt(yodl) program will supply a default extension if
    necessary.

    The tt(-I) flag overrules YODL's built-in name for the system-wide include
    directory. The built-in name is defined when compiling YODL, and is
usually
    tt(/usr/local/lib/yodl).

    .
    .
    .
)

The em(inputfile) elements on the command line specify which files YODL should
process. All names are supplied with an extension footnote(this extension is
defined in the installation of YODL and is usually .yo). The files are then
searched for `as-is', or in the system-wide include directory.