summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-07-14 16:06:44 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-07-14 16:06:44 +0000
commite1926dad13331d995f227c3347ddcedb77fe1688 (patch)
tree4f0a6aa4402df6b45dfc6165b8bbdb19b17e17c6
parent0a3fdda2fdfc6e87b86c158cca5f54f59f302ddf (diff)
downloadmandoc-e1926dad13331d995f227c3347ddcedb77fe1688.tar.gz
Handle .Bl -compact via CSS rather than writing individual style
attributes into .It blocks; suggested by Steffen Nurpmeso <steffen at sdaoden dot eu> on <groff at GNU dot org> in April 2017. Delete margin-bottom and margin-top style names and the 'v' argument letter from print_otag() because they are no longer used.
-rw-r--r--html.c11
-rw-r--r--mandoc.css8
-rw-r--r--mandoc_html.313
-rw-r--r--mdoc_html.c43
4 files changed, 26 insertions, 49 deletions
diff --git a/html.c b/html.c
index c02739cc..c9c8088e 100644
--- a/html.c
+++ b/html.c
@@ -623,11 +623,6 @@ print_otag(struct html *h, enum htmltag tag, const char *fmt, ...)
case 'u':
su = va_arg(ap, struct roffsu *);
break;
- case 'v':
- i = va_arg(ap, int);
- su = &mysu;
- SCALE_VS_INIT(su, i);
- break;
case 'w':
if ((arg2 = va_arg(ap, char *)) == NULL)
break;
@@ -652,9 +647,6 @@ print_otag(struct html *h, enum htmltag tag, const char *fmt, ...)
/* Second letter: style name. */
switch (*fmt++) {
- case 'b':
- attr = "margin-bottom";
- break;
case 'h':
attr = "height";
break;
@@ -664,9 +656,6 @@ print_otag(struct html *h, enum htmltag tag, const char *fmt, ...)
case 'l':
attr = "margin-left";
break;
- case 't':
- attr = "margin-top";
- break;
case 'w':
attr = "width";
break;
diff --git a/mandoc.css b/mandoc.css
index afe34f44..7f874560 100644
--- a/mandoc.css
+++ b/mandoc.css
@@ -79,9 +79,13 @@ li.It-dash:before {
ul.Bl-item { list-style-type: none;
padding-left: 0em; }
li.It-item { }
+ul.Bl-compact > li {
+ margin-top: 0ex; }
ol.Bl-enum { padding-left: 2em; }
li.It-enum { }
+ol.Bl-compact > li {
+ margin-top: 0ex; }
dl.Bl-diag { }
dt.It-diag { }
@@ -108,10 +112,14 @@ dd.It-tag { width: 100%;
margin-left: 0ex;
vertical-align: top;
overflow: auto; }
+dl.Bl-compact > dt {
+ margin-top: 0ex; }
table.Bl-column { }
tr.It-column { }
td.It-column { margin-top: 1em; }
+table.Bl-compact > tbody > tr > td {
+ margin-top: 0ex; }
cite.Rs { font-style: normal;
font-weight: normal; }
diff --git a/mandoc_html.3 b/mandoc_html.3
index ee0f8bc6..d7c3f45a 100644
--- a/mandoc_html.3
+++ b/mandoc_html.3
@@ -219,11 +219,6 @@ argument, used as a style value.
Requires one
.Vt struct roffsu *
argument, used as a length.
-.It Cm v
-Requires one
-.Vt int
-argument, interpreted as a vertical length in units of
-.Dv SCALE_VS .
.It Cm w
Requires one
.Vt char *
@@ -249,10 +244,6 @@ makes the width negative by multiplying it with \-1.
.Pp
Style name letters decide what to do with the preceding argument:
.Bl -tag -width 1n -offset indent
-.It Cm b
-Set
-.Cm margin-bottom
-to the given length.
.It Cm h
Set
.Cm height
@@ -265,10 +256,6 @@ to the given length.
Set
.Cm margin-left
to the given length.
-.It Cm t
-Set
-.Cm margin-top
-to the given length.
.It Cm w
Set
.Cm width
diff --git a/mdoc_html.c b/mdoc_html.c
index a79cc0d3..be76ef5f 100644
--- a/mdoc_html.c
+++ b/mdoc_html.c
@@ -715,10 +715,7 @@ mdoc_it_pre(MDOC_ARGS)
case ROFFT_HEAD:
return 0;
case ROFFT_BODY:
- if (bl->norm->Bl.comp)
- print_otag(h, TAG_LI, "csvt", cattr, 0);
- else
- print_otag(h, TAG_LI, "c", cattr);
+ print_otag(h, TAG_LI, "c", cattr);
break;
default:
break;
@@ -730,10 +727,7 @@ mdoc_it_pre(MDOC_ARGS)
case LIST_ohang:
switch (n->type) {
case ROFFT_HEAD:
- if (bl->norm->Bl.comp)
- print_otag(h, TAG_DT, "csvt", cattr, 0);
- else
- print_otag(h, TAG_DT, "c", cattr);
+ print_otag(h, TAG_DT, "c", cattr);
if (type == LIST_diag)
print_otag(h, TAG_B, "c", cattr);
break;
@@ -780,10 +774,7 @@ mdoc_it_pre(MDOC_ARGS)
case ROFFT_HEAD:
break;
case ROFFT_BODY:
- if (bl->norm->Bl.comp)
- print_otag(h, TAG_TD, "csvt", cattr, 0);
- else
- print_otag(h, TAG_TD, "c", cattr);
+ print_otag(h, TAG_TD, "c", cattr);
break;
default:
print_otag(h, TAG_TR, "c", cattr);
@@ -798,9 +789,9 @@ mdoc_it_pre(MDOC_ARGS)
static int
mdoc_bl_pre(MDOC_ARGS)
{
+ char cattr[21];
struct tag *t;
struct mdoc_bl *bl;
- const char *cattr;
size_t i;
enum htmltag elemtype;
@@ -835,50 +826,52 @@ mdoc_bl_pre(MDOC_ARGS)
switch (bl->type) {
case LIST_bullet:
elemtype = TAG_UL;
- cattr = "Bl-bullet";
+ (void)strlcpy(cattr, "Bl-bullet", sizeof(cattr));
break;
case LIST_dash:
case LIST_hyphen:
elemtype = TAG_UL;
- cattr = "Bl-dash";
+ (void)strlcpy(cattr, "Bl-dash", sizeof(cattr));
break;
case LIST_item:
elemtype = TAG_UL;
- cattr = "Bl-item";
+ (void)strlcpy(cattr, "Bl-item", sizeof(cattr));
break;
case LIST_enum:
elemtype = TAG_OL;
- cattr = "Bl-enum";
+ (void)strlcpy(cattr, "Bl-enum", sizeof(cattr));
break;
case LIST_diag:
elemtype = TAG_DL;
- cattr = "Bl-diag";
+ (void)strlcpy(cattr, "Bl-diag", sizeof(cattr));
break;
case LIST_hang:
elemtype = TAG_DL;
- cattr = "Bl-hang";
+ (void)strlcpy(cattr, "Bl-hang", sizeof(cattr));
break;
case LIST_inset:
elemtype = TAG_DL;
- cattr = "Bl-inset";
+ (void)strlcpy(cattr, "Bl-inset", sizeof(cattr));
break;
case LIST_ohang:
elemtype = TAG_DL;
- cattr = "Bl-ohang";
+ (void)strlcpy(cattr, "Bl-ohang", sizeof(cattr));
break;
case LIST_tag:
- cattr = "Bl-tag";
if (bl->offs)
- print_otag(h, TAG_DIV, "cswl", cattr, bl->offs);
- print_otag(h, TAG_DL, "csw+l", cattr, bl->width);
+ print_otag(h, TAG_DIV, "cswl", "Bl-tag", bl->offs);
+ print_otag(h, TAG_DL, "csw+l", bl->comp ?
+ "Bl-tag Bl-compact" : "Bl-tag", bl->width);
return 1;
case LIST_column:
elemtype = TAG_TABLE;
- cattr = "Bl-column";
+ (void)strlcpy(cattr, "Bl-column", sizeof(cattr));
break;
default:
abort();
}
+ if (bl->comp)
+ (void)strlcat(cattr, " Bl-compact", sizeof(cattr));
print_otag(h, elemtype, "cswl", cattr, bl->offs);
return 1;
}