gnus-mime 0.10 説明書（日本語版）
*********************************

This file documents gnus-mime, a MIME extension for Gnus.

tm を使って Gnus の MIME 機能を強化するための package である `gnus-mime'
について説明します。

gnus-mime って何？
******************

*gnus-mime* は tm (see tm-kernel (tm-ja)) を使って Gnus
(see (gnus)) の MIME (see MIME (tm-ja)) 機能を強化するための
package です。

*[注意]*

     gnus-mime は Gnus 専用です。GNUS には tm-gnus (see
     (tm-gnus_ja)) を使います。

gnus-mime を使うと tm-view (see (tm-view-ja)) を用いて `"*Article*"'
buffer で MIME preview を行うことができます。特に、XEmacs では、text と
同様に、絵も inline 表示をすることができます。

また、MULE (see mule (tm-ja)), XEmacs/mule, mule 統合版 Emacs では多
言語・国際化機能が support され、MIME message に対する charset の
support, 非 MIME message に対する Newsgroup 毎の default-mime-charset の
指定を行うことができます。

また、original の Gnus では iso-8859-1 (see iso-8859-1 (tm-ja)) の Q
encoding の encoded-word (see encoded-word (tm-ja)) の decode しか
support されませんが、gnus-mime では、iso-8859-2 (see
iso-8859-2 (tm-ja)), iso-8859-3 (see iso-8859-3 (tm-ja)), ...,
iso-2022-jp (see iso-2022-jp (tm-ja)), euc-kr (see
euc-kr (tm-ja)), iso-2022-kr (see iso-2022-kr (tm-ja)), hz-gb-2312
(see hz-gb-2312 (tm-ja)), cn-big5 (see cn-big5 (tm-ja)) など、mule
で利用可能なさまざまな charset の B ならびに Q encoding の encoded-word
を扱うことができます。また、Gnus よりも RFC 1522 に忠実に処理しています。

MIME message の inline 表示
***************************

gnus-mime では *automatic MIME preview* 機能を利用することができます。こ
の機能を使うと Summary mode で記事を読む時、通常表示される Article
buffer の代わりに tm-view で処理された preview buffer を表示します。
(cf. (tm-view-ja))

このため、Base64 (see Base64 (tm-ja)) や Quoted-Printable (see
Quoted-Printable (tm-ja)) で encode された記事を decode して表示するこ
とができます。あるいは、text/enriched (see text/enriched (tm-ja)) 形
式のような書体や組版に関する情報を持った記事を整形して表示できます。当然
のことながら、multipart (see multipart (tm-ja)) の記事も正しく処理で
きます。

また、*XEmacs* では text と同様に絵も preview buffer 内で表示することが
できます。

metamail を使った場合と異なり、音の入った記事を読んだとたん、いきなり、
音が鳴り出したり、video の入った記事を読むたびに video が再生されたり、
anonymous ftp (see ftp (tm-ja)) や mail-server を利用した
external-message の入った記事を読むたびに anonymous ftp を実行したり、
mail を送ったりすることが防げます。こうした content は preview buffer の
中に入って再生 command を実行した時のみ再生されます。

しかしながら、遅い machine を使っていて、MIME 処理の overhead が気になる
場合、automatic MIME preview を抑止することができます。

MIME 処理の仕組み
=================

`gnus-show-mime' が `nil' でなく、かつ、article が Mime-Version field を
持っている場合、即ち、その article が MIME message の場合、
`gnus-show-mime-method' が呼ばれて MIME 処理が行なわれます。

`gnus-strict-mime' が `nil' の場合、`gnus-show-mime' が `nil' でなければ
常に `gnus-show-mime-method' が呼ばれて MIME 処理が行なわれます。

Gnus 5.2 以降では、`gnus-strict-mime' が `nil' でなく、かつ、article に
Mime-Version field がない場合、`gnus-show-mime-method' が呼ばれる代わり
に `gnus-decode-encoded-word-method' が呼ばれます。でも、古い Gnus では
有効ではないので、この場合、`gnus-strict-mime' は `nil' にしておいた方が
良いでしょう。

 -- Variable: gnus-show-mime

     この変数が `nil' でないとき、automatic MIME preview が行なわれます。
     既定値は `t' です。

     この変数は Gnus の変数なので、gnus-mime が load される前に gnus が
     load された場合、既定値は保証されません。

     (cf. Using MIME (gnus))

 -- Variable: gnus-show-mime-method

     MIME 処理を行なう時に、この変数に束縛された関数が呼ばれます。既定値
     は `gnus-article-preview-mime-message' です。

     この変数は Gnus の変数なので、gnus-mime が load される前に gnus が
     load された場合、既定値は保証されません。

     (cf. Using MIME (gnus))

 -- Variable: gnus-decode-encoded-word-method

     `gnus-show-mime' と `gnus-strict-mime' がともに `nil' でない場合に、
     Mime-Version field がない article に対してこの変数に束縛された関数
     が呼ばれます。既定値は、`gnus-article-decode-encoded-word' です。

     この変数は Gnus の変数なので、gnus-mime が load される前に gnus が
     load された場合、既定値は保証されません。

     また、Gnus 5.0.* および Gnus 5.1 では無効です。

*[注意]*

     gnus-mime は Gnus の変数を用い、これを gnus-mime の初期値で`defvar'
     しています。例えば、`gnus-show-mime' は `nil'ではなく `t' で、
     `gnus-show-mime-method' は `metamail-buffer' ではなく
     `gnus-article-preview-mime-message' で `defvar' しています。
     (cf. Using MIME (gnus))

     `setq' ではなく `defvar' を用いているのは gnus-mime が loadされる前
     に `~/.emacs' 等で user が行った設定を尊重するためですが、このこと
     は同時に、もし gnus-mime が load される前に gnus が load されれば
     gnus-mime の機能は標準では働かないことを意味しています。よって、
     `~/.gnus' 等で gnus-mime や mime-setup を load することには問題があ
     ります。どうしてもそうしたい場合は、`gnus-show-mime' や
     `gnus-show-mime-method' の設定を行ってください。

