JML is a markup language that allows a user to layout their document into rows and columns (and subrows and subcolumns) to produce a reasonably easy-to-read portable (it can be "compiled" into other markup languages as need arises) document as a gateway to some lower-level language (HTML, in this case). Source is GPL'd and therefore freely modifiable. Each document begins with a "begin" statement and ends with an "end" statement. Each document must have a title (which goes in quotes after a 'title' statement, just after the begin statement). Rows begin and end with curly braces and columns are distinguished by square brackets. Text (to be seen in the "compiled" document) is in quotes. Sound complex? Not really. Here's a basic document: begin title "John's Homepage" { [ "HI!" ] [ "This is my home page where lots of stuff happens." ] } end More complex features include a "sect" keyword demarking a section. This merely changes the look of the text. Extending the above, we might have the following: begin title "John's Homepage" { [ "HI!" ] [ "This is my home page where lots of stuff happens." ] } { sect "My Job" } { "My job is rather uneventful; I design markup languages." } { sect "Family" } { "You must mean my parents. They're very nice folks." } { sect "Parcheesi" } { "My favorite game." } end Images may also be easily included, as can links to other pages with the "image" and "link" keywords. Again: begin title "John's Homepage" { [ link image "hi.jpg" to "http://www.hi.org/" ] [ "This is my home page where lots of stuff happens." ] } { sect "My Job" } { "My job is rather uneventful; I design markup languages." } { sect "Family" } { "You must mean my parents. They're very nice folks." } { sect "Parcheesi" } { "My favorite game; here's me playing " link "Parcheesi" to "http://www.parcheesi.com/" " now: " } { sect "My favorite saying" } { "\"And How!\"" } end Alignment of text (within the row and column "boxes") may be done using "align" commands, and some control over font size may be had by using the "fsize" command at the beginning of any row or column (for all descending rows and columns). See the following: begin title "John's Homepage" { fsize 3 { [ link image "hi.jpg" to "http://www.hi.org/" ] [ "This is my home page where lots of stuff happens." ] } { sect "My Job" } { align right "My job is rather uneventful; I design markup languages." } { sect "Family" } { align left "You must mean my parents. They're very nice folks." } { sect "Parcheesi" } { align right "My favorite game; here's me playing " link "Parcheesi" to "http://www.parcheesi.com/" " now: " } { sect "My favorite saying" } { align left "\"And How!\"" } } end One gotcha is that double-quotes must be escaped (ie. '"'in text must be written as '\"'). There is a configuration file for jml that allows changing of the default and "section" attributes, and header and footer texts. It is specified using the "-s" option to jml and has the following format: Header Footer SectFsize +1 SectFgcolor ffffff SectBgcolor 336633 SectAlign [left, right, or center] SectFace "Times, Helvetica, Arial, sans-serif" DefFsize 4 DefFgcolor ffffff DefBgcolor 000000 DefAlign [left, right, or center] DefFace "Helvetica, Times, Arial, sans-serif All are newline-terminated. This is mainly a proof-of-concept and is not really intended for public consumption, but the code is GPL, so feel free to use and modify it to your liking.