@c =============================================================
@c = 元 翻 訳: 粕川正充＠お茶の水女子大学
@c = 加筆修正: 大木敦雄＠大塚.筑波大学 = 1998/11/25
@c =============================================================
@c This is part of the Emacs manual.
@c Copyright (C) 1985, 86, 87, 93, 94, 95, 1997 Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Picture, Sending Mail, Abbrevs, Top
@c @chapter Editing Pictures
@chapter 絵の編集
@c @cindex pictures
@cindex 絵
@c @cindex making pictures out of text characters
@cindex テキスト文字で書いた絵
@findex edit-picture

@c   To edit a picture made out of text characters (for example, a picture
@c of the division of a register into fields, as a comment in a program),
@c use the command @kbd{M-x edit-picture} to enter Picture mode.
テキスト文字で書いた絵（たとえば、プログラムのコメントとして
レジスタをフィールドに分割した絵）を編集するには、
コマンド@kbd{M-x edit-picture}を使って
ピクチャー（picture）モードに入ります。

@c   In Picture mode, editing is based on the @dfn{quarter-plane} model of
@c text, according to which the text characters lie studded on an area that
@c stretches infinitely far to the right and downward.  The concept of the end
@c of a line does not exist in this model; the most you can say is where the
@c last nonblank character on the line is found.
@c = quarter-plane 象限？
ピクチャー（picture）モードでは、
@dfn{1/4平面}モデル（quarter-plane）に基づいて編集を行います。
つまり、右側と下側に無限に続く領域にテキスト文字が散在するのです。
このモデルでは行末は存在しません。
行中で空白でない文字が最後に現れる場所がわかるだけです。

@c   Of course, Emacs really always considers text as a sequence of
@c characters, and lines really do have ends.  But Picture mode replaces
@c the most frequently-used commands with variants that simulate the
@c quarter-plane model of text.  They do this by inserting spaces or by
@c converting tabs to spaces.
もちろん、Emacsはつねにテキストを文字の列としてとらえ、
実際には行に終りがあります。
しかし、ピクチャー（picture）モードでは、よく使われるコマンドの大部分を
1/4平面モデルに従って動作するように置き換えています。
空白を挿入したりタブを空白に置き換えることで、そのようにします。

@c   Most of the basic editing commands of Emacs are redefined by Picture mode
@c to do essentially the same thing but in a quarter-plane way.  In addition,
@c Picture mode defines various keys starting with the @kbd{C-c} prefix to
@c run special picture editing commands.
Emacsの基本的な編集コマンドの大部分は、
ピクチャー（picture）モードでは
1/4平面モデルにおいて本質的には同じ動作をするように再定義されています。
さらに、ピクチャー（picture）モードでは、
@kbd{C-c}で始まるキー列を絵の編集用の特別なコマンドとして定義します。

@c   One of these keys, @kbd{C-c C-c}, is pretty important.  Often a
@c picture is part of a larger file that is usually edited in some other
@c major mode.  @kbd{M-x edit-picture} records the name of the previous
@c major mode so you can use the @kbd{C-c C-c} command
@c (@code{picture-mode-exit}) later to go back to that mode.  @kbd{C-c C-c}
@c also deletes spaces from the ends of lines, unless given a numeric
@c argument.
これらのキーの1つである@kbd{C-c C-c}は非常に重要です。
絵が、普通は別のメジャーモードで編集される大きなファイルの
一部であることがしばしばあります。
@kbd{M-x edit-picture}は直前のメジャーモードを記録しておき、
あとで@kbd{C-c C-c}コマンド（@code{picture-mode-exit}）で
そのモードに戻れるようにします。
また、数引数を指定しなければ、@kbd{C-c C-c}は行末の空白を削除します。

@c   The special commands of Picture mode all work in other modes (provided
@c the @file{picture} library is loaded), but are not bound to keys except
@c in Picture mode.  The descriptions below talk of moving ``one column''
@c and so on, but all the picture mode commands handle numeric arguments as
@c their normal equivalents do.
ピクチャー（picture）モードのすべての特別なコマンドは、
（@file{picture}ライブラリがロードされていれば）
他のモードでも使えますが、ピクチャー（picture）モード以外では
キーにバインドされていません。
以下では『1桁』移動などと説明しますが、
ピクチャー（picture）モードのすべてのコマンドは、
それに対応する通常のコマンドと同じように数引数を扱えます。

