【问题标题】:Can I add LaTeX packages to MathJax?我可以将 LaTeX 包添加到 MathJax 吗?
【发布时间】:2014-02-07 04:18:18
【问题描述】:

我有一些用 LaTeX 编写的数学表达式,我想放在网页上。但是,他们使用的包似乎没有包含在 MathJax 中(例如 ytableau)。首先,它们花费了足够的时间来编写我希望能够使用我拥有的东西,而不是弄清楚如何使用我目前可以访问的 MathJax 功能来重现结果。

我曾认为将 LaTeX 包转换为 MathJax 扩展可能很容易,因为 MathJax 安装中的扩展似乎基于 LateX 包,我查看了 cancel.sty LaTeX 包和 cancel.js MathJax扩展希望它能给我一些关于如何做的想法,但我看不出它们之间的关系。

有没有一种方法可以将 LaTeX 包与 MathJax 一起使用?如果是这样,我该怎么做?

(第一个问题,希望这不是题外话。)

【问题讨论】:

  • 你的意思是问“如何将 LaTeX 包添加到 MathJax?” ;P
  • 不,我只是指点它,同时玩得开心。祝你好运!

标签: latex mathjax


【解决方案1】:

有没有一种方法可以将 LaTeX 包与 MathJax 一起使用?

没有。 MathJax 不是 LaTeX;它处理类似于 LaTeX 的输入(尽可能接近真正的 LaTeX),但它在引擎盖下的工作方式非常不同。一个特别的区别是 MathJax 只实现数学模式宏,而不是所有其他文本模式或通用处理宏和控制序列。所以大多数 LaTeX 包使用的工具都不存在。这意味着您不能简单地将 LaTeX 包放入 MathJax。 MathJax 支持的包必须在 javascript 中重新实现,这对于非平凡的包(如您引用的包)来说是困难的。

【讨论】:

  • 我想补充一点,已经实现的软件包列表是可用的on the MathJax docs(此链接适用于 MathJax 3.0 - 通过在浏览器控制台中输入 MathJax.version 来检查站点的 MathJax 版本。)
【解决方案2】:

有没有一种方法可以将 LaTeX 包与 MathJax 一起使用?如果是这样,我该怎么做?

  1. 首先,StackExchange 站点必须支持 MathJax。

  2. 您需要为特定站点使用正确的语法。

    有些网站需要在美元符号前加上反斜杠,因为当人们尝试写“每次运费 10 美元”时,他们最终会写出“每次运费 10 美元每次运费”,以避免过多的问题关于为什么会发生这种情况,美元符号必须转义才能在某些网站上使用 MathJax。

  3. 你需要在页面某处使用$\require{\packagename}$,它会影响整个页面(包括其他人的帖子)。

  4. 相关网站需要支持扩展。官方(但不完整)列表在这里:“MathJax third-party extensions”。

最完整的MathJax Tutorial and Links 答案在 QC.meta.SE 结束。

具体到您的问题,“ytableau”在我测试这些示例 (physics.SE) 的网站上不起作用,但我演示的其他软件包可以工作:

$\require{\AMScd}$

$$\begin{CD}
A @<<< B @>>> C\\
@. @| @AAA\\
@. D @= E
\end{CD}$$

$\require{\mhchem}$

$$\ce{Zn^2+  <=>[+ 2OH-][+ 2H+]  
$\underset{\text{zinc hydroxide}}{\ce{Zn(OH)2 v}}
$  <=>[+ 2OH-][+ 2H+] 
$\underset{\text{tetrahydroxozincate(II)}}{\ce{[Zn(OH)4]^2-}}$}$$

mhchem 示例来自MathJax-mhchem 网页。

测试一个简短的示例以确定它是否以及如何工作。最糟糕的是,您可以在支持网站上撰写,捕获并裁剪屏幕截图,然后将 MathJax 包含在 HTML cmets &lt;!-- comment --&gt; 中并上传屏幕截图 - 如果将来启用 MathJax,代码将在您的问题或答案中可用在 HTML 注释中。

【讨论】:

  • $\require{mhchem}$ 加载了化学包,但$\require{physics}$ 似乎没有加载物理包。例如,$\require{physics}\dv[n]{f}{x}$ 不会渲染。知道为什么吗?
  • @Blue - 一个答案在Physics.SE 站点上,未在服务器端实现。例如:$\require{physics}\dv[n]{f}{x}$ 不适用于 Physics.SE,但 $\require{\mhchem}\ce{H2O}$ 可以正常工作。
  • a few tests在使用ickc physics MathJax Extension GitHub上的扩展,所以它可以工作的;它只需要开发人员为特定站点启用它的理由。 CTAN siteChemistry.Meta.SE 提供更多信息。
