commit fe589d562224b2cebaade60facb9c727d8ea7a60
Author: Juergen Spitzmueller <[email protected]>
Date:   Fri May 31 10:48:00 2019 +0200

    Fix toprule with booktabs/longtable and captions
---
 src/insets/InsetTabular.cpp |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp
index 9df7d46..c702074 100644
--- a/src/insets/InsetTabular.cpp
+++ b/src/insets/InsetTabular.cpp
@@ -2419,14 +2419,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() && !have_trims) {
                if (use_booktabs) {
-                       os << (row == 0 ? "\\toprule " : "\\midrule ");
+                       os << (realfirstrow ? "\\toprule " : "\\midrule ");
                } else {
                        os << "\\hline ";
                }
-       } else if (row == 0 || have_trims) {
+       } else if (realfirstrow || have_trims) {
                string const cline = use_booktabs ? "\\cmidrule" : "\\cline";
                for (auto & c : columns) {
                        if (topline.find(c)->second) {
@@ -4431,7 +4435,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);
        if (tabular.topLineTrim(cell).first
            || (row > 0 && tabular.bottomLineTrim(tabular.cellIndex(row - 1, 
col)).first))
                lt = 10;

Reply via email to