org-modeは #+INCLUDE: を使うことで外部のファイルの内容を取り込みます。今回はこの機能の色々な指定方法を試します。

基本的な使い方

最初のパラメータは含めるファイル名です。

#+INCLUDE: ./hello.txt

これは次のように展開されます。

ブロックタイプを指定する

オプションの2番目のパラメータはブロックタイプです。 example export src などを指定します。

example

ブロックタイプがexampleの例::

#+INCLUDE: ./hello.txt example

ブロックタイプがexampleの出力::

export

ブロックタイプがexportの例::

#+INCLUDE: ./hello.txt export

ブロックタイプがexportの出力::

TODO なぜかexportを指定すると出力がなくなる

src

ブロックタイプがsrcの例::

#+INCLUDE: ./hello.txt src

ブロックタイプがsrcの出力::

それ以外

それら以外の値が設定された場合には未指定と同じように出力されます。 ブロックタイプがfooの例::

#+INCLUDE: ./hello.txt foo

ブロックタイプがfooの出力::

これはexporterによってどのように出力されるかはかわります。例えばHTMLであればclass属性にブロックタイプを指定する形出力されます。

<div class="foo">
<p>
Hello World!
</p>

コンテンツフォーマットを指定する

オプションの3番目のパラメータはコンテンツフォーマットです。

ブロックタイプがsrcの例::

#+INCLUDE: ./hello.txt src csv

ブロックタイプがsrcの出力::

TODO この使い方よくわからない

一部分をインクルード

例として次のようなOrgファイルの一部を取り込みます。

paper.org::

行番号指定

:lines にファイルの行番号を指定して取り込みます。

#+INCLUDE: ./paper.org :lines "3-6"

結果::

名前を指定

要素につけられた名前を指定して取り込みます。

#+INCLUDE: ./paper.org::mytable

結果::

見出しを指定

見出しを指定して取り込みます。

#+INCLUDE: ./paper.org#conclusion

結果::

見出しの中身を指定

見出しを指定して取り込みますが見出し自身は取り込みません。中のコンテンツだけ取り込みます。

#+INCLUDE: ./paper.org#conclusion :only-contents t

結果::

まとめ

Org-modeの #+INCLUDE: を使って外部ファイルを取り込む方法を確認しました。第一引数にファイルパス、第二引数にブロックタイプ、第三引数にコンテンツフォーマッターを指定することで、取り込み後の見え方を変更できます。また行番号や名前や見出しを指定して一部分を取り込めることを確認しました。