【解决方案3】:

是的。 根据官方 MathJax 文档,2.7 版:

虽然 MathJax 包含几乎所有的 Plain TeX 数学宏,并且 许多 LaTeX 宏和环境,并非一切都是 在核心 TeX 输入处理器中实现。一些不常用的命令 在 TeX 处理器的扩展中定义

MathJax 会在您第一次使用时自动加载一些扩展 他们实现的命令(例如,\def 和 \newcommand 宏 在 newcommand.js 扩展中实现,但 MathJax 会加载它 使用这些宏时扩展本身)。并非所有扩展都是 但是,设置为自动加载,因此您可能需要请求一些 自己明确扩展。

要启用任何 TeX 扩展,只需添加适当的字符串 (例如,“AMSmath.js”)到您的 TeX 块中的扩展数组 配置。如果您使用组合配置文件之一, 像 TeX-AMS_CHTML 一样,它已经包含了几个 自动扩展,但您可以使用 mathjax 包含其他扩展 加载 MathJax 之前的配置脚本。例如:

<script type="text/x-mathjax-config">
  MathJax.Hub.Config({ TeX: { extensions: ["autobold.js"] }});
</script>
<script type="text/javascript"
    src="https://example.com/mathjax/MathJax.js?config=TeX-AMS_CHTML">
</script>

将加载 autobold TeX 扩展以及已经加载的扩展 包含在 TeX AMS_CHTML 配置文件中。

您还可以使用非标准的 \require{extension} 宏从数学表达式中加载这些扩展。例如:

\(\require{color}\)

会将颜色扩展加载到页面中。这样你就可以 将扩展加载到没有加载它们的页面中 配置(并防止您必须加载所有 扩展到所有页面,即使它们没有被使用)。

来源:https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions

如果您想使用版本 3,这里是文档: https://docs.mathjax.org/en/v3.0-latest/input/tex/extensions.html

如果您想要最新版本: https://docs.mathjax.org/en/latest/input/tex/extensions.html

【讨论】:

  • 这仅适用于 mathjax 的扩展,它不会采用任意 Tex 包并加载它...请参阅我现在发布的答案。
【解决方案4】:

所以这取决于包的复杂程度。如果它所做的只是使用 def 和 newcommand 来定义一些宏,那么将包转换为适当的 mathjax 扩展只是一项繁琐的工作。

mathjax v2 的该过程记录在 here。特别要注意的是,对于基于 newcommand 的宏,您需要做的只是一些基本的转义并将宏 def 放入 JSON rep 而不是 \def 字符串。如果您在该页面中进一步查看,它还会大致了解如何定义更复杂的扩展,但坏消息是,如果您需要的不仅仅是基本的宏替换(例如图像绘制),您可能需要完全在 JavaScript 中重新实现包,而不使用一些低级 Tex 功能(但您可以访问易于使用的功能丰富的 html DOM 作为补偿)。我相信 v3 类似,但文档似乎仍在构建中。

【讨论】:

    【解决方案5】:

    This page 给出了答案,是的http://math.stackexchange.com 似乎不尊重 \(\require{foo}\),但上面的链接告诉您如何将任何包添加到您网站的配置中。

    如果您不是该站点的管理员,那么您当然必须说服当权者来安装该软件包。

    【讨论】:

    • 感谢您的回复。我通读了该页面(在询问之前)并且看不到答案,一定是遗漏了一些东西。是“TeX 和 LaTeX 扩展”部分吗?我尝试的第一件事是 (\require{ytableau}) 但它没有用。通过阅读您链接的页面,我发现 \require{...} 仅适用于 MathJax 安装中包含的扩展,而且似乎我不能将 LaTeX 包放入该文件夹以使用它,因为扩展似乎是对 LaTeX 包进行 JavaScript 改造以提供相同的功能。
    • 你能解释一下怎么做吗?我似乎没有抓住重点。
    • 这种机制不允许 允许加载任意 LaTeX 包。它允许您加载用 JavaScript 编写的 MathJax 扩展。一些现有的 MathJax 扩展模仿了广泛使用的 LaTeX 包(例如 amsmathamssymbols)的功能并具有相同的名称,但仅此而已。
    • 有没有办法使用 \require 命令加载带有 options 的包?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 2017-10-24
    • 2018-07-23
    相关资源
    最近更新 更多