2016-06-26 9 views
0

Wenn ich einen Codeblock in orgmode habe, kann ich seine Auswertung mit der Option :exports both exportieren.Wie beschriftet Code Block Auswertungen in Orgmode auf HTML-Export?

#+begin_src cpp -n :includes <iostream> :exports both 
std::cout << "Hello there"; 
#+end_src 

#+RESULTS: 
: Hello there 

Wenn ich exportieren (C-c C-e h o) in HTML, folgt das Ergebnis blockieren den Codeblock. Ich möchte jedoch noch deutlicher zeigen, dass der zweite Block das Ergebnis des ersten ist, mit einem einfachen Etikett.

Wenn ich die oben ändern, etwa so:

#+begin_src cpp -n :includes <iostream> :exports both 
std::cout << "Hello there"; 
#+end_src 

Output: 

#+RESULTS: 
: Hello there 

dann das Label "Ausgabe:" erscheint, aber das Ergebnis Block erscheint zweimal - einmal vor dem Etikett, und einmal nach. Was noch schlimmer ist, ist, dass wenn ich den Code in orgmode (C-c C-c) ausführen, ein zweiter Ergebnisblock vor der Textbezeichnung "Output:" platziert wird. Ich vermute, dass dies auch beim Export passiert.

Ich habe auch festgestellt, dass beim Exportieren nach HTML, die Ergebnisblöcke in pre Tags der Klasse example platziert werden. Ich dachte, ich könnte die CSS mit so etwas wie ändern:

pre.example::before { content: "Output:"; } 

aber leider ist dies legt den Text innerhalb des pre Block, und ich kann keine Zeilenumbrüche nicht hinzufügen.

Gibt es eine einfache Möglichkeit zum Hinzufügen von Textbeschriftungen zu Ergebnisblöcke entweder in orgmode selbst oder vielleicht durch CSS? Ich möchte Javascript möglichst vermeiden.

Antwort

1

Dies sollte auf einigermaßen letzten org arbeiten:

#+name: foo 
    #+begin_src cpp -n :includes <iostream> :exports both 
    std::cout << "Hello there"; 
    #+end_src 

    Output: 

    #+RESULTS: foo 
    : Hello there 
0

Sie können eine abgeleitete Backend für diese wie folgt verwenden:

(defun my-results (fixed-width contents info) 
    "Transform a results block to make it more visible." 
    (let ((results (org-element-property :results fixed-width)) 
    (format (elt (plist-get info :back-end) 2)) 
    (value (org-element-property :value fixed-width))) 
    (cond 
    ((eq 'html format) 
     (format "<pre>Output:<br> %s</pre>" value))))) 


(org-export-define-derived-backend 'my-html 'html 
    :translate-alist '((fixed-width . my-results))) 

(browse-url (org-export-to-file 'my-html (concat (file-name-base (buffer-file-name)) ".html"))) 
+0

Wenn ich diesen Code setzen in meinem '.emacs' Datei, ich Erhalte die Fehlermeldung 'Symbols Funktionsdefinition ist void: org-export-define-derived-backend '. Ich vermutete, dass es an der Tatsache liegen könnte, dass meine org-mode-Version "8.2.etwas" war, also habe ich auf "8.3.4" aufgerüstet. Ich erhalte immer noch diesen Fehler nach dem Upgrade. –

+0

Das sollte in ox.el definiert werden. Vielleicht hinzufügen (Ochse) über diesen Code. –

+0

Das hat nicht funktioniert, als ich es zu "ox.el" hinzugefügt habe. –

Verwandte Themen