Draw top/bottom rules heavier for booktab

This gives a better idea of the TeX output, even though the thicknesses are
not correct. Like in LaTeX, this happens only for full top/bottom rules.

(cherry picked from commit 8651cd89f6)
(cherry picked from commit 84328c8538)
This commit is contained in:
Jean-Marc Lasgouttes 2018-07-20 00:26:41 +02:00
parent 9dccde0498
commit d371a43865
2 changed files with 23 additions and 14 deletions

View File

@ -3938,35 +3938,44 @@ void InsetTabular::drawSelection(PainterInfo & pi, int x, int y) const
} }
namespace {
void tabline(PainterInfo const & pi, int x1, int y1, int x2, int y2,
bool drawline, bool heavy = false)
{
ColorCode const col = drawline ? Color_tabularline : Color_tabularonoffline;
pi.pain.line(x1, y1, x2, y2, pi.textColor(col),
drawline ? Painter::line_solid : Painter::line_onoffdash,
(heavy ? 2 : 1) * Painter::thin_line);
}
}
void InsetTabular::drawCellLines(PainterInfo & pi, int x, int y, void InsetTabular::drawCellLines(PainterInfo & pi, int x, int y,
row_type row, idx_type cell) const row_type row, idx_type cell) const
{ {
y -= tabular.rowAscent(row); y -= tabular.rowAscent(row);
int const w = tabular.cellWidth(cell); int const w = tabular.cellWidth(cell);
int const h = tabular.cellHeight(cell); int const h = tabular.cellHeight(cell);
Color const linecolor = pi.textColor(Color_tabularline);
Color const gridcolor = pi.textColor(Color_tabularonoffline);
// Top // Top
bool drawline = tabular.topLine(cell) bool drawline = tabular.topLine(cell)
|| (row > 0 && tabular.bottomLine(tabular.cellAbove(cell))); || (row > 0 && tabular.bottomLine(tabular.cellAbove(cell)));
pi.pain.line(x, y, x + w, y, bool heavy = tabular.use_booktabs && row == 0 && tabular.rowTopLine(row);
drawline ? linecolor : gridcolor, tabline(pi, x, y, x + w, y, drawline, heavy);
drawline ? Painter::line_solid : Painter::line_onoffdash);
// Bottom // Bottom
drawline = tabular.bottomLine(cell); drawline = tabular.bottomLine(cell);
pi.pain.line(x, y + h, x + w, y + h, heavy = tabular.use_booktabs && row == tabular.nrows() - 1
drawline ? linecolor : gridcolor, && tabular.rowBottomLine(row);
drawline ? Painter::line_solid : Painter::line_onoffdash); tabline(pi, x, y + h, x + w, y + h, drawline, heavy);
// Left // Left
col_type const col = tabular.cellColumn(cell); col_type const col = tabular.cellColumn(cell);
drawline = tabular.leftLine(cell) drawline = tabular.leftLine(cell)
|| (col > 0 && tabular.rightLine(tabular.cellIndex(row, col - 1))); || (col > 0 && tabular.rightLine(tabular.cellIndex(row, col - 1)));
pi.pain.line(x, y, x, y + h, tabline(pi, x, y, x, y + h, drawline);
drawline ? linecolor : gridcolor,
drawline ? Painter::line_solid : Painter::line_onoffdash);
// Right // Right
x -= tabular.interColumnSpace(cell); x -= tabular.interColumnSpace(cell);
@ -3977,9 +3986,7 @@ void InsetTabular::drawCellLines(PainterInfo & pi, int x, int y,
drawline = tabular.rightLine(cell) drawline = tabular.rightLine(cell)
|| (next_cell_col < tabular.ncols() || (next_cell_col < tabular.ncols()
&& tabular.leftLine(tabular.cellIndex(row, next_cell_col))); && tabular.leftLine(tabular.cellIndex(row, next_cell_col)));
pi.pain.line(x + w, y, x + w, y + h, tabline(pi, x + w, y, x + w, y + h, drawline);
drawline ? linecolor : gridcolor,
drawline ? Painter::line_solid : Painter::line_onoffdash);
} }

View File

@ -49,6 +49,8 @@ What's new
- Allow to change multiple table columns' width at once (bug 11205). - Allow to change multiple table columns' width at once (bug 11205).
- When using formal tables, draw top/bottom rules thicker when adequate.
* DOCUMENTATION AND LOCALIZATION * DOCUMENTATION AND LOCALIZATION