@vindex picture-mode-hook
@c   Turning on Picture mode runs the hook @code{picture-mode-hook}
@c (@pxref{Hooks}).
ピクチャー（picture）モードに入るときに
フック@code{picture-mode-hook}を実行します（@pxref{Hooks}）。

@menu
* Basic Picture::         Basic concepts and simple commands of Picture Mode.
* Insert in Picture::     Controlling direction of cursor motion
                            after "self-inserting" characters.
* Tabs in Picture::       Various features for tab stops and indentation.
* Rectangles in Picture:: Clearing and superimposing rectangles.
@end menu

@node Basic Picture, Insert in Picture, , Picture
@c @section Basic Editing in Picture Mode
@section ピクチャーモードの基本編集

@findex picture-forward-column
@findex picture-backward-column
@findex picture-move-down
@findex picture-move-up
@c @cindex editing in Picture mode
@cindex ピクチャーモードでの編集

@c   Most keys do the same thing in Picture mode that they usually do, but
@c do it in a quarter-plane style.  For example, @kbd{C-f} is rebound to
@c run @code{picture-forward-column}, a command which moves point one
@c column to the right, inserting a space if necessary so that the actual
@c end of the line makes no difference.  @kbd{C-b} is rebound to run
@c @code{picture-backward-column}, which always moves point left one
@c column, converting a tab to multiple spaces if necessary.  @kbd{C-n} and
@c @kbd{C-p} are rebound to run @code{picture-move-down} and
@c @code{picture-move-up}, which can either insert spaces or convert tabs
@c as necessary to make sure that point stays in exactly the same column.
@c @kbd{C-e} runs @code{picture-end-of-line}, which moves to after the last
@c nonblank character on the line.  There is no need to change @kbd{C-a},
@c as the choice of screen model does not affect beginnings of
@c lines.
ピクチャー（picture）モードでも、ほとんどのキーは通常と同じ動作をしますが、
1/4平面流の動作です。
たとえば、@kbd{C-f}は、
@code{picture-forward-column}を実行するように再定義してあります。
このコマンドはポイントを1桁右に動かし、
必要なら空白を挿入して、行末がないかのようにふるまいます。
@kbd{C-b}は、
@code{picture-backward-column}を実行するように再定義してあります。
このコマンドはポイントを1桁左に動かし、
必要に応じてタブを複数の空白に変換します。
@kbd{C-n}と@kbd{C-p}は、それぞれ@code{picture-move-down}と
@code{picture-move-up}を実行するように再定義してあります。
これらのコマンドは、必要に応じて空白を挿入したりタブを変換して、
ポイントが同じ桁位置に留まるように移動します。
@kbd{C-e}は@code{picture-end-of-line}を実行します。
このコマンドは、行の最後の白文字以外の文字の直後に移動します。
画面モデルは行頭には影響しないので、@kbd{C-a}を変更する必要はありません。

@findex picture-newline
@c   Insertion of text is adapted to the quarter-plane screen model through
@c the use of Overwrite mode (@pxref{Minor Modes}).  Self-inserting characters
@c replace existing text, column by column, rather than pushing existing text
@c to the right.  @key{RET} runs @code{picture-newline}, which just moves to
@c the beginning of the following line so that new text will replace that
@c line.
テキストの挿入は、上書き（overwrite）モードを用いて
1/4平面モデルに対応させてあります（@pxref{Minor Modes}）。
自己挿入文字は、既存のテキストを右側へ押しやるのではなく、
既存のテキストを桁ごとに置き換えます。
@key{RET}は@code{picture-newline}を実行します。
このコマンドは、つぎの行の先頭に移動し、
その行が新たなテキストで置き換わるようにします。

