2012-03-21 50 views
6

當我對我的ReStructured Text源代碼運行rst2html.py及其代碼塊指令時,它將所有跨度和類添加到HTML中的代碼位,但實際着色這些跨度的CSS不存在。是否有可能讓RST添加CSS鏈接或將CSS嵌入到HTML文件中?如何讓rst2html.py包含用於語法高亮顯示的CSS?

+0

我不完全相信你問:你想獲得語法在HTML輸出突出,或者你必須應用此語法高亮的CSS,但不知道如何整合自定義CSS樣式進入構建過程? – Chris 2012-03-21 15:44:41

+0

我想在HTML輸出中突出顯示語法。類屬性都在那裏(例如),但是沒有附加的CSS被構建過程添加。 – 2012-03-21 16:27:18

回答

7

從Docutils 0.9開始,您可以使用code directive。從本頁上的示例:

.. code:: python 

def my_function(): 
    "just a test" 
    print 8/2 

或者,您可以使用Pygments進行語法高亮顯示。見Using Pygments in ReST documentsthis SO回答。

最後,您還可以使用thisthis博文中的代碼。

更新正如在評論中討論,獲得通過Pygments來做使用的樣式文件中使用的命令

pygmentize -S default -f html -a .highlight > style.css 

這將產生Pygments來做CSS樣式文件style.css

+0

是的,但是沒有添加所有span類的CSS樣式。我如何獲得CSS? – 2012-03-21 17:30:29

+0

我仍然不確定我是否完全理解這個問題。你正在使用Pygments或'code'指令嗎?如果是這樣的話,命令'pygmentize -S default -f html -a .highlight> style.css'將生成Pygments CSS樣式文件'style.css',然後使用'--stylesheet'在構建過程中使用它。命令(或類似的)或'rst2html.py'。 – Chris 2012-03-21 17:47:54

+0

這是我尋找的pygmentize命令,謝謝。 – 2012-03-21 18:19:11

5

在docutils 0.9和0.10中,不管你使用的是代碼,代碼塊還是源代碼都不是馬虎。所有指令都被認爲是code role

該命令將生成可以嵌入html的rst2html.py的css。

pygmentize -S default -f html -a .code > syntax.css 

此命令將生成的HTML:

rst2html.py --stylesheet=syntax.css in.txt > out.html 

默認情況下,rst2html.py輸出與類名像commentnumberintegeroperator跨越。如果你有一個docutils.conf無論是在相同的目錄爲源,或/etc,或~/.docutils

[parsers] 
[restructuredtext parser] 
syntax_highlight=short 

...那麼類名稱將是cmmio它匹配所產生syntax.csspygmentize

See syntax-highlight in docutils documentation