2013-05-09 49 views
4

我一直在試圖弄清楚這個表達式在我的文檔字符串中有什麼問題。我在python sphinx v1.2b中使用sphinx.ext.mathjax擴展。文檔字符串:在sphinx python中的Mathjax表達式不呈現correclty

.. math:: 

    w_k^* = \min_{w_k} \ell_k(w_k) + \lambda\left(\alpha||w_k||_1 
    + \frac{1}{2}(1-\alpha) ||w_k||^2\right) 

這是出現什麼: enter image description here

但它仍然在所有產生這種奇怪的警告,而不是渲染表達:

WARNING: Block quote ends without a blank line; unexpected unindent. 

奇怪的是,如果我刪除\alpha\left\right,\frac符號,表達式呈現正常,沒有警告。不知道爲什麼\lambda將被支持,而不是\alpha

回答

10

Sphinx documentation

請記住,當你把數學標記在Python的文檔字符串通過閱讀車博士,你要麼必須加倍所有反斜槓,或使用Python原始字符串(r"raw")。

這是必需的,使得乳膠命令,如\alpha,正確解釋(\a和其他一些序列在字符串文本special meaning)。

+0

謝謝這確實是問題所在。我應該總是加倍所有反斜槓嗎?我試圖遵循[numpy doscstring標準](https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt)。但他們既不使用原始字符串也不使用雙反斜槓。 – bluecat 2013-05-09 22:23:35

+0

並非所有的LaTeX命令都與Python的特殊轉義序列衝突。你注意到'\ lambda'工作。所以,你總是**必須加雙反斜槓或使用原始字符串(但這樣做似乎是一種好習慣,以免麻煩)並不是絕對正確的。 – mzjn 2013-05-10 08:47:57

+0

我認爲這將有助於顯示原始方程:w_k^* = \ min_ {w_k} \ ell_k(w_k)+ \ lambda \ left(\ alpha || w_k || _1 + \ frac {1} {2 }(1 \ \ alpha || || w_k ||^2 \ right),然後展示如何修改它以讓autodoc在Python文檔字符串中正確讀取它。 – benjaminmgross 2013-11-15 06:30:13