summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-12-17 00:18:29 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-12-17 00:18:29 +0000
commit399d7ac77fc9850e46aaad716704be41f355d620 (patch)
tree50ed3f14e1a18d9ca4e75c0b6bddde7c8e741005
parent7ae486d54de6a3c8af11d503246eee057b2b8f88 (diff)
downloadmandoc-399d7ac77fc9850e46aaad716704be41f355d620.tar.gz
Significantly clean up Sh, Ss, SH, and SS handling in -Thtml. Now a
top-level DIV is used with only an H1 or H2 as the section header. This makes manuals much more readable in lynx, less complicated, and relegates left-margin widths to example.style.css.
-rw-r--r--example.style.css12
-rw-r--r--man_html.c68
-rw-r--r--mdoc_html.c91
3 files changed, 38 insertions, 133 deletions
diff --git a/example.style.css b/example.style.css
index 22fabb02..089495c1 100644
--- a/example.style.css
+++ b/example.style.css
@@ -1,18 +1,14 @@
/* $Id$ */
html { min-width: 580px; width: 580px; }
-
body { font-family: monospace; }
/* Sections. */
-div.sec-head { font-style: normal; font-weight: bold; } /* Sections (Sh). */
-div.sec-body { }
-div.sec-block { }
-
-div.ssec-head { font-style: normal; font-weight: bold; } /* Sub-sections (Ss). */
-div.ssec-body { }
-div.ssec-block { }
+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). */
/* Vertical spacing. */
diff --git a/man_html.c b/man_html.c
index accd77be..b2350c13 100644
--- a/man_html.c
+++ b/man_html.c
@@ -375,35 +375,16 @@ man_br_pre(MAN_ARGS)
static int
man_SH_pre(MAN_ARGS)
{
- struct htmlpair tag[2];
- struct roffsu su;
+ struct htmlpair tag;
- if (MAN_BODY == n->type) {
- SCALE_HS_INIT(&su, INDENT);
- bufcat_su(h, "margin-left", &su);
- PAIR_CLASS_INIT(&tag[0], "sec-body");
- PAIR_STYLE_INIT(&tag[1], h);
- print_otag(h, TAG_DIV, 2, tag);
+ if (MAN_BLOCK == n->type) {
+ PAIR_CLASS_INIT(&tag, "section");
+ print_otag(h, TAG_DIV, 1, &tag);
return(1);
- } else if (MAN_BLOCK == n->type) {
- PAIR_CLASS_INIT(&tag[0], "sec-block");
- if (n->prev && MAN_SH == n->prev->tok)
- if (NULL == n->prev->body->child) {
- print_otag(h, TAG_DIV, 1, tag);
- return(1);
- }
-
- SCALE_VS_INIT(&su, 1);
- bufcat_su(h, "margin-top", &su);
- if (NULL == n->next)
- bufcat_su(h, "margin-bottom", &su);
- PAIR_STYLE_INIT(&tag[1], h);
- print_otag(h, TAG_DIV, 2, tag);
+ } else if (MAN_BODY == n->type)
return(1);
- }
- PAIR_CLASS_INIT(&tag[0], "sec-head");
- print_otag(h, TAG_DIV, 1, tag);
+ print_otag(h, TAG_H1, 0, NULL);
return(1);
}
@@ -488,41 +469,16 @@ man_SM_pre(MAN_ARGS)
static int
man_SS_pre(MAN_ARGS)
{
- struct htmlpair tag[3];
- struct roffsu su;
-
- SCALE_VS_INIT(&su, 1);
-
- if (MAN_BODY == n->type) {
- PAIR_CLASS_INIT(&tag[0], "ssec-body");
- if (n->parent->next && n->child) {
- bufcat_su(h, "margin-bottom", &su);
- PAIR_STYLE_INIT(&tag[1], h);
- print_otag(h, TAG_DIV, 2, tag);
- return(1);
- }
+ struct htmlpair tag;
- print_otag(h, TAG_DIV, 1, tag);
+ if (MAN_BLOCK == n->type) {
+ PAIR_CLASS_INIT(&tag, "subsection");
+ print_otag(h, TAG_DIV, 1, &tag);
return(1);
- } else if (MAN_BLOCK == n->type) {
- PAIR_CLASS_INIT(&tag[0], "ssec-block");
- if (n->prev && MAN_SS == n->prev->tok)
- if (n->prev->body->child) {
- bufcat_su(h, "margin-top", &su);
- PAIR_STYLE_INIT(&tag[1], h);
- print_otag(h, TAG_DIV, 2, tag);
- return(1);
- }
-
- print_otag(h, TAG_DIV, 1, tag);
+ } else if (MAN_BODY == n->type)
return(1);
- }
- SCALE_HS_INIT(&su, INDENT - HALFINDENT);
- bufcat_su(h, "margin-left", &su);
- PAIR_CLASS_INIT(&tag[0], "ssec-head");
- PAIR_STYLE_INIT(&tag[1], h);
- print_otag(h, TAG_DIV, 2, tag);
+ print_otag(h, TAG_H2, 0, NULL);
return(1);
}
diff --git a/mdoc_html.c b/mdoc_html.c
index 343d809d..9db19470 100644
--- a/mdoc_html.c
+++ b/mdoc_html.c
@@ -557,46 +557,25 @@ mdoc_root_pre(MDOC_ARGS)
static int
mdoc_sh_pre(MDOC_ARGS)
{
- struct htmlpair tag[2];
- const struct mdoc_node *nn;
- char buf[BUFSIZ];
- struct roffsu su;
+ struct htmlpair tag;
+ char buf[BUFSIZ];
- if (MDOC_BODY == n->type) {
- SCALE_HS_INIT(&su, INDENT);
- bufcat_su(h, "margin-left", &su);
- PAIR_CLASS_INIT(&tag[0], "sec-body");
- PAIR_STYLE_INIT(&tag[1], h);
- print_otag(h, TAG_DIV, 2, tag);
+ if (MDOC_BLOCK == n->type) {
+ PAIR_CLASS_INIT(&tag, "section");
+ print_otag(h, TAG_DIV, 1, &tag);
return(1);
- } else if (MDOC_BLOCK == n->type) {
- PAIR_CLASS_INIT(&tag[0], "sec-block");
- if (n->prev && NULL == n->prev->body->child) {
- print_otag(h, TAG_DIV, 1, tag);
- return(1);
- }
-
- SCALE_VS_INIT(&su, 1);
- bufcat_su(h, "margin-top", &su);
- if (NULL == n->next)
- bufcat_su(h, "margin-bottom", &su);
-
- PAIR_STYLE_INIT(&tag[1], h);
- print_otag(h, TAG_DIV, 2, tag);
+ } else if (MDOC_BODY == n->type)
return(1);
- }
buf[0] = '\0';
- for (nn = n->child; nn; nn = nn->next) {
- html_idcat(buf, nn->string, BUFSIZ);
- if (nn->next)
+ for (n = n->child; n; n = n->next) {
+ html_idcat(buf, n->string, BUFSIZ);
+ if (n->next)
html_idcat(buf, " ", BUFSIZ);
}
- PAIR_CLASS_INIT(&tag[0], "sec-head");
- PAIR_ID_INIT(&tag[1], buf);
-
- print_otag(h, TAG_DIV, 2, tag);
+ PAIR_ID_INIT(&tag, buf);
+ print_otag(h, TAG_H1, 1, &tag);
return(1);
}
@@ -605,51 +584,25 @@ mdoc_sh_pre(MDOC_ARGS)
static int
mdoc_ss_pre(MDOC_ARGS)
{
- struct htmlpair tag[3];
- const struct mdoc_node *nn;
- char buf[BUFSIZ];
- struct roffsu su;
-
- SCALE_VS_INIT(&su, 1);
+ struct htmlpair tag;
+ char buf[BUFSIZ];
- if (MDOC_BODY == n->type) {
- PAIR_CLASS_INIT(&tag[0], "ssec-body");
- if (n->parent->next && n->child) {
- bufcat_su(h, "margin-bottom", &su);
- PAIR_STYLE_INIT(&tag[1], h);
- print_otag(h, TAG_DIV, 2, tag);
- } else
- print_otag(h, TAG_DIV, 1, tag);
+ if (MDOC_BLOCK == n->type) {
+ PAIR_CLASS_INIT(&tag, "subsection");
+ print_otag(h, TAG_DIV, 1, &tag);
return(1);
- } else if (MDOC_BLOCK == n->type) {
- PAIR_CLASS_INIT(&tag[0], "ssec-block");
- if (n->prev) {
- bufcat_su(h, "margin-top", &su);
- PAIR_STYLE_INIT(&tag[1], h);
- print_otag(h, TAG_DIV, 2, tag);
- } else
- print_otag(h, TAG_DIV, 1, tag);
+ } else if (MDOC_BODY == n->type)
return(1);
- }
-
- /* TODO: see note in mdoc_sh_pre() about duplicates. */
buf[0] = '\0';
- for (nn = n->child; nn; nn = nn->next) {
- html_idcat(buf, nn->string, BUFSIZ);
- if (nn->next)
+ for (n = n->child; n; n = n->next) {
+ html_idcat(buf, n->string, BUFSIZ);
+ if (n->next)
html_idcat(buf, " ", BUFSIZ);
}
- SCALE_HS_INIT(&su, INDENT - HALFINDENT);
- su.scale = -su.scale;
- bufcat_su(h, "margin-left", &su);
-
- PAIR_CLASS_INIT(&tag[0], "ssec-head");
- PAIR_STYLE_INIT(&tag[1], h);
- PAIR_ID_INIT(&tag[2], buf);
-
- print_otag(h, TAG_DIV, 3, tag);
+ PAIR_ID_INIT(&tag, buf);
+ print_otag(h, TAG_H2, 1, &tag);
return(1);
}