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.