2011-04-26 13:52:15 -04:00
|
|
|
(defpackage :coleslaw-mathjax
|
2012-09-15 17:39:00 -04:00
|
|
|
(:use :cl)
|
2012-09-20 18:33:29 -04:00
|
|
|
(:export #:enable)
|
2012-09-15 17:39:00 -04:00
|
|
|
(:import-from :coleslaw #:add-injection
|
2013-01-02 13:04:20 -05:00
|
|
|
#:content
|
2012-09-15 17:39:00 -04:00
|
|
|
#:index
|
2014-04-15 15:27:46 -04:00
|
|
|
#:tag-p
|
2014-04-15 20:30:47 -04:00
|
|
|
#:index-content))
|
2011-04-19 13:36:17 -04:00
|
|
|
|
2011-04-26 13:52:15 -04:00
|
|
|
(in-package :coleslaw-mathjax)
|
|
|
|
|
2013-04-04 20:18:18 +02:00
|
|
|
(defvar *mathjax-header* "~@[<script type=\"text/x-mathjax-config\">
|
|
|
|
MathJax.Hub.Config({~A});
|
|
|
|
</script>~]
|
2013-04-04 09:55:23 -04:00
|
|
|
<script type=\"text/javascript\" src=\"~A~@[?config=~A~]\"></script>")
|
2011-04-26 13:52:15 -04:00
|
|
|
|
2014-05-16 09:52:04 -04:00
|
|
|
(defgeneric mathjax-p (document)
|
|
|
|
(:documentation "Test if DOCUMENT requires contains any math-tagged content.")
|
|
|
|
(:method ((content content))
|
|
|
|
(tag-p "math" content))
|
|
|
|
(:method ((index index))
|
|
|
|
(and (slot-boundp index 'content)
|
|
|
|
(some #'mathjax-p (index-content index)))))
|
|
|
|
|
2013-04-04 09:55:23 -04:00
|
|
|
(defun enable (&key force config (preset "TeX-AMS-MML_HTMLorMML")
|
2017-04-10 16:56:45 +02:00
|
|
|
(location "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js"))
|
2014-09-22 14:26:20 -04:00
|
|
|
(flet ((inject-p (x)
|
|
|
|
(when (or force (mathjax-p x))
|
|
|
|
(format nil *mathjax-header* config location preset))))
|
|
|
|
(add-injection #'inject-p :head)))
|