From: Richard Heck Date: Wed, 31 Mar 2010 19:59:09 +0000 (+0000) Subject: Matrix output via HTML. I have to say, this one took some work. X-Git-Tag: 2.0.0~3602 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=edff97cb3004d55d12260331bab88d1ef14fc946;p=features.git Matrix output via HTML. I have to say, this one took some work. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33978 a592a061-630c-0410-9148-cb99ea01b6c8 --- 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 << '[';