In [1]:
# an engine to convert latex via some online pain in the butt lib into svg output
In [2]:
import urllib
from IPython.display import Javascript
import json
import time
In [3]:
%%javascript
require.config({
paths: {
d3: '//d3js.org/d3.v3.min',
FileSaver: '//s3-us-west-2.amazonaws.com/s.cdpn.io/14082/FileSaver'
}
});
require(['d3'], function(d3)
{
element.append("<div id='version'>VERSION: " + d3.version + "</div>");
});
In [4]:
def svgLatex(latex):
#encoded = urllib.quote_plus(latex)
#encoded = latex
encoded = urllib.quote(latex)
f = urllib.urlopen("http://latex.codecogs.com/svg.latex?%s" % encoded)
#time.sleep(10)
return f.read()
In [6]:
test_sample = svgLatex("Q_{update} \\approx Q_{current} \\approx Q_{new}")
In [7]:
# export data to javascript
Javascript("window.test_sample={};".format(json.dumps(test_sample)))
Out[7]:
In [8]:
%%javascript
element.append(window.test_sample);
In [8]:
# the real data
In [97]:
formulas = [
"r_t+\\gamma\\max_{a}Q(s_{t+1},a) \\approx Q(s_t,a_t)",
"Q_{update}=r_t",
"+\\gamma_1\\max_{a}Q(s_{t+1},a)",
"+\\gamma_2\\max_{a_1,a_2} \\big( r'_{t+1}(a_1)+Q''(s_{t+2},a_2) \\big)",
"Q",
"Q'",
"Q'(s_t, a_t)=(1-\\alpha)Q(s_t, a_t)+\\alpha\\Big(r_t+\\gamma\\max_{a}Q(s_{t+1}, a)\\Big)",
"Q'(s_t, a_t)=Q(s_t,a_t)+\\alpha\\Big(r_t+\\gamma\\max_{a}Q(s_{t+1},a)-Q(s_t,a_t)\\Big)",
"Q_{final} \\approx Q_{update}=r_t+\\gamma\\max_{a} Q(s_{t+1},a)",
"Q_{new}=(1-\\alpha)Q_{current}+\\alpha Q_{update}",
"Q_{update} \\approx Q_{current} \\approx Q_{new}",
"Q_{update}=r_t+\\gamma\\max_{a}Q(s_{t+1}, a)",
"Q_{update} \\approx Q_{current} \\approx Q_{new}",
"\\alpha",
"\\gamma",
"a",
"a_t",
"r_t",
"s_t",
"s_{t+1}"
]
In [98]:
formula_rendered = {}
for f in formulas:
print f
formula_rendered[f] = svgLatex(f)
In [99]:
# export data to javascript
Javascript("window.rendered={};".format(json.dumps(formula_rendered)))
Out[99]:
In [100]:
Javascript("window.formulas={};".format(json.dumps(formulas)))
Out[100]:
In [101]:
%%javascript
window.formulas.forEach( function (k) {
element.append("<div>" + k + "</div>");
element.append(window.rendered[k]);
element.append("<br/>");
});
In [102]:
with open('data/prerender_latex.json', 'w') as outfile:
json.dump(formula_rendered, outfile)
In [103]:
# unfornatually due to cross site protection overkill true json cant be loaded
# do a evil hack to convert the json into javascript and load that instead!
json_dump = json.dumps(formula_rendered)
js_load = "window.latex_prerender = " + json_dump
In [104]:
with open('data/prerender_latex.js', 'w') as outfile:
outfile.write(js_load)
In [ ]: