在Google Sites嵌入LaTeX/MathJax时,如何添加预导言级自定义命令与定理环境?
针对Google Sites嵌入LaTeX的自定义命令与定理环境解决方案
一、自定义TeX命令(如\mb替代\mathbb)
完全可以实现,只需在MathJax的配置中添加Macros属性,等价于在TeX预导言中定义命令:
- 在现有
MathJax.Hub.Config的TeX配置块内,新增Macros节点:
TeX: { equationNumbers: { autoNumber: "AMS", useLabelIds: true }, // 新增自定义命令 Macros: { mb: ['\\mathbb{#1}', 1], // \mb{R} 等价于 \mathbb{R},数字1表示该命令接收1个参数 mc: ['\\mathcal{#1}', 1] // \mc{R} 等价于 \mathcal{R} } }
二、添加AMS风格定理环境(如thm环境)
MathJax支持AMS定理环境,需先加载AMS扩展,再定义环境:
- 在
TeX配置块中添加AMS扩展加载:
TeX: { equationNumbers: { autoNumber: "AMS", useLabelIds: true }, extensions: ["AMSmath.js", "AMSsymbols.js"], // 加载AMS相关扩展 Macros: { mb: ['\\mathbb{#1}', 1], mc: ['\\mathcal{#1}', 1] } }
- 在
init_mathjax函数内,注册启动钩子预定义定理环境(或直接在页面内容中用$\newtheorem{thm}{Theorem}$):
init_mathjax = function() { if (window.MathJax) { MathJax.Hub.Config({ // 原有配置... }); // 预定义thm定理环境 MathJax.Hub.Register.StartupHook("TeX Jax Ready", function () { var TEX = MathJax.InputJax.TeX; TEX.NewEnviron("thm", function (name, data) { return "\\begin{}\\textbf{Theorem " + data.number + ".} " + data.body + "\\end{}"; }); }); MathJax.Hub.Queue(["Typeset", MathJax.Hub]); } }
完整修改后的HTML模板
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title></title> <script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script> <!-- Load mathjax --> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-MML-AM_CHTML-full,Safe"> </script> <!-- MathJax configuration --> <script type="text/x-mathjax-config"> init_mathjax = function() { if (window.MathJax) { MathJax.Hub.Config({ TeX: { equationNumbers: { autoNumber: "AMS", useLabelIds: true }, extensions: ["AMSmath.js", "AMSsymbols.js"], Macros: { mb: ['\\mathbb{#1}', 1], mc: ['\\mathcal{#1}', 1] } }, tex2jax: { inlineMath: [ ['$','$'], ["\\(", "\\)"] ], displayMath: [ ['$$','$$'], ["\\[", "\\]"] ], processEscapes: true, processEnvironments: true }, displayAlign: 'center', CommonHTML: { linebreaks: { automatic: true } }, "HTML-CSS": { linebreaks: { automatic: true } } }); // 注册定理环境 MathJax.Hub.Register.StartupHook("TeX Jax Ready", function () { var TEX = MathJax.InputJax.TeX; TEX.NewEnviron("thm", function (name, data) { return "\\begin{}\\textbf{Theorem " + data.number + ".} " + data.body + "\\end{}"; }); }); MathJax.Hub.Queue(["Typeset", MathJax.Hub]); } } init_mathjax(); </script> <!-- End of mathjax configuration --> </head> <body> <!-- 示例:使用自定义命令 --> <p>实数集表示为 $\mb{R}$,环表示为 $\mc{R}$</p> <!-- 示例:使用定理环境 --> $$ \begin{thm} 对于任意 $x,y \in \mb{R}$,有 $(x+y)^2 = x^2 + 2xy + y^2$。 \end{thm} $$ </body> </html>
内容的提问来源于stack exchange,提问作者math-physicist
相关产品推荐
相关产品推荐

