org-mode 소스 코드 블록에 쉘 명령의 출력을 포함시키는 방법은 무엇입니까?


12

예를 들어 명령과 출력을 보여주는 데모를 얻었고 .orgC 또는 다른 소스 코드 스 니펫과 같은 파일에 명령을 삽입하려고합니다 . 그런 다음 파일을 HTML 파일로 내보내고 많은 책에 예제가있는 것처럼 블록을 강조 표시하려고합니다.

예를 들어

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

그러나 HTML로 변환 할 수 없습니다 : 읽는 오류 메시지

shell-mode: 잘못된 유형 인수 : processp, nil

항상 나타납니다. 를 대체하기 위해 어떤 모드를 사용해야하며 shell, #+BEGIN_SRC...#+END_SRC형식을 사용하지 않아야하는 경우 대신 무엇을 사용해야합니까?

답변:


16

직접 예제를 만들려면 (질문에서 얻은 것이지만 틀린 경우 수정하십시오) EXAMPLE블록 대신 SRC블록을 사용하십시오.

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

HTML로 내보낼 때이 블록은 다음과 같습니다.

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

보시다시피, 내 보낸 블록의 내용은 원래 EXAMPLE블록 의 내용과 정확히 동일합니다 .


실제로 하나 이상의 명령 을 실행 하여 출력을 동적으로 생성하고 명령과 결과를 HTML 문서에 모두 포함 시키려면 SRC다음과 같이 블록을 수정해야합니다 .

#+BEGIN_SRC sh :exports both
ls
#+END_SRC

의 출력 경우 ls명령은 당신이 당신의 예에 나와있는 디렉토리와 파일을 포함 ( dir1, dir2, file1, file2)이 수출합니다 :

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

보시다시피 코드 자체는 코드 블록으로 래핑되고 결과는 테이블에 나열됩니다.

참고 당신이 지원 가능해야 함을 sh통해 명시 적으로 코드 블록 :

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

기본적으로 Org Babel 은 Emacs Lisp 코드 블록 만 지원하기 때문입니다 ( 여기 설명 참조 ).


문제에 대해 감사드립니다. ob두 가지 문제가 더 있습니다 1. 스 니펫을 정의하기 위해 외에를 삽입하는 built-in shortcut것과 같이 BEGIN_EXAMPLE 쌍 <s then TAB을 삽입 할 수 있습니까? : 변경 후 오류 메시지가 표시 되었지만 더 이상 아무것도 없습니다. 내 조직 파일의 링크에 대해 잘못된 것이 있어야합니다. 많이 있습니다. 내보내기 실패시 잘못된 행 번호와 같은 세부 정보를 표시 하는 방법 ?? BEGIN_EXAMPLEyasnippet2org-html-handle-links: Wrong type argument: stringp, nilBEGIN_EXAMPLEorg-export
CodyChan

첫 번째 질문에 주소 : 예, 그것은 거기에있다 <e다음 TAB. 전체 목록 은 쉬운 템플릿 을 참조하십시오 .
itsjeyd

두 번째 질문에 관해서는 : 나는 당신이 무엇을 의미하는지 잘 모르겠습니다. 어떤 링크? 원래 예제에 링크가 없습니다. 일반적인 조언으로 최소한의 예제를 먼저 작성하십시오. EXAMPLE내 대답에 표시된대로 블록을 새 파일에 넣으십시오 . 다른 것을 추가하지 마십시오. 그런 다음 내보내고 어떻게되는지보십시오. 그것이 효과가 있다면 점차적으로 더 많은 것을 추가하고 계속 내보내십시오. 어떤 시점에서 오류가 발생하면 마지막 추가 (또는 변경)로 인해 오류가 발생한 것을 알 수 있습니다.
itsjeyd

내 원래 게시물의 문제는 BEGIN_EXAMPLE에 의해 해결되었습니다. BEGIN_EXAMPLE 오류는 org-export그 자체 로 위치 하므로 BEGIN_SRC 문제라는 것을 알고 있지만 원본 파일에 더 많은 것이 있습니다. 이후 org-exportorg-html-handle-links: Wrong type argument: stringp, nil오류 메시지 만 표시되고 정확한 위치는 없습니다.
CodyChan

@CodyChan 팔로우하지 않습니다. 내보내려는 파일의 내용을 살펴 보려면 질문에 추가하십시오 (나중에 다시 제거 할 수 있음).
itsjeyd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.