From cdb45f2d037b81ddce73b73a580ef1913deb801b Mon Sep 17 00:00:00 2001
From: Liam Huang <liamhuang0205@gmail.com>
Date: Wed, 12 Feb 2020 14:39:51 +0800
Subject: [PATCH 1/5] [mathjax] mathjax.swig: loading amsmath packages by
 default.

---
 layout/_third-party/math/mathjax.swig | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/layout/_third-party/math/mathjax.swig b/layout/_third-party/math/mathjax.swig
index 331b8a0551..7fde704c9b 100644
--- a/layout/_third-party/math/mathjax.swig
+++ b/layout/_third-party/math/mathjax.swig
@@ -3,15 +3,19 @@
 <script>
   if (typeof MathJax === 'undefined') {
     window.MathJax = {
-      {%- if theme.math.mathjax.mhchem %}
-        loader: {
-          load: ['[tex]/mhchem']
-        },
-      {%- endif %}
+      loader: {
+        {%- if theme.math.mathjax.mhchem %}
+          load: ['[tex]/ams', '[tex]/mhchem'],
+        {%- else %}
+          load: ['[tex]/ams'],
+        {%- endif %}
+      },
       tex: {
         inlineMath: {'[+]': [['$', '$']]},
         {%- if theme.math.mathjax.mhchem %}
-          packages: {'[+]': ['mhchem']},
+          packages: {'[+]': ['ams', 'mhchem']},
+        {%- else %}
+          packages: {'[+]': ['ams']},
         {%- endif %}
         tags: 'ams'
       },

From e243dde6f87304aee3c229f39096c0a2bd705090 Mon Sep 17 00:00:00 2001
From: Liam Huang <liamhuang0205@gmail.com>
Date: Wed, 12 Feb 2020 14:40:39 +0800
Subject: [PATCH 2/5] [mathjax] mathjax.swig: enable \( and \) as inline math
 delimiters.

---
 layout/_third-party/math/mathjax.swig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/layout/_third-party/math/mathjax.swig b/layout/_third-party/math/mathjax.swig
index 7fde704c9b..87598c3795 100644
--- a/layout/_third-party/math/mathjax.swig
+++ b/layout/_third-party/math/mathjax.swig
@@ -11,7 +11,7 @@
         {%- endif %}
       },
       tex: {
-        inlineMath: {'[+]': [['$', '$']]},
+        inlineMath: {'[+]': [['$', '$'], ['\\(', '\\)']]},
         {%- if theme.math.mathjax.mhchem %}
           packages: {'[+]': ['ams', 'mhchem']},
         {%- else %}

From f1e739e9547d92c4dd139d864e6081491b9c2956 Mon Sep 17 00:00:00 2001
From: Liam Huang <liamhuang0205@gmail.com>
Date: Wed, 12 Feb 2020 16:12:11 +0800
Subject: [PATCH 3/5] Revert "[mathjax] mathjax.swig: enable \( and \) as
 inline math delimiters."

This reverts commit e243dde6f87304aee3c229f39096c0a2bd705090.
---
 layout/_third-party/math/mathjax.swig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/layout/_third-party/math/mathjax.swig b/layout/_third-party/math/mathjax.swig
index 87598c3795..7fde704c9b 100644
--- a/layout/_third-party/math/mathjax.swig
+++ b/layout/_third-party/math/mathjax.swig
@@ -11,7 +11,7 @@
         {%- endif %}
       },
       tex: {
-        inlineMath: {'[+]': [['$', '$'], ['\\(', '\\)']]},
+        inlineMath: {'[+]': [['$', '$']]},
         {%- if theme.math.mathjax.mhchem %}
           packages: {'[+]': ['ams', 'mhchem']},
         {%- else %}

From 37d4a222262cf9514857638ac5bcb3eada2f5ee9 Mon Sep 17 00:00:00 2001
From: Liam Huang <liamhuang0205@gmail.com>
Date: Wed, 12 Feb 2020 16:18:50 +0800
Subject: [PATCH 4/5] [mathjax] mathjax.swig: translation of code blocks.

---
 layout/_third-party/math/mathjax.swig | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/layout/_third-party/math/mathjax.swig b/layout/_third-party/math/mathjax.swig
index 7fde704c9b..f13cf61700 100644
--- a/layout/_third-party/math/mathjax.swig
+++ b/layout/_third-party/math/mathjax.swig
@@ -1,6 +1,18 @@
 {%- set mathjax_uri = theme.vendors.mathjax or '//cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js' %}
 
 <script>
+  {%- if theme.math.mathjax.math_in_verbatim %}
+    document.querySelectorAll('code').forEach(code => {
+      const text = code.innerHTML;
+      // is_inline_math  = /^\$(.*)\$$/.exec(text) || /^\\\((.*)\\\)$/.exec(text);
+      // is_display_math = /^\$\$(.*)\$\$$/ms.exec(text) || /^\\begin\{.+\}(.*)\\end\{.+\}/ms.exec(text);
+      if (/^\$\$(.*)\$\$$/ms.exec(text) || /^\\begin\{.+\}(.*)\\end\{.+\}/ms.exec(text)) {
+        code.outerHTML = "<span class='theme_next_mathjax_display has-jax'>" + text + "</span>";
+      } else if (/^\$(.*)\$$/.exec(text) || /^\\\((.*)\\\)$/.exec(text)) {
+        code.outerHTML = "<span class='theme_next_mathjax_inline has-jax'>"  + text + "</span>";
+      }
+    });
+  {%- endif %}
   if (typeof MathJax === 'undefined') {
     window.MathJax = {
       loader: {

From f410acd73aa4fac1d5e7fdd808b31ad348f43616 Mon Sep 17 00:00:00 2001
From: Liam Huang <liamhuang0205@gmail.com>
Date: Wed, 12 Feb 2020 16:25:59 +0800
Subject: [PATCH 5/5] [mathjax] _config.yml: add new flag for mathjax.

---
 _config.yml | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/_config.yml b/_config.yml
index a04ffa2504..aa46b94757 100644
--- a/_config.yml
+++ b/_config.yml
@@ -519,6 +519,19 @@ math:
     enable: false
     # See: https://mhchem.github.io/MathJax-mhchem/
     mhchem: false
+    # For hexo-renderer-marked, the default renderer of Hexo, some math equations with
+    # multiple subscribe mark of LaTeX (say, the underscore `_`) might cause problems.
+    # Enable this flag could bypass this problem by wrap your math codes in the inline-math_in_verbatim
+    # marks of Markdown, say, the backquote pair.
+    # For example,
+    # ```
+    # $ E = mc^2 $.
+    # ```
+    # could be replaced by
+    # ```
+    # `$ E = mc^2 $`.
+    # ```
+    math_in_verbatim: false
 
   # hexo-renderer-markdown-it-plus (or hexo-renderer-markdown-it with markdown-it-katex plugin) required for full Katex support.
   katex: