=================================================================== RCS file: /cvs/mandoc/mdoc_man.c,v retrieving revision 1.47 retrieving revision 1.51 diff -u -p -r1.47 -r1.51 --- mandoc/mdoc_man.c 2012/12/31 22:34:48 1.47 +++ mandoc/mdoc_man.c 2013/06/02 18:16:57 1.51 @@ -1,6 +1,6 @@ -/* $Id: mdoc_man.c,v 1.47 2012/12/31 22:34:48 schwarze Exp $ */ +/* $Id: mdoc_man.c,v 1.51 2013/06/02 18:16:57 schwarze Exp $ */ /* - * Copyright (c) 2011, 2012 Ingo Schwarze + * Copyright (c) 2011, 2012, 2013 Ingo Schwarze * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -182,8 +182,8 @@ static const struct manact manacts[MDOC_MAX + 1] = { { NULL, pre_bx, NULL, NULL, NULL }, /* Bx */ { NULL, NULL, NULL, NULL, NULL }, /* Db */ { NULL, NULL, NULL, NULL, NULL }, /* Dc */ - { cond_body, pre_enc, post_enc, "``", "''" }, /* Do */ - { cond_body, pre_enc, post_enc, "``", "''" }, /* Dq */ + { cond_body, pre_enc, post_enc, "\\(lq", "\\(rq" }, /* Do */ + { cond_body, pre_enc, post_enc, "\\(lq", "\\(rq" }, /* Dq */ { NULL, NULL, NULL, NULL, NULL }, /* Ec */ { NULL, NULL, NULL, NULL, NULL }, /* Ef */ { NULL, pre_em, post_font, NULL, NULL }, /* Em */ @@ -199,14 +199,14 @@ static const struct manact manacts[MDOC_MAX + 1] = { { cond_body, pre_enc, post_enc, "(", ")" }, /* Po */ { cond_body, pre_enc, post_enc, "(", ")" }, /* Pq */ { NULL, NULL, NULL, NULL, NULL }, /* Qc */ - { cond_body, pre_enc, post_enc, "`", "'" }, /* Ql */ + { cond_body, pre_enc, post_enc, "\\(oq", "\\(cq" }, /* Ql */ { cond_body, pre_enc, post_enc, "\"", "\"" }, /* Qo */ { cond_body, pre_enc, post_enc, "\"", "\"" }, /* Qq */ { NULL, NULL, NULL, NULL, NULL }, /* Re */ { cond_body, pre_rs, NULL, NULL, NULL }, /* Rs */ { NULL, NULL, NULL, NULL, NULL }, /* Sc */ - { cond_body, pre_enc, post_enc, "`", "'" }, /* So */ - { cond_body, pre_enc, post_enc, "`", "'" }, /* Sq */ + { cond_body, pre_enc, post_enc, "\\(oq", "\\(cq" }, /* So */ + { cond_body, pre_enc, post_enc, "\\(oq", "\\(cq" }, /* Sq */ { NULL, pre_sm, NULL, NULL, NULL }, /* Sm */ { NULL, pre_em, post_font, NULL, NULL }, /* Sx */ { NULL, pre_sy, post_font, NULL, NULL }, /* Sy */ @@ -408,6 +408,8 @@ print_offs(const char *v) struct roffsu su; size_t sz; + print_line(".RS", MMAN_Bk_susp); + /* Convert v into a number (of characters). */ if (NULL == v || '\0' == *v || 0 == strcmp(v, "left")) sz = 0; @@ -427,6 +429,7 @@ print_offs(const char *v) * in terms of different units. */ print_word(v); + outflags |= MMAN_nl; return; } } else @@ -441,6 +444,7 @@ print_offs(const char *v) snprintf(buf, sizeof(buf), "%ldn", sz); print_word(buf); + outflags |= MMAN_nl; } /* @@ -825,9 +829,7 @@ pre_bd(DECL_ARGS) print_line(".nf", 0); if (0 == n->norm->Bd.comp && NULL != n->parent->prev) outflags |= MMAN_sp; - print_line(".RS", MMAN_Bk_susp); print_offs(n->norm->Bd.offs); - outflags |= MMAN_nl; return(1); } @@ -899,7 +901,7 @@ static void post_bk(DECL_ARGS) { - if (MDOC_BODY == n->type) + if (MDOC_BODY == n->type && ! (MDOC_SYNPRETTY & n->flags)) outflags &= ~MMAN_Bk; } @@ -908,6 +910,16 @@ pre_bl(DECL_ARGS) { size_t icol; + /* + * print_offs() will increase the -offset to account for + * a possible enclosing .It, but any enclosed .It blocks + * just nest and do not add up their indentation. + */ + if (n->norm->Bl.offs) { + print_offs(n->norm->Bl.offs); + Bl_stack[Bl_stack_len++] = 0; + } + switch (n->norm->Bl.type) { case (LIST_enum): n->norm->Bl.count = 0; @@ -940,9 +952,17 @@ post_bl(DECL_ARGS) default: break; } - outflags |= MMAN_PP | MMAN_nl; - outflags &= ~(MMAN_sp | MMAN_br); + if (n->norm->Bl.offs) { + print_line(".RE", MMAN_nl); + assert(Bl_stack_len); + Bl_stack_len--; + assert(0 == Bl_stack[Bl_stack_len]); + } else { + outflags |= MMAN_PP | MMAN_nl; + outflags &= ~(MMAN_sp | MMAN_br); + } + /* Maybe we are inside an enclosing list? */ if (NULL != n->parent->next) mid_it(); @@ -981,9 +1001,7 @@ static int pre_dl(DECL_ARGS) { - print_line(".RS", MMAN_Bk_susp); print_offs("6n"); - outflags |= MMAN_nl; return(1); }