According to the tbl(7) manual, if a data cell contains only the
authorschwarze <schwarze@openbsd.org>
Wed, 12 Jan 2022 04:43:21 +0000 (04:43 +0000)
committerschwarze <schwarze@openbsd.org>
Wed, 12 Jan 2022 04:43:21 +0000 (04:43 +0000)
two character sequence "\_" or "\=", a single or double horizontal
line is supposed to be drawn inside the cell, not joining its
neighbours.

I am not aware of any way to do that with HTML and/or CSS.
Still, it seems closer to the intent of the document author to draw
a horizontal line with <hr/>, even though that line will join the
neighbour cells, rather than printing a literal '_' or '=' character.

Formatting tweak inspired by a related question from
Ted Bullock <tbullock at comlore dot com>.

usr.bin/mandoc/tbl_html.c

index 77b6a8c..f2a3c2d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: tbl_html.c,v 1.33 2021/09/09 16:50:57 schwarze Exp $ */
+/* $OpenBSD: tbl_html.c,v 1.34 2022/01/12 04:43:21 schwarze Exp $ */
 /*
  * Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2014,2015,2017,2018,2021 Ingo Schwarze <schwarze@openbsd.org>
@@ -245,7 +245,9 @@ print_tbl(struct html *h, const struct tbl_span *sp)
                if (dp->layout->pos == TBL_CELL_HORIZ ||
                    dp->layout->pos == TBL_CELL_DHORIZ ||
                    dp->pos == TBL_DATA_HORIZ ||
-                   dp->pos == TBL_DATA_DHORIZ)
+                   dp->pos == TBL_DATA_NHORIZ ||
+                   dp->pos == TBL_DATA_DHORIZ ||
+                   dp->pos == TBL_DATA_NDHORIZ)
                        print_otag(h, TAG_HR, "");
                else if (dp->string != NULL) {
                        save_font = h->metac;