Kuruluş modu kaynak kodu bloğuna bir kabuk komutunun çıktısı nasıl eklenir?


12

Örneğin, bir komutu ve çıktısını göstermek için bir demo aldım ve bunları .orgC'nin bir kaynak kod snippet'i gibi bir dosyaya eklemek istiyorum . Daha sonra dosyayı bir HTML dosyasına dışa aktarmak ve bloğun birçok örnekte olduğu gibi vurgulanmasını istiyorum.

Örneğin,

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

ancak HTML biçimine dönüştürülemiyor:

shell-mode: Yanlış tür argümanı: processp, nil

her zaman ortaya çıkıyor. Değiştirmek için hangi modu shellkullanmalıyım ve #+BEGIN_SRC...#+END_SRCformatı kullanmamam durumunda bunun yerine ne kullanmalıyım?

Yanıtlar:


16

Örnekleri kendiniz oluşturmak istiyorsanız (sorunuzdan alıyorum, ancak yanılıyorsam beni düzeltin), EXAMPLEblok yerine bir blok kullanın SRC:

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

HTML'ye dışa aktarırken, bu blok şu hale gelir:

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

Gördüğünüz gibi, dışa aktarılan bloğun içeriği orijinal EXAMPLEbloğun içeriğiyle tamamen aynıdır .


Aslında istiyorsanız çalıştırmak dinamik üretim çıkışına bir veya daha fazla komutları ve komutları ve HTML belgesindeki sonuçlara ikisini de, değiştirmek gerekir SRCbu gibi görünmek bloğu:

#+BEGIN_SRC sh :exports both
ls
#+END_SRC

Çıktısı ise lskomuta size örnekte listelenen dizinleri ve dosyaları içerir ( dir1, dir2, file1, file2), buna ihraç edecek:

<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>

Gördüğünüz gibi, kodun kendisi bir kod bloğuna sarılır ve sonuçlar bir tabloda listelenir.

shKod blokları desteğini aşağıdaki yollarla açıkça etkinleştirmeniz gerekeceğini unutmayın :

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

Bunun nedeni, Org Babel'in varsayılan olarak yalnızca Emacs Lisp kod blokları ( burada açıklandığı gibi ) için desteği etkinleştirmesidir .


obŞey için teşekkür ederim , iki sorun daha var ,: BEGIN_EXAMPLE çifti eklemek için 1herhangi bir var built-in shortcutmı, bir snippet tanımlamak <s then TABiçin BEGIN_EXAMPLEyanı eklemek gibi yasnippet? 2: Değiştirdikten sonra org-html-handle-links: Wrong type argument: stringp, nilhata mesajı aldım BEGIN_EXAMPLEama daha fazla bir şey yok, org dosyamdaki bağlantı hakkında yanlış bir şey olmalı, bunların birçoğu, org-exportdışa aktarma başarısız olduğunda satır numarası gibi daha fazla ayrıntı göstermek için nasıl yapabilirim ??
CodyChan

İlk sorunuza cevap verin: Evet, var, onu <etakip ediyor TAB. Tam liste için Kolay Şablonlar'a bakın .
itsjeyd

İkinci sorunuza gelince: Ne demek istediğinizi bildiğimden emin değilim. Hangi bağlantı (lar)? Orijinal örneğinizde hiçbir bağlantı yok. Genel bir tavsiye olarak, önce çalışan minimal bir örnek almaya çalışın. Cevabımda EXAMPLEgösterildiği gibi bloğu tek başına yeni bir dosyaya koyun . Başka bir şey eklemeyin. Ardından dışa aktarmayı deneyin ve ne olduğunu görün. Bu işe yararsa, yavaş yavaş daha fazla öğe ekleyin ve yaptığınız gibi dışa aktarmaya devam edin. Bir noktada bir hatayla karşılaşırsanız, yaptığınız son eklemenin (veya değişikliğin) buna neden olduğunu bilirsiniz.
itsjeyd

Orijinal gönderimin sorunu BEGIN_EXAMPLE tarafından çözüldü. BEGIN_EXAMPLE hatası org-exportkendi başına bulunur, bu yüzden BEGIN_SRC sorunu olduğunu biliyorum, ancak orijinal dosyamda çok daha fazlası var, sonra org-exportsadece org-html-handle-links: Wrong type argument: stringp, nilhata mesajı görünüyor ve tam konumun nerede olduğunu bilmiyorum.
CodyChan

@CodyChan Takip etmiyorum. Dışa aktarmaya çalıştığınız dosyanın içeriğine bakmamı istiyorsanız, sorunuza ekleyin (daha sonra tekrar kaldırabilirsiniz).
itsjeyd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.