* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
- * \author André Pönitz
+ * \author André Pönitz
*
* Full author contact details are available in file CREDITS.
*/
#include "InsetMathBig.h"
+#include "LaTeXFeatures.h"
#include "MathSupport.h"
#include "MathStream.h"
#include "MetricsInfo.h"
void InsetMathBig::write(WriteStream & os) const
{
- bool brace = ensureMath(os);
+ MathEnsurer ensurer(os);
os << '\\' << name_ << delim_;
if (delim_[0] == '\\')
os.pendingSpace(true);
- os.pendingBrace(brace);
}
}
+void InsetMathBig::mathmlize(MathStream & os) const
+{
+ os << "<mo form='prefix' fence='true' stretchy='true' symmetric='true'>";
+ if (delim_ == "(" || delim_ == ")"
+ || delim_ == "[" || delim_ == "]"
+ || delim_ == "|" || delim_ == "/")
+ os << delim_;
+ else if (delim_ == "\\{" || delim_ == "\\lbrace")
+ os << "{";
+ else if (delim_ == "\\}" || delim_ == "\\rbrace")
+ os << "}";
+ else if (delim_ == "\\slash")
+ os << "/";
+ else if (delim_ == "\\|" || delim_ == "\\vert")
+ os << "|";
+ else if (delim_ == "\\Vert")
+ os << "∥";
+ else if (delim_ == "\\\\" || delim_ == "\\backslash")
+ os <<" \\";
+ else if (delim_ == "\\langle")
+ os << "<";
+ else if (delim_ == "\\rangle")
+ os << ">";
+ else if (delim_ == "\\lceil")
+ os << "⌈";
+ else if (delim_ == "\\rceil")
+ os << "⌉";
+ else if (delim_ == "\\lfloor")
+ os << "⌊";
+ else if (delim_ == "\\rfloor")
+ os << "⌋";
+ else if (delim_ == "\\downarrow")
+ os << "↓";
+ else if (delim_ == "\\uparrow")
+ os << "↑";
+ else if (delim_ == "\\Downarrow")
+ os << "⇓";
+ else if (delim_ == "\\Uparrow")
+ os << "⇑";
+ else if (delim_ == "\\updownarrow")
+ os << "↕";
+ else if (delim_ == "\\Updownarrow")
+ os << "⇕";
+ os << "</mo>";
+}
+
+
+void InsetMathBig::htmlize(HtmlStream & os) const
+{
+ std::string name;
+ switch (size()) {
+ case 0: case 1: name = "big"; break;
+ case 2: case 3: name = "bigg"; break;
+ case 4: case 5: name = "biggg"; break;
+ default: name = "big"; break;
+ }
+ os << MTag("span", "class='" + name + "symbol'");
+ if (delim_ == "(" || delim_ == ")"
+ || delim_ == "[" || delim_ == "]"
+ || delim_ == "|" || delim_ == "/")
+ os << delim_;
+ else if (delim_ == "\\{" || delim_ == "\\lbrace")
+ os << "{";
+ else if (delim_ == "\\}" || delim_ == "\\rbrace")
+ os << "}";
+ else if (delim_ == "\\slash")
+ os << "/";
+ else if (delim_ == "\\|" || delim_ == "\\vert")
+ os << "|";
+ else if (delim_ == "\\Vert")
+ os << "∥";
+ else if (delim_ == "\\\\" || delim_ == "\\backslash")
+ os <<" \\";
+ else if (delim_ == "\\langle")
+ os << "<";
+ else if (delim_ == "\\rangle")
+ os << ">";
+ else if (delim_ == "\\lceil")
+ os << "⌈";
+ else if (delim_ == "\\rceil")
+ os << "⌉";
+ else if (delim_ == "\\lfloor")
+ os << "⌊";
+ else if (delim_ == "\\rfloor")
+ os << "⌋";
+ else if (delim_ == "\\downarrow")
+ os << "↓";
+ else if (delim_ == "\\uparrow")
+ os << "↑";
+ else if (delim_ == "\\Downarrow")
+ os << "⇓";
+ else if (delim_ == "\\Uparrow")
+ os << "⇑";
+ else if (delim_ == "\\updownarrow")
+ os << "↕";
+ else if (delim_ == "\\Updownarrow")
+ os << "⇕";
+ os << ETag("span");
+}
+
+
void InsetMathBig::infoize2(odocstream & os) const
{
os << name_;
}
+void InsetMathBig::validate(LaTeXFeatures & features) const
+{
+ if (features.runparams().math_flavor == OutputParams::MathAsHTML)
+ features.addPreambleSnippet("<style type=\"text/css\">\n"
+ "span.bigsymbol{font-size: 150%;}\n"
+ "span.biggsymbol{font-size: 200%;}\n"
+ "span.bigggsymbol{font-size: 225%;}\n"
+ "</style>");
+}
+
+
} // namespace lyx