Fix toprule with booktabs/longtable and captions

This commit is contained in:
Juergen Spitzmueller 2019-05-31 10:48:00 +02:00
parent 91383e1fec
commit fe589d5622

View File

@ -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;