=================================================================== RCS file: /cvs/mandoc/mdoc_man.c,v retrieving revision 1.37 retrieving revision 1.41 diff -u -p -r1.37 -r1.41 --- mandoc/mdoc_man.c 2012/07/13 20:43:40 1.37 +++ mandoc/mdoc_man.c 2012/07/16 10:45:41 1.41 @@ -1,4 +1,4 @@ -/* $Id: mdoc_man.c,v 1.37 2012/07/13 20:43:40 schwarze Exp $ */ +/* $Id: mdoc_man.c,v 1.41 2012/07/16 10:45:41 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Ingo Schwarze * @@ -1116,7 +1116,8 @@ pre_it(DECL_ARGS) outflags |= MMAN_PP | MMAN_nl; bln = n->parent->parent; if (0 == bln->norm->Bl.comp || - NULL == bln->parent->prev) + (NULL == n->parent->prev && + NULL == bln->parent->prev)) outflags |= MMAN_sp; outflags &= ~MMAN_br; switch (bln->norm->Bl.type) { @@ -1249,13 +1250,22 @@ pre_li(DECL_ARGS) static int pre_nm(DECL_ARGS) { + char *name; if (MDOC_BLOCK == n->type) pre_syn(n); if (MDOC_ELEM != n->type && MDOC_HEAD != n->type) return(1); - if (NULL == n->child && NULL == m->name) + name = n->child ? n->child->string : m->name; + if (NULL == name) return(0); + if (MDOC_HEAD == n->type) { + if (NULL == n->parent->prev) + outflags |= MMAN_sp; + print_block(".HP", 0); + printf(" %ldn", strlen(name) + 1); + outflags |= MMAN_nl; + } font_push('B'); if (NULL == n->child) print_word(m->name); @@ -1332,7 +1342,11 @@ static int pre_sp(DECL_ARGS) { - print_line(".sp", MMAN_nl); + if (MMAN_PP & outflags) { + outflags &= ~MMAN_PP; + print_line(".PP", 0); + } else + print_line(".sp", 0); return(1); }