=================================================================== RCS file: /cvs/docbook2mdoc/macro.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -p -r1.13 -r1.14 --- docbook2mdoc/macro.c 2019/04/14 23:59:11 1.13 +++ docbook2mdoc/macro.c 2019/04/16 14:26:27 1.14 @@ -1,4 +1,4 @@ -/* $Id: macro.c,v 1.13 2019/04/14 23:59:11 schwarze Exp $ */ +/* $Id: macro.c,v 1.14 2019/04/16 14:26:27 schwarze Exp $ */ /* * Copyright (c) 2019 Ingo Schwarze * @@ -30,6 +30,13 @@ void macro_open(struct format *f, const char *name) { + if (f->parastate == PARA_WANT) { + if (f->linestate != LINE_NEW) { + putchar('\n'); + f->linestate = LINE_NEW; + } + puts(".Pp"); + } switch (f->linestate) { case LINE_MACRO: if (f->flags & FMT_NOSPC) { @@ -53,6 +60,7 @@ macro_open(struct format *f, const char *name) fputs(name, stdout); f->flags &= FMT_IMPL; f->flags |= FMT_ARG; + f->parastate = PARA_MID; } void @@ -138,6 +146,7 @@ macro_addarg(struct format *f, const char *arg, int fl } if (quote_now) putchar('"'); + f->parastate = PARA_MID; } void @@ -170,6 +179,7 @@ macro_addnode(struct format *f, struct pnode *n, int f if (n->node == NODE_TEXT || n->node == NODE_ESCAPE) { macro_addarg(f, n->b, flags); + f->parastate = PARA_MID; return; } @@ -204,6 +214,7 @@ macro_addnode(struct format *f, struct pnode *n, int f } if (quote_now) putchar('"'); + f->parastate = PARA_MID; } void @@ -222,6 +233,13 @@ macro_nodeline(struct format *f, const char *name, str void print_text(struct format *f, const char *word, int flags) { + if (f->parastate == PARA_WANT) { + if (f->linestate != LINE_NEW) { + putchar('\n'); + f->linestate = LINE_NEW; + } + puts(".Pp"); + } switch (f->linestate) { case LINE_NEW: break; @@ -241,6 +259,7 @@ print_text(struct format *f, const char *word, int fla putchar('e'); } f->linestate = LINE_TEXT; + f->parastate = PARA_MID; f->flags = 0; }