\input texinfo.tex
@setfilename gnus-mime-ja.info
@settitle{gnus-mime 0.10 説明書（日本語版）}
@direntry
* Gnus-MIME-Ja::           MIME extensions for Gnus (日本語版)
@end direntry
@titlepage
@title gnus-mime 0.10 説明書（日本語版）
@author 守岡 知彦 <morioka@@jaist.ac.jp>
@subtitle 1996/10/21
@end titlepage
@node Top, Introduction, (dir), (dir)
@top gnus-mime 0.10 説明書（日本語版）

@ifinfo

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

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

@menu
* Introduction::                gnus-mime って何？
* Automatic MIME Preview::      MIME message の inline 表示
* mule::                        国際化
* MIME-Edit::                   MIME message の作成
* Concept Index::               概念索引
* Function Index::              関数索引
* Variable Index::              変数索引
@end menu

@node Introduction, Automatic MIME Preview, Top, Top
@chapter gnus-mime って何？
@cindex gnus-mime

@strong{gnus-mime} は tm (@ref{(tm-ja)tm-kernel}) を使って Gnus
(@ref{(gnus)}) の MIME (@ref{(tm-ja)MIME}) 機能を強化するための package 
です。

@noindent
@strong{[注意]}
@quotation

gnus-mime は Gnus 専用です。GNUS には tm-gnus (@ref{(tm-gnus_ja)}) を使
います。
@end quotation


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

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

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


@node Automatic MIME Preview, mule, Introduction, Top
@chapter MIME message の inline 表示
@cindex XEmacs
@cindex automatic MIME preview

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

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

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

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

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


@menu
* MIME processing::             MIME 処理の仕組み
* Two buffers for an article::  Automatic MIME preview の仕組み
@end menu

@node MIME processing, Two buffers for an article, Automatic MIME Preview, Automatic MIME Preview
@section MIME 処理の仕組み

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

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

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


@defvar gnus-show-mime

この変数が @code{nil} でないとき、automatic MIME preview が行なわれます。
既定値は @code{t} です。@refill

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

(cf. @ref{(gnus)Using MIME})
@end defvar


@defvar gnus-show-mime-method

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

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

(cf. @ref{(gnus)Using MIME})
@end defvar


@defvar gnus-decode-encoded-word-method

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

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

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


@noindent
@strong{[注意]}
@quotation

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

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



@node Two buffers for an article,  , MIME processing, Automatic MIME Preview
@section Automatic MIME preview の仕組み
@cindex preview buffer
@cindex raw article buffer

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

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

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

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

(cf. @ref{(tm-view-ja)Two buffers for an article})



@node mule, MIME-Edit, Automatic MIME Preview, Top
@chapter 国際化

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

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


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

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

@item
Summary Buffer 中の非 ASCII 文字は @code{default-mime-charset} 
の Summary Buffer 上での値で code 変換される。

@item
encoded-word (@ref{(tm-ja)encoded-word}) の場合、宣言された MIME charset
(@ref{(tm-ja)MIME charset}) で code 変換を行う。

@item
article の code 変換は：

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

@item
message header や非 MIME message など、charset が宣言されていない場合、
Summary Buffer 上の @code{default-mime-charset} の値で code 変換
される。
@end enumerate
@end enumerate


@defvar gnus-newsgroup-default-charset-alist

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

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

ある newsgroup に対応する MIME charset が存在しない場合は
@code{default-mime-charset} が用いられます。
@end defvar


@defun gnus-set-newsgroup-default-charsetnewsgroup charset

@var{newsgroup} に対する default MIME charset を @var{charset} に設定す
る。@refill

@var{newsgroup} は newsgroup 名かその一部からなる文字列。（例：
@code{"gnu.emacs.gnus"}, @code{"gnu.emacs"}, @code{"gnu"}）@refill

@var{charset} は MIME charset を表す symbol. （例：@code{iso-8859-1},
@code{iso-2022-jp}）
@end defun



@node MIME-Edit, Concept Index, mule, Top
@chapter MIME message の作成

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

@noindent
@strong{[注意]}
@quotation

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

(cf. @ref{(tm-ja)mime-setup})
@end quotation


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

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


@section 例：@kbd{C-c C-x C-m} と同じ動作をさせる場合

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



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

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

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



@node Concept Index, Function Index, MIME-Edit, Top
@chapter 概念索引

@printindex cp

@node Function Index, Variable Index, Concept Index, Top
@chapter 関数索引

@printindex fn

@node Variable Index,  , Function Index, Top
@chapter 変数索引

@printindex vr
@bye