@findex picture-backward-clear-column
@findex picture-clear-column
@findex picture-clear-line
@c   Picture mode provides erasure instead of deletion and killing of
@c text.  @key{DEL} (@code{picture-backward-clear-column}) replaces the
@c preceding character with a space rather than removing it; this moves
@c point backwards.  @kbd{C-d} (@code{picture-clear-column}) replaces the
@c next character or characters with spaces, but does not move point.  (If
@c you want to clear characters to spaces and move forward over them, use
@c @key{SPC}.)  @kbd{C-k} (@code{picture-clear-line}) really kills the
@c contents of lines, but does not delete the newlines from the
@c buffer.
ピクチャー（picture）モードでは、テキストの削除やキルのかわりに消去します。
@key{DEL}（@code{picture-backward-clear-column}）は、
直前の文字を削除するのではなく空白で置き換え、
また、ポイントを1つまえに戻します。
@kbd{C-d}（@code{picture-clear-column}）は直後の1つ以上の文字を
空白で置き換えますが、ポイントは動かしません。
（文字を空白で置き換えて、かつ、ポイントを先へ進めるには、@key{SPC}を使う。）
@kbd{C-k}（@code{picture-clear-line}）は行の内容を実際にキルしますが、
バッファから改行を削除しません。

@findex picture-open-line
@c   To do actual insertion, you must use special commands.  @kbd{C-o}
@c (@code{picture-open-line}) creates a blank line after the current line;
@c it never splits a line.  @kbd{C-M-o} (@code{split-line}) makes sense in
@c Picture mode, so it is not changed.  @kbd{C-j}
@c (@code{picture-duplicate-line}) inserts below the current line another
@c line with the same contents.@refill
実際に挿入を行うには、特別なコマンドを使う必要があります。
@kbd{C-o}（@code{picture-open-line}）は、
現在行のつぎに空行を作りますが、行を分割しません。
@kbd{C-M-o}（@code{split-line}）は
ピクチャー（picture）モードでも意味があるので変更してありません。
@kbd{C-j}（@code{picture-duplicate-line}）は
現在行の下に現在行と同じ内容の行を挿入します。

@c @kindex C-c C-d @r{(Picture mode)}
@kindex C-c C-d @r{（ピクチャーモード）}
@c    To do actual deletion in Picture mode, use @kbd{C-w}, @kbd{C-c C-d}
@c (which is defined as @code{delete-char}, as @kbd{C-d} is in other
@c modes), or one of the picture rectangle commands (@pxref{Rectangles in
@c Picture}).
ピクチャー（picture）モードで実際に削除を行うには、
@kbd{C-w}か
（他のモードでの@kbd{C-d}と同じ@code{delete-char}に定義されている）
@kbd{C-c C-d}、あるいは、絵の矩形領域コマンドの1つを使います
（@pxref{Rectangles in Picture}）。

@node Insert in Picture, Tabs in Picture, Basic Picture, Picture
@c @section Controlling Motion after Insert
@section 挿入後のポイント移動制御

@findex picture-movement-up
@findex picture-movement-down
@findex picture-movement-left
@findex picture-movement-right
@findex picture-movement-nw
@findex picture-movement-ne
@findex picture-movement-sw
@findex picture-movement-se
@c @kindex C-c < @r{(Picture mode)}
@c @kindex C-c > @r{(Picture mode)}
@c @kindex C-c ^ @r{(Picture mode)}
@c @kindex C-c . @r{(Picture mode)}
@c @kindex C-c ` @r{(Picture mode)}
@c @kindex C-c ' @r{(Picture mode)}
@c @kindex C-c / @r{(Picture mode)}
@c @kindex C-c \ @r{(Picture mode)}
@kindex C-c < @r{（ピクチャーモード）}
@kindex C-c > @r{（ピクチャーモード）}
@kindex C-c ^ @r{（ピクチャーモード）}
@kindex C-c . @r{（ピクチャーモード）}
@kindex C-c ` @r{（ピクチャーモード）}
@kindex C-c ' @r{（ピクチャーモード）}
@kindex C-c / @r{（ピクチャーモード）}
@kindex C-c \ @r{（ピクチャーモード）}
@c   Since ``self-inserting'' characters in Picture mode overwrite and move
@c point, there is no essential restriction on how point should be moved.
@c Normally point moves right, but you can specify any of the eight
@c orthogonal or diagonal directions for motion after a ``self-inserting''
@c character.  This is useful for drawing lines in the buffer.
ピクチャー（picture）モードでは『自己挿入』文字は
上書きしてポイントを動かしますから、
ポイントをどのように動かすかについて本質的な制限はありません。
通常ポイントは右に動きますが、『自己挿入』文字のあとで
上下左右斜めの8方向のいずれの方向へ移動するか指定できます。
これは、バッファに直線を引くときに役立ちます。

