Yodl 4.03.03

Frank B. Brokken (f.b.brokken@rug.nl)
initially by Karel Kubat

Center for Information Technology, University of Groningen

1996-NOW

Yodl is a package implementing a pre-document language and tools to process it. The idea of Yodl is that you write up a document in a pre-language, then use the tools (e.g. yodl2html) to convert it to some final document language. Current converters are for HTML, man, LaTeX, a poor-man's text converter and an experimental XML converter. Main document types are `article', `report', `book', `letter' and `manpage'. The Yodl document language is designed to be easy to use and extensible.

Table of Contents

Chapter 1: Introduction

1.1: What's new since version 4.00.00?

1.2: Why use Yodl?

1.3: Copying Yodl

Chapter 2: Yodl User Guide

2.1: Using the yodl program

2.2: The Yodl grammar

2.2.1: Language elements
2.2.1.1: Identifiers and Names
2.2.1.2: Numbers
2.2.1.3: Arguments to builtin functions and macros
2.2.1.4: Builtin functions
2.2.1.5: Character translation tables
2.2.1.6: Counters
2.2.1.7: Macros
2.2.1.8: Nousermacros
2.2.1.9: Symbols
2.2.2: Line continuation
2.2.3: The +identifier sequence
2.2.4: Preventing macros from being expanded

2.3: Character tables

2.3.1: Defining character tables
2.3.2: Using character tables
2.3.3: Pushing and popping character tables

2.4: Sending literal text to the output

2.5: Counters

2.5.1: Creating counters
2.5.2: Using counters

Chapter 3: All builtin functions

3.1: Yodl's builtin commands

3.1.1: ADDTOCOUNTER
3.1.2: ADDTOSYMBOL
3.1.3: ATEXIT
3.1.4: CHAR
3.1.5: CHDIR
3.1.6: COMMENT
3.1.7: COUNTERVALUE
3.1.8: DECWSLEVEL
3.1.9: DEFINECHARTABLE
3.1.10: DEFINECOUNTER
3.1.11: DEFINEMACRO
3.1.12: DEFINESYMBOL
3.1.13: DELETECHARTABLE
3.1.14: DELETECOUNTER
3.1.15: DELETEMACRO
3.1.16: DELETENOUSERMACRO
3.1.17: DELETESYMBOL
3.1.18: ERROR
3.1.19: EVAL
3.1.20: FILENAME
3.1.21: FPUTS
3.1.22: IFBUILTIN
3.1.23: IFCHARTABLE
3.1.24: IFDEF
3.1.25: IFEMPTY
3.1.26: IFEQUAL
3.1.27: IFGREATER
3.1.28: IFMACRO
3.1.29: IFSMALLER
3.1.30: IFSTREQUAL
3.1.31: IFSTRSUB
3.1.32: IFSYMBOL
3.1.33: IFZERO
3.1.34: INCLUDEFILE
3.1.35: INCWSLEVEL
3.1.36: INTERNALINDEX
3.1.37: NOEXPAND
3.1.38: NOEXPANDINCLUDE
3.1.39: NOEXPANDPATHINCLUDE
3.1.40: NOTRANS
3.1.41: NOUSERMACRO
3.1.42: OUTBASE
3.1.43: OUTDIR
3.1.44: OUTFILENAME
3.1.45: PARAGRAPH
3.1.46: PIPETHROUGH
3.1.47: POPCHARTABLE
3.1.48: POPCOUNTER
3.1.49: POPMACRO
3.1.50: POPSUBST
3.1.51: POPSYMBOL
3.1.52: POPWSLEVEL
3.1.53: PUSHCHARTABLE
3.1.54: PUSHCOUNTER
3.1.55: PUSHMACRO
3.1.56: PUSHSUBST
3.1.57: PUSHSYMBOL
3.1.58: PUSHWSLEVEL
3.1.59: RENAMEMACRO
3.1.60: SETCOUNTER
3.1.61: SETSYMBOL
3.1.62: SUBST
3.1.63: SYMBOLVALUE
3.1.64: SYSTEM
3.1.65: TYPEOUT
3.1.66: UPPERCASE
3.1.67: USECHARTABLE
3.1.68: USECOUNTER
3.1.69: VERBOSITY
3.1.70: WARNING

Chapter 4: Macros and Document types

4.1: General structure of a Yodl document

4.1.1: Document types
4.1.2: The manpage document type

4.2: Predefined macros

4.2.1: abstract(text)
4.2.2: addntosymbol(symbol)(n)(text)
4.2.3: affiliation(site)
4.2.4: AfourEnlarged()
4.2.5: appendix()
4.2.6: article(title)(author)(date)
4.2.7: attrib(text)
4.2.8: attribclear()
4.2.9: attribinsert()
4.2.10: bf(text)
4.2.11: bind(text)
4.2.12: book(title)(author)(date)
4.2.13: cell(contents)
4.2.14: cells(nColumns)(contents)
4.2.15: cellsline(from)(count)
4.2.16: center(text)
4.2.17: chapter(title)
4.2.18: cindex()
4.2.19: cite(text)
4.2.20: clearpage()
4.2.21: code(text)
4.2.22: columnline(from)(through)
4.2.23: dashes()
4.2.24: def(macroname)(nrofargs)(redefinition)
4.2.25: description(list)
4.2.26: dit(itemname)
4.2.27: eit()
4.2.28: ellipsis()
4.2.29: em(text)
4.2.30: email(address)
4.2.31: enumeration(list)
4.2.32: euro()
4.2.33: evalsymbol(symbol)(expression)
4.2.34: fig(label)
4.2.35: figure(file)(caption)(label)
4.2.36: file(text)
4.2.37: findex()
4.2.38: footnote(text)
4.2.39: gagmacrowarning(name name ...)
4.2.40: getaffilstring()
4.2.41: getauthorstring()
4.2.42: getchapterstring()
4.2.43: getdatestring()
4.2.44: getfigurestring()
4.2.45: getpartstring()
4.2.46: gettitlestring()
4.2.47: gettocstring()
4.2.48: htmlcommand(cmd)
4.2.49: htmlheadfile(file)
4.2.50: htmlheadopt(option)
4.2.51: htmlnewfile()
4.2.52: htmlstyle(tag)(definition)
4.2.53: htmlstylesheet(url)
4.2.54: htmltag(tagname)(start)
4.2.55: ifnewparagraph(truelist)(falselist)
4.2.56: includefile(file)
4.2.57: includeverbatim(file)
4.2.58: it()
4.2.59: itdesc(itemname)(contents)
4.2.60: itemization(list)
4.2.61: kindex()
4.2.62: label(labelname)
4.2.63: langle()
4.2.64: languagedutch()
4.2.65: languageenglish()
4.2.66: languageportugese()
4.2.67: LaTeX()
4.2.68: latexaddlayout(arg)
4.2.69: latexcommand(cmd)
4.2.70: latexdocumentclass(class)
4.2.71: latexlayoutcmds(NOTRANSs)
4.2.72: latexoptions(options)
4.2.73: latexpackage(options)(name)
4.2.74: lchapter(label)(title)
4.2.75: letter(language)(date)(subject)(opening)(salutation)(author)
4.2.76: letteraddenda(type)(value)
4.2.77: letteradmin(yourdate)(yourref)
4.2.78: letterfootitem(name)(value)
4.2.79: letterreplyto(name)(address)(zip city)
4.2.80: letterto(element)
4.2.81: link(description)(labelname)
4.2.82: lref(description)(labelname)
4.2.83: lsect(label)(title)
4.2.84: lsubsect(label)(title)
4.2.85: lsubsubsect(label)(title)
4.2.86: lsubsubsubsect(label)(title)
4.2.87: lurl(locator)
4.2.88: mailto(address)
4.2.89: makeindex()
4.2.90: mancommand(cmd)
4.2.91: manpage(title)(section)(date)(source)(manual)
4.2.92: manpageauthor()
4.2.93: manpagebugs()
4.2.94: manpagedescription()
4.2.95: manpagediagnostics()
4.2.96: manpagefiles()
4.2.97: manpagename(name)(short description)
4.2.98: manpageoptions()
4.2.99: manpagesection(SECTIONNAME)
4.2.100: manpageseealso()
4.2.101: manpagesynopsis()
4.2.102: manttquoted(onOff)
4.2.103: mbox()
4.2.104: metaC(text)
4.2.105: metaCOMMENT(text)
4.2.106: mscommand(cmd)
4.2.107: nbsp(count)
4.2.108: nchapter(title)
4.2.109: nemail(name)(address)
4.2.110: nl()
4.2.111: nodeprefix(text)
4.2.112: nodeprefix(text)
4.2.113: nodetext(text)
4.2.114: nohtmlfive()
4.2.115: nohtmlimgstyle()
4.2.116: nop(text)
4.2.117: nosloppyhfuzz()
4.2.118: notableofcontents()
4.2.119: notitleclearpage()
4.2.120: notocclearpage()
4.2.121: notransinclude(filename)
4.2.122: noxlatin()
4.2.123: nparagraph(title)
4.2.124: npart(title)
4.2.125: nsect(title)
4.2.126: nsubsect(title)
4.2.127: nsubsubsect(title)
4.2.128: nsubsubsect(title)
4.2.129: paragraph(title)
4.2.130: part(title)
4.2.131: pindex()
4.2.132: plainhtml(title)
4.2.133: printindex()
4.2.134: quote(text)
4.2.135: rangle()
4.2.136: redef(macro)(nrofargs)(redefinition)
4.2.137: redefinemacro(macro)(nrofargs)(redefinition)
4.2.138: ref(labelname)
4.2.139: report(title)(author)(date)
4.2.140: roffcmd(dotcmd)(sameline)(secondline)(thirdline)
4.2.141: row(contents)
4.2.142: rowline()
4.2.143: sc(text)
4.2.144: sect(title)
4.2.145: setaffilstring(name)
4.2.146: setauthorstring(name)
4.2.147: setchapterstring(name)
4.2.148: setdatestring(name)
4.2.149: setfigureext(name)
4.2.150: setfigurestring(name)
4.2.151: sethtmlfigureext(ext)
4.2.152: htmlmetacharset(meta-charset)
4.2.153: setincludepath(name)
4.2.154: setlanguage(name)
4.2.155: setlatexalign(alignment)
4.2.156: setlatexfigureext(ext)
4.2.157: setlatexverbchar(char)
4.2.158: setmanalign(alignment)
4.2.159: setpartstring(name)
4.2.160: setrofftab(x)
4.2.161: setrofftableoptions(optionlist)
4.2.162: settitlestring(name)
4.2.163: settocstring(name)
4.2.164: sgmlcommand(cmd)
4.2.165: sgmltag(tag)(onoff)
4.2.166: sloppyhfuzz(points)
4.2.167: standardlayout()
4.2.168: strong(contents)
4.2.169: subs(text)
4.2.170: subsect(title)
4.2.171: subsubsect(title)
4.2.172: subsubsubsect(title)
4.2.173: sups(text)
4.2.174: table(nColumns)(alignment)(Contents)
4.2.175: tableatt(nColumns)(alignment)(Contents)
4.2.176: tac(alignment)(contents)
4.2.177: tao(type)(specification)
4.2.178: tbl(align)(contents)
4.2.179: tc(contents)
4.2.180: tcell(text)
4.2.181: telycommand(cmd)
4.2.182: TeX()
4.2.183: texinfocommand(cmd)
4.2.184: tindex()
4.2.185: titleclearpage()
4.2.186: tline(beginNr)(endNr)
4.2.187: tnac(nCells)(alignment)(contents)
4.2.188: tnc(nCells)(contents)
4.2.189: tocclearpage()
4.2.190: tr(contents)
4.2.191: tt(text)
4.2.192: ttbegin()
4.2.193: ttend()
4.2.194: twrap(value)
4.2.195: txtcommand(cmd)
4.2.196: url(description)(locator)
4.2.197: verb(text)
4.2.198: verbinclude(filename)
4.2.199: verbinsert(args)
4.2.200: verborg(text)
4.2.201: verbpipe(command)(text)
4.2.202: vindex()
4.2.203: whenhtml(text)
4.2.204: whenlatex(text)
4.2.205: whenman(text)
4.2.206: whenms(text)
4.2.207: whensgml(text)
4.2.208: whentely(text)
4.2.209: whentexinfo(text)
4.2.210: whentxt(text)
4.2.211: whenxml(text)
4.2.212: xit(itemname)
4.2.213: xmlcommand(cmd)
4.2.214: xmlmenu(order)(title)(menulist)
4.2.215: xmlnewfile()
4.2.216: xmlsetdocumentbase(name)
4.2.217: xmltag(tag)(onoff)

4.3: Conversion-related topics

4.3.1: Conversion-type specific literal commands
4.3.2: Figures
4.3.3: Fonts and sizes
4.3.4: Labels, links, references and URLs
4.3.5: Lists and environments
4.3.5.1: National language support
4.3.5.2: Pagebreaks after the title and table of contents
4.3.6: Sectioning
4.3.7: Typesetting modifiers
4.3.8: Miscellaneous commands

4.4: Locations of the macros

Chapter 5: Conversions and converters

5.1: Conversion script invocations

5.2: The HTML converter

5.2.0.1: Direct commands to HTML
5.2.0.2: Section numbering

5.3: The LaTeX converter

5.3.0.1: Direct commands to LaTeX
5.3.0.2: Verbatim text

5.4: The man converter

5.4.0.1: Direct commands to man

5.5: The txt converter

5.5.0.1: Direct commands to txt

5.6: The experimental XML converter

5.7: The Yodl Post-processor `yodlpost'

5.8: The support program `yodlverbinsert'

5.8.1: Example

Chapter 6: Technical information

6.1: Obtaining Yodl

6.1.1: Installing Yodl

6.2: Organization of the software

6.2.1: Subdirectories and their meanings

6.3: Yodl's component interrelations and component setup

6.4: The token-producer `lexer_lex()'

6.5: The Parser's Finite State Automaton

6.6: Adding a new macro

6.7: The Yodl post-processor