👩‍💻

orgのサブツリーをエキスポートする場合の設定

2021/11/08に公開約1,500字

orgのサブツリーをエキスポートするメリット

emacsでは、orgファイル全体をHTMLやmarkdownにエキスポートすることができます。これに加えて、特定のサブツリー以下をエキスポートすることもできます。

この機能を使うと、全てのブログ記事をまとめて一つのファイルで取り扱い、必要なサブツリーだけエキスポートして公開する、といった使い方が可能です。この方法は、JekyllHugo等の静的サイトジェネレーターでWebサイトを生成するときに便利に活用できます。

静的サイトジェネレーターでは、1つの記事を1つのファイルとして扱います。この場合、それぞれのファイルはファイル名で区別することになりますが、ファイル名はslugや日付をつけることが一般的です。そうすると、ファイル名だけでは内容が分からない、という問題が発生します。

そうではなく、全てのブログ記事を1つのorgファイルにまとめて、記事にしたいサブツリーを個別のファイルにエキスポートするようにすると、編集したい記事を簡単に追加したり、見つけることができるようになります。

サブツリーにプロパティを設定する

orgファイルには様々なプロパティを設定することができます。例えば、記事のタイトル、著者名、日付などです。これらはファイル全体に1つ設定することが基本的な使い方です。しかし、こういったプロパティをサブツリーにつけることも可能です。

例を見てみましょう。

:TITLE: 私のブログの記事
:DATE: 2021-11-01

* 記事
** ある日の日記
:PROPERTIES:
:EXPORT_TITLE: ブログに掲載するタイトル
:EXPORT_DATE: 2021-11-07
:EXPORT_FILE_NAME: articles/20211107-101407
:END:

ある日、こんなことがありました。

最初の2行はファイル全体につけたプロパティです。これに対して、「ある日の日記」の次の行から書かれているのがサブツリーに対するプロパティです。全て、ファイル全体につけられるプロパティの頭に「EXPORT_」をつけたものが、サブツリーのプロパティです。

When exporting sub-trees, special node properties can override the above keywords. These properties have an ‘EXPORT_’ prefix. For example, ‘DATE’ becomes, ‘EXPORT_DATE’ when used for a specific sub-tree. Except for ‘SETUPFILE’, all other keywords listed above have an ‘EXPORT_’ equivalent.

これらはファイル全体のプロパティを上書きします。上記の例では、ファイル全体のタイトルは「私のブログの記事」ですが、サブツリーのタイトルは「ブログに掲載するタイトル」になります。

このように設定したうえで、 C-c C-e でorgエキスポートのメニューを出し、 C-s を押してから目的のエキスポート形式を選択すれば、カーソルがいまいるサブツリーのみエキスポートすることができます。

Discussion

ログインするとコメントできます