diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-01-13 14:30:13 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-01-13 14:30:13 +0000 |
commit | 85474e8c235db9ab473084a381b03aeb8422a12d (patch) | |
tree | 0302ed33798c6aa009545379a6a14cddbc71c4b2 /html.c | |
parent | b9b8f8cdfe53fa8d9f13f22beb2ec50f83a231d8 (diff) | |
download | mandoc-85474e8c235db9ab473084a381b03aeb8422a12d.tar.gz |
Change how -Thtml behaves with tables: use multiple rows, with widths
set by COL, until an external macro is encountered. At this point in
time, close out the table and process the macro. When the first table
row is again re-encountered, re-start the table. This requires a bit of
tracking added to "struct html", but the change is very small and
follows the logic of meta-fonts. This all follows a bug-report by
joerg@.
Diffstat (limited to 'html.c')
-rw-r--r-- | html.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -90,6 +90,7 @@ static const char *const htmlattrs[ATTR_MAX] = { "id", /* ATTR_ID */ "summary", /* ATTR_SUMMARY */ "align", /* ATTR_ALIGN */ + "colspan", /* ATTR_COLSPAN */ }; static void print_spec(struct html *, enum roffdeco, @@ -581,8 +582,14 @@ print_tagq(struct html *h, const struct tag *until) struct tag *tag; while ((tag = h->tags.head) != NULL) { + /* + * Remember to close out and nullify the current + * meta-font and table, if applicable. + */ if (tag == h->metaf) h->metaf = NULL; + if (tag == h->tblt) + h->tblt = NULL; print_ctag(h, tag->tag); h->tags.head = tag->next; free(tag); @@ -600,8 +607,14 @@ print_stagq(struct html *h, const struct tag *suntil) while ((tag = h->tags.head) != NULL) { if (suntil && tag == suntil) return; + /* + * Remember to close out and nullify the current + * meta-font and table, if applicable. + */ if (tag == h->metaf) h->metaf = NULL; + if (tag == h->tblt) + h->tblt = NULL; print_ctag(h, tag->tag); h->tags.head = tag->next; free(tag); |