Skip to content

Instantly share code, notes, and snippets.

@pkra
pkra / child.js
Created February 20, 2017 08:14
mathjax-node experiment with forking child processes
const mathjax = require('mathjax-node');
const typeset = mathjax.typeset;
process.on('message', function(m) {
if (m === 'exit') {
// empty typeset to push exit on MathJax's queue (else we'd terminate too soon)
typeset({"math": "", "format": "TeX", "mml":true}, function(result) {
process.send('exit');
})
} else {
@pkra
pkra / wp2mj.js
Last active February 10, 2017 16:07
A snippet for wordpress's math PNGs
(function () {
var images = document.querySelectorAll('img.latex');
for (var i = 0; i < images.length; i++){
var image = images[i];
tex = image.getAttribute('alt');
var preview = document.createElement('span');
preview.setAttribute('class','MathJax_Preview');
image.parentNode.insertBefore(preview, image);
preview.appendChild(image);
var script = document.createElement('script');
@pkra
pkra / img-to-mj.js
Created August 1, 2016 11:31
Use TeX in alt-text of images for rendering with MathJax
(function () {
var images = document.getElementsByTagName('img');
var hasMath = false;
for (var i = 0; i < images.length; i++){
var image = images[i];
tex = image.getAttribute('alt');
if (tex && tex[0] === '$'){ // TODO a class for TeX images would be cleaner, also to differentiate inline and display math
hasMath = true;
var preview = document.createElement('span');
preview.setAttribute('class','MathJax_Preview');
@pkra
pkra / index.html
Last active July 19, 2016 12:39
mathjax pre-processing on node
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MathJax even more basic pen</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
@pkra
pkra / page-jsdom-mml.js
Created June 24, 2016 11:14
Example for dropping mj-page from mathjax-node: processing mathml in HTML.
"use strict";
var mjAPI = require("../lib/main.js");
mjAPI.start();
var jsdom = require('jsdom').jsdom;
var serializeDocument = require("jsdom").serializeDocument;
var input = "<!DOCTYPE html><p> When <math> <mi>a</mi><mo>&#x2260;</mo><mn>0</mn> </math>, there are two solutions to <math> <mi>a</mi><msup><mi>x</mi><mn>2</mn></msup> <mo>+</mo> <mi>b</mi><mi>x</mi> <mo>+</mo> <mi>c</mi> <mo>=</mo> <mn>0</mn> </math></p>";
var document = jsdom(input);
var window = document.defaultView;
@pkra
pkra / mj-a11y-grunt.js
Last active May 30, 2016 11:20
grunt file for mathjax-a11y
module.exports = function(grunt) {
grunt.initConfig({
'json-minify': {
build: {
files: 'dist/mathmaps/**/*.json'
}
},
gitclone: {
'speech-rule-engine': {
@pkra
pkra / png-sv2png.js
Last active May 30, 2016 08:06
An example module for wrapping PNG generation around mathjax-node
var mjAPI = require("../lib/main.js");
var svg2png = require('svg2png');
function createPNG(result, callback){
var sourceBuffer = new Buffer(result.svg, "utf-8");
svg2png(sourceBuffer).then(function(buffer){
result.png = "data:image/png;base64," + buffer.toString('base64');
return callback(result);
})
};
@pkra
pkra / mj-node-xhtml-with-mml.js
Last active May 27, 2016 12:00
Quick MathJax-node wrapper for xhtml files containig MathML
'use strict';
var mjAPI = require('mathjax-node/lib/mj-single');
var typeset = mjAPI.typeset;
var fs = require('fs');
var libxmljs = require('libxmljs');
var argv = require('yargs')
.strict()
.usage('Usage: jats -i input.html -o output.html -f HTML', {
"use strict";
var mjAPI = require("./lib/main");
var fs = require('fs');
var inputFile = "file.txt"; // use xargs or something
var output = [];
var array = fs.readFileSync('file.txt').toString().split("\n");
mjAPI.start();
@pkra
pkra / sre.py
Last active February 28, 2016 09:10
SpeechRuleEngine in Python
# Usage: python sre.py mml.txt
import os
import sys
from execjs import get
runtime = get('Node')
context = runtime.compile('''
module.paths.push('%s');
var sre = require('speech-rule-engine');
sre.setupEngine({semantics: true, domain: "mathspeak", style: "brief"});