Wie wird die Ausgabe eines Shell-Befehls in den Quellcodeblock des Organisationsmodus aufgenommen?

12

Ich habe zum Beispiel eine Demo erhalten, in der ein Befehl und seine Ausgabe gezeigt werden, und ich möchte sie in eine .orgDatei wie ein Quellcode-Snippet von C oder so einfügen . Ich möchte dann in der Lage sein, die Datei in eine HTML-Datei zu exportieren und den Block so hervorzuheben, wie es Beispiele in vielen Büchern gibt.

Zum Beispiel habe ich

#+BEGIN_SRC shell
$ ls
dir1
dir2
file1
file2
...
or any other examples like this
...
#+END_SRC

Es kann jedoch nicht in HTML konvertiert werden: Eine Fehlermeldung, die lautet

shell-mode: Falsches Typargument: processp, nil

erscheint die ganze Zeit. Welchen Modus soll ich verwenden, um zu ersetzen shell, und wenn ich das #+BEGIN_SRC...#+END_SRCFormat nicht verwenden soll , was soll ich stattdessen verwenden?

CodyChan
quelle

Antworten:

16

Wenn Sie selbst Beispiele konstruieren möchten (das geht aus Ihrer Frage hervor, aber korrigieren Sie mich, wenn ich falsch liege), verwenden Sie einen EXAMPLEBlock anstelle eines SRCBlocks:

#+BEGIN_EXAMPLE
$ ls
dir1
dir2
file1
file2
...
#+END_EXAMPLE

Beim Exportieren in HTML wird dieser Block zu:

<pre class="example">
$ ls
dir1
dir2
file1
file2
...
</pre>

Wie Sie sehen, entspricht der Inhalt des exportierten Blocks genau dem Inhalt des ursprünglichen EXAMPLEBlocks.


Wenn Sie wirklich wollen, laufen ein oder mehrere Befehle zu erzeugen Ausgangs dynamisch und umfassen sowohl die Befehle und die Ergebnisse in Ihrem HTML - Dokument, müssen Sie das ändern SRCBlock wie folgt aussehen:

#+BEGIN_SRC sh :exports both
ls
#+END_SRC

Wenn die Ausgabe des lsBefehls die Verzeichnisse und Dateien enthält , die Sie in Ihrem Beispiel aufgeführt ( dir1, dir2, file1, file2), werden diese exportieren nach:

<div class="org-src-container">
  <pre class="src src-sh">
    ls
  </pre>
</div>

<table>
  <colgroup>
    <col class="left" />
  </colgroup>
  <tbody>
    <tr>
      <td class="left">dir1</td>
    </tr>
    <tr>
      <td class="left">dir2</td>
    </tr>
    <tr>
      <td class="left">file1</td>
    </tr>
    <tr>
      <td class="left">file2</td>
    </tr>
  </tbody>
</table>

Wie Sie sehen, wird der Code selbst in einen Codeblock eingeschlossen, und die Ergebnisse werden in einer Tabelle aufgelistet.

Beachten Sie, dass Sie die Unterstützung für shCodeblöcke explizit über Folgendes aktivieren müssen :

(require 'ob-sh)
(org-babel-do-load-languages 'org-babel-load-languages '((sh . t)))

Dies liegt daran, dass Org Babel standardmäßig nur die Unterstützung für Emacs Lisp-Codeblöcke aktiviert (wie hier erläutert ).

itsjeyd
quelle
Vielen Dank für die obSache, ich habe zwei weitere Probleme 1: built-in shortcutGibt es irgendwelche , um das Paar BEGIN_EXAMPLE <s then TABeinzufügen , wie die Nebeneinträge einzufügen BEGIN_EXAMPLE, um ein Snippet zu definieren yasnippet? 2: Ich habe org-html-handle-links: Wrong type argument: stringp, nilnach dem Ändern der Fehlermeldung BEGIN_EXAMPLEaber nichts mehr, es muss etwas falsch an dem Link in meiner org-Datei sein, es gibt eine Menge davon, wie ich org-exportmehr Details anzeigen kann, zB Zeilennummer, die falsch ist, wenn der Export fehlgeschlagen ist ??
CodyChan
Beantwortung Ihrer ersten Frage: Ja, es <efolgt TAB. Eine vollständige Liste finden Sie unter Einfache Vorlagen .
Es ist der
Zu Ihrer zweiten Frage: Ich bin mir nicht sicher, was Sie meinen. Welche Links? In Ihrem ursprünglichen Beispiel sind keine Links vorhanden. Versuchen Sie zunächst, ein minimales Beispiel zum Arbeiten zu bringen. Setzen Sie den EXAMPLEBlock wie in meiner Antwort gezeigt in eine neue Datei. Füge nichts anderes hinzu. Versuchen Sie dann, es zu exportieren und zu sehen, was passiert. Wenn das funktioniert, fügen Sie nach und nach mehr Material hinzu und exportieren Sie weiter, wie Sie es tun. Wenn Sie irgendwann auf einen Fehler stoßen, wissen Sie, dass die letzte Änderung, die Sie vorgenommen haben, die Ursache dafür ist.
Es ist der
Das Problem meines ursprünglichen Beitrags wird durch BEGIN_EXAMPLE gelöst. Der BEGIN_EXAMPLE-Fehler befindet sich an org-exportsich. Ich weiß also, dass es sich um das BEGIN_SRC-Problem handelt. In meiner Originaldatei ist jedoch noch viel mehr enthalten, nachdem org-exportnur die org-html-handle-links: Wrong type argument: stringp, nilFehlermeldung angezeigt wird und ich nicht weiß, wo sich die genaue Position befindet.
CodyChan
@ CodyChan Ich verfolge nicht. Wenn Sie möchten, dass ich mir den Inhalt der zu exportierenden Datei anschaue, fügen Sie ihn Ihrer Frage hinzu (Sie können ihn später wieder entfernen).
Es ist der