* tbl center box should center whole table
@ 2019-01-29 9:38 Anthony J. Bentley
2019-01-31 16:15 ` Ingo Schwarze
0 siblings, 1 reply; 2+ messages in thread
From: Anthony J. Bentley @ 2019-01-29 9:38 UTC (permalink / raw)
To: tech
Hi,
From fceux(6):
.TS
center box;
cb | cb, cb | c.
NES Gamepad Keyboard
=
\(ua Keypad Up
\(da Keypad Down
\(<- Keypad Left
\(-> Keypad Right
A F
B D
Select S
Start Enter
.TE
+------------+--------------+
|NES Gamepad | Keyboard |
+============+==============+
| ^ | Keypad Up |
| v | Keypad Down |
| <- | Keypad Left |
| -> | Keypad Right |
| A | F |
| B | D |
| Select | S |
| Start | Enter |
+------------+--------------+
groff(1) centers the whole table, and tbl(7)'s description seems to
apply to the whole table:
center Center the table instead of left-adjusting it. For GNU
compatibility, this may also be invoked with centre.
--
To unsubscribe send an email to tech+unsubscribe@mandoc.bsd.lv
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: tbl center box should center whole table
2019-01-29 9:38 tbl center box should center whole table Anthony J. Bentley
@ 2019-01-31 16:15 ` Ingo Schwarze
0 siblings, 0 replies; 2+ messages in thread
From: Ingo Schwarze @ 2019-01-31 16:15 UTC (permalink / raw)
To: Anthony J. Bentley; +Cc: tech
Hi Anthony,
Anthony J. Bentley wrote on Tue, Jan 29, 2019 at 02:38:57AM -0700:
> From fceux(6):
... which is an mdoc(7) document.
> .TS
> center box;
> cb | cb, cb | c.
> NES Gamepad Keyboard
> =
> \(ua Keypad Up
> \(da Keypad Down
> \(<- Keypad Left
> \(-> Keypad Right
> A F
> B D
> Select S
> Start Enter
> .TE
>
> +------------+--------------+
> |NES Gamepad | Keyboard |
> +============+==============+
> | ^ | Keypad Up |
> | v | Keypad Down |
> | <- | Keypad Left |
> | -> | Keypad Right |
> | A | F |
> | B | D |
> | Select | S |
> | Start | Enter |
> +------------+--------------+
>
> groff(1) centers the whole table, and tbl(7)'s description seems to
> apply to the whole table:
>
> center Center the table instead of left-adjusting it. For GNU
> compatibility, this may also be invoked with centre.
Absolutely, thanks for reporting the bug, which i fixed with the
following commit.
Yours,
Ingo
Log Message:
-----------
Fix tbl(7) centering in mdoc(7) documents.
Since resetting of offsets works quite differently in the mdoc(7)
and man(7) formatters, the tbl(7) formatter needs to save the global
offset on entry and restore it on exit. The additional indentation
needed for table centering has to be added to its own offset variable
and applied to each line of the table, rather than only to the first.
Bug found by bentley@ in emulators/fceux(6).
Modified Files:
--------------
mandoc:
tbl_term.c
Revision Data
-------------
Index: tbl_term.c
===================================================================
RCS file: /home/cvs/mandoc/mandoc/tbl_term.c,v
retrieving revision 1.66
retrieving revision 1.67
diff -Ltbl_term.c -Ltbl_term.c -u -p -r1.66 -r1.67
--- tbl_term.c
+++ tbl_term.c
@@ -1,7 +1,7 @@
/* $Id$ */
/*
* Copyright (c) 2009, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2011-2018 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2011-2019 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
@@ -163,6 +163,7 @@ term_tbl(struct termp *tp, const struct
const struct tbl_cell *cp, *cpn, *cpp, *cps;
const struct tbl_dat *dp;
static size_t offset;
+ size_t save_offset;
size_t coloff, tsz;
int hspans, ic, more;
int dvert, fc, horiz, line, uvert;
@@ -170,6 +171,7 @@ term_tbl(struct termp *tp, const struct
/* Inhibit printing of spaces: we do padding ourselves. */
tp->flags |= TERMP_NOSPACE | TERMP_NONOSPACE;
+ save_offset = tp->tcol->offset;
/*
* The first time we're invoked for a given table block,
@@ -211,8 +213,9 @@ term_tbl(struct termp *tp, const struct
tsz += tp->tbl.cols[sp->opts->cols - 1].width;
if (offset + tsz > tp->tcol->rmargin)
tsz -= 1;
- tp->tcol->offset = offset + tp->tcol->rmargin > tsz ?
+ offset = offset + tp->tcol->rmargin > tsz ?
(offset + tp->tcol->rmargin - tsz) / 2 : 0;
+ tp->tcol->offset = offset;
}
/* Horizontal frame at the start of boxed tables. */
@@ -227,6 +230,7 @@ term_tbl(struct termp *tp, const struct
/* Set up the columns. */
tp->flags |= TERMP_MULTICOL;
+ tp->tcol->offset = offset;
horiz = 0;
switch (sp->pos) {
case TBL_SPAN_HORIZ:
@@ -567,12 +571,12 @@ term_tbl(struct termp *tp, const struct
assert(tp->tbl.cols);
free(tp->tbl.cols);
tp->tbl.cols = NULL;
- tp->tcol->offset = offset;
} else if (horiz == 0 && sp->opts->opts & TBL_OPT_ALLBOX &&
(sp->next == NULL || sp->next->pos == TBL_SPAN_DATA ||
sp->next->next != NULL))
tbl_hrule(tp, sp, sp->next, TBL_OPT_ALLBOX);
+ tp->tcol->offset = save_offset;
tp->flags &= ~TERMP_NONOSPACE;
}
--
To unsubscribe send an email to tech+unsubscribe@mandoc.bsd.lv
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-01-31 16:15 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-29 9:38 tbl center box should center whole table Anthony J. Bentley
2019-01-31 16:15 ` Ingo Schwarze
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).