summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-12-17 01:02:00 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-12-17 01:02:00 +0000
commit27d313e4174a4d5bdd74270ad96e4215b0eed47f (patch)
tree7c729569929c4c93315a662016ef1cdd23fa4b64
parent399d7ac77fc9850e46aaad716704be41f355d620 (diff)
downloadmandoc-27d313e4174a4d5bdd74270ad96e4215b0eed47f.tar.gz
Make SYNOPSIS `Nm' use a TABLE in -T[x]html mode. Also fix `Nd' using
desc-body instead of desc as its CSS key.
-rw-r--r--example.style.css10
-rw-r--r--mdoc_html.c86
2 files changed, 39 insertions, 57 deletions
diff --git a/example.style.css b/example.style.css
index 089495c1..f3c4959e 100644
--- a/example.style.css
+++ b/example.style.css
@@ -3,12 +3,19 @@
html { min-width: 580px; width: 580px; }
body { font-family: monospace; }
+/* Preamble structure. */
+
+table.footer { } /* Document footer. */
+table.header { } /* Document header. */
+
/* Sections. */
h1 { font-size: medium; margin-left: -4ex; } /* Section header (Sh, SH). */
h2 { font-size: medium; margin-left: -2ex; } /* Sub-section header (Ss, SS). */
div.section { margin-bottom: 3ex; margin-left: 4ex; } /* Sections (Sh, SH). */
div.subsection { } /* Sub-sections (Ss, SS). */
+table.synopsis { } /* SYNOPSIS section table. */
+table.synopsis td { vertical-align: top; } /* SYNOPSIS section table. */
/* Vertical spacing. */
@@ -72,9 +79,6 @@ a.link-man { } /* Manual links (Xr). */
a.link-ref { } /* Reference section links (%Q). */
a.link-sec { } /* Section links (Sx). */
-table.footer { } /* Document footer. */
-table.header { } /* Document header. */
-
/* Formatting for lists. */
dl.list-diag { }
diff --git a/mdoc_html.c b/mdoc_html.c
index 9db19470..91a6c40c 100644
--- a/mdoc_html.c
+++ b/mdoc_html.c
@@ -644,7 +644,7 @@ mdoc_nd_pre(MDOC_ARGS)
/* XXX: this tag in theory can contain block elements. */
print_text(h, "\\(em");
- PAIR_CLASS_INIT(&tag, "desc-body");
+ PAIR_CLASS_INIT(&tag, "desc");
print_otag(h, TAG_SPAN, 1, &tag);
return(1);
}
@@ -655,68 +655,46 @@ mdoc_nm_pre(MDOC_ARGS)
{
struct htmlpair tag;
struct roffsu su;
- const char *cp;
+ size_t len;
- /*
- * Accomodate for `Nm' being both an element (which may have
- * NULL children AND no m->name) and a block.
- */
-
- cp = NULL;
-
- if (MDOC_ELEM == n->type) {
- if (NULL == n->child && NULL == m->name)
- return(1);
+ switch (n->type) {
+ case (MDOC_ELEM):
synopsis_pre(h, n);
PAIR_CLASS_INIT(&tag, "name");
print_otag(h, TAG_SPAN, 1, &tag);
- if (NULL == n->child)
+ if (NULL == n->child && m->name)
print_text(h, m->name);
- } else if (MDOC_BLOCK == n->type) {
- synopsis_pre(h, n);
-
- bufcat_style(h, "clear", "both");
- if (n->head->child || m->name) {
- if (n->head->child && MDOC_TEXT ==
- n->head->child->type)
- cp = n->head->child->string;
- if (NULL == cp || '\0' == *cp)
- cp = m->name;
-
- SCALE_HS_INIT(&su, (double)strlen(cp));
- bufcat_su(h, "padding-left", &su);
- }
-
- PAIR_STYLE_INIT(&tag, h);
- print_otag(h, TAG_DIV, 1, &tag);
- } else if (MDOC_HEAD == n->type) {
- if (NULL == n->child && NULL == m->name)
- return(1);
-
- if (n->child && MDOC_TEXT == n->child->type)
- cp = n->child->string;
- if (NULL == cp || '\0' == *cp)
- cp = m->name;
-
- SCALE_HS_INIT(&su, (double)strlen(cp));
+ return(1);
+ case (MDOC_HEAD):
+ print_otag(h, TAG_TD, 0, NULL);
+ if (NULL == n->child && m->name)
+ print_text(h, m->name);
+ return(1);
+ case (MDOC_BODY):
+ print_otag(h, TAG_TD, 0, NULL);
+ return(1);
+ default:
+ break;
+ }
- bufcat_style(h, "float", "left");
- bufcat_su(h, "min-width", &su);
- SCALE_INVERT(&su);
- bufcat_su(h, "margin-left", &su);
+ synopsis_pre(h, n);
+ PAIR_CLASS_INIT(&tag, "synopsis");
+ print_otag(h, TAG_TABLE, 1, &tag);
- PAIR_STYLE_INIT(&tag, h);
- print_otag(h, TAG_DIV, 1, &tag);
+ for (len = 0, n = n->child; n; n = n->next)
+ if (MDOC_TEXT == n->type)
+ len += strlen(n->string);
- if (NULL == n->child)
- print_text(h, m->name);
- } else if (MDOC_BODY == n->type) {
- SCALE_HS_INIT(&su, 2);
- bufcat_su(h, "margin-left", &su);
- PAIR_STYLE_INIT(&tag, h);
- print_otag(h, TAG_DIV, 1, &tag);
- }
+ if (0 == len && m->name)
+ len = strlen(m->name);
+ SCALE_HS_INIT(&su, (double)len);
+ bufcat_su(h, "width", &su);
+ PAIR_STYLE_INIT(&tag, h);
+ print_otag(h, TAG_COL, 1, &tag);
+ print_otag(h, TAG_COL, 0, NULL);
+ print_otag(h, TAG_TBODY, 0, NULL);
+ print_otag(h, TAG_TR, 0, NULL);
return(1);
}