summaryrefslogtreecommitdiffstats
path: root/mdoc_html.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdoc_html.c')
-rw-r--r--mdoc_html.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/mdoc_html.c b/mdoc_html.c
index 8e5ce783..d9976f12 100644
--- a/mdoc_html.c
+++ b/mdoc_html.c
@@ -507,8 +507,8 @@ cond_id(const struct roff_node *n)
static int
mdoc_sh_pre(MDOC_ARGS)
{
- struct roff_node *sn;
- struct tag *t, *tt;
+ struct roff_node *sn, *subn;
+ struct tag *t, *tsec, *tsub;
char *id;
int sc;
@@ -530,13 +530,29 @@ mdoc_sh_pre(MDOC_ARGS)
print_text(h, "TABLE OF CONTENTS");
print_tagq(h, t);
t = print_otag(h, TAG_UL, "c", "Bl-compact");
- for (sn = n->next; sn != NULL; sn = sn->next) {
+ for (sn = n; sn != NULL; sn = sn->next) {
+ tsec = print_otag(h, TAG_LI, "");
id = html_make_id(sn->head, 0);
- tt = print_otag(h, TAG_LI, "");
print_otag(h, TAG_A, "hR", id);
- print_mdoc_nodelist(meta, sn->head->child, h);
- print_tagq(h, tt);
free(id);
+ print_mdoc_nodelist(meta, sn->head->child, h);
+ tsub = NULL;
+ for (subn = sn->body->child; subn != NULL;
+ subn = subn->next) {
+ if (subn->tok != MDOC_Ss)
+ continue;
+ if (tsub == NULL)
+ print_otag(h, TAG_UL,
+ "c", "Bl-compact");
+ tsub = print_otag(h, TAG_LI, "");
+ id = html_make_id(subn->head, 0);
+ print_otag(h, TAG_A, "hR", id);
+ free(id);
+ print_mdoc_nodelist(meta,
+ subn->head->child, h);
+ print_tagq(h, tsub);
+ }
+ print_tagq(h, tsec);
}
print_tagq(h, t);
break;