2005-11-08

ChangeLog メモの cite タグ

ChangeLog メモで、引用元を明示する方法として cite タグ なるものを使っている。例えばこんな感じ。

2003-09-04 (Thu)  Masayuki Ataka  <ataka@milk.freemail.ne.jp>

 * Quotation: うまく口をはさめるということは、まず他人の話をちゃんと聞いている
 ということだし、話の方向が何処へ向かえば良いかという見通しを持っていることだし、
 何よりも自分の考えをしっかり持っていることなのである。
 (cite: 男のホンネ 女のホンネ) p.72
 (author: 久世 光彦)

2003-05-15 (Thu)  Masayuki Ataka  <ataka@milk.freemail.ne.jp>

 * Command (pstops): B4 用紙を指定して印刷する方法
 pstops -h36.4cm -w25.7cm 2:0L(34.4cm,-0.8cm)+1L(34.4cm,16.8cm) in.ps out.ps
 (cite: tex-qa:18693) Re: pstops

見ての通り、「書名」や「メールの Subject」を cite タグの引数にしている。蛇足ながら、本の引用をするなら、「書名」だけでなくページ数も記録しておく方がいい。後で引用元を確認する時に、目的のページを探し直す手間が省けて便利。

なお、ウェブページからの引用は url タグ という URL 専用のタグを用意している。

ML との連携

メーリング・リストの中には、その内容をウェブ上で公開しているものがある。そういう ML は、大概、メールの通し番号を Subject に振っていて、(ウェブ上で公開しているメールの) URL も同じ通し番号を使っているものも多い。そこで、そういったメールの Subject から、ウェブ上へ browse-url するようなスクリプトを組んでみた。

(setq clmemo-tag-list 
      ;;        ;; Jump                ;; Put
      '(("url"  browse-url-at-point)
 ("cite" clmemo-tag-cite-jump)))
(setq clmemo-tag-cite-url-alist
      '(("tex-qa:\\([0-9]+\\)" . "http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/%s.html")
))
(defun clmemo-tag-cite-jump ()
  (interactive)
  (let ((eol  (point-at-eol))
 (alist (copy-alist clmemo-tag-cite-url-alist))
 url)
    (beginning-of-line) (search-forward "(cite: ")
    (catch 'match
      (while alist
 (when (re-search-forward (caar alist) eol t)
   (setq url (format (cdar alist) (match-string 1)))
   (throw 'match t))
 (setq alist (cdr alist))))
    (when url
      (browse-url url))))

変数 clmemo-tag-cite-url-alist がキモ。これは ("REGEXP" . "URL") という alist。REGEXP では通し番号に当たる部分が \\([0-9]+\\) にマッチするようにする。URL で %s と書かれば部分に件の通し番号が展開される。

上記設定を追加して cite タグ上で C-c RET すれば、対応するウェブページを browse-url する。

あとがき

ローカルにあるメールへも jump できると便利なのだけど、ファイルへの path を指定する方法しか思いつかない。僕はメールの置き場所をよく変えてしまうので、path を指定する方法は使えない。何かよい方法はないものかと模索中。

上の例では、奥村先生の TeX Q & A の場合だけ取り扱った (正確には ML ではなくて掲示版、ただし、メール転送のサービス有)。この他 MewEmacs-w3m の ML に入ってるのだけど、各々、ML の通し番号と URL での番号が一致しない Xp。困った...

No comments:

Post a Comment