After years of gnashing of teeth, i finally found a way to avoid
authorschwarze <schwarze@openbsd.org>
Thu, 10 Jan 2019 07:39:39 +0000 (07:39 +0000)
committerschwarze <schwarze@openbsd.org>
Thu, 10 Jan 2019 07:39:39 +0000 (07:39 +0000)
having to write empty list elements for non-compact .Bl -tag lists:

1. Add margin-bottom to the <dd>.
Note that margin-top on the <dt> doesn't work because it would put
a short <dt> lower than the <dd>; margin-bottom on the <dt> doesn't
work because it would put vertical space before the <dd> for a long
<dt>; and margin-top on the <dd> doesn't work because it would put
a short <dt> higher than the <dd>.  Only margin-bottom on the <dd>
has none of these adverse effects.

2. Of course, margin-bottom on the <dd> fails to take care of the
vertical spacing before the first list element, so implement that
separately by margin-top on the <dl>.

3. For .Bl -tag -compact, reset both to zero.

usr.bin/mandoc/mandoc.css
usr.bin/mandoc/mdoc_html.c

index c3bbccc..d5dba65 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: mandoc.css,v 1.29 2018/12/04 06:11:44 schwarze Exp $ */
+/* $OpenBSD: mandoc.css,v 1.30 2019/01/10 07:39:39 schwarze Exp $ */
 /*
  * Standard style sheet for mandoc(1) -Thtml and man.cgi(8).
  *
@@ -119,7 +119,8 @@ td.foot-os {        text-align: right; }
 .Bl-ohang > dt { }
 .Bl-ohang > dd {
                margin-left: 0em; }
-.Bl-tag {      margin-left: 5.5em; }
+.Bl-tag {      margin-top: 0.6em;
+               margin-left: 5.5em; }
 .Bl-tag > dt {
                float: left;
                margin-top: 0em;
@@ -131,8 +132,12 @@ td.foot-os {       text-align: right; }
                width: 100%;
                margin-top: 0em;
                margin-left: 0em;
+               margin-bottom: 0.6em;
                vertical-align: top;
                overflow: auto; }
+.Bl-compact {  margin-top: 0em; }
+.Bl-compact > dd {
+               margin-bottom: 0em; }
 .Bl-compact > dt {
                margin-top: 0em; }
 
index 885972d..617b9f6 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mdoc_html.c,v 1.198 2019/01/07 06:51:37 schwarze Exp $ */
+/*     $OpenBSD: mdoc_html.c,v 1.199 2019/01/10 07:39:39 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2014,2015,2016,2017,2018 Ingo Schwarze <schwarze@openbsd.org>
@@ -739,7 +739,6 @@ static int
 mdoc_it_pre(MDOC_ARGS)
 {
        const struct roff_node  *bl;
-       struct tag              *t;
        enum mdoc_list           type;
 
        bl = n->parent;
@@ -781,17 +780,6 @@ mdoc_it_pre(MDOC_ARGS)
        case LIST_tag:
                switch (n->type) {
                case ROFFT_HEAD:
-                       if (h->style != NULL && !bl->norm->Bl.comp &&
-                           (n->parent->prev == NULL ||
-                            n->parent->prev->body == NULL ||
-                            n->parent->prev->body->child != NULL)) {
-                               t = print_otag(h, TAG_DT, "");
-                               print_text(h, "\\ ");
-                               print_tagq(h, t);
-                               t = print_otag(h, TAG_DD, "");
-                               print_text(h, "\\ ");
-                               print_tagq(h, t);
-                       }
                        print_otag(h, TAG_DT, "");
                        break;
                case ROFFT_BODY: