From: Rasmus <rasmus@gmx.us>
To: emacs-orgmode@gnu.org
Subject: [patch, ox-html] mathjax changes (was: ox and links to equation)
Date: Mon, 16 Feb 2015 02:50:50 +0100 [thread overview]
Message-ID: <871tlqipz9.fsf_-_@gmx.us> (raw)
In-Reply-To: <878ufzkvsp.fsf@nicolasgoaziou.fr> (Nicolas Goaziou's message of "Sun, 15 Feb 2015 17:02:14 +0100")
[-- Attachment #1: Type: text/plain, Size: 680 bytes --]
Hi,
>> and *why* is orgmode.org hosting it? Privacy?
>
> I don't think CDN service was available at the time mathjax support was
> implemented. IMO, it hardly makes sense to host it now.
This patch switches the cdn to upstream and removes a lot of stuff that I
believe mathjax will figure out on it own. I'm no mathjax or webs export,
though. Notably, mathml stuff is gone.
OTOH, I added some display options, which I believe one might care about.
If more "user-sensible" options exists I can add them.
It would be good if someone who knows MathJax better could reviews this.
—Rasmus
--
When the facts change, I change my mind. What do you do, sir?
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-ox-html-Use-upstream-MathJax-CDN.patch --]
[-- Type: text/x-diff, Size: 11924 bytes --]
From baf1f93056feb034c223cc7d7f5234559cd34471 Mon Sep 17 00:00:00 2001
From: Rasmus <rasmus@gmx.us>
Date: Mon, 16 Feb 2015 02:04:02 +0100
Subject: [PATCH] ox-html: Use upstream MathJax CDN
* ox-html.el (org-html-mathjax-options): Add multlinewidth,
autonumber, tagindent and tagside. Remove MathML. Change
default indent to correspond to upstream default. Change
default MathJax path to point to upstream CDN.
(org-html--build-mathjax-config): Remove MathML-related parts.
(org-html-mathjax-template): Simplifiy template.
* org.texi (@LaTeX{} fragments), (Math formatting in HTML export):
Reflect change in default CDN.
---
doc/org.texi | 51 ++++++++++++-------------
lisp/ox-html.el | 115 ++++++++++++++++++++++++--------------------------------
2 files changed, 73 insertions(+), 93 deletions(-)
diff --git a/doc/org.texi b/doc/org.texi
index bec46a9..157f928 100644
--- a/doc/org.texi
+++ b/doc/org.texi
@@ -10258,20 +10258,17 @@ format sub- and superscripts in a WYSIWYM way.
Going beyond symbols and sub- and superscripts, a full formula language is
needed. Org mode can contain @LaTeX{} math fragments, and it supports ways
to process these for several export back-ends. When exporting to @LaTeX{},
-the code is obviously left as it is. When exporting to HTML, Org can invoke
-the @uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
-HTML export}) to process and display the math@footnote{If you plan to use
-this regularly or on pages with significant page views, you should install
-@file{MathJax} on your own server in order to limit the load of our server.}.
-It can also process the mathematical expressions into images that can be
-displayed in a browser (see @pxref{Previewing @LaTeX{} fragments}).
+the code is left as it is. When exporting to HTML, Org can use either
+@uref{http://www.mathjax.org, MathJax} (@pxref{Math formatting in HTML
+export}) or transcode the math into images (see @pxref{Previewing @LaTeX{}
+fragments}).
@LaTeX{} fragments don't need any special marking at all. The following
snippets will be identified as @LaTeX{} source code:
@itemize @bullet
@item
-Environments of any kind@footnote{When @file{MathJax} is used, only the
-environments recognized by @file{MathJax} will be processed. When
+Environments of any kind@footnote{When MathJax is used, only the
+environments recognized by MathJax will be processed. When
@file{dvipng} program or @file{imagemagick} suite is used to create images,
any @LaTeX{} environment will be handled.}. The only requirement is that the
@code{\begin} statement appears on a new line, at the beginning of the line
@@ -10307,7 +10304,7 @@ either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
@vindex org-export-with-latex
@LaTeX{} processing can be configured with the variable
@code{org-export-with-latex}. The default setting is @code{t} which means
-@file{MathJax} for HTML, and no processing for ASCII and @LaTeX{} back-ends.
+MathJax for HTML, and no processing for ASCII and @LaTeX{} back-ends.
You can also set this variable on a per-file basis using one of these
lines:
@@ -11466,25 +11463,23 @@ You could use @code{http} addresses just as well.
@cindex imagemagick
@LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be displayed in two
-different ways on HTML pages. The default is to use the
-@uref{http://www.mathjax.org, MathJax system} which should work out of the
-box with Org mode installation because @uref{http://orgmode.org} serves
-@file{MathJax} for Org mode users for small applications and for testing
-purposes. @b{If you plan to use this regularly or on pages with significant
-page views, you should install@footnote{Installation instructions can be
-found on the MathJax website, see
-@uref{http://www.mathjax.org/resources/docs/?installation.html}.} MathJax on
-your own server in order to limit the load of our server.} To configure
-@file{MathJax}, use the variable @code{org-html-mathjax-options} or
-insert something like the following into the buffer:
-
-@example
-#+HTML_MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
-@end example
+different ways on HTML pages. The default is to use
+@uref{http://www.mathjax.org, MathJax} which should work out of the box with
+Org@footnote{By default Org loads MathJax from
+@uref{http://docs.mathjax.org/en/latest/start.html#using-the-mathjax-content-delivery-network-cdn,
+MathJax.org}. A link to the terms of service of the MathJax CDN can be found
+in the docstring of @code{org-html-mathjax-options}.}. Some MathJax display
+options can be configured via @code{org-html-mathjax-options}, or in the
+buffer. For example, with the following settings,
+@smallexample
+#+HTML_MATHJAX: align: left indent: 5em tagside: left tagindent: 0
+@end smallexample
+equation labels will be displayed on the left marign and equations will be
+five ems from the left margin.
-@noindent See the docstring of the variable
-@code{org-html-mathjax-options} for the meaning of the parameters in
-this line.
+@noindent See the docstring of
+@code{org-html-mathjax-options} for all supported variables. The MathJax
+template can be configure via @code{org-html-mathjax-template}.
If you prefer, you can also request that @LaTeX{} fragments are processed
into small images that will be inserted into the browser page. Before the
diff --git a/lisp/ox-html.el b/lisp/ox-html.el
index 61619e0..b5e2231 100644
--- a/lisp/ox-html.el
+++ b/lisp/ox-html.el
@@ -1064,82 +1064,78 @@ See `format-time-string' for more information on its components."
;;;; Template :: Mathjax
(defcustom org-html-mathjax-options
- '((path "http://orgmode.org/mathjax/MathJax.js")
+ '((path "http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML" )
(scale "100")
(align "center")
- (indent "2em")
- (mathml nil))
+ (indent "0em")
+ (multlinewidth "85%")
+ (autonumber "AMS")
+ (tagindent ".8em")
+ (tagside "right"))
"Options for MathJax setup.
-path The path where to find MathJax
-scale Scaling for the HTML-CSS backend, usually between 100 and 133
-align How to align display math: left, center, or right
-indent If align is not center, how far from the left/right side?
-mathml Should a MathML player be used if available?
- This is faster and reduces bandwidth use, but currently
- sometimes has lower spacing quality. Therefore, the default is
- nil. When browsers get better, this switch can be flipped.
+path The path where to find MathJax
+scale Scaling for the HTML-CSS backend, usually between 100 and 133
+align How to align display math: left, center, or right
+indent If align is not center, how far from the left/right side?
+multlinewidth The width of the multline environment.
+autonumber How to number equations: None, all or as AMS Math.
+tagindent The amount tags are indented.
+tagside Whether tags are shown to the left or right of equations
You can also customize this for each buffer, using something like
-#+MATHJAX: scale:\"133\" align:\"right\" mathml:t path:\"/MathJax/\""
+#+HTML_MATHJAX: align: left indent: 5em tagside: left
+
+For further information about MathJax options, see the MathJax documentation:
+
+ http://docs.mathjax.org/
+
+Please note that by using the default CDN one must agree with
+MathJax CDN Terms of Service.
+
+ http://www.mathjax.org/mathjax-cdn-terms-of-service.html"
:group 'org-export-html
:type '(list :greedy t
- (list :tag "path (the path from where to load MathJax.js)"
- (const :format " " path) (string))
+ (list :tag "path (the path from where to load MathJax.js)"
+ (const :format " " path) (string))
(list :tag "scale (scaling for the displayed math)"
(const :format " " scale) (string))
(list :tag "align (alignment of displayed equations)"
(const :format " " align) (string))
(list :tag "indent (indentation with left or right alignment)"
(const :format " " indent) (string))
- (list :tag "mathml (should MathML display be used is possible)"
- (const :format " " mathml) (boolean))))
+ (list :tag "multlinewidth (width to use for the multline environment)"
+ (const :format " " multlinewidth) (string))
+ (list :tag "autonumber (when should equations be numbered)"
+ (const :format " " autonumber)
+ (choice (const "AMS")
+ (const "None")
+ (const "All")))
+ (list :tag "tagindent (the indentation of tags from left or right)"
+ (const :format " " tagindent) (string))
+ (list :tag "tagside (location of tags)"
+ (const :format " " tagside)
+ (choice (const "left")
+ (const "right")))))
(defcustom org-html-mathjax-template
- "<script type=\"text/javascript\" src=\"%PATH\"></script>
-<script type=\"text/javascript\">
-<!--/*--><![CDATA[/*><!--*/
+ "<script type=\"text/x-mathjax-config\">
MathJax.Hub.Config({
- // Only one of the two following lines, depending on user settings
- // First allows browser-native MathML display, second forces HTML/CSS
- :MMLYES: config: [\"MMLorHTML.js\"], jax: [\"input/TeX\"],
- :MMLNO: jax: [\"input/TeX\", \"output/HTML-CSS\"],
- extensions: [\"tex2jax.js\",\"TeX/AMSmath.js\",\"TeX/AMSsymbols.js\",
- \"TeX/noUndefined.js\"],
- tex2jax: {
- inlineMath: [ [\"\\\\(\",\"\\\\)\"] ],
- displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"], [\"\\\\begin{displaymath}\",\"\\\\end{displaymath}\"] ],
- skipTags: [\"script\",\"noscript\",\"style\",\"textarea\",\"pre\",\"code\"],
- ignoreClass: \"tex2jax_ignore\",
- processEscapes: false,
- processEnvironments: true,
- preview: \"TeX\"
- },
- showProcessingMessages: true,
displayAlign: \"%ALIGN\",
displayIndent: \"%INDENT\",
- \"HTML-CSS\": {
- scale: %SCALE,
- availableFonts: [\"STIX\",\"TeX\"],
- preferredFont: \"TeX\",
- webFont: \"TeX\",
- imageFont: \"TeX\",
- showMathMenu: true,
- },
- MMLorHTML: {
- prefer: {
- MSIE: \"MML\",
- Firefox: \"MML\",
- Opera: \"HTML\",
- other: \"HTML\"
+ \"HTML-CSS\": { scale: %SCALE,},
+ TeX: { equationNumbers: {autoNumber: \"%AUTONUMBER\"},
+ MultLineWidth: \"%MULTLINEWIDTH\",
+ TagSide: \"%TAGSIDE\",
+ TagIndent: \"%TAGINDENT\"
}
- }
- });
-/*]]>*///-->
-</script>"
- "The MathJax setup for XHTML files."
+});
+</script>
+<script type=\"text/javascript\"
+ src=\"%PATH\"></script>"
+ "The MathJax template. See also `org-html-mathjax-options'."
:group 'org-export-html
:type 'string)
@@ -1691,17 +1687,6 @@ INFO is a plist used as a communication channel."
(if (string-match (concat "%" (upcase (symbol-name name))) template)
(setq template (replace-match val t t template))))
options)
- (setq val (nth 1 (assq 'mathml options)))
- (if (string-match (concat "\\<mathml:") in-buffer)
- (setq val (car (read-from-string
- (substring in-buffer (match-end 0))))))
- ;; Exchange prefixes depending on mathml setting.
- (if (not val) (setq x yes yes no no x))
- ;; Replace cookies to turn on or off the config/jax lines.
- (if (string-match ":MMLYES:" template)
- (setq template (replace-match yes t t template)))
- (if (string-match ":MMLNO:" template)
- (setq template (replace-match no t t template)))
;; Return the modified template.
(org-element-normalize-string template))))
--
2.3.0
next prev parent reply other threads:[~2015-02-16 1:51 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-15 0:27 ox and links to equation Rasmus
2015-02-15 9:58 ` Nicolas Goaziou
2015-02-15 11:30 ` Rasmus
2015-02-15 12:50 ` Nicolas Goaziou
2015-02-15 13:01 ` Rasmus
2015-02-15 16:02 ` Nicolas Goaziou
2015-02-15 20:37 ` Rasmus
2015-02-15 20:46 ` Nicolas Goaziou
2015-02-15 22:31 ` Rasmus
2015-02-16 1:50 ` Rasmus [this message]
2015-02-17 18:04 ` [patch, ox-html] mathjax changes Rasmus
2015-02-27 13:11 ` Rasmus
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871tlqipz9.fsf_-_@gmx.us \
--to=rasmus@gmx.us \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.