将MathJax与Jekyll一起使用

将MathJax与Jekyll一起使用,jekyll,mathjax,Jekyll,Mathjax,我有一个Jekyll博客,我想使用MathJax,从某种意义上说,我希望能够键入 $$\sum_{n=1}^\infty 1/n^2 = \frac{\pi^2}{6}$$ 在我的标记文件中,使用MathJax生成正确的LaTeX表达式,方法与在中的操作类似 最简单的方法是什么?目前我的目录中有一个文件(GitHub gist),我想我可以在我的\u includes目录中有一个名为mathjs的简单文件 <script src="path/to/jsmath.js></sc

我有一个Jekyll博客,我想使用MathJax,从某种意义上说,我希望能够键入

$$\sum_{n=1}^\infty 1/n^2 = \frac{\pi^2}{6}$$
在我的标记文件中,使用MathJax生成正确的LaTeX表达式,方法与在中的操作类似

最简单的方法是什么?目前我的目录中有一个文件(GitHub gist),我想我可以在我的
\u includes
目录中有一个名为
mathjs
的简单文件

<script src="path/to/jsmath.js></script>
但这似乎不起作用——当我运行
jekyll--server
时,会生成页面,但没有任何内容可见


我这样做对吗?有没有更好的方法将MathJax与Jekyll一起使用?

当然,您可以将MathJax与Jekyll一起使用。要使这项工作正常进行,请确保

  • 如果您是在markdown中写文章,那么markdown解释器就不会重击mathjax输入。我发现保护它的最好方法是始终将显示数学放在
    元素中,将内联数学放在
    元素中,而大多数降价解释器将不使用这些元素
  • javascript行在html源代码中是否正确显示?我发现指向mathjax CDN比提供我自己的副本更容易、更快。试着用这条线

  • (这些配置选项允许您使用更多的tex符号来启动数学环境,例如
    \begin{equation}
    等)

    您的
    jsmath.js
    脚本可能存在一些问题;CDN版本将更快,可能更可靠。(我在每个页面的页脚中都有javascript加载,但是如果您不想在不需要的时候加载javascript,那么当然您的包含策略是有意义的。)


    如果你给我们一个你博客的链接,我们能帮上更多忙吗?您可以看到一些示例(如果有帮助的话,还可以在github上找到Jekyll安装程序的链接)

    您可以尝试我的静态博客生成器:。Jekyde类似于Jekyll,但它很好地处理了Markdown文件中的LaTeX。只需将公式放入$…$和$$…$中即可。另外,Jekyde在带有LaTeX预览的浏览器中包含一个降价编辑器。

    我不久前写了一篇关于设置MathJax的博文:

    本质上,您必须停止降价,以免将MathJax弄乱

    我最终使用了代码块,这对我来说很好。因此,在写东西之前,或者至少使用4个空格,或者使用锐符号:
    `
    ; 不幸的是,MathJax在默认情况下跳过了
    标记,因为它不想转换不应该转换的代码

    因此,在主布局文件的某个地方,您必须添加一些javascript代码:

    MathJax.Hub.Config({
      tex2jax: {
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre']
      }
    });
    
    此外,我们必须告诉MathJax忽略非latex代码块或普通代码块:

    MathJax.Hub.Queue(function() {
        var all = MathJax.Hub.getAllJax(), i;
        for(i=0; i < all.length; i += 1) {
            all[i].SourceElement().parentNode.className += ' has-jax';
        }
    });
    

    可能不是最好的方法,但在过去的几年中,它一直适用于我的博客,我从未遇到过任何进一步的问题。

    如果您对发布过程有足够的控制权(例如,您自己运行的是Jekyll),则需要将标记解析器切换到支持TeX的解析器。例如,使用:

    \u config.yml
    中的
    标记行更改为

    markdown: kramdown
    
    再加上

    
    

    \u layouts/default.html
    。现在,您可以简单地使用。

    如果您使用
    kramdown
    作为您的降价风格,这很容易。Kramdown内置了对
    mathjax
    的支持

  • 在默认布局的
    标记之前添加此项

    <script type="text/javascript" async 
    src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?
    config=TeX-AMS-MML_HTMLorMML"></script>
    
  • 完成了。为了背叛Mathjax

    • 内联,使用
      \(…\)
    • 块,使用
      \[…\]

      唯一需要注意的是使用标记时反斜杠的转义,因此对于内联数学和块数学,分隔符分别成为
      \\(…\\)
      \[…\\]

  • 下面是MathJax内联渲染
    \\(1/x^{2}\\)
    的示例,下面是块渲染:
    \[\frac{1}{n^{2}\\]

  • 我在我的博客上使用了它。

    在尝试以下任一选项之前,请先记下一些注意事项 选项
    0
    将增加构建时间,即使使用
    --增量
    也是如此,而且在大多数情况下可能会使用选项
    1
    ,但是,如果您部署在客户端可能无法访问CDN的网络上,那么这与占用的额外空间一起可能值得付出成本

    这两个选项都在私有服务器上进行了测试,使用
    kramdown
    作为标记解释器,并在项目的
    \u config.yml
    文件中设置
    mathjax:true
    ;请参阅的答案及其前言,以及upto的前两个代码块,了解这些位的操作方法

    选项
    0
    下载未打包的源代码并将其复制到
    项目名称
  • 下载源代码
  • cd~
    mkdir-p git/hub和&cd git/hub
    git克隆--深度1https://github.com/mathjax/MathJax.git
    
  • 在项目中创建一个目录路径,并将文件从
    MathJax/unpacket
    复制到此路径
  • cd~
    mkdir-p git/lan/project name/assets/JS_第三方/MathJax
    cp-r git/hub/MathJax/unpacket/*git/lan/project name/assets/JS_第三方/MathJax/
    
  • 将源添加到
    git
    跟踪
  • cd git/lan/project name/
    git添加资产/JS_第三方/MathJax
    git提交-m'将MathJax.js解包源添加到git跟踪'
    
  • 写一个包含文件

  • tee./\u includes/MathJax.html 1>/dev/null/dev/nullJekyll使用kramdown作为2.0+的默认标记转换器。它不支持mathjax等等,我认为下面的内容可以帮助您


    jekyll spaceship-对于我来说,将此添加到默认的_布局或标题_includeworks(与首页或帖子变量结合使用):

    
    {%if page.mathjax%}
    MathJax.Hub.Config({
    tex2jax:{
    
    gem install kramdown
    
    markdown: kramdown
    
    <script type="text/javascript" async 
    src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?
    config=TeX-AMS-MML_HTMLorMML"></script>
    
    mathjax: true
    
    ---
    mathjax: yes
    ---