diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2018-08-18 20:18:14 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2018-08-18 20:18:14 +0000 |
commit | 350cdb47d01784c4292587eea70d900793da8943 (patch) | |
tree | d0de88437a4d9453234df3d12fd570b1f7d1f461 /out.c | |
parent | b93d3ab969bd1de6ebc4d77e72664e3ae480a2c7 (diff) | |
download | mandoc-350cdb47d01784c4292587eea70d900793da8943.tar.gz |
If a tbl(7) column contains both text cells and numeric cells,
horizontally align the numbers in the same way as groff does.
Diffstat (limited to 'out.c')
-rw-r--r-- | out.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -168,6 +168,7 @@ tblcalc(struct rofftbl *tbl, const struct tbl_span *sp, } /* + * Align numbers with text. * Count columns to equalize and columns to maximize. * Find maximum width of the columns to equalize. * Find total width of the columns *not* to maximize. @@ -177,6 +178,10 @@ tblcalc(struct rofftbl *tbl, const struct tbl_span *sp, ewidth = xwidth = 0; for (icol = 0; icol <= maxcol; icol++) { col = tbl->cols + icol; + if (col->width > col->nwidth) + col->decimal += (col->width - col->nwidth) / 2; + else + col->width = col->nwidth; if (col->spacing == SIZE_MAX || icol == maxcol) col->spacing = 3; if (col->flags & TBL_CELL_EQUAL) { @@ -358,10 +363,10 @@ tblcalc_number(struct rofftbl *tbl, struct roffcol *col, sz += col->decimal - d; d = col->decimal; } else - col->width += d - col->decimal; + col->nwidth += d - col->decimal; - if (sz > col->width) - col->width = sz; + if (sz > col->nwidth) + col->nwidth = sz; if (d > col->decimal) col->decimal = d; } |