=================================================================== RCS file: /cvs/mandoc/mdoc_html.c,v retrieving revision 1.199 retrieving revision 1.201 diff -u -p -r1.199 -r1.201 --- mandoc/mdoc_html.c 2014/08/21 12:57:17 1.199 +++ mandoc/mdoc_html.c 2014/09/27 09:02:19 1.201 @@ -1,4 +1,4 @@ -/* $Id: mdoc_html.c,v 1.199 2014/08/21 12:57:17 schwarze Exp $ */ +/* $Id: mdoc_html.c,v 1.201 2014/09/27 09:02:19 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2014 Ingo Schwarze @@ -484,13 +484,12 @@ print_mdoc_node(MDOC_ARGS) static void mdoc_root_post(MDOC_ARGS) { - struct htmlpair tag[3]; + struct htmlpair tag[2]; struct tag *t, *tt; PAIR_SUMMARY_INIT(&tag[0], "Document Footer"); PAIR_CLASS_INIT(&tag[1], "foot"); - PAIR_INIT(&tag[2], ATTR_WIDTH, "100%"); - t = print_otag(h, TAG_TABLE, 3, tag); + t = print_otag(h, TAG_TABLE, 2, tag); PAIR_INIT(&tag[0], ATTR_WIDTH, "50%"); print_otag(h, TAG_COL, 1, tag); print_otag(h, TAG_COL, 1, tag); @@ -514,7 +513,7 @@ mdoc_root_post(MDOC_ARGS) static int mdoc_root_pre(MDOC_ARGS) { - struct htmlpair tag[3]; + struct htmlpair tag[2]; struct tag *t, *tt; char *volume, *title; @@ -532,8 +531,7 @@ mdoc_root_pre(MDOC_ARGS) PAIR_SUMMARY_INIT(&tag[0], "Document Header"); PAIR_CLASS_INIT(&tag[1], "head"); - PAIR_INIT(&tag[2], ATTR_WIDTH, "100%"); - t = print_otag(h, TAG_TABLE, 3, tag); + t = print_otag(h, TAG_TABLE, 2, tag); PAIR_INIT(&tag[0], ATTR_WIDTH, "30%"); print_otag(h, TAG_COL, 1, tag); print_otag(h, TAG_COL, 1, tag); @@ -570,12 +568,18 @@ mdoc_sh_pre(MDOC_ARGS) { struct htmlpair tag; - if (MDOC_BLOCK == n->type) { + switch (n->type) { + case MDOC_BLOCK: PAIR_CLASS_INIT(&tag, "section"); print_otag(h, TAG_DIV, 1, &tag); return(1); - } else if (MDOC_BODY == n->type) + case MDOC_BODY: + if (n->sec == SEC_AUTHORS) + h->flags &= ~(HTML_SPLIT|HTML_NOSPLIT); return(1); + default: + break; + } bufinit(h); bufcat(h, "x"); @@ -1258,7 +1262,25 @@ mdoc_an_pre(MDOC_ARGS) { struct htmlpair tag; - /* TODO: -split and -nosplit (see termp_an_pre()). */ + if (n->norm->An.auth == AUTH_split) { + h->flags &= ~HTML_NOSPLIT; + h->flags |= HTML_SPLIT; + return(0); + } + if (n->norm->An.auth == AUTH_nosplit) { + h->flags &= ~HTML_SPLIT; + h->flags |= HTML_NOSPLIT; + return(0); + } + + if (n->child == NULL) + return(0); + + if (h->flags & HTML_SPLIT) + print_otag(h, TAG_BR, 0, NULL); + + if (n->sec == SEC_AUTHORS && ! (h->flags & HTML_NOSPLIT)) + h->flags |= HTML_SPLIT; PAIR_CLASS_INIT(&tag, "author"); print_otag(h, TAG_SPAN, 1, &tag);