You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Google Sites嵌入LaTeX/MathJax时,如何添加预导言级自定义命令与定理环境?

针对Google Sites嵌入LaTeX的自定义命令与定理环境解决方案

一、自定义TeX命令(如\mb替代\mathbb)

完全可以实现,只需在MathJax的配置中添加Macros属性,等价于在TeX预导言中定义命令:

  1. 在现有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扩展,再定义环境:

  1. 在TeX配置块中添加AMS扩展加载:
TeX: {
  equationNumbers: {
    autoNumber: "AMS",
    useLabelIds: true
  },
  extensions: ["AMSmath.js", "AMSsymbols.js"], // 加载AMS相关扩展
  Macros: {
    mb: ['\\mathbb{#1}', 1],
    mc: ['\\mathcal{#1}', 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:57:56