aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2021-09-07 14:56:35 +0000
committerIngo Schwarze <schwarze@openbsd.org>2021-09-07 14:56:35 +0000
commit75a58ff911d520ea8c88e364a1303f81abb898cf (patch)
treeb613ef77951e9243b100304f5df7e428b120e4fc
parent91034a4641d1b04af942e64bdde7bf87e1f66a92 (diff)
downloadmandoc-75a58ff911d520ea8c88e364a1303f81abb898cf.tar.gz
mandoc-75a58ff911d520ea8c88e364a1303f81abb898cf.tar.zst
mandoc-75a58ff911d520ea8c88e364a1303f81abb898cf.zip
Correctly calculate required column widths for tables containing
cells that horizontally span columns which contains "n" (number) formatted cells on other rows. This requires updating total column widths from "n" formatted cells before starting width distribution from the spanning cells to their constituent columns.
-rw-r--r--out.c9
-rw-r--r--regress/tbl/layout/span.in13
-rw-r--r--regress/tbl/layout/span.out_ascii10
3 files changed, 25 insertions, 7 deletions
diff --git a/out.c b/out.c
index bf7342ec..1aa0c0e3 100644
--- a/out.c
+++ b/out.c
@@ -1,7 +1,8 @@
-/* $Id: out.c,v 1.80 2021/08/10 12:55:03 schwarze Exp $ */
+/* $Id: out.c,v 1.81 2021/09/07 14:56:35 schwarze Exp $ */
/*
* Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2011,2014,2015,2017,2018 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2011, 2014, 2015, 2017, 2018, 2019, 2021
+ * Ingo Schwarze <schwarze@openbsd.org>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -354,8 +355,6 @@ tblcalc(struct rofftbl *tbl, const struct tbl_span *sp_first,
col = tbl->cols + icol;
if (col->width > col->nwidth)
col->decimal += (col->width - col->nwidth) / 2;
- else
- col->width = col->nwidth;
if (col->flags & TBL_CELL_EQUAL) {
necol++;
if (ewidth < col->width)
@@ -563,5 +562,7 @@ tblcalc_number(struct rofftbl *tbl, struct roffcol *col,
if (totsz > col->nwidth)
col->nwidth = totsz;
+ if (col->nwidth > col->width)
+ col->width = col->nwidth;
return totsz;
}
diff --git a/regress/tbl/layout/span.in b/regress/tbl/layout/span.in
index 84a71f8a..d02d2361 100644
--- a/regress/tbl/layout/span.in
+++ b/regress/tbl/layout/span.in
@@ -1,5 +1,5 @@
-.\" $OpenBSD: span.in,v 1.5 2017/07/04 14:53:27 schwarze Exp $
-.TH TBL-LAYOUT-SPAN 1 "June 17, 2017"
+.\" $OpenBSD: span.in,v 1.6 2021/09/07 14:50:56 schwarze Exp $
+.TH TBL-LAYOUT-SPAN 1 "September 7, 2021"
.SH NAME
tbl-layout-span \- alignment of spanned cells
.SH DESCRIPTION
@@ -50,6 +50,15 @@ s1:s2
a:b:c:d:e
.TE
.sp
+.TS
+allbox tab(:);
+L S
+L N.
+x***nnnnn
+a:0.01
+b:10.0
+.TE
+.sp
leaked tab settings:
.br
a b c d e f
diff --git a/regress/tbl/layout/span.out_ascii b/regress/tbl/layout/span.out_ascii
index 2372e602..adc57cf2 100644
--- a/regress/tbl/layout/span.out_ascii
+++ b/regress/tbl/layout/span.out_ascii
@@ -34,7 +34,15 @@ DDEESSCCRRIIPPTTIIOONN
+--+---+---+---+---+
|a | b | c | d | e |
+--+---+---+---+---+
+
+ +----------+
+ |x***nnnnn |
+ +--+-------+
+ |a | 0.01 |
+ +--+-------+
+ |b | 10.0 |
+ +--+-------+
leaked tab settings:
a b c d e f
-OpenBSD June 17, 2017 TBL-LAYOUT-SPAN(1)
+OpenBSD September 7, 2021 TBL-LAYOUT-SPAN(1)