+<functions>
+<function name="informaltable">
+<![CDATA[
+# initialize output
+out = ""
+# eval colums
+(ctl,elem, value, attrs) = source.extractElement(XMLE.EC_BEG) # reads tgroup
+if elem != "tgroup":
+ raise RuntimeError("unknown elem, <tgroup> expected in <informaltable>: "+elem)
+cols = int(attrs["cols"])
+colsep = ""
+if attrs["colsep"] == "1":
+ colsep = "|"
+rowsep = False
+if attrs["rowsep"] == "1":
+ rowsep = True
+align = "r"
+if attrs["align"] == "left":
+ align = "l"
+align_arr = cols*[align]
+(ctl,elem, value, attrs) = source.extractElement(XMLE.EC_BEG) # searches tbody
+while ctl != XMLE.EC_END:
+
+ if elem == "colspec": # colspec found
+ if "colwidth" in attrs:
+ align_arr[int(attrs["colnum"])-1] = "p{"+attrs["colwidth"]+"}"
+
+ if elem == "tbody": # tbody found
+ out += r"\begin{tabular}{"
+ tmp_colsep = ""
+ for i in range(cols):
+ out += tmp_colsep + align_arr[i]
+ tmp_colsep = colsep
+ out += "}\n"
+ (ctl1,elem, value, attrs) = source.extractElement(XMLE.EC_BEG) # reads row
+ while ctl1 != XMLE.EC_END:
+ if elem != "row":
+ raise RuntimeError("Only <row> expected in <tbody>: "+elem)
+ (ctl2,elem, value,attrs) = source.extractElement(XMLE.EC_BEG) # reads entry
+ entry_sep = ""
+ while ctl2 != XMLE.EC_END:
+ if not value:
+ value = ""
+ if elem != "entry":
+ raise RuntimeError("Only <entry> expected in <row>: "+elem)
+ # check for further elems
+ (ctl3,elem,value3,attrs3) = source.extractElement(XMLE.EC_BEG)
+ line_sep = ""
+ while ctl3 != XMLE.EC_END:
+ if elem != "line": # only lines expected
+ raise RuntimeError("Only <line> expected in <entry: "+elem)
+ value += line_sep + value3
+ line_sep = " \par\n"
+ (ctl3,elem3,value3,attrs3) = source.extractElement(ctl3)
+ out += entry_sep + value
+ entry_sep = " & "
+ (ctl2,elem, value, attrs) = source.extractElement(ctl2) # reads entry
+ out += r" \\" + "\n"
+ (ctl1,elem, value, attrs) = source.extractElement(ctl1) # reads row
+ out += r"\end{tabular}"+"\n\n"
+ (ctl,elem, value, attrs) = source.extractElement(ctl) # searches tbody
+]]></function>
+</functions>
+<global>
+<informaltable exec="informaltable"/>
+<para pre="\n"/>
+<emphasis pre="\emph{" post="}" end=""/>
+<item end=" "/>
+</global>
+