From: Juergen Spitzmueller Date: Fri, 31 May 2019 08:48:00 +0000 (+0200) Subject: Fix toprule with booktabs/longtable and captions X-Git-Tag: lyx-2.4.0dev-acb2ca7b~1959 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=fe589d562224b2cebaade60facb9c727d8ea7a60;p=features.git Fix toprule with booktabs/longtable and captions --- diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index 9df7d463c3..c702074191 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;