diff --git a/tutorial/Makefile b/tutorial/Makefile index fd1764def229148029d6d32a8b1aa2fff36cffed..4deebcf7715b1e9071e836dec432323de923b8cb 100644 --- a/tutorial/Makefile +++ b/tutorial/Makefile @@ -61,11 +61,10 @@ tutorial.dvi: tutorial.tex latex tutorial.tex tutorial.pdf: tutorial.pdftex - if [ -d fonts ]; then ( cd fonts ; make ) ; fi TEXPSHEADERS=fonts: TEXINPUTS=fonts: TTFONTS=fonts: TFMFONTS=fonts: pdflatex tutorial.pdftex tutorial.ps: tutorial.dvi - dvips -Z tutorial.dvi -o tutorial.ps + dvips -a -Z tutorial.dvi -o tutorial.ps tutorial.ps.gz: tutorial.ps gzip -9 <tutorial.ps >tutorial.ps.gz @@ -74,6 +73,7 @@ tutorial.ps.bz2: tutorial.ps bzip2 -9 <tutorial.ps >tutorial.ps.bz2 tutorial.pdftex: .DUMMY $(SRCFILES) + if [ -d fonts ]; then ( cd fonts ; make pike="$(pike)" ) ; fi $(pike) ./wmmltohtml2 tutorial.wmml pdflatex tutorial @@ -99,7 +99,7 @@ clean: -rm -f *.html *.md $(MADEFILES) -rm -f tutorial.dvi tutorial.tex tutorial.aux -rm -f tutorial.log tutorial.toc - -rm -f latex_wcache illustration_cache image_cache gfx/* execute_cache + -rm -f latex.wcache pdflatex.wcache illustration_cache image_cache gfx/* execute_cache if [ -d fonts ]; then ( cd fonts ; make clean ); fi rebuild: diff --git a/tutorial/idonex-fonts.tex b/tutorial/idonex-fonts.tex index 7ead06820e5b275dd1274558bd7b2fadf3c7e593..712f63bb0f2168776cfb498b10f3ee75d12f6fe9 100644 --- a/tutorial/idonex-fonts.tex +++ b/tutorial/idonex-fonts.tex @@ -1,3 +1,99 @@ % Stub file -\newcommand\PikeHeaderFont{\normalfont} +\newcommand\PikeHeaderFont{\normalfont\itshape\color[rgb]{0,0.2,0}} +\newcommand{\PikeHead}[1]{\PikeHeaderFont #1\normalfont\normalcolor} +\newcommand\LoadCustomFonts{} + +\makeatletter + +\def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \PikeHeaderFont + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \huge \@chapapp\space \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \Huge #1\par\nobreak + \vskip 40\p@ + }} + +\def\@makeschapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \PikeHeaderFont + \interlinepenalty\@M + \Huge #1\par\nobreak + \vskip 40\p@ + }} + +\renewcommand\section{\@startsection {section}{1}{\z@}% + {-3.5ex \@plus -1ex \@minus -.2ex}% + {2.3ex \@plus.2ex}% + {\PikeHeaderFont\Large}} + +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\PikeHeaderFont\large}} + +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1.5ex \@plus .2ex}% + {\PikeHeaderFont\normalsize}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\PikeHeaderFont\normalsize}} +\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\PikeHeaderFont\normalsize}} + + +% +% Bugfix for Latex macros... +% This makes colors work over page breaks in pdf... +% must be included between book.cls and hyperref.sty +% + +\def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #6#8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #6#8}% + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} + +\makeatother + + diff --git a/tutorial/latex.pike b/tutorial/latex.pike index 7b0a4e8178c6556b171d2185ff1ccb7e97244bd0..267a6ab27f8a5a7b3ee111ed6a16211a330c0166 100644 --- a/tutorial/latex.pike +++ b/tutorial/latex.pike @@ -17,25 +17,22 @@ object html=.html(); WMML global_data; -string packages = -#"\\usepackage{epic} -\\usepackage{eepic} -\\usepackage{isolatin1} -\\usepackage{latexsym} % For $\Box$ -\\usepackage{amsmath} -\\usepackage{longtable} -\\usepackage{graphicx} -\\usepackage{color} % colors becomes wrong in xdvi, but right in postscript -\\usepackage{colortbl} -\\usepackage{parskip} -"; - string latex = "latex"; -// #define BORDERCOLOR "{0,0.2,0}" -#define BORDERCOLOR "{0.153,0.13,0.357}" +// Blue +// #define BORDERCOLOR "0.153,0.13,0.357" +// #define ROWCOLOR "0.867,0.933,1" + +// Green +#define BORDERCOLOR "0,0.2,0" +#define ROWCOLOR "0.627,0.878,0.753" + +object wcache=.Cache(latex+".wcache"); -object wcache=.Cache("latex_wcache"); +string SillyCaps(string s) +{ + return Array.map(lower_case(s)/" ",String.capitalize)*" "; +} array(float) find_line_width(array(SGML) data) { @@ -66,12 +63,20 @@ array(float) find_line_width(array(SGML) data) sscanf(tmp,"%{%*slength=%f%}",array lengths); // werror("%O\n",lengths); // werror("%O\n",keys); + + if(sizeof(lengths) != sizeof(keys)) + { + werror("Latex exection failed.\n"); + werror("%s",tmp); + exit(1); + } for(int e=0;e<sizeof(lengths);e++) { lengths[e]=lengths[e][0] / 65536; // convert to points // werror("Width of %s is %f\n",key, lengths[e][0]/65536); } + wcache->set_many(keys, lengths); @@ -295,30 +300,34 @@ array(float) find_min_width(array(SGML) datas) return ret; } +array(string) quote_from= +({"<",">", + "{","}", + "�","&", + "�","\\", + "[","]", + "#","%", + "$","~", + "^","_", +}); + +array(string) quote_to= +({"$<$","$>$", + "\\{","\\}", + "$\\mu$","\\&", + "$\\;$","$\\backslash$", + "\\symbol{91}","\\symbol{93}", + "\\#","\\%", + "\\$","\\symbol{126}", + "\\symbol{94}","\\_", +}); + string low_latex_quote(string text) { - return replace( text, - ({"<",">", - "{","}", - "�","&", - "�","\\", - "[","]", - "#","%", - "$","~", - "^","_", - }), - ({"$<$","$>$", - "\\{","\\}", - "$\\mu$","\\&", - "$\\;$","$\\backslash$", - "\\symbol{91}","\\symbol{93}", - - "\\#","\\%", - "\\$","\\symbol{126}", - "\\symbol{94}","\\_", - }) ); + return replace( text, quote_from, quote_to ); } + string latex_quote(string text) { if(!strlen(text)) return text; @@ -327,7 +336,17 @@ string latex_quote(string text) if(text[-1]=='\n') text[-1]=' '; text= ((text/"\n") - ({""})) *"\n"; } - return low_latex_quote(text); + text=low_latex_quote(text); +#if 0 + if(space_out_quoting) + { + text=replace(text, + ({ " - ","-"}), + ({ "\\emdash ","\\hyphen "}) + ); + } +#endif + return text; } string quote_label(string s) @@ -410,6 +429,9 @@ string convert_table(TAG table) // extra space between columns int spaced; + // A short table, no page breaks... + int short=(int)table->params->small; + if(table->params->nicer) { nicer=1; @@ -759,12 +781,12 @@ string convert_table(TAG table) { if(head) { - color="\\rowcolor[rgb]" BORDERCOLOR "%%\n"; + color="\\rowcolor[rgb]{" BORDERCOLOR "}%%\n"; for(int e=0;e<sizeof(ltxrow);e++) ltxrow[e]="\\color[rgb]{1,1,1}%\n"+ltxrow[e]; ltxrow[-1]+="\\normalcolor "; }else{ - color=sprintf("\\rowcolor[rgb]{%s}%%\n",(rownum++&1)?"1,1,1":"0.867,0.933,1"); + color=sprintf("\\rowcolor[rgb]{%s}%%\n",(rownum++&1)?"1,1,1":ROWCOLOR); } } @@ -778,12 +800,38 @@ string convert_table(TAG table) } in_table--; - string ret="\n\n\\begin{longtable}{"+ fmt +"}\n"; + + string ret="\n\n"; + int restart_multi; + + if(short) + { + ret+="\\begin{tabular}{"+ fmt +"}\n"; + }else{ + if(multicolumn) + { + restart_multi=1; + ret+="\\end{multicols}"; + } + ret+="\\begin{longtable}{"+ fmt +"}\n"; + } if(framed && !border) ret+="\\hline\\endfoot\n"; if(framed) ret+="\\hline\n"; ret+=ret_rows * ( border ? "\\hline\n" : "" ); if(framed) ret+="\\hline\n"; - ret+="\\end{longtable}\n"; + + if(short) + { + ret+="\\end{tabular}\n"; + }else{ + ret+="\\end{longtable}\n"; + } + + if(restart_multi) + { + ret+="\\begin{multicols}{2}\n"; + multicolumn=1; + } return ret; } @@ -905,6 +953,8 @@ int depth; int appendixes; int pre; int in_table; +int space_out_quoting; +int multicolumn; constant FLAG_TABLE=1; constant FLAG_LIST=2; @@ -931,7 +981,11 @@ string convert_to_latex(SGML data, void|int flags) case "tt": if(flags & FLAG_MAN_HEAD) { - ret+="\\begin{Large}\\PikeHeaderFont "+convert_to_latex(tag->data)+"\\end{Large}\\normalfont\\normalcolor "; + space_out_quoting++; + ret+="\\begin{Large}\\PikeHead{"+ + convert_to_latex(tag->data)+ + "}\\end{Large} "; + space_out_quoting--; }else{ ret+="{\\tt "+convert_to_latex(tag->data)+"}"; } @@ -981,10 +1035,9 @@ string convert_to_latex(SGML data, void|int flags) case "module": case "class": case "name": - ret+="\n\n\\pagebreak[0]\n\\begin{tabular}{p{\\linewidth}}\n" - ""+convert_to_latex(tag->data,FLAG_MAN_HEAD)+"\\\\\n" - "\\hline\n" - "\\end{tabular}\\nopagebreak\n\n\\nopagebreak "; + ret+="\n\n\\pagebreak[0] "+ + convert_to_latex(tag->data,FLAG_MAN_HEAD)+"\n" + "\\hrule\\nopagebreak "; break; case "syntax": @@ -995,17 +1048,22 @@ string convert_to_latex(SGML data, void|int flags) default: ret+="\n\n"+ - "\\PikeHeaderFont "+latex_quote(tag->params->title)+":\\normalfont\\normalcolor\\\\\n "+ - convert_to_latex(tag->data)+ + "\\PikeHeaderFont "+latex_quote(SillyCaps(tag->params->title))+"\\normalfont\\normalcolor\\\\\n "+ + convert_to_latex(tag->data)+ "\n"; } break; case "chapter": depth++; - ret+="\\chapter{"+ - latex_quote(tag->params->title)+"}\n"+ - convert_to_latex(tag->data); + space_out_quoting++; + ret+="\\chapter{"+latex_quote(tag->params->title)+"}\n"; + space_out_quoting--; +// ret+="\\begin{multicols}{2}\n"; +// multicolumn=1; + ret+=convert_to_latex(tag->data); +// multicolumn=0; +// ret+="\\end{multicols}\n"; depth--; break; @@ -1016,13 +1074,16 @@ string convert_to_latex(SGML data, void|int flags) appendixes=1; } depth++; - ret+="\\chapter{"+ - latex_quote(tag->params->title)+"}\n"+ - convert_to_latex(tag->data); + space_out_quoting++; + ret+="\\chapter{"+latex_quote(tag->params->title)+"}\n"; + space_out_quoting--; + ret+=convert_to_latex(tag->data); depth--; break; case "section": + { + int restart; int olddepth=depth; string tmp=""; switch(depth) @@ -1036,21 +1097,48 @@ string convert_to_latex(SGML data, void|int flags) case 1: } depth++; - ret+="\\"+tmp+"section{"+latex_quote(tag->params->title)+"}"+ - convert_to_latex(tag->data); + space_out_quoting++; + if(multicolumn) + { + restart=1; + multicolumn=0; + ret+="\\end{multicols}\n"; + } + ret+="\\"+tmp+"section{"+latex_quote(tag->params->title)+"}"; + if(restart) + { + ret+="\\begin{multicols}{2}\n"; + multicolumn=1; + } + space_out_quoting--; + ret+=convert_to_latex(tag->data); depth=olddepth; break; + } case "center": - ret+="\\begin{center}\n"+ - convert_to_latex(tag->data)+ - "\n\\end{center}\n"; + { + int restart; + + if(multicolumn) + { + restart=1; + multicolumn=0; + ret+="\\end{multicols}\n"; + } + ret+="\\begin{center}\n"; + ret+=convert_to_latex(tag->data); + ret+="\n\\end{center}\n"; + if(restart) + { + ret+="\\begin{multicols}{2}\n"; + multicolumn=1; + } break; + } - case "variable": - case "constant": - case "method": - case "function": + case "class": + case "module": #if 1 if(depth) { @@ -1078,14 +1166,13 @@ string convert_to_latex(SGML data, void|int flags) } } #endif + case "variable": + case "constant": + case "method": + case "function": ret+=convert_to_latex(tag->data); break; - case "class": - case "module": - // FIXME: but how? - ret+=convert_to_latex(tag->data); - break; case "firstpage": ret+="\\begin{titlepage}\n"+ @@ -1152,7 +1239,7 @@ string convert_to_latex(SGML data, void|int flags) break; case "dt": ret+="\n\\item "; break; - case "dd": ret+="\n\\item $\\;$$\\;$$\\;$$\\;$"; break; + case "dd": ret+="\\nopagebreak\n\\item $\\;$$\\;$$\\;$$\\;$\\nopagebreak "; break; case "ex_indent": ret+="$\\;$$\\;$$\\;$$\\;$"; @@ -1322,8 +1409,18 @@ string package(string x) { return #" \\documentclass[twoside,a4paper]{book} -"+packages+ -#"\\begin{document} +\\input{idonex-fonts.tex} +\\usepackage{epic} +\\usepackage{eepic} +\\usepackage{isolatin1} +\\usepackage{latexsym} % For $\Box$ +\\usepackage{amsmath} +\\usepackage{longtable} +\\usepackage[dvips]{graphicx} +\\usepackage[dvips]{color} % colors becomes wrong in xdvi, but right in postscript +\\usepackage{colortbl} +\\usepackage{parskip} +\\begin{document} \\author{wmml to latex} \\setlength{\\unitlength}{1mm} @@ -1333,7 +1430,7 @@ string package(string x) \\parskip=1pt\\tt}} "+ x+ - "\\end{document}\n"; + "\\LoadCustomFonts\\end{document}\n"; } string extention=".tex"; diff --git a/tutorial/pdflatex.pike b/tutorial/pdflatex.pike index 07205940209b6851c600e222fdef0ed2f0b56e1e..9c568f68918d56f01754bfe3563e9e0c858450b2 100644 --- a/tutorial/pdflatex.pike +++ b/tutorial/pdflatex.pike @@ -11,21 +11,19 @@ import "."; inherit "latex"; string extention=".pdftex"; - -string packages= -#"\\usepackage{isolatin1} -\\usepackage{latexsym} % For $\Box$ -\\usepackage{amsmath} -\\usepackage{longtable} -\\usepackage[pdftex]{graphicx} -\\usepackage[pdftex]{color} -\\usepackage{colortbl} -\\usepackage{parskip} -\\usepackage[pdftex,breaklinks,colorlinks,linkcolor=black]{hyperref} -"; - string latex="pdflatex"; +array(string) quote_to= +({"\\symbol{60}","\\symbol{62}", + "\\symbol{123}","\\symbol{125}", + "$\\mu$","\\symbol{38}", + "\\symbol{32}","\\symbol{92}", + "\\symbol{91}","\\symbol{93}", + "\\#","\\%", + "\\$","\\symbol{126}", + "\\symbol{94}","\\_", +}); + string convert_gfx(TAG tag) { string file; @@ -61,12 +59,19 @@ string convert_gfx(TAG tag) Sgml.Tag illustration(object o,void|mapping options) { - return Sgml.Tag("image",(["src":Gfx.mkpng(o,options)]),0); + return Sgml.Tag("image", + (["src":Gfx.mkpng(o,options), + "dpi": (string) (options->dpi || "75"), + ]) + ,0); } Sgml.Tag illustration_jpeg(object o,void|mapping options) { - return Sgml.Tag("image",(["src":Gfx.mkjpg(o,options)]),0); + return Sgml.Tag("image", + (["src":Gfx.mkjpg(o,options), + "dpi": (string) (options->dpi || "75"), + ]),0); } string package(string x) @@ -76,8 +81,17 @@ string package(string x) \\relax \\documentclass[twoside,a4paper]{book} \\input{idonex-fonts.tex} -"+packages+ -#"\\begin{document} +\\usepackage{isolatin1} +\\usepackage{latexsym} % For $\Box$ +\\usepackage{amsmath} +\\usepackage{longtable} +\\usepackage[pdftex]{graphicx} +\\usepackage[pdftex]{color} +\\usepackage{colortbl} +\\usepackage{parskip} +\\usepackage{multicol} +\\usepackage[pdftex,breaklinks,colorlinks,linkcolor=black]{hyperref} +\\begin{document} \\author{wmml2pdflatex} \\setlength{\\unitlength}{1mm} @@ -88,5 +102,18 @@ string package(string x) "+ x+ - "\\end{document}\n"; + "\\LoadCustomFonts\\end{document}\n"; +} + + +void create() +{ + if(file_stat("fonts")) + { + putenv("TEXPSHEADERS","fonts:"); + putenv("TEXINPUTS","fonts:"); + putenv("TTFONTS","fonts:"); + putenv("TFMFONTS","fonts:"); + } + ::create(); } diff --git a/tutorial/tutorial.wmml b/tutorial/tutorial.wmml index 26d3d67d63c23706fda5d7fbdde6f7fe66da39af..4bfdd7d629227850c7d7a0df65d4ef04a5b1023d 100644 --- a/tutorial/tutorial.wmml +++ b/tutorial/tutorial.wmml @@ -176,7 +176,7 @@ write this book, but since it seems impossible without paying a fortune for it I will have to do it myself. A big thanks goes to <a href="http://www.emit.com.pl/ian.html">Ian Carr-de Avelon</a> and -<a href="mailto:hedda@idonix.se">Henrik Wallin</a> +<a href="mailto:hedda@idonex.se">Henrik Wallin</a> for helping me iron out some of the rough spots. @@ -641,7 +641,7 @@ String is a basic type in Pike, it is not an array of char like it is in C. This means that you cannot assign new values to individual characters in a string. Also, all strings are "shared", i.e. if the same string is used in several places, it will be stored in memory only once. When writing a string in a program, you enclose it in double quotes. To write special characters you need to use the following syntax: -<table> +<table small> <tr><td>\n</td><td>newline</td></tr> <tr><td>\r</td><td>carriage return</td></tr> <tr><td>\t</td><td>tab</td></tr> @@ -3442,6 +3442,7 @@ sscanf(" \t test","%*[ \t]%s",a) sscanf(str,"the %s",str); </example> <p> +<!-- FIXME this is not very abstract: --> <encaps>SEE ALSO</encaps>: <link to=sprintf>sprintf</link> </section> </anchor> @@ -6748,7 +6749,7 @@ Initializes the connection to syslogd. with. <p><i>options</i> is a bit field specifying the behavior of the message logging. Valid options are: -<p><dl><dt><dd><table border=0 cellpadding=0 cellspacing=0> +<p><dl><dt><dd><table border=0 cellpadding=0 cellspacing=0 small> <tr valign=top><td> LOG_PID </td><td> Log the process ID with each message. </td></tr> <tr valign=top><td> LOG_CONS </td><td> Write messages to the console if they can't be sent to syslogd. </td></tr> <tr valign=top><td> LOG_NDELAY </td><td> Open the connection to syslogd now and not later. </td></tr> @@ -6757,7 +6758,7 @@ logging. Valid options are: </dl> <p><i>facility</i> specifies what subsystem you want to log as. Valid facilities are: -<p><dl><dt><dd><table border=0 cellpadding=0 cellspacing=0> +<p><dl><dt><dd><table border=0 cellpadding=0 cellspacing=0 small> <tr valign=top><td> LOG_AUTH </td><td> Authorization subsystem </td></tr> <tr valign=top><td> LOG_AUTHPRIV </td></tr> <tr valign=top><td> LOG_CRON </td><td> Crontab subsystem </td></tr> @@ -6892,7 +6893,7 @@ mapping(string:string) <I>uname</I>();<br> <man_description> Returns a mapping describing the operating system. <p>The mapping contains the following fields: -<p><table border=0 cellpadding=0 cellspacing=0> +<p><table border=0 cellpadding=0 cellspacing=0 small> <tr valign=top><td> </td><td> "sysname": </td><td> Operating system name </td></tr> <tr valign=top><td> </td><td> "nodename": "release": "version": "machine": </td><td> Host name Release of this OS Version number of this OS Machine architecture </td></tr> </table> @@ -7097,7 +7098,7 @@ The string contains characters that make up a pattern for other strings to match. Normal characters, such as A through Z only match themselves, but some characters have special meaning. -<table> +<table nicer> <tr><th> pattern </th><th>Matches</th></tr> <tr><td> . </td><td> any one character </td></tr> <tr><td> [abc] </td><td> a, b or c </td></tr> @@ -7114,7 +7115,7 @@ but some characters have special meaning. <tr valign=top><td> \> </td><td> the end of a word (but no characters) </td></tr> </table> Let's look at a few examples: -<table> +<table nicer> <tr><th>Regexp</th><th>Matches</th></tr> <tr><td>[0-9]+</td><td>one or more digits</td></tr> <tr><td>[^ \t\n]</td><td>exactly one non-whitespace character</td></tr> @@ -7381,7 +7382,7 @@ opens the given file as a gdbm database, if this fails for some reason, an error will be generated. If a second argument is present, it specifies how to open the database using one or more of the follow flags in a string: -<p><table border=0 cellpadding=0 cellspacing=0> +<p><table border=0 cellpadding=0 cellspacing=0 small> <tr valign=top><td> r </td><td> open database for reading </td></tr> <tr valign=top><td> w </td><td> open database for writing </td></tr> <tr valign=top><td> c </td><td> create database if it does not exist </td></tr> @@ -7781,7 +7782,7 @@ returns the packed data. Streaming can be done by calling this function several times and concatenating the returned data. The optional 'flush' argument should be one f the following: <p> -<table border=0 cellpadding=0 cellspacing=0> +<table border=0 cellpadding=0 cellspacing=0 small> <tr valign=top><td> Gz.NO_FLUSH </td><td> Only data that doesn't fit in the internal buffers is returned. </td></tr> <tr valign=top><td> Gz.PARTIAL_FLUSH </td><td> All input is packed and returned. </td></tr> <tr valign=top><td> Gz.SYNC_FLUSH </td><td> All input is packed and returned. </td></tr> @@ -11011,7 +11012,7 @@ The description is returned in an array with one entry for each call in the stack. Each entry has this format: <p> ({ -<table border=0 cellpadding=0 cellspacing=0> +<table border=0 cellpadding=0 cellspacing=0 small> <tr valign=top><td><ex_indent> file, </td><td> /* a string with the filename if known, else zero */ </td></tr> <tr valign=top><td><ex_indent> line, </td><td> /* an integer containing the line if known, else zero */ </td></tr> <tr valign=top><td><ex_indent> function, </td><td> /* The function pointer to the called function */ </td></tr> @@ -11088,7 +11089,7 @@ This function returns an array with one entry for each entry in the call out queue. The first in the queue will be in index 0. Each index contains an array that looks like this: <p>({<br> -<dl><dt><dd><table border=0 cellpadding=0 cellspacing=0> +<dl><dt><dd><table border=0 cellpadding=0 cellspacing=0 small> <tr valign=top><td> time_left, </td><td> /* an int */ </td></tr> <tr valign=top><td> caller, </td><td> /* the object that made the call out */ </td></tr> <tr valign=top><td> function, </td><td> /* the function to be called */ </td></tr>