我可以将LaTeX包添加到MathJax吗?

时间:2014-01-17 17:53:34

标签: latex mathjax

我有一些用LaTeX编写的数学表达式,我想把它放在网页上。但是,它们使用的程序包似乎不包含在MathJax中(例如ytableau)。他们首先编写的内容非常耗时,我希望能够使用我拥有的内容,而不是弄清楚如何使用我目前可以访问的MathJax功能重现结果。

我原以为将LaTeX包转换为MathJax扩展可能很容易,因为MathJax安装中的扩展似乎是基于LateX包,我查看了cancel.sty LaTeX包和cancel.js MathJax扩展希望它会让我知道如何做到这一点,但我看不出它们是如何相关的。

有没有办法使用带有MathJax的LaTeX包?如果是这样,我该怎么做?

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

5 个答案:

答案 0 :(得分:27)

  

有没有办法将LaTeX包与MathJax一起使用?

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

答案 1 :(得分:3)

  

是否可以在MathJax中使用LaTeX软件包?如果是这样,我该怎么办?

  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}$$

Commutative Diagram

$\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-}}$}$$

Chemical Symbols mhchem示例是从MathJax-mhchem网页获得的。

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

答案 2 :(得分:0)

是的。 根据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

答案 3 :(得分:0)

所以这取决于包的复杂程度。如果它所做的只是使用 def 和 newcommand 来定义一些宏,那么将一个包变成一个合适的 mathjax 扩展只是一个小小的繁重工作。

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

答案 4 :(得分:-1)

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

如果您不是该网站的管理员,当然您必须说服安装该软件包的权力。