次: Appt Customizing, 前: Fancy Diary Display, 上: Calendar
S式を使った日誌記録は、 複雑な条件で適用される日誌記録を作る以上のことができます。 装飾日誌表示を使っている場合には、S式日誌項目は、 日付に依存した記録テキストを生成できます。 たとえば、記念日の記録では、テキストに何回目の記念日であるかを入れられます。 したがって、つぎの日誌記録の`%d'は年齢で置き換えられます。
%%(diary-anniversary 10 31 1948) Arthur's birthday (%d years old)
つまり、装飾日誌用バッファでは、1990年10月31日の項目はつぎのようになります。
Arthur's birthday (42 years old)
日誌ファイルにつぎの項目が入っていると、
%%(diary-anniversary 10 31 1948) Arthur's %d%s birthday
装飾日誌用バッファでは、1990年10月31日の項目はつぎのようになります。
Arthur's 42nd birthday
同様に、周期的な日誌項目では繰り返し回数を計算できます。
%%(diary-cyclic 50 1 1 1990) Renew medication (%d%s time)
は、1990年9月8日の装飾日誌表示ではつぎのようになります。
Renew medication (5th time)
当日の日誌項目としてだけでなく、 それよりまえの日の日誌項目にも含めるためのS式日誌項目があります。 たとえば、記念日の1週間前に督促がほしいときには、 つぎのようにします。
%%(diary-remind '(diary-anniversary 12 22 1968) 7) Ed's anniversary
すると、装飾日誌には、12月15日と12月22日に
Ruth & Ed's anniversary
と表示されます。
関数diary-date
は、整数や整数のリストやt
で指定した
月、日、年の組み合わせで表される日付に適用されます。
たとえば、
%%(diary-date '(10 11 12) 22 t) Rake leaves
により、装飾日誌には、各年の10月22日、11月22日、12月22日には
Rake leaves
と表示されます。
関数diary-float
により、
11月の第3金曜日とか4月の最後の火曜日といった
日付に適用する日誌記録を記述できます。
パラメータは、月month、曜日dayname、添字nです。
日曜日をdayname=0、月曜日をdayname=1、…として、
month月のn番目の曜日daynameに項目が現れます。
nが負であると、month月の月末から数えます。
monthは、月のリストでも、1つの月でも、全部の月を指定するt
でも
かまいません。
省略可能なパラメータdayを指定して、
month月のn番目の曜日daynameの
前後のday日を指定できます。
nが正だとdayのデフォルトは1であり、
nが負だとdayのデフォルトはmonth月の月末です。
たとえば、
%%(diary-float t 1 -1) Pay rent
は、装飾日誌に各月の最後の月曜日に
Pay rent
を表示します。
S式日誌項目の一般性により、アルゴリズムで日誌項目を指定できます。
S式日誌項目には、項目を当該日に適用するどうかを計算する式を含められます。
その値がnil
以外であると、その項目を当該日に適用します。
その式では、対象とする日付を知るために変数date
を使えます。
この変数の値は、グレゴリオ暦で表した
リスト(
month day year)
です。
毎月のウィークデイである21日か、 21日が週末の場合にはそのまえの金曜日に給料を支払われるとしましょう。 そのような日付に一致するS式日誌項目はつぎのように書けます。
&%%(let ((dayname (calendar-day-of-week date)) (day (car (cdr date)))) (or (and (= day 21) (memq dayname '(1 2 3 4 5))) (and (memq day '(19 20)) (= dayname 5))) ) Pay check deposited
以下のS式日誌項目は、日付に依存して変わるテキストを 日誌項目に入れる機能を(装飾日誌表示で)利用できます。
%%(diary-sunrise-sunset)
%%(diary-phases-of-moon)
%%(diary-day-of-year)
%%(diary-iso-date)
%%(diary-julian-date)
%%(diary-astro-day-number)
%%(diary-hebrew-date)
%%(diary-islamic-date)
%%(diary-french-date)
%%(diary-mayan-date)
したがって、
&%%(diary-hebrew-date)
を含んだ日誌項目は、装飾日誌表示を使っていると、 毎日の日誌表示に対応するヘブライ暦の日付を含めることになります。 (単純な日誌表示では、行`&%%(diary-hebrew-date)'は すべての日付の日誌に現れるが、特別なことはなにもしない。)
つぎの関数は、ある標準的な方法でヘブライ暦に基づく S式日誌項目を構成するために使えます。
%%(diary-rosh-hodesh)
%%(diary-parasha)
%%(diary-sabbath-candles)
%%(diary-omer)
%%(diary-yahrzeit
month day year)
name