COMMENT(-- $Id: masonyodl.yo,v 1.2 1998/04/20 07:24:20 mason Exp $ --) COMMENT(----------------------------------------------------------------------- -- We want more functionality and some better layout -- proto changes: -- starttable(nColumns)(Alignment)(borderwidth) ------------------------------------------------------------------------------) NEWCOUNTER(RRindentlevel) NEWCOUNTER(RRnl) SETCOUNTER(RRindentlevel)(0) \ DEFINEMACRO(nltxt)(0)(\ IFZERO(RRnl)()( ADDTOCOUNTER(RRnl)(-1)nltxt())) \ UNDEFINEMACRO(XXnl) DEFINEMACRO(XXnl)(0)(\ NOTRANS( )\ whentxt(SETCOUNTER(RRnl)(RRindentlevel)nltxt())) \ DEFINEMACRO(P)(0)(\ SETCOUNTER(RRnl)(0)\ whenhtml(SETCOUNTER(RRnl)(1)htmlcommand(<p>))\ IFZERO(RRnl)(nl())()) \ UNDEFINEMACRO(starttable) DEFINEMACRO(starttable)(3)(\ SETCOUNTER(XXtablewidth)(ARG1)\ whenhtml(IFZERO(ARG3)(htmlcommand(<table>))\ (htmlcommand(<table border=ARG3>))XXnl())\ whenlatex(latexcommand(\begin{tabular}{)ARG2+latexcommand(}))\ whenman(roffcmd(.TS)()()())\ whenman(IFZERO(ARG3)(roffcmd(tab(`);)()()())\ (roffcmd(allbox,tab(`);)()()()))\ whenman(ARG2 NOTRANS(. ))\ whenms(roffcmd(.TS)()()())\ whenms(IFZERO(ARG3)(roffcmd(tab(`);)()()())\ (roffcmd(allbox,tab(`);)()()()))\ whenms(ARG2+mscommand(.))\ SETCOUNTER(XXtablewidth)(ARG1)\ SETCOUNTER(XXparcounter)(0)) COMMENT( For HTML, we'll need <table>, for LaTeX we'll need \begin{tabular}{alignment}. Also, we don't want paragraph delimiters.) \ UNDEFINEMACRO(cell) DEFINEMACRO(cell)(1)(\ ADDTOCOUNTER(XXtableline)(1)\ whenhtml(htmlcommand(<td>) ARG1 \ IFZERO(XXcellcounter)\ (htmlcommand(<br>))\ ()\ htmlcommand(</td>) XXnl())\ whenlatex(ARG1 \ IFZERO(XXcellcounter)\ ()(latexcommand( & )))\ whentxt( ARG1 )\ whenms( ARG1 )\ IFZERO(XXcellcounter)\ ()\ (mscommand(`\))\ whenman( ARG1 )\ IFZERO(XXcellcounter)\ ()\ (mancommand(`\))\ ADDTOCOUNTER(XXcellcounter)(-1)) COMMENT(For HTML we need: <td> text </td>, so that's fairly easy. If we're already at the last cell, we need <td> text <br></td>. For LaTeX: we need text followed by &, unless we're already at the last cell 'cuz in that case we need only text. Also we need to decrement the cell counter..) \ UNDEFINEMACRO(cells) DEFINEMACRO(cells)(2)(\ ADDTOCOUNTER(XXtableline)(ARG1)\ ADDTOCOUNTER(XXcellcounter)(-ARG1)\ ADDTOCOUNTER(XXcellcounter)(1)\ whenhtml(htmlcommand(<td colspan=ARG1 align=center>) ARG2 \ IFZERO(XXcellcounter)\ (htmlcommand(<br>))\ ()\ htmlcommand(</td>) XXnl())\ whenlatex(\ latexcommand(\multicolumn{)ARG1+latexcommand(}{c}{)ARG2+latexcommand(})\ IFZERO(XXcellcounter)\ ()(latexcommand( & )))\ whentxt( ARG1 )\ whenms( ARG1 )\ IFZERO(XXcellcounter)\ ()\ (mscommand(`\))\ whenman( ARG1 )\ IFZERO(XXcellcounter)\ ()\ (mancommand(`\))\ ADDTOCOUNTER(XXcellcounter)(-1)) \ DEFINEMACRO(indent)(1)(\ whenhtml(htmlcommand(<ul>)ARG1+htmlcommand(</ul>))\ whentxt(ADDTOCOUNTER(RRindentlevel)(4)ARG1+ADDTOCOUNTER(RRindentlevel)(-4))\ whenman(roffcmd(.RS)()()()roffcmd(.IP)()()()ARG1+roffcmd(.RE)()()())\ whenms()) \ DEFINEMACRO(startdl)(0)(\ whenhtml(htmlcommand(<dl>))\ whentxt(ADDTOCOUNTER(RRindentlevel)(4))\ whenman(startdit())) \ DEFINEMACRO(enddl)(0)(\ whenhtml(htmlcommand(</dl>))\ whentxt(ADDTOCOUNTER(RRindentlevel)(-4))\ whenman(enddit())) \ DEFINEMACRO(dl)(2)(\ whenhtml(htmlcommand(<dt>)ARG1+htmlcommand(</dt><dd>)\ ARG2+htmlcommand(</dd>))\ whentxt(ADDTOCOUNTER(RRindentlevel)(2)dit(ARG1)\ ADDTOCOUNTER(RRindentlevel)(2)nl()\ ARG2+ADDTOCOUNTER(RRindentlevel)(-4))\ whenman(dit(ARG1)ARG2)) \ DEFINEMACRO(manpageauthors)(0)(\ manpagesection(AUTHORS)\ DEFINESYMBOL(XXmanpageAuthor))