Automatic MIME preview の仕組み
===============================

Gnus 5.2 以降では Gnus は１つの article に対して
`gnus-original-article-buffer' (`" *Original Article*"') と
`gnus-article-buffer' (`"*Article*"') という２つの buffer を持っ
ています。ここでは前者を *raw article buffer*, 後者を
*preview buffer* と呼ぶことにします。

raw article buffer には何も処理をされていない『生の article』が入ってい
ます。特に、mule (see mule (tm-ja)) では code 変換を行なわない状態の
記事が入ります。

preview buffer は raw article buffer を元に MIME 処理を行なって整形され
た記事が入ります。特に、mule の場合、この中で、charset もしくは
newsgroup 毎に指定された文字 code での code 変換が行なわれます。

Gnus 5.0.* および Gnus 5.1 では raw article buffer と preview buffer の
区別はありませんが gnus-mime が無理矢理 raw article buffer を作り出して
います。よって、特に理由がなければ Gnus 5.2 以降を使われることをお勧めし
ます。

(cf. Two buffers for an article (tm-view-ja))

国際化
******

MULE (see mule (tm-ja)), XEmacs/mule, および、mule 統合版 Emacs (*1)
などの mule 機能を持った emacs では MIME charset (see MIME charset (tm-ja))
および、非 MIME message/part に対する newsgroup 毎に指定され
た `default-mime-charset' での code 変換が行われます。

*[Memo]*
     (*1) 1996 年 10 月現在、半田 剣一 氏と RMS 氏が開発中の Emacs で、
     MULEの機能のうち、多言語化と国際化に関する機能が merge されたものを
     指しています。

具体的には、code 変換は次のように行われます：

  1. ある newsgroup を選択すると、その newsgroup に対応する default の
     MIME charset を `gnus-newsgroup-default-charset-alist' から捜し、も
     し、見付かれば、Summary Buffer の buffer local 変数
     `default-mime-charset' にそれを設定する。もし、なければ、
     `default-mime-charset' の大域値が用いられる。

  2. Summary Buffer 中の非 ASCII 文字は `default-mime-charset' の
     Summary Buffer 上での値で code 変換される。

  3. encoded-word (see encoded-word (tm-ja)) の場合、宣言された MIME
     charset (see MIME charset (tm-ja)) で code 変換を行う。

  4. article の code 変換は：

       1. もし、ある MIME message のある part が Content-Type field
          (see Content-Type field (tm-ja)) に charset parameter を持っ
          ていれば、その MIME charset を用いて code 変換を行う。

       2. message header や非 MIME message など、charset が宣言されてい
          ない場合、Summary Buffer 上の `default-mime-charset' の値で
          code 変換される。

 -- Variable: gnus-newsgroup-default-charset-alist

     newsgroup に対応する正規表現と default MIME charset を表す symbol
     の対からなる連想 list.

     既定値では、alt.chinese.* では hz-gb-2312 (see
     hz-gb-2312 (tm-ja)), alt.chinese.text.big5, hk.*, hkstar.*, tw.*
     では cn-big5 (see cn-big5 (tm-ja)), fj.* では iso-2022-jp-2
     (see iso-2022-jp-2 (tm-ja)), han.* では euc-kr (see
     euc-kr (tm-ja)), relcom.* では koi8-r (see koi8-r (tm-ja)) が指
     定されています。

     ある newsgroup に対応する MIME charset が存在しない場合は
     `default-mime-charset' が用いられます。

 -- Function: gnus-set-newsgroup-default-charsetnewsgroup CHARSET

     NEWSGROUP に対する default MIME charset を CHARSET に設定する。

     NEWSGROUP は newsgroup 名かその一部からなる文字列。（例：
     `"gnu.emacs.gnus"', `"gnu.emacs"', `"gnu"'）

     CHARSET は MIME charset を表す symbol. （例：`iso-8859-1',
     `iso-2022-jp'）

MIME message の作成
*******************

mime-setup (see mime-setup (tm-ja)) を使っている場合、tm-edit (see
(tm-edit-ja)) を用いた MIME message の作成を行うことができます。

*[注意]*

     mime-setup の標準設定では signature の自動挿入が抑制されます。

     (cf. mime-setup (tm-ja))

`C-c C-x C-m' (`mime-editor/insert-mail') に対する実装は標準では与えられ
ません。これは、Gnus と組み合わせるべき mail reader をどうすれば良いかが
判らないからです。また、大抵の場合、`C-c C-x C-y'
(`mime-editor/insert-message') で事足りる（即ち、挿入したいmessage を選
択してその `"*Article*"' buffer を表示すればそのmessage を `C-c C-x C-y'
で挿入することができます）からです。

しかしながら、`mime-editor/mail-inserter-alist' の`message-mode' の値に
設定したい実装を指定することで `C-c C-x C-m' を利用することができます。

例：`C-c C-x C-m' と同じ動作をさせる場合
========================================

     (set-alist 'mime-editor/mail-inserter-alist
     	   'message-mode (function message-mime-insert-article))

例：MH の folder から取り込む場合
=================================

     (autoload 'tm-mh-e/insert-mail "tm-mh-e")

     (set-alist 'mime-editor/mail-inserter-alist
     	   'message-mode (function tm-mh-e/insert-mail))

関数索引
********