我有一些用LaTeX编写的数学表达式,我想把它放在网页上。但是,它们使用的程序包似乎不包含在MathJax中(例如ytableau)。他们首先编写的内容非常耗时,我希望能够使用我拥有的内容,而不是弄清楚如何使用我目前可以访问的MathJax功能重现结果。
我原以为将LaTeX包转换为MathJax扩展可能很容易,因为MathJax安装中的扩展似乎是基于LateX包,我查看了cancel.sty LaTeX包和cancel.js MathJax扩展希望它会让我知道如何做到这一点,但我看不出它们是如何相关的。
有没有办法使用带有MathJax的LaTeX包?如果是这样,我该怎么做?
(第一个问题,希望这不是主题。)
答案 0 :(得分:27)
有没有办法将LaTeX包与MathJax一起使用?
没有。 MathJax不是LaTeX;它处理类似LaTeX的输入(尽管它可以合理地接近真正的LaTeX),但它在引擎盖下工作的方式却截然不同。一个区别特别是MathJax只实现了数学模式宏,而不是所有其他文本模式或通用处理宏和控制序列。因此,LaTeX软件包使用的大多数工具都不存在。这意味着您不能简单地将LaTeX包放入MathJax。 MathJax支持的包必须在javascript中重新实现,这对于非平凡的包很难(比如你引用的包)。
答案 1 :(得分:3)
是否可以在MathJax中使用LaTeX软件包?如果是这样,我该怎么办?
首先,StackExchange网站必须支持MathJax。
您需要为特定站点使用正确的语法。
某些网站在美元符号前需要加一个反斜杠,因为当人们尝试写下“每次运输要花费10美元”时,它们的结尾处是“ 10美元
您需要在页面上的某处使用$\require{\packagename}$
,这会影响整个页面(包括其他人的帖子)。
有问题的站点需要支持扩展。官方列表(但不完整)在此处:“ 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注释<!-- 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}\)
,但上述链接告诉您如何将任何包添加到您网站的配置中。
如果您不是该网站的管理员,当然您必须说服安装该软件包的权力。