=================================================================== RCS file: /cvs/docbook2mdoc/docbook2mdoc.c,v retrieving revision 1.120 retrieving revision 1.123 diff -u -p -r1.120 -r1.123 --- docbook2mdoc/docbook2mdoc.c 2019/04/14 14:00:16 1.120 +++ docbook2mdoc/docbook2mdoc.c 2019/04/14 19:29:50 1.123 @@ -1,4 +1,4 @@ -/* $Id: docbook2mdoc.c,v 1.120 2019/04/14 14:00:16 schwarze Exp $ */ +/* $Id: docbook2mdoc.c,v 1.123 2019/04/14 19:29:50 schwarze Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons * Copyright (c) 2019 Ingo Schwarze @@ -210,19 +210,22 @@ pnode_printsection(struct format *f, struct pnode *n) level = ++f->level; flags = ARG_SPACE; - if (level == 1) - flags |= ARG_UPPER; - if (level < 3) { - switch (n->node) { - case NODE_CAUTION: - case NODE_NOTE: - case NODE_TIP: - case NODE_WARNING: + switch (n->node) { + case NODE_PREFACE: + case NODE_SECTION: + case NODE_APPENDIX: + if (level == 1) + flags |= ARG_UPPER; + break; + case NODE_SIMPLESECT: + case NODE_LEGALNOTICE: + if (level < 2) + level = 2; + break; + default: + if (level < 3) level = 3; - break; - default: - break; - } + break; } TAILQ_FOREACH(nc, &n->childq, child) @@ -1061,9 +1064,13 @@ pnode_print(struct format *f, struct pnode *n) case NODE_CONSTANT: macro_open(f, "Dv"); break; + case NODE_COPYRIGHT: + print_text(f, "Copyright", ARG_SPACE); + fputs(" \\(co", stdout); + break; case NODE_EDITOR: print_text(f, "editor:", ARG_SPACE); - macro_open(f, "An"); + pnode_printauthor(f, n); break; case NODE_EMAIL: if (was_impl) @@ -1076,7 +1083,9 @@ pnode_print(struct format *f, struct pnode *n) case NODE_EMPHASIS: case NODE_FIRSTTERM: case NODE_GLOSSTERM: - macro_open(f, "Em"); + if ((nc = TAILQ_FIRST(&n->childq)) != NULL && + pnode_class(nc->node) < CLASS_LINE) + macro_open(f, "Em"); break; case NODE_ENVAR: macro_open(f, "Ev"); @@ -1115,8 +1124,10 @@ pnode_print(struct format *f, struct pnode *n) pnode_printlink(f, n); break; case NODE_LITERAL: - if (was_impl) - macro_open(f, "So"); + if (n->parent != NULL && n->parent->node == NODE_QUOTE) + macro_open(f, "Li"); + else if (was_impl) + macro_open(f, "So Li"); else { macro_open(f, "Ql"); f->flags |= FMT_IMPL; @@ -1147,7 +1158,9 @@ pnode_print(struct format *f, struct pnode *n) pnode_printmath(f, n); break; case NODE_OPTION: - macro_open(f, "Fl"); + if ((nc = TAILQ_FIRST(&n->childq)) != NULL && + pnode_class(nc->node) < CLASS_LINE) + macro_open(f, "Fl"); break; case NODE_ORDEREDLIST: pnode_printlist(f, n); @@ -1196,6 +1209,7 @@ pnode_print(struct format *f, struct pnode *n) break; case NODE_PREFACE: case NODE_SECTION: + case NODE_SIMPLESECT: case NODE_APPENDIX: case NODE_LEGALNOTICE: case NODE_NOTE: @@ -1218,6 +1232,7 @@ pnode_print(struct format *f, struct pnode *n) pnode_printtgroup(f, n); break; case NODE_TITLE: + case NODE_SUBTITLE: pnode_printpara(f, n); macro_nodeline(f, "Sy", n, 0); pnode_unlinksub(n); @@ -1259,7 +1274,9 @@ pnode_print(struct format *f, struct pnode *n) macro_line(f, "EN"); break; case NODE_LITERAL: - if (was_impl) { + if (n->parent != NULL && n->parent->node == NODE_QUOTE) + /* nothing */; + else if (was_impl) { f->flags &= ~FMT_NOSPC; macro_open(f, "Sc"); } else