diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp
index f977dacb97..5450bba7f8 100644
--- a/src/mathed/InsetMathHull.cpp
+++ b/src/mathed/InsetMathHull.cpp
@@ -634,26 +634,37 @@ bool InsetMathHull::numberedType() const
void InsetMathHull::validate(LaTeXFeatures & features) const
{
- if (ams())
- features.require("amsmath");
-
- if (type_ == hullRegexp) {
- features.require("color");
- string frcol = lcolor.getLaTeXName(Color_regexpframe);
- string bgcol = "white";
- features.addPreambleSnippet(
- string("\\newcommand{\\regexp}[1]{\\fcolorbox{")
- + frcol + string("}{")
- + bgcol + string("}{\\texttt{#1}}}"));
+ if (features.runparams().isLaTeX()) {
+ if (ams())
+ features.require("amsmath");
+
+ if (type_ == hullRegexp) {
+ features.require("color");
+ string frcol = lcolor.getLaTeXName(Color_regexpframe);
+ string bgcol = "white";
+ features.addPreambleSnippet(
+ string("\\newcommand{\\regexp}[1]{\\fcolorbox{")
+ + frcol + string("}{")
+ + bgcol + string("}{\\texttt{#1}}}"));
+ }
+
+ // Validation is necessary only if not using AMS math.
+ // To be safe, we will always run mathedvalidate.
+ //if (features.amsstyle)
+ // return;
+
+ //features.binom = true;
+ } else if (features.runparams().math_flavor == OutputParams::MathAsHTML) {
+ // it would be better to do this elsewhere, but we can't validate in
+ // InsetMathMatrix and we have no way, outside MathExtern, to know if
+ // we even have any matrices.
+ features.addPreambleSnippet("");
}
-
- // Validation is necessary only if not using AMS math.
- // To be safe, we will always run mathedvalidate.
- //if (features.amsstyle)
- // return;
-
- //features.binom = true;
-
InsetMathGrid::validate(features);
}
diff --git a/src/mathed/InsetMathMatrix.cpp b/src/mathed/InsetMathMatrix.cpp
index d368f217b7..4d309d13e8 100644
--- a/src/mathed/InsetMathMatrix.cpp
+++ b/src/mathed/InsetMathMatrix.cpp
@@ -14,6 +14,9 @@
#include "MathData.h"
#include "MathStream.h"
+#include "support/convert.h"
+
+using namespace std;
namespace lyx {
@@ -106,6 +109,31 @@ void InsetMathMatrix::mathmlize(MathStream & os) const
}
+void InsetMathMatrix::htmlize(HtmlStream & os) const
+{
+ os << MTag("table", "class='matrix'") << '\n';
+
+ // we do not print the delimiters but instead try to hack them
+ string const rows = convert(nrows());
+ string const lattrib =
+ "class='ldelim' rowspan='" + rows + "'";
+ string const rattrib =
+ "class='rdelim' rowspan='" + rows + "'";
+
+ for (row_type row = 0; row < nrows(); ++row) {
+ os << MTag("tr") << '\n';
+ if (row == 0)
+ os << MTag("td", lattrib) << ETag("td") << '\n';
+ for (col_type col = 0; col < ncols(); ++col)
+ os << MTag("td") << cell(index(row, col)) << ETag("td") << '\n';
+ if (row == 0)
+ os << MTag("td", rattrib) << ETag("td") << '\n';
+ os << ETag("tr") << '\n';
+ }
+ os << ETag("table") << '\n';
+}
+
+
void InsetMathMatrix::octave(OctaveStream & os) const
{
os << '[';