2016-04-29 3 views
0

Kann der Emacs-Org-Modus optimiert werden, um die HTML-Ausgabe für Codeblöcke anzupassen? Inline-Code wird ausgegeben alsOrg-Modus: Kontrolle der HTML-Ausgabe von Codeblöcken

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

wie erwartet, aber ein Codeblock (innen # + BEGIN_SRC clojure .. # + END_SRC Block Marker) ausgegeben als

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

Ich möchte einen Standard

bevorzugen

, die ich möchte, da es bedeuten würde, dass keine Änderungen an CSS erforderlich wären und (gehostete) Code-Hervorhebung (highlight.js) würde funktionieren out of the box. Ich habe das org-mode Handbuch gelesen und lange online ohne Glück gesucht. Das Verhalten scheint wahrscheinlich von der Org-Modus-Datei ox-html.el gesetzt worden zu sein, aber das zu optimieren, ist ein bisschen mehr als mein jetziges Wissensniveau. danke!

Antwort

0

Sie können die Übersetzerfunktion, die die HTML-Export-Engine zum Generieren dieser Ausgabe verwendet, neu definieren. Drücken Sie C-h f (Funktion beschreiben) und geben Sie org-html-src-block ein, um die Dokumentation anzuzeigen und zur Funktionsdefinition zu navigieren. Kopieren Sie dieses defun zu Ihren dotemacs, um es anzupassen.

Vielleicht möchten Sie es ändern zu:

(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

Vielen Dank! Ändern der Schlüsselzeile zu: '(Format"

\n%s
"Label-Code)' erreicht genau das, was ich wollte und erlaubt highlight.js wie erwartet zu arbeiten – judep