これを試して:
スプレッドシート(テーブル)で期限を計算します。
#+NAME: mytbl
| # | [2014-12-14 Sun] | 30 | <2015-01-13 Tue> |
| # | [2014-12-15 Mon] | 10 | <2014-12-25 Thu> |
#+TBLFM: $4=$2+$3;D
関数を使用して、最初のテーブルから計算された期限を参照する新しい1x1テーブルを作成しremote(NAME-OR-ID,REF)
ます。
#+NAME: mydeadline
| <2015-01-13 Tue> |
#+TBLFM: $1=remote(mytbl,@1$4)
1x1デッドラインテーブルをヘッダー :var name=value
を介して変数として名前付きSRC
ブロックに渡します(例:以下のset_deadline elispコードブロック)。
#+NAME: set_deadline
#+HEADER: :var the_date=mydeadline
#+HEADER: :results raw replace output
#+begin_src elisp
(princ (format "DEADLINE: %s" ( car (car the_date))))
#+end_src
を使用してSRCブロックを評価するC-c C-cと、#+RESULTS:
ブロックの下のorg-modeファイルに期限が追加されます。
:results raw
ヘッダーをコードブロックに追加すると、出力がorg-modeで通常のorgステートメントとして認識される形式に強制されます。
#+RESULTS: set_deadline
DEADLINE: <2015-01-13 Tue>
追加のボーナスとして、名前付きsrcブロックを使用すると、インライン関数呼び出しによるコードの再利用も促進されます。
以前と同様に、各インライン関数を使用して評価するC-c C-cと、新しい期限がorg-modeファイルに追加されます。
#+NAME: first-deadline
call_set_deadline(the_date=mydeadline)[ :results raw ]
#+RESULTS: first-deadline
DEADLINE: <2015-01-13 Tue>
#+NAME: my-other-deadline
| <2014-12-25 Thu> |
#+TBLFM: $1=remote(mytbl,@2$4)
#+NAME: second-deadline
call_set_deadline(the_date=my-other-deadline)[ :results raw ]
#+RESULTS: second-deadline
DEADLINE: <2014-12-25 Thu>
お役に立てば幸いです。
注:このコードは、以下のバージョンのemacsおよびorg-modeを使用してテストされました。
GNU Emacs 24.4.1 (x86_64-apple-darwin14.0.0, NS apple-appkit-1343.14)
Org-mode version 8.2.10 (8.2.10-29-g89a0ac-elpa)
org-mode
があり、簡単に変更することはできません(私の意見では)-さえありますdoc-stringで、タイムスタンプ変数を調整しないようにアドバイスしていることに注意してください。