commit f8eb3b97428a77a00cf2d03ebcfc9b044c37f5f4
Author: Juergen Spitzmueller <[email protected]>
Date: Fri May 31 10:48:00 2019 +0200
Fix toprule with booktabs/longtable and captions
(cherry picked from commit fe589d562224b2cebaade60facb9c727d8ea7a60)
---
src/insets/InsetTabular.cpp | 12 +++++++++---
status.23x | 2 +-
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 375d756..36e99b6 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -2203,14 +2203,18 @@ void Tabular::TeXTopHLine(otexstream & os, row_type
row, string const & lang,
if ((row == 0 && nset == 0) || (row > 0 && nset != ncols()))
return;
+ // Is this the actual first row (excluding longtable caption row)?
+ bool const realfirstrow = (row == 0
+ || (is_long_tabular && row == 1 &&
ltCaption(0)));
+
// only output complete row lines and the 1st row's clines
if (nset == ncols()) {
if (use_booktabs) {
- os << (row == 0 ? "\\toprule " : "\\midrule ");
+ os << (realfirstrow ? "\\toprule " : "\\midrule ");
} else {
os << "\\hline ";
}
- } else if (row == 0) {
+ } else if (realfirstrow) {
for (auto & c : columns) {
if (topline.find(c)->second) {
col_type offset = 0;
@@ -4014,7 +4018,9 @@ void InsetTabular::drawCellLines(PainterInfo & pi, int x,
int y,
// Top
bool drawline = tabular.topLine(cell)
|| (row > 0 && tabular.bottomLine(tabular.cellAbove(cell)));
- bool heavy = tabular.use_booktabs && row == 0 &&
tabular.rowTopLine(row);
+ bool heavy = tabular.use_booktabs
+ && (row == 0 || (tabular.is_long_tabular && row == 1 &&
tabular.ltCaption(0)))
+ && tabular.rowTopLine(row);
tabline(pi, x, y, x + w, y, drawline, heavy);
// Bottom
diff --git a/status.23x b/status.23x
index fcd9657..9b0ff65 100644
--- a/status.23x
+++ b/status.23x
@@ -45,7 +45,7 @@ What's new
* DOCUMENT INPUT/OUTPUT
-
+- Fix toprule with booktabs/longtable and captions (bug 11589).
* USER INTERFACE