HTML for scripts.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33944 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2010-03-30 01:31:25 +00:00
parent f60dad8aaf
commit f5bcb24da2
2 changed files with 39 additions and 2 deletions

View File

@ -17,6 +17,7 @@
#include "InsetMathFont.h"
#include "InsetMathScript.h"
#include "InsetMathSymbol.h"
#include "LaTeXFeatures.h"
#include "MathData.h"
#include "MathStream.h"
#include "MathSupport.h"
@ -644,6 +645,26 @@ void InsetMathScript::mathmlize(MathStream & os) const
}
void InsetMathScript::htmlize(HtmlStream & os) const
{
bool d = hasDown() && down().size();
bool u = hasUp() && up().size();
if (nuc().size())
os << nuc();
if (u && d)
os << MTag("span", "class='scripts'")
<< MTag("span", "class='sup'") << up() << ETag("span")
<< MTag("span", "class='sub'") << down() << ETag("span")
<< ETag("span");
else if (u)
os << MTag("sup", "class='math'") << up() << ETag("sup");
else if (d)
os << MTag("sub", "class='math'") << down() << ETag("sub");
}
void InsetMathScript::octave(OctaveStream & os) const
{
if (nuc().size())
@ -751,4 +772,17 @@ void InsetMathScript::doDispatch(Cursor & cur, FuncRequest & cmd)
}
// the idea for dual scripts came from the eLyXer code
void InsetMathScript::validate(LaTeXFeatures & features) const
{
if (features.runparams().flavor == OutputParams::HTML)
features.addPreambleSnippet("<style type=\"text/css\">\n"
"span.scripts{display: inline-block; vertical-align: middle; text-align:center; font-size: 75%;}\n"
"span.sup{display: block;}\n"
"span.sub{display: block;}\n"
"sub.math{font-size: 75%;}\n"
"sup.math{font-size: 75%;}\n"
"</style>");
}
} // namespace lyx

View File

@ -60,8 +60,10 @@ public:
void maple(MapleStream &) const;
/// write content as something readable by Mathematica
void mathematica(MathematicaStream &) const;
/// write content as something resembling MathML
/// write content as MathML
void mathmlize(MathStream &) const;
/// write content as HTML
void htmlize(HtmlStream &) const;
/// write content as something readable by Octave
void octave(OctaveStream &) const;
@ -104,7 +106,8 @@ public:
void infoize2(odocstream & os) const;
///
InsetCode lyxCode() const { return MATH_SCRIPT_CODE; }
///
void validate(LaTeXFeatures &features) const;
protected:
virtual void doDispatch(Cursor & cur, FuncRequest & cmd);
private: