2014-12-28 51 views
0

我在Python中使用pelican來生成靜態頁面。在Pydow中使用降價來突出顯示一個代碼塊是很好的,但是當涉及到內聯高亮時,會有顯着差異。如何更改默認降價的內聯突出顯示樣式?

請檢查my page。該頁面處於黑暗背景下,但背面標記「`爲內聯高亮顯示爲白色背景。

降價代碼

To clearify what exactly the command returns, 
one can use `pack('>i', -2500).encode('hex')`{.python}. 
Or I have a more complex solution like, `''.join(r'\x%02X' 
% ord(ch) for ch in src)`{.python}. 

所以,問題在這裏是如何定義的內聯高亮風格?

我試圖改變鵜鶘主題中的pygments default.css文件,但它沒有奏效。

我發現一些相關鏈接:

  1. Inline code syntax highlighting in GitHub markdown?
  2. Inline code highlighting in reStructuredText

回答

1

鵜鶘使用Python-MarkdownCodeHilite擴展到通過代碼到Pygments來做。請注意,代碼包括內聯代碼片段。事實上,我不知道任何支持突出顯示內聯代碼的Markdown解析器。一般來說,內聯代碼片段太短而不能有效突出顯示,並且幾乎總是太短而無法利用Pygments的語言猜測算法。

我看到您試圖使用Attribute List Extension擴展來通知Markdown該語言。但是,所做的只是將一個類添加到包裝代碼段的HTML <code>標記中。由於CodeHilite Extension只能在塊上工作,它甚至不會查看它,當然也不會將它傳遞給Pygments。

有你有可用的(在工作中所需要的量每增加)一些不同的選擇:

  1. 你可以寫自己的CSS它改變了背景和文本顏色,以便它們匹配塊。你不會得到語法突出顯示,但內聯代碼片段至少會匹配你的主題。無需在此處定義語言。

  2. 您可以使用JavaScript代碼高亮庫來突出顯示基於您使用Attribute List Extension定義的語言的所有代碼片段。但是,這可能需要您重新定義JS庫的CSS,以便它匹配Pygments的輸出。

  3. 您可以編寫自己的Python-Markdown擴展(也可以是CodeHilite),除了塊之外,還可以突出顯示內嵌代碼片段。

就個人而言,我會建議(1)以上。其實,看着你的頁面時,會出現該代碼模塊具有以下定義:

.highlight pre, .highlighttable pre { 
    background: #272822; 
    color: #f8f8f2; 
} 

也就是說,分配了「亮點」類父母(或「highlighttable」類)一個<pre>元素會用這些顏色顯示。當你想分配給內嵌代碼相同的顏色,添加以下規則:

code { 
    background: #272822; 
    color: #f8f8f2; 
} 

只要確保你定義由鵜鶘的主題(這似乎是在http://vfxware.com/theme/css/bootstrap.slate.min.css)定義的樣式後。

當然,你可以改變現有的CSS,但如果你以後決定更新到更新版本的主題或完全改變主題,你可能需要重新定義自己的規則。因此,我喜歡在一個單獨的文件中定義我自己的覆蓋集,我總是確保它是最後一個加載的文件。

+0

從我的問題的鏈接http://stackoverflow.com/questions/10870719/inline-code-highlighting-in-rest,它看起來可以做內聯突出顯示,所以你的意思是正常降價不支持這個? –

+0

@ tomriddle_1234是的,這是正確的。這不是Markdown的典型特徵。我沒有意識到任何Markdown實現都支持這個,直到你鏈接到一個。我的猜測是該實現是唯一支持該功能的實現。我質疑它能否按照我的答案中所述的理由始終保持正確。 – Waylan

相關問題