@table @kbd
@item C-c <
@c Move left after insertion (@code{picture-movement-left}).
挿入後、左へ移動（@code{picture-movement-left}）。
@item C-c >
@c Move right after insertion (@code{picture-movement-right}).
挿入後、右へ移動（@code{picture-movement-right}）。
@item C-c ^
@c Move up after insertion (@code{picture-movement-up}).
挿入後、上へ移動（@code{picture-movement-up}）。
@item C-c .
@c Move down after insertion (@code{picture-movement-down}).
挿入後、下へ移動（@code{picture-movement-down}）。
@item C-c `
@c Move up and left (``northwest'') after insertion (@code{picture-movement-nw}).
挿入後、左上（『北西』）へ移動（@code{picture-movement-nw}）。
@item C-c '
@c Move up and right (``northeast'') after insertion
@c (@code{picture-movement-ne}).
挿入後、右上（『北東』）へ移動（@code{picture-movement-ne}）。
@item C-c /
@c Move down and left (``southwest'') after insertion
@c @*(@code{picture-movement-sw}).
挿入後、左下（『南西』）へ移動（@code{picture-movement-sw}）。
@item C-c \
@c Move down and right (``southeast'') after insertion
@c @*(@code{picture-movement-se}).
挿入後、右下（『南東』）へ移動（@code{picture-movement-se}）。
@end table

@c @kindex C-c C-f @r{(Picture mode)}
@c @kindex C-c C-b @r{(Picture mode)}
@kindex C-c C-f @r{（ピクチャーモード）}
@kindex C-c C-b @r{（ピクチャーモード）}
@findex picture-motion
@findex picture-motion-reverse
@c   Two motion commands move based on the current Picture insertion
@c direction.  The command @kbd{C-c C-f} (@code{picture-motion}) moves in the
@c same direction as motion after ``insertion'' currently does, while @kbd{C-c
@c C-b} (@code{picture-motion-reverse}) moves in the opposite direction.
2つの移動コマンドは、現在指定されている挿入後の移動方向に基づいて動作します。
コマンド@kbd{C-c C-f}（@code{picture-motion}）は、
現在指定されている『挿入』後の移動方向と同じ方向へ移動しますが、
@kbd{C-c C-b}（@code{picture-motion-reverse}）は反対方向へ移動します。

@node Tabs in Picture, Rectangles in Picture, Insert in Picture, Picture
@c @section Picture Mode Tabs
@section ピクチャーモードのタブ

@c @kindex M-TAB @r{(Picture mode)}
@kindex M-TAB @r{（ピクチャーモード）}
@findex picture-tab-search
@vindex picture-tab-chars
@c   Two kinds of tab-like action are provided in Picture mode.  Use
@c @kbd{M-@key{TAB}} (@code{picture-tab-search}) for context-based tabbing.
@c With no argument, it moves to a point underneath the next
@c ``interesting'' character that follows whitespace in the previous
@c nonblank line.  ``Next'' here means ``appearing at a horizontal position
@c greater than the one point starts out at.''  With an argument, as in
@c @kbd{C-u M-@key{TAB}}, this command moves to the next such interesting
@c character in the current line.  @kbd{M-@key{TAB}} does not change the
@c text; it only moves point.  ``Interesting'' characters are defined by
@c the variable @code{picture-tab-chars}, which should define a set of
@c characters.  The syntax for this variable is like the syntax used inside
@c of @samp{[@dots{}]} in a regular expression---but without the @samp{[}
@c and the @samp{]}.  Its default value is @code{"!-~"}.
ピクチャー（picture）モードにはタブ相当の動作が2種類あります。
文脈に基づくタブを行うには@kbd{M-@key{TAB}}
（@code{picture-tab-search}）を使います。
引数を指定しないと、先行する空行でない行において白文字に続く
『興味ある』つぎの文字の下方に移動します。
ここで『つぎ』とは『開始位置より水平位置が1より大きい』という意味です。
@kbd{C-u M-@key{TAB}}のように引数を指定すると、
現在行において『興味ある』文字に移動します。
@kbd{M-@key{TAB}}はテキストを変更せずにポイントを移動するだけです。
『興味ある』文字は、変数@code{picture-tab-chars}で定義されますが、
文字集合を定義する必要があります。
この変数の構文は正規表現で使われる@samp{[@dots{}]}の構文に似ていますが、
@samp{[}と@samp{]}で囲みません。
この変数のデフォルト値は@code{"!-~"}です。

@findex picture-tab
@c   @key{TAB} itself runs @code{picture-tab}, which operates based on the
@c current tab stop settings; it is the Picture mode equivalent of
@c @code{tab-to-tab-stop}.  Normally it just moves point, but with a numeric
@c argument it clears the text that it moves over.
@key{TAB}それ自身は、@code{picture-tab}を実行します。
このコマンドは、現在のタブストップの設定に基づいて動作します。
これは他のモードの@code{tab-to-tab-stop}に相当します。
通常これはポイントを動かすだけですが、
数引数を指定すると移動先までのテキストをクリアします。

@c @kindex C-c TAB @r{(Picture mode)}
@kindex C-c TAB @r{（ピクチャーモード）}
@findex picture-set-tab-stops
@c   The context-based and tab-stop-based forms of tabbing are brought
@c together by the command @kbd{C-c @key{TAB}} (@code{picture-set-tab-stops}).
@c This command sets the tab stops to the positions which @kbd{M-@key{TAB}}
@c would consider significant in the current line.  The use of this command,
@c together with @key{TAB}, can get the effect of context-based tabbing.  But
@c @kbd{M-@key{TAB}} is more convenient in the cases where it is sufficient.
文脈に基づくタブとタブストップに基づくタブは、
コマンド@kbd{C-c @key{TAB}}（@code{picture-set-tab-stops}）で
結び付けることができます。
このコマンドは、現在行において@kbd{M-@key{TAB}}が重要と考える位置に
タブストップを設定します。
@key{TAB}とともにこのコマンドを使えば、
文脈に基づくタブと同じ効果を得られます。
しかし、@kbd{M-@key{TAB}}で十分ならばそのほうが便利でしょう。

@c   It may be convenient to prevent use of actual tab characters in
@c pictures.  For example, this prevents @kbd{C-x @key{TAB}} from messing
@c up the picture.  You can do this by setting the variable
@c @code{indent-tabs-mode} to @code{nil}.  @xref{Just Spaces}.
本当のタブ文字を絵に使わないように抑制したほうが便利な場合があります。
たとえば、@kbd{C-x @key{TAB}}で絵をめちゃくちゃにしてしまうことを防止できます。
タブ文字の使用を抑制するには、
変数@code{indent-tabs-mode}に@code{nil}を設定します。
@xref{Just Spaces}。

@node Rectangles in Picture,  , Tabs in Picture, Picture
@c @section Picture Mode Rectangle Commands
@section ピクチャーモードの矩形領域コマンド
@c @cindex rectangles and Picture mode
@c @cindex Picture mode and rectangles
@cindex 矩形領域とピクチャーモード
@cindex ピクチャーモードと矩形領域

@c   Picture mode defines commands for working on rectangular pieces of the
@c text in ways that fit with the quarter-plane model.  The standard rectangle
@c commands may also be useful (@pxref{Rectangles}).
ピクチャー（picture）モードでは、
1/4平面モデルに適合するように、
テキストの矩形領域に作用するコマンドを定義します。
標準的な矩形領域コマンドも役立つでしょう
（@pxref{Rectangles}）。

@table @kbd
@item C-c C-k
@c Clear out the region-rectangle with spaces
@c (@code{picture-clear-rectangle}).  With argument, delete the text.
矩形領域を空白でクリアする（@code{picture-clear-rectangle}）。
数引数を指定するとテキストを削除する。
@item C-c C-w @var{r}
@c Similar but save rectangle contents in register @var{r} first
@c (@code{picture-clear-rectangle-to-register}).
同様だが、まず矩形領域の内容をレジスタ@var{r}に保存する
（@code{picture-clear-rectangle-to-register}）。
@item C-c C-y
@c Copy last killed rectangle into the buffer by overwriting, with upper
@c left corner at point (@code{picture-yank-rectangle}).  With argument,
@c insert instead.
ポイント位置を左上隅として最後にキルした矩形領域をバッファに上書きする
（@code{picture-yank-rectangle}）。
数引数を指定すると挿入する。
@item C-c C-x @var{r}
@c Similar, but use the rectangle in register @var{r}
@c (@code{picture-yank-rectangle-from-register}).
同様だが、レジスタ@var{r}の矩形領域を使う
（@code{picture-yank-rectangle-from-register}）。
@end table

@c @kindex C-c C-k @r{(Picture mode)}
@c @kindex C-c C-w @r{(Picture mode)}
@kindex C-c C-k @r{（ピクチャーモード）}
@kindex C-c C-w @r{（ピクチャーモード）}
@findex picture-clear-rectangle
@findex picture-clear-rectangle-to-register
@c   The picture rectangle commands @kbd{C-c C-k}
@c (@code{picture-clear-rectangle}) and @kbd{C-c C-w}
@c (@code{picture-clear-rectangle-to-register}) differ from the standard
@c rectangle commands in that they normally clear the rectangle instead of
@c deleting it; this is analogous with the way @kbd{C-d} is changed in Picture
@c mode.
絵の矩形領域コマンド、@kbd{C-c C-k}（@code{picture-clear-rectangle}）と
@kbd{C-c C-w}（@code{picture-clear-rectangle-to-register}）は、
標準の矩形領域コマンドが矩形領域を削除するのに対しクリアする点で異なります。
これは、ピクチャー（picture）モードでの@kbd{C-d}の意味の変更方法に
類似したものです。

@c   However, deletion of rectangles can be useful in Picture mode, so
@c these commands delete the rectangle if given a numeric argument.
@c @kbd{C-c C-k} either with or without a numeric argument saves the
@c rectangle for @kbd{C-c C-y}.
しかし、ピクチャー（picture）モードでも矩形領域の削除は便利なので、
数引数を与えるとこれらのコマンドは矩形領域を削除します。
引数を指定してもしなくても@kbd{C-c C-k}は
@kbd{C-c C-y}のために矩形領域を（レジスタに）保存します。

@c @kindex C-c C-y @r{(Picture mode)}
@c @kindex C-c C-x @r{(Picture mode)}
@kindex C-c C-y @r{（ピクチャーモード）}
@kindex C-c C-x @r{（ピクチャーモード）}
@findex picture-yank-rectangle
@findex picture-yank-rectangle-from-register
@c   The Picture mode commands for yanking rectangles differ from the
@c standard ones in overwriting instead of inserting.  This is the same way
@c that Picture mode insertion of other text differs from other modes.
@c @kbd{C-c C-y} (@code{picture-yank-rectangle}) inserts (by overwriting)
@c the rectangle that was most recently killed, while @kbd{C-c C-x}
@c (@code{picture-yank-rectangle-from-register}) does likewise for the
@c rectangle found in a specified register.
ピクチャー（picture）モードのヤンクコマンドは標準のそれとは、
挿入のかわりに上書きする点で異なります。
これはピクチャー（picture）モードでのテキストの挿入が
他のモードでのそれと異なっているのと同じです。
@kbd{C-c C-y}（@code{picture-yank-rectangle}）は、
もっとも最近にキルした矩形領域を（上書きで）挿入しますが、
@kbd{C-c C-x}（@code{picture-yank-rectangle-from-register}）
は同様のことを指定されたレジスタ内の矩形領域で行います。
