=================================================================== RCS file: /cvs/docbook2mdoc/docbook2mdoc.c,v retrieving revision 1.111 retrieving revision 1.112 diff -u -p -r1.111 -r1.112 --- docbook2mdoc/docbook2mdoc.c 2019/04/12 11:37:09 1.111 +++ docbook2mdoc/docbook2mdoc.c 2019/04/12 12:07:26 1.112 @@ -1,4 +1,4 @@ -/* $Id: docbook2mdoc.c,v 1.111 2019/04/12 11:37:09 schwarze Exp $ */ +/* $Id: docbook2mdoc.c,v 1.112 2019/04/12 12:07:26 schwarze Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons * Copyright (c) 2019 Ingo Schwarze @@ -830,12 +830,12 @@ static void pnode_print(struct format *f, struct pnode *n) { struct pnode *nc, *nn; - enum linestate sv; + int was_impl; if (n == NULL) return; - sv = f->linestate; + was_impl = f->flags & FMT_IMPL; if (n->spc) f->flags &= ~FMT_NOSPC; else @@ -874,7 +874,6 @@ pnode_print(struct format *f, struct pnode *n) break; case NODE_EDITOR: print_text(f, "editor:", ARG_SPACE); - sv = LINE_TEXT; macro_open(f, "An"); break; case NODE_EMAIL: @@ -922,7 +921,12 @@ pnode_print(struct format *f, struct pnode *n) pnode_printlink(f, n); break; case NODE_LITERAL: - macro_open(f, "Ql"); + if (was_impl) + macro_open(f, "So"); + else { + macro_open(f, "Ql"); + f->flags |= FMT_IMPL; + } break; case NODE_LITERALLAYOUT: macro_close(f); @@ -965,7 +969,12 @@ pnode_print(struct format *f, struct pnode *n) pnode_unlinksub(n); break; case NODE_QUOTE: - macro_open(f, "Qo"); + if (was_impl) + macro_open(f, "Do"); + else { + macro_open(f, "Dq"); + f->flags |= FMT_IMPL; + } break; case NODE_PROGRAMLISTING: case NODE_SCREEN: @@ -1051,6 +1060,12 @@ pnode_print(struct format *f, struct pnode *n) case NODE_INLINEEQUATION: macro_line(f, "EN"); break; + case NODE_LITERAL: + if (was_impl) + macro_open(f, "Sc"); + else + f->flags &= ~FMT_IMPL; + break; case NODE_MEMBER: if ((nn = TAILQ_NEXT(n, child)) != NULL && nn->node != NODE_MEMBER) @@ -1078,12 +1093,10 @@ pnode_print(struct format *f, struct pnode *n) fputs(" } ", stdout); break; case NODE_QUOTE: - if (sv == LINE_NEW) - macro_close(f); - sv = f->linestate; - macro_open(f, "Qc"); - if (sv == LINE_NEW) - macro_close(f); + if (was_impl) + macro_open(f, "Dc"); + else + f->flags &= ~FMT_IMPL; break; case NODE_PREFACE: case NODE_SECTION: