2016-04-29 45 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