mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-11 03:03:06 +00:00
MathML: refactor the XArrow mappings as maps.
This commit is contained in:
parent
f0bf41f574
commit
e5eef14414
@ -84,84 +84,68 @@ void InsetMathXArrow::normalize(NormalStream & os) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static std::map<string, string> latex_to_html_entities = {
|
||||||
|
{"xleftarrow", "←"},
|
||||||
|
{"xrightarrow", "→"},
|
||||||
|
{"xhookleftarrow", "↩"},
|
||||||
|
{"xhookrightarrow", "↪"},
|
||||||
|
{"xLeftarrow", "⇐"},
|
||||||
|
{"xRightarrow", "⇒"},
|
||||||
|
{"xleftrightarrow", "↔"},
|
||||||
|
{"xLeftrightarrow", "⇔"},
|
||||||
|
{"xleftharpoondown", "↽"},
|
||||||
|
{"xleftharpoonup", "↼"},
|
||||||
|
{"xleftrightharpoons", "⇋"},
|
||||||
|
{"xrightharpoondown", "⇁"},
|
||||||
|
{"xrightharpoonup", "⇀"},
|
||||||
|
{"xrightleftharpoons", "⇌"},
|
||||||
|
{"xmapsto", "↦"},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static std::map<string, string> latex_to_xml_entities = {
|
||||||
|
{"xleftarrow", "←"},
|
||||||
|
{"xrightarrow", "→"},
|
||||||
|
{"xhookleftarrow", "↩"},
|
||||||
|
{"xhookrightarrow", "↪"},
|
||||||
|
{"xLeftarrow", "⇐"},
|
||||||
|
{"xRightarrow", "⇒"},
|
||||||
|
{"xleftrightarrow", "↔"},
|
||||||
|
{"xLeftrightarrow", "⇔"},
|
||||||
|
{"xleftharpoondown", "↽"},
|
||||||
|
{"xleftharpoonup", "↼"},
|
||||||
|
{"xleftrightharpoons", "⇋"},
|
||||||
|
{"xrightharpoondown", "⇁"},
|
||||||
|
{"xrightharpoonup", "⇀"},
|
||||||
|
{"xrightleftharpoons", "⇌"},
|
||||||
|
{"xmapsto", "↦"},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
void InsetMathXArrow::mathmlize(MathMLStream & ms) const
|
void InsetMathXArrow::mathmlize(MathMLStream & ms) const
|
||||||
{
|
{
|
||||||
char const * arrow;
|
std::string arrow;
|
||||||
|
|
||||||
if (!ms.xmlMode()) { // Use HTML entities.
|
if (!ms.xmlMode()) { // Use HTML entities.
|
||||||
if (name_ == "xleftarrow")
|
auto mapping = latex_to_html_entities.find(to_ascii(name_));
|
||||||
arrow = "←";
|
if (mapping != latex_to_html_entities.end()) {
|
||||||
else if (name_ == "xrightarrow")
|
arrow = mapping->second;
|
||||||
arrow = "→";
|
} else {
|
||||||
else if (name_ == "xhookleftarrow")
|
|
||||||
arrow = "↩";
|
|
||||||
else if (name_ == "xhookrightarrow")
|
|
||||||
arrow = "↪";
|
|
||||||
else if (name_ == "xLeftarrow")
|
|
||||||
arrow = "⇐";
|
|
||||||
else if (name_ == "xRightarrow")
|
|
||||||
arrow = "⇒";
|
|
||||||
else if (name_ == "xleftrightarrow")
|
|
||||||
arrow = "↔";
|
|
||||||
else if (name_ == "xLeftrightarrow")
|
|
||||||
arrow = "⇔";
|
|
||||||
else if (name_ == "xleftharpoondown")
|
|
||||||
arrow = "↽";
|
|
||||||
else if (name_ == "xleftharpoonup")
|
|
||||||
arrow = "↼";
|
|
||||||
else if (name_ == "xleftrightharpoons")
|
|
||||||
arrow = "⇋";
|
|
||||||
else if (name_ == "xrightharpoondown")
|
|
||||||
arrow = "⇁";
|
|
||||||
else if (name_ == "xrightharpoonup")
|
|
||||||
arrow = "⇀";
|
|
||||||
else if (name_ == "xrightleftharpoons")
|
|
||||||
arrow = "⇌";
|
|
||||||
else if (name_ == "xmapsto")
|
|
||||||
arrow = "↦";
|
|
||||||
else {
|
|
||||||
lyxerr << "mathmlize conversion for '" << name_ << "' not implemented" << endl;
|
lyxerr << "mathmlize conversion for '" << name_ << "' not implemented" << endl;
|
||||||
LASSERT(false, arrow = "→");
|
LASSERT(false, arrow = latex_to_html_entities["xrightarrow"]);
|
||||||
}
|
}
|
||||||
} else { // Use XML entities.
|
} else { // Use XML entities.
|
||||||
if (name_ == "xleftarrow")
|
auto mapping = latex_to_xml_entities.find(to_ascii(name_));
|
||||||
arrow = "←";
|
if (mapping != latex_to_xml_entities.end()) {
|
||||||
else if (name_ == "xrightarrow")
|
arrow = mapping->second;
|
||||||
arrow = "→";
|
} else {
|
||||||
else if (name_ == "xhookleftarrow")
|
|
||||||
arrow = "↩";
|
|
||||||
else if (name_ == "xhookrightarrow")
|
|
||||||
arrow = "↪";
|
|
||||||
else if (name_ == "xLeftarrow")
|
|
||||||
arrow = "⇐";
|
|
||||||
else if (name_ == "xRightarrow")
|
|
||||||
arrow = "⇒";
|
|
||||||
else if (name_ == "xleftrightarrow")
|
|
||||||
arrow = "↔";
|
|
||||||
else if (name_ == "xLeftrightarrow")
|
|
||||||
arrow = "⇔";
|
|
||||||
else if (name_ == "xleftharpoondown")
|
|
||||||
arrow = "↽";
|
|
||||||
else if (name_ == "xleftharpoonup")
|
|
||||||
arrow = "↼";
|
|
||||||
else if (name_ == "xleftrightharpoons")
|
|
||||||
arrow = "⇋";
|
|
||||||
else if (name_ == "xrightharpoondown")
|
|
||||||
arrow = "⇁";
|
|
||||||
else if (name_ == "xrightharpoonup")
|
|
||||||
arrow = "⇀";
|
|
||||||
else if (name_ == "xrightleftharpoons")
|
|
||||||
arrow = "⇌";
|
|
||||||
else if (name_ == "xmapsto")
|
|
||||||
arrow = "↦";
|
|
||||||
else {
|
|
||||||
lyxerr << "mathmlize XML conversion for '" << name_ << "' not implemented" << endl;
|
lyxerr << "mathmlize XML conversion for '" << name_ << "' not implemented" << endl;
|
||||||
LASSERT(false, arrow = "→");
|
LASSERT(false, arrow = latex_to_xml_entities["xrightarrow"]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ms << "<" << from_ascii(ms.namespacedTag("munderover")) << " accent='false' accentunder='false'>"
|
ms << "<" << from_ascii(ms.namespacedTag("munderover")) << " accent='false' accentunder='false'>"
|
||||||
<< MTagInline("mo") << arrow << ETagInline("mo")
|
<< MTagInline("mo") << from_ascii(arrow) << ETagInline("mo")
|
||||||
<< cell(1) << cell(0)
|
<< cell(1) << cell(0)
|
||||||
<< "</" << from_ascii(ms.namespacedTag("munderover"))<< ">";
|
<< "</" << from_ascii(ms.namespacedTag("munderover"))<< ">";
|
||||||
}
|
}
|
||||||
@ -169,45 +153,19 @@ void InsetMathXArrow::mathmlize(MathMLStream & ms) const
|
|||||||
|
|
||||||
void InsetMathXArrow::htmlize(HtmlStream & os) const
|
void InsetMathXArrow::htmlize(HtmlStream & os) const
|
||||||
{
|
{
|
||||||
char const * arrow;
|
string arrow;
|
||||||
|
|
||||||
if (name_ == "xleftarrow")
|
auto mapping = latex_to_html_entities.find(to_ascii(name_));
|
||||||
arrow = "←";
|
if (mapping != latex_to_html_entities.end()) {
|
||||||
else if (name_ == "xrightarrow")
|
arrow = mapping->second;
|
||||||
arrow = "→";
|
} else {
|
||||||
else if (name_ == "xhookleftarrow")
|
|
||||||
arrow = "↩";
|
|
||||||
else if (name_ == "xhookrightarrow")
|
|
||||||
arrow = "↪";
|
|
||||||
else if (name_ == "xLeftarrow")
|
|
||||||
arrow = "⇐";
|
|
||||||
else if (name_ == "xRightarrow")
|
|
||||||
arrow = "⇒";
|
|
||||||
else if (name_ == "xleftrightarrow")
|
|
||||||
arrow = "↔";
|
|
||||||
else if (name_ == "xLeftrightarrow")
|
|
||||||
arrow = "⇔";
|
|
||||||
else if (name_ == "xleftharpoondown")
|
|
||||||
arrow = "↽";
|
|
||||||
else if (name_ == "xleftharpoonup")
|
|
||||||
arrow = "↼";
|
|
||||||
else if (name_ == "xleftrightharpoons")
|
|
||||||
arrow = "⇋";
|
|
||||||
else if (name_ == "xrightharpoondown")
|
|
||||||
arrow = "⇁";
|
|
||||||
else if (name_ == "xrightharpoonup")
|
|
||||||
arrow = "⇀";
|
|
||||||
else if (name_ == "xrightleftharpoons")
|
|
||||||
arrow = "⇌";
|
|
||||||
else if (name_ == "xmapsto")
|
|
||||||
arrow = "↦";
|
|
||||||
else {
|
|
||||||
lyxerr << "htmlize conversion for '" << name_ << "' not implemented" << endl;
|
lyxerr << "htmlize conversion for '" << name_ << "' not implemented" << endl;
|
||||||
LASSERT(false, arrow = "→");
|
LASSERT(false, arrow = latex_to_html_entities["xrightarrow"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
os << MTag("span", "class='xarrow'")
|
os << MTag("span", "class='xarrow'")
|
||||||
<< MTag("span", "class='xatop'") << cell(0) << ETag("span")
|
<< MTag("span", "class='xatop'") << cell(0) << ETag("span")
|
||||||
<< MTag("span", "class='xabottom'") << arrow << ETag("span")
|
<< MTag("span", "class='xabottom'") << from_ascii(arrow) << ETag("span")
|
||||||
<< ETag("span");
|
<< ETag("span");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user