可以调整emacs org-mode来微调代码块的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&s进行任何更改,并且(托管)代码突出显示(highlight.js)可以开箱即用。 我已经阅读了组织模式手册并在线搜索,没有运气。行为似乎可能是组织模式文件ox-html.el的设置,但调整这个有点超出了我目前的elisp知识水平。 谢谢!
答案 0 :(得分: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))))))