2016-04-29 97 views
0

可以調整emacs組織模式來微調輸出代碼塊的html嗎?內聯代碼被輸出爲預期組織模式:控制代碼塊的html輸出

<code> ..my code.. </code> 

如預期但一個碼塊(內部#+ BEGIN_SRC的Clojure ..#+ END_SRC塊標記)是輸出作爲

<pre class="src src-clojure> ..my code..</pre> 

我寧願標準

<pre><code> ..my code..</code></pre> 

我想,因爲這將意味着不需要更改CSS,並且(託管)代碼高亮顯示(highlight.js)可以開箱即用。 我已經閱讀了組織模式手冊,並在網上搜索了很長時間沒有運氣。行爲似乎可能是組織模式文件ox-html.el的設置,但調整這個有點超出了我目前的elisp知識水平。 謝謝!

回答

0

您可以重新定義HTML導出引擎用來生成該輸出的翻譯器函數。按C-h f(描述功能)並鍵入org-html-src-block以查看文檔並導航至功能定義。將該defun複製到您的dotemacs中進行自定義。

您可能希望將其更改爲:

(defun org-html-src-block (src-block contents info) 
    "Transcode a SRC-BLOCK element from Org to HTML. 
CONTENTS holds the contents of the item. INFO is a plist holding 
contextual information." 
    (if (org-export-read-attribute :attr_html src-block :textarea) 
     (org-html--textarea-block src-block) 
    (let ((lang (org-element-property :language src-block)) 
     (caption (org-export-get-caption src-block)) 
     (code (org-html-format-code src-block info)) 
     (label (let ((lbl (and (org-element-property :name src-block) 
       (org-export-get-reference src-block info)))) 
      (if lbl (format " id=\"%s\"" lbl) "")))) 
     (if (not lang) (format "<pre><code>\n%s</code></pre>" label code) 
    (format 
    "<div class=\"org-src-container\">\n%s%s\n</div>" 
    (if (not caption) "" 
     (format "<label class=\"org-src-name\">%s</label>" 
      (org-export-data caption info))) 
    (format "\n<pre><code>%s</code></pre>" lang label code)))))) 
+0

非常感謝!將關鍵行更改爲:'(格式「

\n%s
」標籤代碼)「實現了我之前的操作並允許highlight.js按預期工作 – judep