=================================================================== RCS file: /cvs/docbook2mdoc/docbook2mdoc.c,v retrieving revision 1.81 retrieving revision 1.82 diff -u -p -r1.81 -r1.82 --- docbook2mdoc/docbook2mdoc.c 2019/04/02 17:06:50 1.81 +++ docbook2mdoc/docbook2mdoc.c 2019/04/03 11:46:09 1.82 @@ -1,4 +1,4 @@ -/* $Id: docbook2mdoc.c,v 1.81 2019/04/02 17:06:50 schwarze Exp $ */ +/* $Id: docbook2mdoc.c,v 1.82 2019/04/03 11:46:09 schwarze Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons * Copyright (c) 2019 Ingo Schwarze @@ -540,18 +540,40 @@ pnode_printrow(struct format *p, struct pnode *pn) } static void -pnode_printtable(struct format *p, struct pnode *pn) +pnode_printtgroup1(struct format *p, struct pnode *n) { - struct pnode *pp; + struct pnode *nc; - pnode_printtitle(p, pn); + macro_line(p, "Bl -bullet -compact"); + while ((nc = pnode_findfirst(n, NODE_ENTRY)) != NULL) { + macro_line(p, "It"); + pnode_print(p, nc); + pnode_unlink(nc); + } + macro_line(p, "El"); + pnode_unlinksub(n); +} + +static void +pnode_printtgroup(struct format *p, struct pnode *n) +{ + struct pnode *nc; + + switch (atoi(pnode_getattr_raw(n, ATTRKEY_COLS, "0"))) { + case 1: + pnode_printtgroup1(p, n); + return; + default: + break; + } + macro_line(p, "Bl -ohang"); - while ((pp = pnode_findfirst(pn, NODE_ROW)) != NULL) { + while ((nc = pnode_findfirst(n, NODE_ROW)) != NULL) { macro_line(p, "It Table Row"); - pnode_printrow(p, pp); + pnode_printrow(p, nc); } macro_line(p, "El"); - pnode_unlinksub(pn); + pnode_unlinksub(n); } static void @@ -782,10 +804,6 @@ pnode_print(struct format *p, struct pnode *pn) case NODE_STRUCTNAME: macro_open(p, "Vt"); break; - case NODE_TABLE: - case NODE_INFORMALTABLE: - pnode_printtable(p, pn); - break; case NODE_TEXT: if (pn->bsz == 0) { assert(pn->real != pn->b); @@ -829,9 +847,17 @@ pnode_print(struct format *p, struct pnode *pn) putchar('e'); } break; + case NODE_TGROUP: + pnode_printtgroup(p, pn); + break; case NODE_TITLE: - if (pn->parent->node == NODE_BOOKINFO) + if (pn->parent->node == NODE_BOOKINFO) { macro_open(p, "Nd"); + break; + } + pnode_printpara(p, pn); + macro_nodeline(p, "Sy", pn, 0); + pnode_unlinksub(pn); break; case NODE_TYPE: macro_open(p, "Vt");