2012-06-11 58 views
54

我有一個哲基爾博客,我想使用MathJax用它,因爲我希望能夠像使用MathJax具有傑基爾

$$\sum_{n=1}^\infty 1/n^2 = \frac{\pi^2}{6}$$ 
在我的降價文件

輸入一些東西的感覺,並且具有正確的用MathJax生成的LaTeX表達式,與math.stackexchange中的方式類似。

這樣做最簡單的方法是什麼?目前,我有我的目錄中的文件jsmath.js(GitHub的依據),我想我可以有一個名爲mathjs一個簡單的文件在我_includes目錄與線

<script src="path/to/jsmath.js></script> 

,包括在每一個職位通過

{% include mathjs %} 

但這似乎不起作用 - 當我運行jekyll --server頁面生成,但沒有任何內容可見。

我對此有何看法?有沒有更好的方式與Jekyll一起使用MathJax?

+1

僅供參考,我寫了一篇關於在Jekyll中使用MathJax的小教程。對我來說工作得很好。 http://cwoebker.com/posts/latex-math-magic – cwoebker

+0

@cwoebker你應該讓它成爲一個答案(從你的博客複製一些部分)。 –

+0

你走吧:)不客氣。它只有一個最基本的答案供參考,希望它足夠。 – cwoebker

回答

40

當然,你可以用Jekyll使用mathjax。爲了得到這個工作,請確保

  1. 如果您使用markdown編寫您的文章,您的markdown解釋程序不會錘擊您的mathjax輸入。我發現保護它的最好方法是始終將<div>元素的顯示數學和<span>元素的內聯數學放在一起,大多數減價解釋器將單獨留下。
  2. javascript線條是否在html源代碼中正確顯示?我發現指向mathjax CDN更容易,更快,而不是提供我自己的副本。嘗試使用線

    <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

(這些配置選項讓你使用更TEX符號來開始你的數學環境,如\begin{equation}等)。

或許您的jsmath.js腳本存在一些問題; CDN版本將更快,可能更可靠。 (我在每個頁面的頁腳都有javascript加載,但是當然,如​​果你不想在不需要的時候加載javascript,那麼你的策略與include有關係。)

我們可以幫助更多if你給我們一個鏈接到你的博客?你可以看到一些例子on my blog(如果有幫助,也可以鏈接到github上的Jekyll安裝程序)。

+0

謝謝 - 我會試試這個,讓你知道它是怎麼回事。 –

+0

與mathjax CDN有什麼好運? – cboettig

+0

我只是剛剛做到這一點(!),但它效果很好 - 謝謝! –

2

你可以嘗試我的靜態博客生成器:Jekyde。 Jekyde與Jekyll很相似,但它很好地處理了Markdown文件中的LaTeX。你只需要把你的公式放在$ ... $和$$ ... $$之內。另外Jekyde在LaTeX預覽版的瀏覽器中包含一個Markdown編輯器。

5

我寫了一篇博客有關設置MathJax而回:Latex Math Magic

在本質上,你必須從搞亂與MathJax停止降價。

我結束了使用代碼塊,它爲我工作得很好。因此,在寫東西或使用銳角符號之前至少使用4個空格:`; 不幸的是MathJax默認跳過<code>標籤,因爲它不想轉換它不應該的代碼。

所以在主佈局文件的地方,你必須添加一些JavaScript代碼:

MathJax.Hub.Config({ 
    tex2jax: { 
    skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'] 
    } 
}); 

此外,我們必須告訴MathJax忽略非乳膠代碼塊或正常的代碼塊:

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'; 
    } 
}); 

在他看來,我們所有的乳膠代碼塊都將在其類名中包含has-jax字符串。因此,我們可以在我們的CSS表格中應用一些簡單的樣式,以賦予它自己的樣式。

code.has-jax {font: inherit; font-size: 100%; background: inherit; border: inherit;} 

可能不是最好的方法,但它在過去幾年對我的博客起作用,我從來沒有遇到任何進一步的問題。

+1

我想我已經做了你所建議的一切,但它不起作用:[不起作用的示例](http://martinthoma.github.io/fibonacci-recursion-decorators/#tocAnchor-1-2 ) –

+0

[另一個例子](http://martinthoma.github.io/part-iv-multiply-matrix-transpose-python-cpp/)。 –

41

如果您對發佈過程有足夠的控制(例如,您自己正在運行Jekyll),則easy solution將把降價解析器切換爲支持TeX的解析器。例如,使用kramdown

gem install kramdown 

更改markdown_config.yml

markdown: kramdown 

,並加入類似

<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 

_layouts/default.html。現在你可以簡單地mark any mathematics in your posts with $$

+0

對我而言,這還不夠。一些方程式混亂了。例如,\ begin {align} m_a(t)= \ begin {cases} 0,\ quad 0 t_a + \ tau \ end {cases} \ end {align} – nos

+3

較新版本的Jekyll沒有'_layouts'目錄。在這種情況下,我們應該在哪裏放置'

3

如果您使用kramdown作爲降價風格,很容易。 Kramdown內置了對mathjax的支持。

  1. 在默認佈局中的</head>標記之前添加此標記。

    <script type="text/javascript" async 
    src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js? 
    config=TeX-AMS-MML_HTMLorMML"></script> 
    
  2. 設置爲true在_config.yml,在markdown: kramdown行之後。

    mathjax: true 
    
  3. 完成。對於renedering Mathjax

    • 直列,使用\(... \)
    • 塊,使用\[ ... \]

      唯一需要注意的是在使用降價時避開反斜槓,因此分隔符分別變爲內聯和分塊數學的\\(... \\)\\[ ... \\]

  4. 這裏是MathJax內嵌呈現\\(1/x^{2} \\)示例,這裏是塊渲染: \\[ \frac{1}{n^{2}} \\]

我在我的博客上使用這個。