Ich verwende den Organisationsmodus, um Webseiten meiner Notizen zu generieren. Kann ich Code einbetten, um zusätzliches HTML usw. zu generieren? org-babel generiert Ergebnisse, scheint jedoch die Ergebnisse zusätzlich zum Code anzuzeigen. Ich möchte, dass der Code HTML erstellt, das den Code selbst ersetzt.
org-mode
org-babel
org-export
h4labs
quelle
quelle
:exports results
; Siehe Exportieren von Codeblöcken . (Lassen Sie mich wissen, ob dies für Sie funktioniert und ob ich dies in eine Antwort umwandeln sollte.)Antworten:
Wie ich in einem Kommentar erwähnt habe, beschreibt der Abschnitt Exportieren von Codeblöcken zulässige Werte der
:exports
Option:code
(Inhalt des Blocks),results
(Ergebnisse seiner Auswertung),both
(Code und Ergebnisse) undnone
(nichts wird exportiert).Standardmäßig versucht Org, die Ergebnisse der Auswertung eines Quellcodeblocks zu interpretieren (und ihn beispielsweise in eine Tabelle umzuwandeln). Wenn eine solche Interpretation fehlschlägt, werden die Bewertungsergebnisse als Monospace-Text formatiert und sehen
<pre> ... </pre>
beim Export in HTML so aus, als wären sie eingepackt .Glücklicherweise können wir Org anweisen, die Bewertungsergebnisse in eine spezielle Art von Block zu setzen
:results
(siehe Ergebnisse der Bewertung und:results
). Wenn Sie einen Quellcodeblock zum Generieren eines Teils einer HTML-Seite verwenden möchten, verwenden Sie:results value html
oder:results output html
und Org, um die Ergebnisse in einen#+BEGIN_HTML ... #+END_HTML
Block zu packen.Hier ist ein minimales Beispiel (
#+OPTIONS
sind irrelevant, ich habe sie hinzugefügt, um die Überprüfung des exportierten HTML-Codes mithilfe zu vereinfachen C-c C-e h H):quelle
Dadurch wird eine HTML-Seite (beim Export nach HTML) mit einer Schaltfläche generiert.
Um Verwirrung zu vermeiden: Der erste Block wird beim Export nicht ausgewertet. Sie müssten es auswerten, indem Sie den Punkt darauf verschieben und drücken C-c C-c.
Mehr noch, Sie müssten anrufen
Oder ähnliches, bevor dieser Code ausgeführt wird, damit Babel den
html
Block als ausführbar erkennt .Das Beispiel sollte jedoch hauptsächlich zeigen, wie Sie Ihre eigene "Sprache" hinzufügen können, die auf ein bestimmtes Backend abzielt. Sie hätten es leicht tun können, ohne neue Sprachen hinzuzufügen, und vielleicht mit weniger Komplikationen, wenn Sie so etwas tun würden:
Der Vorteil meines ersten Ansatzes ist, dass Sie nach dem Bearbeiten mit C-c 'aktiviert werden
html-mode
.quelle
ob-html.el
. Um einen HTML-Block zu exportieren, müsste man eine solche Funktion definieren (ich mache dies für andere Markups, die ich verwende, insbesondere für YAML). Dies unterscheidet sich#+begin_html ... #+end_html
darin, dass ich dies auch als primitive Template-Engine verwenden kann, indem ich Variablen an die Blöcke übergebe (meine tatsächlicheorg-babel-execute:html
ist mehr involviert als das).