34082fbf94
Implement amsthm-like Theorem environments with Maruku. Support is based on Maruku "div"s with special class-names. Classes num_* produce numbered environments, and un_* produce un-numbered environments, where * is one of theorem (for Theorem) lemma (for Lemma) prop (for Proposition) cor (for Corollary) def (for Definition) example (for Example) remark (for Remark) note (for Note) In addition, the class proof produces a Proof environment. The LaTeX export works as expected, and these also work in the S5 view. Bumped version number.
47 lines
1.7 KiB
JavaScript
47 lines
1.7 KiB
JavaScript
/*
|
|
* Based on Simon Willison's blockquotes.js
|
|
* http://simon.incutio.com/archive/2002/12/20/#blockquoteCitations
|
|
*/
|
|
function extractBlockquoteCitations() {
|
|
var quotes = document.getElementsByTagName('blockquote');
|
|
for (i = 0; i < quotes.length; i++) {
|
|
var cite = quotes[i].getAttribute('cite');
|
|
if (cite && cite != '') {
|
|
var newlink = document.createElement('a');
|
|
newlink.setAttribute('href', cite);
|
|
newlink.setAttribute('title', cite);
|
|
newlink.appendChild(document.createTextNode('#'));
|
|
var newspan = document.createElement('span');
|
|
newspan.setAttribute('class','blockquotesource');
|
|
newspan.appendChild(newlink);
|
|
quotes[i].lastChild.previousSibling.appendChild(newspan);
|
|
}
|
|
}
|
|
}
|
|
|
|
function fixRunIn() {
|
|
// work around lack of gecko support for display:run-in
|
|
var re = /^num_|\s+num_|^un_|\s+un_|proof/;
|
|
$$('div > h6').each(function(element) {
|
|
if(re.test($(element.parentNode).className)) {
|
|
var new_span = new Element('span').update(element.textContent);
|
|
new_span.addClassName('theorem_label');
|
|
var next_el = element.next().firstChild;
|
|
next_el.parentNode.insertBefore(new_span, next_el);
|
|
var period = new Element('span').update('. ');
|
|
next_el.parentNode.insertBefore(period, next_el);
|
|
element.remove();
|
|
}
|
|
});
|
|
// add tombstone to proof, since gecko doesn't support :last-child properly
|
|
$$('div.proof').each(function(element) {
|
|
var l = element.childElements().length -1;
|
|
var span = new Element('span').update('\u00a0\u00a0\u25ae');
|
|
element.childElements()[l].insert(span);
|
|
});
|
|
}
|
|
|
|
window.onload = function (){
|
|
extractBlockquoteCitations();
|
|
fixRunIn();
|
|
};
|