=================================================================== RCS file: /cvs/docbook2mdoc/docbook2mdoc.c,v retrieving revision 1.123 retrieving revision 1.126 diff -u -p -r1.123 -r1.126 --- docbook2mdoc/docbook2mdoc.c 2019/04/14 19:29:50 1.123 +++ docbook2mdoc/docbook2mdoc.c 2019/04/14 22:37:56 1.126 @@ -1,4 +1,4 @@ -/* $Id: docbook2mdoc.c,v 1.123 2019/04/14 19:29:50 schwarze Exp $ */ +/* $Id: docbook2mdoc.c,v 1.126 2019/04/14 22:37:56 schwarze Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons * Copyright (c) 2019 Ingo Schwarze @@ -126,6 +126,21 @@ pnode_printtext(struct format *f, struct pnode *n) } static void +pnode_printimagedata(struct format *f, struct pnode *n) +{ + const char *cp; + + if ((cp = pnode_getattr_raw(n, ATTRKEY_FILEREF, NULL)) == NULL) + cp = pnode_getattr_raw(n, ATTRKEY_ENTITYREF, NULL); + if (cp != NULL) { + print_text(f, "[image:", ARG_SPACE); + print_text(f, cp, ARG_SPACE); + print_text(f, "]", 0); + } else + print_text(f, "[image]", ARG_SPACE); +} + +static void pnode_printpara(struct format *f, struct pnode *n) { struct pnode *np; @@ -140,6 +155,7 @@ pnode_printpara(struct format *f, struct pnode *n) switch (np->node) { case NODE_ENTRY: + case NODE_FOOTNOTE: case NODE_GLOSSTERM: case NODE_LISTITEM: case NODE_TERM: @@ -1096,6 +1112,9 @@ pnode_print(struct format *f, struct pnode *n) case NODE_FILENAME: macro_open(f, "Pa"); break; + case NODE_FOOTNOTE: + macro_line(f, "Bo"); + break; case NODE_FUNCTION: macro_open(f, "Fn"); break; @@ -1105,6 +1124,9 @@ pnode_print(struct format *f, struct pnode *n) case NODE_FUNCSYNOPSISINFO: macro_open(f, "Fd"); break; + case NODE_IMAGEDATA: + pnode_printimagedata(f, n); + break; case NODE_INFORMALEQUATION: macro_line(f, "Bd -ragged -offset indent"); /* FALLTHROUGH */ @@ -1224,6 +1246,19 @@ pnode_print(struct format *f, struct pnode *n) case NODE_SBR: macro_line(f, "br"); break; + case NODE_SUBSCRIPT: + if (f->linestate == LINE_MACRO) + macro_addarg(f, "_", 0); + else + print_text(f, "_", 0); + if ((nc = TAILQ_FIRST(&n->childq)) != NULL) + nc->spc = 0; + break; + case NODE_SUPERSCRIPT: + fputs("\\(ha", stdout); + if ((nc = TAILQ_FIRST(&n->childq)) != NULL) + nc->spc = 0; + break; case NODE_TEXT: case NODE_ESCAPE: pnode_printtext(f, n); @@ -1266,6 +1301,9 @@ pnode_print(struct format *f, struct pnode *n) case NODE_TEXT: /* Accept more arguments to the previous macro. */ return; + case NODE_FOOTNOTE: + macro_line(f, "Bc"); + break; case NODE_INFORMALEQUATION: macro_line(f, "EN"); macro_line(f, "Ed");