Browse Source

math alt text

master
alistair 3 years ago
parent
commit
b8b9a162a4
  1. 9
      default-templates/style.css
  2. 20
      main.cpp

9
default-templates/style.css

@ -16,6 +16,15 @@ @@ -16,6 +16,15 @@
--c-aqua: #70c0b1;
}
.inline-math {
margin: 0;
display: inline-block;
max-height: 1.3em;
margin-top: auto;
margin-bottom: auto;
vertical-align: middle;
}
code pre {
border:none;
background: var(--secondary-bg);

20
main.cpp

@ -563,17 +563,23 @@ class builder { @@ -563,17 +563,23 @@ class builder {
const unsigned char local_name[] = "math";
auto mathtext = "<img src='data:image/svg+xml;base64, " + base64_encode_mime(mtext) + "'/>";
std::string style = "inline-math";
if (text[1] == '[')
style = "display-math";
lxb_html_element_t * ele = lxb_html_document_create_element(document, local_name,
(size_t)4, nullptr);
auto elem = lxb_dom_interface_element(ele);
lxb_html_element_t * elem = lxb_html_document_create_element(document, (const unsigned char *)"img", 3, NULL);
auto nelem = lxb_dom_interface_element(elem);
std::string alttext = tt.substr(2, tt.length() - 4);
auto imgsrc = "data:image/svg+xml;base64, " + base64_encode_mime(mtext);
lxb_dom_element_set_attribute(nelem, (const unsigned char*)"alt", 3, (const unsigned char*)alttext.c_str(), alttext.length());
lxb_dom_element_set_attribute(nelem, (const unsigned char*)"src", 3, (const unsigned char*)imgsrc.c_str(), imgsrc.length());
lxb_dom_element_set_attribute(nelem, (const unsigned char*)"class", 5, (const unsigned char*)style.c_str(), style.length());
lxb_dom_node_t *n = lxb_html_document_parse_fragment(document,
elem, (const unsigned char *)mathtext.c_str(), mathtext.length());
lxb_dom_node_insert_after(&element->node, n);
lxb_dom_node_insert_after(&element->node, lxb_dom_interface_node(nelem));
lxb_dom_node_remove(&element->node);
}

Loading…
Cancel
Save