X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathGrid.cpp;h=291e11de8fcc97d3b56abd4fa7d27564ebcb8514;hb=4c724a6072013247ac178f0acec06825585c6c55;hp=1ff65b2c6de3c15d92957af77c6108ccbb297b15;hpb=7069b90f92ac2f617be084f3bc3159c55951982e;p=lyx.git diff --git a/src/mathed/InsetMathGrid.cpp b/src/mathed/InsetMathGrid.cpp index 1ff65b2c6d..291e11de8f 100644 --- a/src/mathed/InsetMathGrid.cpp +++ b/src/mathed/InsetMathGrid.cpp @@ -26,6 +26,7 @@ #include "FuncStatus.h" #include "Cursor.h" #include "FuncRequest.h" +#include "LaTeXFeatures.h" #include "frontends/Clipboard.h" #include "frontends/Painter.h" @@ -617,7 +618,7 @@ void InsetMathGrid::drawWithMargin(PainterInfo & pi, int x, int y, col_type const c = col(idx); if (r > 0 && r < nrows()) { for (unsigned int i = 0; i < rowinfo_[r].lines_; ++i) { - int yy = y + rowinfo_[r].offset_ + int const yy = y + rowinfo_[r].offset_ - rowinfo_[r].ascent_ - i * hlinesep() - hlinesep()/2 - rowsep()/2; @@ -630,14 +631,17 @@ void InsetMathGrid::drawWithMargin(PainterInfo & pi, int x, int y, } if (c > 0 && c < ncols()) { for (unsigned int i = 0; i < colinfo_[c].lines_; ++i) { - int xx = x + lmargin + int const xx = x + lmargin + colinfo_[c].offset_ - i * vlinesep() - vlinesep()/2 - colsep()/2; - pi.pain.line(xx, - rowinfo_[r].offset_ - rowinfo_[r].ascent_, - xx, - rowinfo_[r].offset_ + rowinfo_[r].descent_, + int top_offset; + if (r > 0) + top_offset = rowinfo_[r - 1].offset_ + rowinfo_[r - 1].descent_; + else + top_offset = rowinfo_[0].offset_- rowinfo_[0].ascent_; + pi.pain.line(xx, y + top_offset, + xx, y + rowinfo_[r].offset_ + rowinfo_[r].descent_, Color_foreground); } } @@ -1237,6 +1241,20 @@ void InsetMathGrid::htmlize(HtmlStream & os) const } +void InsetMathGrid::validate(LaTeXFeatures & features) const +{ + if (features.runparams().math_flavor == OutputParams::MathAsHTML + && (nrows() > 1 || ncols() > 1)) { + // CSS taken from InsetMathCases + features.addCSSSnippet( + "table.mathtable{display: inline-block; text-align: center; border: none;" + "border-left: thin solid black; vertical-align: middle; padding-left: 0.5ex;}\n" + "table.mathtable td {text-align: left; border: none;}"); + } + InsetMathNest::validate(features); +} + + void InsetMathGrid::write(WriteStream & os) const { write(os, 0, 0, nrows(), ncols()); @@ -1850,17 +1868,32 @@ char InsetMathGrid::colAlign(HullType type, col_type col) case hullFlAlign: return "rl"[col & 1]; - default: + case hullUnknown: + case hullNone: + case hullSimple: + case hullEquation: + case hullRegexp: return 'c'; } + // avoid warning + return 'c'; } //static int InsetMathGrid::colSpace(HullType type, col_type col) { - int alignInterSpace; + int alignInterSpace = 0; switch (type) { + case hullUnknown: + case hullNone: + case hullSimple: + case hullEquation: + case hullMultline: + case hullGather: + case hullRegexp: + return 0; + case hullEqnArray: return 5; @@ -1877,8 +1910,6 @@ int InsetMathGrid::colSpace(HullType type, col_type col) case hullFlAlign: alignInterSpace = 60; break; - default: - return 0; } return (col % 2) ? alignInterSpace : 0; }