emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Update Org to MathJax 3
@ 2022-10-07 13:36 Rudolf Adamkovič
  2022-10-08  7:20 ` Ihor Radchenko
  0 siblings, 1 reply; 27+ messages in thread
From: Rudolf Adamkovič @ 2022-10-07 13:36 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1371 bytes --]

Hello smart people!

With all the talk about Emacs 29, I figured we should update Org Mode to
use MathJax 3, to catch up with the rest of the world.

From the documentation (for MathJax 3.0 released in 2019):

> Version 3.0 of MathJax is a complete rewrite of MathJax from the
> ground up, and its usage and configuration is significantly different
> from that of MathJax version 2.

In practice, MathJax 3.2 renders mathematics faster and better, plus it
significantly improves LaTeX support.  For instance, one can typeset
calculus with the built-in (!) 'physics' package, like in LaTeX.

More information on the recent progress (made in 2019-2021):

https://docs.mathjax.org/en/latest/upgrading/whats-new-3.0.html
https://docs.mathjax.org/en/latest/upgrading/whats-new-3.1.html
https://docs.mathjax.org/en/latest/upgrading/whats-new-3.2.html

See the attached [working, but WIP] patch.

My question for you:

How do we change the 'org-html-mathjax-options'?

- 'scale' has now the value in [0, 1] and not in [0, 100]
- 'scale' should exist as a number and not string
- 'font' did not make it to MathJax 3 [*]
- 'linebreaks' did not make it to MathJax 3 [*]
- 'autonumber' has the values in lowercase now
- 'autonumber' became 'tags' in MathJax terminology

[*] coming in MathJax 4, currently in alpha

How does Org mode approach these kind of breaking changes?

Rudy


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-ox-html-Use-MathJax-3-instead-of-2.7.patch --]
[-- Type: text/x-patch, Size: 2770 bytes --]

From ca2eaf5bcc9ea01e764f6088e37d74ec2be6e426 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rudolf=20Adamkovi=C4=8D?= <salutis@me.com>
Date: Fri, 7 Oct 2022 15:03:48 +0200
Subject: [PATCH] ox-html: Use MathJax 3 instead of 2.7

* lisp/ox-html.el (org-html-mathjax-options): WIP
* lisp/ox-html.el (org-html-mathjax-template): WIP
---
 lisp/ox-html.el | 51 +++++++++++++++++++++++++------------------------
 1 file changed, 26 insertions(+), 25 deletions(-)

diff --git a/lisp/ox-html.el b/lisp/ox-html.el
index 9b77e4f8d..c6242d4bc 100644
--- a/lisp/ox-html.el
+++ b/lisp/ox-html.el
@@ -1166,12 +1166,12 @@ See `format-time-string' for more information on its components."
 ;;;; Template :: Mathjax
 
 (defcustom org-html-mathjax-options
-  '((path "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_HTML" )
-    (scale "100")
+  '((path "https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js")
+    (scale "1") ;; TODO: 0-1 AND NOT 0-100; NUMBER AND NOT STRING
     (align "center")
-    (font "TeX")
-    (linebreaks "false")
-    (autonumber "AMS")
+    (font "TeX") ;; TODO: NOT SUPPORTED
+    (linebreaks "false") ;; TODO: NOT SUPPORTED
+    (autonumber "ams") ;; TODO: NOW CALLED TAGS AND IN LOWERCASE
     (indent "0em")
     (multlinewidth "85%")
     (tagindent ".8em")
@@ -1244,27 +1244,28 @@ For further information about MathJax options, see the MathJax documentation:
 			     (const "right")))))
 
 (defcustom org-html-mathjax-template
-  "<script type=\"text/x-mathjax-config\">
-    MathJax.Hub.Config({
-        displayAlign: \"%ALIGN\",
-        displayIndent: \"%INDENT\",
-
-        \"HTML-CSS\": { scale: %SCALE,
-                        linebreaks: { automatic: \"%LINEBREAKS\" },
-                        webFont: \"%FONT\"
-                       },
-        SVG: {scale: %SCALE,
-              linebreaks: { automatic: \"%LINEBREAKS\" },
-              font: \"%FONT\"},
-        NativeMML: {scale: %SCALE},
-        TeX: { equationNumbers: {autoNumber: \"%AUTONUMBER\"},
-               MultLineWidth: \"%MULTLINEWIDTH\",
-               TagSide: \"%TAGSIDE\",
-               TagIndent: \"%TAGINDENT\"
-             }
-});
+  "<script>
+  window.MathJax = {
+    tex: {
+      ams: {
+        multlineWidth: '%MULTLINEWIDTH'
+      },
+      tags: '%AUTONUMBER',
+      tagSide: '%TAGSIDE',
+      tagIndent: '%TAGINDENT'
+    },
+    chtml: {
+      scale: %SCALE,
+      displayAlign: '%ALIGN',
+      displayIndent: '%INDENT'
+    },
+    svg: {
+      scale: %SCALE
+    }
+  };
 </script>
-<script src=\"%PATH\"></script>"
+
+<script id=\"MathJax-script\" async src=\"%PATH\"></script>"
   "The MathJax template.  See also `org-html-mathjax-options'."
   :group 'org-export-html
   :type 'string)
-- 
2.37.3


[-- Attachment #3: Type: text/plain, Size: 300 bytes --]

-- 
"Mathematics takes us still further from what is human into the region
of absolute necessity, to which not only the actual world, but every
possible world, must conform."
-- Bertrand Russell, 1902

Rudolf Adamkovič <salutis@me.com> [he/him]
Studenohorská 25
84103 Bratislava
Slovakia

^ permalink raw reply related	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2022-11-23 23:09 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-07 13:36 Update Org to MathJax 3 Rudolf Adamkovič
2022-10-08  7:20 ` Ihor Radchenko
2022-10-08 21:32   ` Rudolf Adamkovič
2022-11-05  0:20     ` [PATCH] " Rudolf Adamkovič
2022-11-05 12:01       ` Ihor Radchenko
2022-11-05 16:56         ` Rudolf Adamkovič
2022-11-05 22:44           ` Rudolf Adamkovič
2022-11-06  3:52             ` Ihor Radchenko
2022-11-06 23:49               ` Rudolf Adamkovič
2022-11-07  3:02                 ` Ihor Radchenko
2022-11-07 20:56                   ` Rudolf Adamkovič
2022-11-08  5:20                     ` Ihor Radchenko
2022-11-08 23:37                       ` Rudolf Adamkovič
2022-11-09  0:05                         ` Rudolf Adamkovič
2022-11-09  5:40                           ` Ihor Radchenko
2022-11-09 23:01                             ` Rudolf Adamkovič
2022-11-10  2:34                               ` Ihor Radchenko
2022-11-11 12:50                                 ` Rudolf Adamkovič
2022-11-13  4:24                                   ` Ihor Radchenko
2022-11-13 20:52                                     ` Rudolf Adamkovič
2022-11-14  4:33                                       ` Ihor Radchenko
2022-11-19 13:10                                         ` Bastien Guerry
2022-11-21  2:51                                           ` Ihor Radchenko
2022-11-22 20:56                                             ` Rudolf Adamkovič
2022-11-23 11:11                                               ` Ihor Radchenko
2022-11-23 23:08                                                 ` Rudolf Adamkovič
2022-11-09  2:49                         ` Ihor Radchenko

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).