首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Org-Mode:控制代码块的html输出

Org-Mode:控制代码块的html输出
EN

Stack Overflow用户
提问于 2016-04-29 13:31:43
回答 1查看 857关注 0票数 2

是否可以调整emacs org-mode来微调代码块的输出html?内联代码按预期输出

代码语言:javascript
复制
<code> ..my code.. </code> 

不出所料,只是一个代码块(在#+BEGIN_SRC clojure..#+END_SRC块标记)输出为

代码语言:javascript
复制
<pre class="src src-clojure> ..my code..</pre>

我更喜欢标准的

代码语言:javascript
复制
<pre><code> ..my code..</code></pre>

我希望这意味着不需要对css进行任何更改,并且(托管的)代码突出显示(highlight.js)将开箱即用。我已经阅读了组织模式手册,并在网上搜索了很长一段时间,但没有找到答案。该行为似乎是由org-mode文件ox-html.el设置的,但对此进行调整有点超出了我目前的elisp知识水平。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-05-24 13:19:52

您可以重新定义HTML导出引擎用来生成该输出的转换器函数。按C-h f (describe function)并键入org-html-src-block以查看文档并导航到函数定义。将该defun复制到dotemacs中以对其进行自定义。

您可能希望将其更改为:

代码语言:javascript
复制
(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))))))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36930253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档