comment $Id: plain2.pln,v 1.4 1994/01/07 09:41:22 uchida Exp $

[[R
\thispagestyle{empty}
{\center
\Large
~\\
\vspace{1cm}
べた書き入力による文書清書システム\\
\vspace{1cm}
\epsfile{file=logo.eps}\\
\vspace{0.2cm}
\Huge
{\bf r2.5\\ユーザガイド\\}
]]R
[[C
{\bf NEC CCS バージョン}\\
]]C
[[R
\vspace{3cm}
\large
内田 昭宏\\
{\normalsize\tt Copyright (C) 1994 A.Uchida\\
uchida@ccs.mt.nec.co.jp}\\
\vfill
\normalsize
本ユーザガイドは plain2 , \LaTeX , tgif を使って書かれています．\\
{\footnotesize \verb|$Id: plain2.pln,v 1.4 1994/01/07 09:41:22 uchida Exp $|}
}
\newpage
\pagenumbering{roman}
\tableofcontents
\newpage
\pagenumbering{arabic}
\thispagestyle{original}
\pagestyle{original}
]]R

1. はじめに

文書清書システムとして LaTeX や troff が広く使われるようになりました．
LaTeX や troff を利用すると，比較的手軽に高品位の文書を作成することができ
ますが，LaTeX や troffを使いこなすことは初心者には容易ではありません．
また，LaTeX や troffのコマンドが埋めこまれた文書は読みづらく，文書を推考し
ながら作成するのに適していません．

plain2 はべた書きされた文書を解析して，自動的に LaTeX やtroff のコマンドを
埋め込んだ文書に変換して出力するコマンドです．plain2 を使えば，LaTeX や
troff の知識がなくても，簡単に美しい文書を作成できるようになります．

また，出力のカスタマイズ機能や，べた書き文書中に LaTeX や troff のコマンド
を埋め込む機能を使って，高度なレイアウトが必要な文書の作成にも利用すること
ができます．

1.1. ユーザガイドの構成

本ユーザガイドは以下のような構成になっています．

	- plain2 の使い方の簡単な説明
	- コマンドオプションの設定
	- 文書形式の詳細
	- 拡張機能
	- 出力形式のカスタマイズ方法

前半部は，plain2 を始めて使う人を対象にした，簡単な使い方の説明になってい
ます．後半部では，既に plain2 に慣れている人を対象に，plain2の詳細な機能の
説明や，より高度な応用例を紹介しています．

1.2. ユーザガイド中の記法

本ユーザガイドでは，べた書きされた文書を左側に行番号を付けた形式で示します．

べた書きの文書中では，縦線の位置がずれて見えることがありますが，これは
LaTeX の処理のために生じているもので，実際の文書中では縦線はきちんと揃っ
ています．

[[R
\input{legend.raw}
]]R

べた書き入力文書を plain2 に通し，更に清書系に通した結果のイメージは枠線で
囲んで示します．このユーザガイド自体は LaTeX を使って清書されていますが，特
別な注意がある場合を除いて，troff を使ってもほぼ同等の清書結果が得られます．

[[R
\input{legend.tex}
]]R

1.3. plain2 のバージョンと入手方法

このユーザガイドは, plain2 の "r2.5" 版をベースとしています．

plain2 は JUS Free software CD-ROM (1992) を始め，いくつかのフリーソフト配
布パッケージに収録されて配布されています．また，何人かの方によってMS-DOS上
に移植版が作成され，パソコン通信等からも入手可能です．ただし，93年末の時点
で，これら配布媒体上のものはいずれも，1991年5月に fj.sources で公開された 
"r2.3" 版です．

r2.5 では r2.3 で発見されたいくつかのバグを修正した他，出力形式のカスタマ
イズなどの新機能が導入しています．


1.4. 配布条件

・plain2 は AS-IS の形で提供され，その動作についてはいかなる形での保証もな
  されない．本プログラムを使用することにより生じた損失について，プログラム
  の作者，並びに，作者の所属する組織はいかなる責任も負わない．

・コピーライトをはずさない限り，plain2 の再配布は自由とする

・plain2 を改造して利用することに制限はつけない．ただし，改造した版を作者
  の許可なく再配布してはならない．改造については，作者に報告して頂きたい．

バグレポート，改造報告などは uchida@ccs.mt.nec.co.jp までお願いします．

[[R
\begin{figure}[b]
\framebox[\textwidth]{
\begin{minipage}{16cm}
]]R
plain2の名前の由来

開発当初， plain2 はべた書きを LaTeXに変換する plain-to-tex = plain2texと
plain-to-roff = plain2roff という二つのコマンドに分かれていました．その後
の改定で二つの出力機能が一つのコマンドにマージされた結果，plain2-to-xxxの
最後の部分が削られて，plain2 という名前のコマンドになりました．
[[R
\end{minipage}}
\end{figure}
]]R

2. まずは使ってみよう

ここでは，簡単な例を使って，plain2 を使った文書作成の方法を説明します．
まず，つぎのようなべた書き文書を作成します．

[[R
\input{beginning.raw}
]]R

plain2 は例文から次に示す文書構造を抽出し，
適切な LaTeX または troffのコマンドを挿入します．

[[T
      1~3行 タイトル                    22~24行 列挙型リスト
	5行 セクションタイトル(深さ1)      27行 セクションタイトル(深さ2)
	7行 平文                           29行 平文
    10~14行 例示                        30~36行 テーブル
       16行 セクションタイトル(深さ2)      38行 平文
       18行 平文                        39~45行 線画
    19~25行 項目型リスト
]]T

ここでは，LaTeXを選択することにします．

	% plain2 -tex example.pln > example.tex

入力文書の文字コードにはJISコード，または，EUCコードを使うことができます，
出力コードの標準はEUCコードです．オプションによって，入出力共にシフトJISコー
ドを選択することも可能です．MS-DOSに移植されたplain2では，入出力共にシフト
JISコードが標準となっています．

これ以降の手順は，普通に LaTeXを使う場合と同じです．

	% jlatex example.tex
		...
		...

LaTeXを使って清書された結果を次に示します．

バックスラッシュなど，LaTeXやtroff処理系の特殊文字は自動的にクォートして出
力されます．

[[R
\input{Beginning.tex}
]]R

出力に troff を選択することもできます．plain2 の troff の出力は mm マクロ
を使うことを仮定しています．

	% plain2 example.pln > example.mm
	% ditroff -mm example.mm
		...

mm マクロは "Documenters Work Bench" の文書処理環境に含まれていますが，よ
り一般的な ms マクロを使った出力を選択することもできます．ms マクロを使う
場合には"-ms"オプションを指定します．LaTeX出力と troff のmmマクロ出力は，
最終的にほぼ同じイメージで清書されるように配慮してありますが，ms マクロを
選択した場合の出力イメージは多少異なったものになります．

	% plain2 -ms example.pln > example.ms
	% ditroff -ms example.ms
		...

2.1. タイトル

例文では，『はじめてのplain2』からの3行がタイトルです．タイトルは必ず文書
ファイルの先頭でなくてはいけません．タイトルは省略することも可能です．

タイトルには，題名，著者名，日付，所属などのうち必要なものを書きます．最初
の例に示した書き方の他に，各行の先頭にタグを付ける書き方もあります．

[[R
\input{title_pat1.raw}
]]R

[[R
\input{title_pat2.raw}
]]R

タイトル部分には空白行を入れることはできません．タイトル部分と本文との間に
は一行以上の空白が必要です．また，タイトル部分の全ての行は予め定められたパ
ターン(((xタイトルの詳細))章参照)のいずれかにマッチしなくてはいけません．
一行でもパターンにマッチしない行があると，タイトル全体の解釈が失敗してしま
います．

2.2. セクションタイトル

例文には3つのセクションタイトルが含まれていす．セクションタイトルは，セク
ション番号(章番号，節番号)と見だし部分から構成されます．

		１．１． 多様なリスト
	      └───┘└─────┘
		  ↑         ↑
		  │        見だし
	     セクション番号

セクションタイトルは行の先頭から始まっていなくてはなりません．また，セクショ
ンタイトル行の直前は必ず空白行でなくてはいけません．できれば，前後共に空白
行とすることが望ましいです．例文では，セクション番号に全角数字と全角のドッ
トを使っていますが，半角数字と半角ドットを使うこともできます．

plain2 はセクション番号の値そのものにはほとんど注意を払わず，セクションの
深さ(ドットで区切られた並びの数)だけに注目しています．

		１．  ようこそ plain2 の世界へ
	      └──┘
		 ↑
	   深さ1のセクション番号

		１．１． 多様なリスト
	      └───┘
		 ↑
	   深さ2のセクション番号

plain2 の出力を LaTeX や troff で清書すると，べた書き文書中でのセクション番
号の値にかかわらず，セクション番号は続き番号となります．入力文書中では番号
の数自体にはあまり注意を払う必要はありません．

[[R
\input{section_renum.raw}
]]R

[[R
\input{section_renum.tex}
]]R

2.3. 平文

特別の構造を持たない普通の文章を平文と呼びます．平文は，LaTeXやtroffを通す
と行詰めされる指定で出力されます．

平文の間に空白行を入れることで，段落の区切りを表します．空白行を使わずに，
行の先頭に全角一個文の空白をおくことで段落を示すこともできます．

[[R
\input{paragraph.raw}
]]R

[[R
\input{paragraph.tex}
]]R

2.4. 例示

コマンド実行例の部分は，行詰めをせずに，そのままのイメージで出力しなければ
なりません．このような部分を例示と呼びます．

プログラム例のように，比較的短い行が続く部分，空白を多く含む行が続く部分な
どが例示と判定されます．

2.5. リスト

例文では，3つの項目からなる項目型リストの中に，列挙型のリストがネストされ
ています．

リストには，項目型リスト，列挙型リスト，記述型リストの3種類があり，リスト
行の先頭に付けられたリストマークの種類によって識別されます．

[[P
		・ 項目型リスト
		↑└────┘
		│      ↑
	リストマーク  リスト文

		 1)  数字による列挙
		└┘└──┘
		 ↑    ↑
	リストマーク  リスト文

		 記述型:   記述型リスト
		└───┘└─────┘
		 ↑             ↑
	リストマーク          リスト文
]]P

項目型:
  項目型は次の文字のいずれかをリストマークに使うリストです．

  ビュレット:   "o "，"・"，"* ","＊", "+ "
  ダッシュ:     "-"(半角ダッシュ)，"−"(全角ダッシュ)

[[R
\input{list_item.raw}
]]R

  troff 出力を選択した場合には，ビュレットとダッシュの違いが区別して出力さ
  れますが，LaTeX出力ではビュレットとダッシュの違いは出力に反映されません．

[[R
\input{list_item.tex}
]]R

列挙型:
  列挙型はアルファベット一文字，数字，またはローマ数字による順序番号をリス
  トマークとしたリストです．順序番号には半角のドットを付けるか，両側または
  右側に括弧を付けます．全角数字を使うことはできません．

[[R
\input{list_enum.raw}
]]R

[[R
\input{list_enum.tex}
]]R

記述型:
  リストのタイトルを"[]"で囲むか，タイトルに":"を付けて，リストマークと
  したものが記述型リストです．(全角のコロン"："は使えません)

[[R
\input{list_desc.raw}
]]R

[[R
\input{list_desc.tex}
]]R

2.6. テーブル

"-","=","|","+" を使って書いたべた書きのテーブルが，LaTeXのtabular 環境，
または， troff の tbl 機能を使ったテーブルに変換されます．縦線と横線の交点
は，横線"-"でも縦線"|"あるいは'+'のいずれでもかまいません．

plain2 は複数カラム/複数行にまたがるフィールドを含む，複雑なテーブルも扱う
ことができます．

[[R
\input{table_intro.raw}
]]R

[[R
\input{table_intro.tex}
]]R

2.7. 線画

JISの罫線素片文字を使って書いた絵を，troffのPICまたはLaTeXのpicture環境の
図に変換します．PC9800独自の罫線文字は認識されないので注意してください．

いくつかの特殊な記法を採用することで，線画機能の表現力を拡充しています．日
常的な作画はほとんどべた書きだけで済ますことも可能でしょう．

[[R
\input{picture_intro.raw}
]]R

[[R
\input{picture_intro.tex}
\mbox{} % to avoid `Underfull \hbox (badness 10000)'
]]R

3. plain2 コマンド

plain2 コマンドは，次のような形式で起動します．

	% plain2 filename
	% plain2 < filename
	% plain2 -roff -ms < filename > outfile.ms
	% plain2 filename1 filename2 filename3 > outfile.tex
	% plain2 -tex -exam=40 filename > outfile.tex

出力の標準は troff です．LaTex を使う場合には，"-tex" オプションを指定して
ください．

ファイル名が指定されない場合，標準入力から文書を読み込みます．ファイルは複
数指定することもできます．処理結果は標準出力に出力されます．

plain2のオプションは，出力形式調整のオプションと(出力オプション)，入力文書
解析のパラメータ設定オプション(解析オプション)，その他のオプションに分ける
ことができます．

	    表 1. オプション一覧
     --------------------------------------------------------
     |    |  オプション     |   内容                        |
     ========================================================
     |    |  -tex           |   LaTeX出力                   |
     |    |  -tstyle=sss    |   LaTeXスタイルファイル追加   |
     | 出 |  -roff          |   troff出力 mm マクロ         |
     | 力 |  -mm            |   〃                          |
     | オ |  -ms            |   troff出力 ms マクロ         |
     | プ |  -[no]listd     |   リスト修飾                  |
     | シ |  -[no]space     |   空白行の削除のオン/オフ     |
     | ョ |  -[no]pre       |   プリアンプルの出力/抑止     |
     | ン |  -[no]acursec   |   入力に忠実なセクション番号  |
     |    |  -raw           |   raw出力モード               |
     |    |  -renum         |   べた書きのままリナンバ      |
     |    |  -jis           |   JISコード出力               |
     |    |  -euc           |   EUCコード出力               |
     |    |  -sjis          |   入出力共シフトJIS           |
     |    |  -f file        |   出力カスタマイズファイル指定|
     --------------------------------------------------------
     |解析|  -table=ddd     |   テーブル制御                |
     |オプ|  -exam=ddd      |   例示制御                    |
     | シ |  -indsec        |   インデント付きセクション    |
     | ョ |  -ktable        |   漢字罫線テーブル            |
     | ン |  -ref           |   相互参照(LaTeXのみ)         |
     --------------------------------------------------------
     | そ |  -v             |   verboseモード               |
     | の |  -dLevel        |   デバッグオプション          |
     | 他 |  -pt=Size       |   フォントサイズ              |
     --------------------------------------------------------

オプションは，コマンドラインだけでなく，環境変数や，べた書き文書ファイル自
身に指定することもできます．文書ファイル中への指定方法については，タイトル
の書き方(((xタイトルの詳細))章)を参照してください．
文書ファイル中に指定された，解析オプションの有効範囲はそのファイル内に限定
されます．

3.1. コマンドオプション

出力オプション:
    -tex
	LaTeX出力を選択します．
	jarticle スタイルを使った出力を生成します．

    -tstyle=sss
	LaTeX スタイルファイル指定します．例えば，"-tstyle=epsf" と指定す
	ると，次のように出力されます．
[[E
		\documentstyle[epsf]{jarticle}
		\setcounter{secnumdepth}{6}
			...
]]E
    -roff
	troff出力を選択します．mm マクロを使った出力を生成します．
	何も指定がない場合のディフォールトは，この troff 出力です．

    -mm
	roff オプションと同じです．mm マクロを使った roff 出力を生成します．

    -ms
	troff出力ですが，ms マクロを使った出力を生成します．

    -[no]listd
	plain2 は，標準で列挙型リストの出力に際して，番号の種類や括弧など
	を忠実に出力するめの処理を行います．"-nolistd" を指定すると，入力
	中での番号の付け方と関係なく，単純な列挙型リストして出力します．

    -[no]space
	標準では入力文書中の空白は，そのまま出力中でも空白行として出力され
	ますが，このオプションをつけることで，余分な空白行を削除して出力
	します．
	環境変数などで，ディフォールトが nospace に指定されている場合，
	"-space"によって，空白行を出力するように変更できます．

    -[no]pre
	plain2の LaTeX出力，troff出力の先頭には，プリアンプル部分がつけら
	れています．plain2の出力を，複数連結したり，他の LaTeXや troffの文
	書に取り込んで使う場合，このオプションでプリアンプル出力をはずす
	ことができます．
		% plain2 -tex -nopre example.pln
		\title{
		はじめてのplain2}
		\author{
		内田昭宏\\
		}
		\date{
		1992/11/22}
		\maketitle
			...
	環境変数などで，ディフォールトが nopre に指定されている場合，
	"-pre"によって，プリアンプルを出力させることができます．

    -raw
	入力文書中の特殊文字のクォートをしません．

    -[no]acursec
	入力文書に付けられたセクション番号をそのままの値で出力文書に反映さ
	せます．

    -renum
	入力テキストに対してリナンバー処理のみを行ないます．
	リナンバの対象は，リスト番号，セクション番号，そして，図表番号です．

    -jis
	変換した結果をJISコードで出力します．ディフォールトではEUCコードで
	出力します．

    -euc
	変換した結果をEUCコードで出力します．ディフォールトの設定です．

    -sjis
	変換した結果をシフトJISコードで出力します．このオプションを指定し
	た場合，入力もシフトJISコードにする必要があります．

    -f file
	出力カスタマイズファイルを指定します．
	(((xplain2の出力とカスタマイズ))章)

解析オプション:
    -table=ddd
	テーブルの判定基準値を0から100の間で設定します．ディフォールトの値
	は50です.  テーブルのつもりで書いた部分がテーブルにならないとき，
	少し大きめの値を設定します．
		# テーブルになり易くする
		% plain2  -table=80

    -exam=ddd
	例示の判定基準値を0から100の間で設定します．ディフォールトの値は50
	です.  例示のつもりで書いた部分が例示にならないとき，少し大きめの
	値を設定します．
		# 例示になり難くする
		% plain2  -exam=30

    -indsec
	セクションは行の先頭に書くことが基本ですが，セクションがインデント
	されている文書を，どうしても plain2 の入力として使う必要がある場合
	に使用してください．ただし，この機能を使うとセクションとリストの判
	別が不正確になります．

    -ktable
	JIS罫線を使って書かれたテーブルも解析します．ただし，罫線を使った
	テーブルは，罫線文字を使って書かれた線画と判別することが困難なため，
	"[[T","]]T" を使ってテーブルの範囲を明示的に指定してください．
	

その他のオプション:

    -ref
	表番号，図番号，セクションのリファレンス機能を有効とします．
	この機能は LaTeX 出力を選んだときだけ利用可能です．
    -v
	処理の途中経過を表示します．また，不連続な章番号，リスト番号に警告
	メッセージを表示します．
[[E
		% plain2 -v example.pln
		Input 46 lines from "example.pln"
		Right Margin = 48
		[blank][section]5 16 27 [appendix][quotation][list]19-25 22-24
		[fig title][picture]38-45[table]30-36 [justified][example]10-14
		[section][plaintext]
]]E

   -ヘルプ
	"-help" 等，不正なオプションを入力することで，ヘルプメッセージを
	表示させることができます．

[[R
\input{help_message.raw}
]]R

3.2. コマンドライン以外でのオプション指定

オプションはコマンドラインの他に，環境変数に設定しておいたり，入力ファイル
中に指定することもできます．

plain2 は，次の順序でオプションを評価します．

	1) 環境変数変数
	2) コマンドライン
	3) 入力ファイル中のオプション

環境変数に定義されたオプションをコマンドラインで変更することはできますが，
入力ファイル中に記述されたオプションは，コマンドラインから変更することはで
きません．

3.2.1. 環境変数によるオプション指定

環境変数 PLAIN2_INIT に予めオプションを設定することができます．例えば，次の
ような設定をすることで，ディフォールトの出力形式を LaTeX に変更することが
できます．

	% plain2 example.pln            ← 標準では troff 出力
	.nr Ls 0
	.S 10 10+2
	.ce 999
	\fB\s+4はじめてのplain2
	\fP\s-4
	.ce 0
	.ad r
		...
	% setenv PLAIN2_INIT -tex        ← 環境変数に LaTeX 出力を指定
	% plain2 example.pln            ← オプションなしでも
	\documentstyle[]{jarticle}         LaTeX出力が選択される
	\setcounter{secnumdepth}{6}
	\setcounter{tocdepth}{6}
	\topsep=0.1cm
	\parsep=0.1cm
	\itemsep=0.0cm
	\begin{document}
	\title{
	はじめてのplain2}
		...

3.2.2. 入力ファイル中のオプション指定

plain2入力文書の先頭にも，オプションを指定することができます．ファイル先頭
のタイトル部分で，"option" というキーワードに続けて，コマンドラインでオプ
ションを指定するのと同じ書式でオプションを記述します．タイトル部分がない文
書の場合には，ファイル先頭にオプション行を書き，続いて空白行をおいてくださ
い．

文書ファイルで指定した解析オプションの有効範囲は，そのファイル内に限定され
ます．
また，出力オプションは，plain2 に最初に読み込まれるファイルに書かれた
場合に限り有効です．2番目以降ののファイル中に出力オプションがあった場合，
警告メッセージが表示され，そのオプションは無視されます．

[[R
\input{option_title.raw}
]]R

[[R
\input{option_title.tex}
]]R


4. plain2 の扱う文書形式

plain2 は表((xplain2の文書形式))に示す文書形式を扱うことができます．明示的
指定のところにアルファベットを示したものは，後に述べるように明示的に文書形
式を指定できるものです．

plain2 は，行全体，あるいは複数行からなる領域に対して文書形式をあてはめて
いきます．行の途中から文書形式が変わったり，行の一部だけが別の文書形式とな
ることはありません．

	    表 2. plain2の文書形式
	------------------------------------
	|  文書形式           | 明示的指定 |
	====================================
	|セクションタイトル   |     -      |
	|平文                 |     -      |
	|引用                 |     -      |
	|例示                 |     E      |
	|テーブル             |     T      |
	|リスト               |     -      |
	|ページ               |     -      |
	|空白                 |     -      |
	|線画                 |     P      |
	|右寄せ               |     A      |
	|センタリング         |     N      |
	|図表題               |     -      |
	|付録                 |     -      |
	|raw出力              |     R      |
	|コメントアウト       |     C      |
	------------------------------------

raw 出力とコメントアウトは通常のべた書き文書から自動的に判定されることのな
い特殊な機能です．raw 出力を指定された部分は，plain2 の処理を受けずに，そ
のままの形で出力されます．コメントアウトを指定された部分は出力されません．
("-renum" を指定した場合は，コメントアウト部分もそのまま出力されます)

4.1. 明示的文章形式指定

べた書き本来の主旨からは外れますが，入力文書中の指定した範囲の文書形式を明
示的に指定する方法が用意されています．

例えば，次のようにテーブルがきちんと出力されない，例示のつもりで書いた部分
が行詰めされてしまうなど，どうしても思い通りの出力とならない場合は，明示的
な指定を使うこともやむをえないでしょう．

[[R
\input{hint_fail.raw}
]]R

[[R
\input{hint_fail.tex}
]]R

文書形式を明示的に指定するためには，その領域を"[[X"と"]]X" (Xはテキストタ
イプを指定するアルファベット一文字)で囲みます．"[[X"と"]]X"は両方とも行の
先頭に書きます．

[[R
\input{hint_ok.raw}
]]R

[[R
\input{hint_ok.tex}
]]R

指定できる文書形式は次の7種類です．

	E: 例示(プログラム例，簡単な図など)
	T: テーブル
	P: 線画による図形
	A: 右寄せ
	N: センタリング
	R: plain2の処理をせずそのまま出力する
	    LaTeX/troffのコマンドをべた書き文に挿入するときなど
	C: テキストブロックをコメントアウト

RとCは，明示的に指定する方法以外ではおこることのない特殊な形式です．

[[R
\input{hint_raw.raw}
]]R

[[R
\input{hint_raw.texv}
]]R

明示的な指定を使った例を以下に示します．

[[R
\input{hint_all.raw}
]]R

[[R
\input{Hint_all.tex}
]]R

4.2. 行内の特殊機能

plain2 の文書形式には含まれていない，フットノートや，文字フォント指定など
の文書清書系の機能を利用するため，特別な記法"((X","))",(Xは機能指定するア
ルファベット一文字)が用意されています．


	f:      フットノート
	b:      ボルドフォント
	r:      rawモード("[[R","]]R"と同様)
	x:      リファレンス(LaTeXのみ)
	i:      インデックス(LaTeXのみ)

[[R
\input{inline.raw}
]]R

[[R
\input{inline.tex}
]]R

ただし，この機能を使えるのは
	・平文
	・リスト本文
の中に限られます．セクションタイトルなど，これ以外の部分では行内の特殊機能
を使うことはできません．

4.2.1. 英文文書

plain2 は入力文書中に漢字コードが全く含まれていない場合，英文文書と判定し
ます．英文文書と日本語文書では，文書解析と出力の処理に一部相違があります．

解析:
  列挙リスト:
	英文文書では，順序番号+ドットという形式のリストは許されません．

  例示:
	英文文書では，漢字/ローマ字の比率という条件が使えません．
	また，英文文書は日本後の文書に比べて空白が多く含まれるため，
	英文文書の場合，日本語文書に比べて例示となる条件が厳しくなります．

  テーブル:
	例示と同様の理由で
	枠線のないテーブルに対しての判定条件が厳しくなります．

出力:
	日本語文書の場合，図表の題に"図"，"表" を使います．
	英文文書の場合には，"Figure","Table"を使います．


5. 個々の文書形式の詳細

この章では，各文書形式について，より詳細に説明します．

5.1. タイトルの詳細

文書ファイルの先頭から，最初の空白行までの範囲の行が，全て表((xタイトルの
パターン))に挙げるパターンにマッチすると，そのブロックはタイトルと判定され
ます．ただし，標準のLaTeX出力では配布先，連絡先に指定した部分は出力されま
せん．

表((xタイトルのパターン))中に示した形式(A,B,C)はマッチしたパターンの中から
どの部分をタイトルとして取り出すかを表しています．

	A) パターンより右側の部分を抜き出す.
	   ただし，パターンより2個以上の空白がある場合，そこから右の部分
	   だけが切り出される.

	     -----------------------------------------------------------
	     |  例(△は空白)                     | 抜き出される部分    |
	     ===========================================================
	     |  題名△pain2△ユーザガイド        | pain2△ユーザガイド |
	     |  題名△pain2△△ユーザガイド      | ユーザガイド        |
	     |  [△題名△]△△pain2△ユーザガイド| pain2△ユーザガイド |
	     -----------------------------------------------------------


	B) パターンで囲まれた内側の部分を抜き出す
	C) パターンにマッチした行全体を使う

		表 3. タイトルのパターン
 -----------------------------------------------------------------------------
 | 種類  | パターン      |形式|       例                         |LaTeX|troff|
 |       |               |    |                                  | 標準| 標準|
 =============================================================================
 |       | 題名          |  A | 題名 plain2ユーザガイド          |     |     |
 | 題名  | 『』          |  B | 『plain2ユーザガイド』           |  ○ |  ○ |
 |       | 【】          |  B | 【はじめてのべた書き入力】       |     |     |
 |       | 引数1         |  A | 引数1   ○○○○○○             |     |     |
 |-------|---------------|----|----------------------------------|-----|-----|
 | 文書  | 文書番号      |  A | 文書番号  ABC-92-01-222          |  − |  − |
 | 番号  | 引数2         |  A | 引数2   ○○○○○○             |     |     |
 |-------|---------------|----|----------------------------------|-----|-----|
 |       | 日付          |  A | 日付    Tue Oct 13 1992          |  ○ |  ○ |
 |       | 月            |  C | 1992年10月                       |     |     |
 | 日付  | 日            |  C |                                  |     |     |
 |       | 89-95/        |  C | 92/10/13                         |     |     |
 |       | /89-95        |  C | 10/13/92                         |     |     |
 |       | 引数3         |  A | 引数3   ○○○○○○             |     |     |
 |-------|---------------|----|----------------------------------|-----|-----|
 |       | 所属          |  C | 所属    田町電機                 |  ○ |  ○ |
 | 所属  | 本部          |  C | UNIX本部                         |     |     |
 | 部門  | 開発部        |  C | フリーソフト開発部               |     |     |
 |       | 研究部/研究所 |  C | PDS研究所                        |     |     |
 |       | 開本/開研/技研|  C | 海岸通り技研                     |     |     |
 |       | 引数4         |  A | 引数4   ○○○○○○             |     |     |
 |-------|---------------|----|----------------------------------|-----|-----|
 |       | 配付先        |  A | 配付先  別紙                     |  − |  ○ |
 |       | 配布先        |  A | 配布先  ユーザの皆様             |     |     |
 | 配付先| 各位          |  C | 関係者各位                       |     |     |
 |       | 殿            |  C | 山田部長殿                       |     |     |
 |       | 様            |  C | 鈴木課長様                       |     |     |
 |       | 引数5         |  A | 引数5   ○○○○○○             |     |     |
 |-------|---------------|----|----------------------------------|-----|-----|
 | 著者  | 担当          |  A | 担当    やまだたろう             |  ○ |  ○ |
 |       | 著者          |  A | 著者    やまだたろう             |     |     |
 |       | by            |  A | by      五十嵐一郎               |     |     |
 |       | 引数6         |  A | 引数6   ○○○○○○             |     |     |
 |-------|---------------|----|----------------------------------|-----|-----|
 | 連絡先| 連絡先        |  A | 連絡先  foobar@foo.bar.baz.co.jp |  − |  ○ |
 |       | TEL,Tel,tel   |  A | TEL     03-5432-####             |     |     |
 |       | 引数7         |  A | 引数7   ○○○○○○             |     |     |
 -----------------------------------------------------------------------------
 |       | 引数8         |  A | 引数8   ○○○○○○             |  − |  − |
 -----------------------------------------------------------------------------
 |       | 引数9         |  A | 引数9   ○○○○○○             |  − |  − |
 -----------------------------------------------------------------------------
 | その他| option        |    | option -exam=70                  |  − |  − |
 |       | comment       |    | comment this is a comment        |     |     |
 -----------------------------------------------------------------------------

次の3つは，タイトルの書き方のいくつかのバリエーションを示しています．

[[R
\input{title_pat1.raw}
]]R

[[R
\input{title_pat2.raw}
]]R

[[R
\input{title_pat3.raw}
]]R

これらの文書ファイルをplain2 に通して清書すると，下のような出力となります．

[[R
\input{title_pat1.tex}
]]R

形式Aのパターンでは，パターンの両側に括弧を付ける形式も許されます．半角/全
角の括弧，角括弧のいずれでも利用できます．

[[R
\input{title_pat4.raw}
]]R

[[R
\input{title_pat4.tex}
]]R

タイトルのつもりで書いた領域の中に一行でもパターンにマッチしない行があると，
タイトルとは解釈されません．次の例は著者名のつもりで書いた名前の行が，どの
パターンにもマッチしないので，タイトルになりません．

[[R
\input{title_fail.raw}
]]R

[[R
\input{title_fail.tex}
]]R

表((xタイトルのパターン))を見ると，一つの行が複数のパターンにマッチする可
能性のあることに気が付きます．例えば，"山田本部長様"という行は，配付先と所
属部門の両方のパターンにマッチします．このような行に対しては，表の中で前の
方に書いてあるパターンが優先されるので，この例は配布先と解釈されます．

題名が複数行にわたる場合や，著者が二人以上いるような場合など，同一種類のパ
ターンを複数行書くこともできます．

題名，著者名等の他に，オプションの設定と，コメント行を書くことができます．
comment 機能は，RCS や SCCS を使って文書の版管理をする場合などに使ってくだ
さい．

[[R
\input{title_cmplx.raw}
]]R

[[R
\input{title_cmplx.tex}
]]R

5.1.1. タイトルの出力

標準のLaTeX出力では，"\title{}","\author{}", "\data{}","\maketitle", の機
能を使ってタイトルを出力します．標準では，文書番号，配布先，連絡先は出力さ
れません．LaTeXで，配布先，連絡先のフィールドをタイトルの一部に表示したい
場合や，タイトルを好みの形に変えたい場合には，出力カスタマイズの機能を利用
してください．

troffでは，LaTeX のjarticleスタイルのタイトル出力をまねた形式で出力します．

5.2. セクションタイトルの詳細

行の先頭にセクション番号があり，行の前が空白行（あるいは，ファイル先頭）で
あると，その行はセクションタイトルであると推定されます．ただし，この条件は
列挙型リストの判定条件と競合するときがあります．リストにもなりうる形式の場
合には，さらにいくつかの判定条件を適用した後，最終的にセクションタイトル判
断されます．

セクション番号は，"番号+ドット"の繰り返しという形をしています．番号とドット
は，全角/半角どちらでもかまいません．

セクション番号の深さが2以上であれば，最後のドットを省略することができます．
セクション番号が全角で書かれていれば，深さ1でもドットを省略することができ
ます．ドットを省略した場合には，番号とセクションタイトルの間には一個以上の
空白が必要です．

[[R
\input{section_intro.raw}
]]R

[[R
\input{section_intro.tex}
]]R

5.2.1. セクションにならない場合の対処

セクションタイトルが思い通りの出力にならない場合，いくつかの原因が考えら
れます．

A) セクションとしての基本条件を満たしていない
	- 行の先頭から始まっていない（インデントされている）
	- セクションの前後に空白行がない．
		少なくとも，セクションの前の行は空白行である必要があります．
		確実にセクションと解釈させるためには，前後共に空白行
		を置くことを薦めます．

B) 列挙型のリストになってしまう
	セクション番号が半角+半角ドットの場合，列挙型リストとの判別に失敗
	することがあります．このような場合，やはり，セクションの前後に空白
	行を置くことでセクションと判断させることができます．また，セクショ
	ン番号に全角を使えばリストと判定されることはありません．

[[R
\input{section_list.raw}
]]R

[[R
\input{section_list.tex}
]]R

5.2.2. インデントされたセクションタイトル

セクションタイトルがインデントされた文書を外部から入手して，どうしても
plain2 に通して LaTeX に変換して使いたいということがあります．通常，
plain2 はインデントされたセクションタイトルをセクションタイトルとは解釈し
ませんが，"-indsec" オプションを利用することで，インデントされたセクション
タイトルの使用を許すことができます．

[[R
\input{section_ind.raw}
]]R

[[R
\input{section_ind.tex}
]]R


5.2.3. セクション番号の出力への反映

plain2 はセクション番号の値そのものにはほとんど注意を払わず，セクションの
深さ(ドットで区切られた並びの数)だけに注目しています．

例外として，文書ファイルの先頭に表れるセクションが "１."以外のセクション番
号を持つ場合，LaTeX や troff を通した出力も，入力と同じ番号から始まるように
調整されます．これは，文書の途中から一部分だけを抜きだして清書する場合を考
慮したものです．

[[R
\input{section_renum2.raw}
]]R

[[R
\input{section_renum2.tex}
]]R

入力文書中のセクション番号の値をそのまま出力に反映させることも可能です．こ
れには "-acursec" オプションを使用します．

[[R
\input{section_accur.raw}
]]R

[[R
\input{section_accur.tex}
]]R

5.2.4. セクションの出力

LaTeXでは，"\section{}","\subsection{}",から"\subparagraph{}"までを使って
を出力します．
標準のLaTeX出力には，セクションタイトルの深さが5レベルまでという制限があり
ます．この制限を越えた場合，全て"\subparagraph{}"として出力します．

[[R
\input{section_deep.raw}
]]R

[[R
\input{section_deep.tex}
]]R

セクション番号の付かないセクションタイトル "\section*{}" を使いたい場合，
入力文書には適当なセクション番号を付けておいて，出力のカスタマイズで対応し
ます．(((x出力形式のカスタマイズ))章)

troff出力のセクションタイトルは mm マクロの ".H" を使用します．troff では
セクション深さの制限は 7レベルまでです．この制限を越えた場合， troff の処
理の段階でエラーとなります．

[[E
	% ditroff deepsec.pln
	********************
	ERROR:(<deepsec.pln>)input line 5:H:bad arg:8
	********************
	Processing has been terminated.
]]E

5.3. リストの詳細

行の先頭につけられたリストマークや記述リストのタイトル部分によって，その行
がリストであることが推定されます．
リストの中には，テーブルや平文，さらに別のリストをネストして置くこともでき
ます．

行の先頭にビュレットやダッシュを持つ項目型のリストはリスト項目が一つでもリ
ストと判定されます．
ただし，同じリストに属するリストの項目の各行は，全て先頭が同じ位置に
インデントされていなればななりません．

[[R
\input{list_not.raw}
]]R

[[R
\input{list_not.tex}
]]R

5.3.1. 項目型リスト

項目型リストには表((x項目型のリストマーク))に示すリストマークのいずれか
を使うことができます．

		表 4. 項目型のリストマーク
	---------------------------------------------
	|    マーク                     |   種別    |
	=============================================
	|  ・   | ビュレット            | ビュレット|
	|  *    | 半角アステリスク      |           |
	|  ＊   | 全角アステリスク      |           |
	|  +    | 半角プラス            |           |
	---------------------------------------------
	|  -    | 半角ダッシュ          | ダッシュ  |
	|  −   | 全角ダッシュ          |           |
	---------------------------------------------

項目型リストは，一項目だけでも項目リストになるため，行の先頭にたまたまビュ
レット("・")やダッシュ("-")があると，項目型リストと誤解されることがあるので
注意してください．

5.3.2. 項目型リストの出力

LaTeX出力では入力文中でのどのリストマークが使われていても， itemize 環境を
使ったリストとして出力します．
出力中ではネストのレベルに応じてリストマークが LaTeX によって，自動的に決
められます．またネストの深さには LaTeX の場合4レベルまで，troff の場合6レ
ベルまでという制限があるので注意してください．

[[R
\input{list_bullet.raw}
]]R

[[R
\input{list_bullet.tex}
]]R

troff出力では，ビュレットリストとダッシュリストを区別して，".ML"を使って出
力します．リストのネストに応じて，ビュレットに対しては "\(bu", "・", "◇"
,ダッシュに対しては "-", "−" をリストマークとして使います．

5.3.3. 列挙型リスト

列挙型のリストマークは，リストの順序を表す順序番号と，括弧やドットを使った
番号の修飾とで構成されます．

順序番号には数字，アルファベット，ローマ数字のいずれかを使うことができます．
番号の修飾には，括弧やドットを使った各種の形式が用意されています．

順序番号:
	数字番号:
		- 半角数字(1,2,3,...)
		- 全角数字(１，２，３，...)

	アルファベット:
		- 半角小文字(a,b,c,...)
		- 半角大文字(A,B,C,...)
		- 全角は使えません

	ローマ数字:
		- 半角小文字ローマ数字(i,ii,iii,..,iv,v,..)
		- 半角大文字ローマ数字(I,II,III,..,IV,V,..)
		- 全角小文字ローマ数字(ｉ,ｉｉ,ｉｉｉ,..,ｉｖ,ｖ,..)
		- 全角大文字ローマ数字(Ｉ,ＩＩ,ＩＩＩ,..,ＩＶ,Ｖ,..)

修飾:
    順序番号とドット，括弧との間には空白を入れることはできません．
	半角ドット:
		(".")
	右側括弧:
		半角/全角の，括弧(")")角括弧("]")
	両側括弧:
		半角/全角の，括弧("()")角括弧("[]")

また，英文文書では，半角アルファベット+ドットの形式のリストも使うことはでき
ません．

以下のような入力は列挙型リストとは解釈されません．

[[R
\input{list_enumbad.raw}
]]R

[[R
\input{list_enumbad.tex}
]]R

入力文書中のリストの番号は適当に付けておけば，LaTeX や troff で清書すると
リナンバリングされます．ただし，リストの途中に1 または A 等，リストの先頭
項目であることを示す項目が現れた場合，そこがリストの切れ目となり，それ以降
は別のリストとなります．

リストの番号を全部"1"や"A"にすると，リストと判断されません．

[[R
\input{list_renum.raw}
]]R

[[R
\input{list_renum.tex}
]]R

5.3.4. 列挙型リストの出力

標準的な LaTeX の列挙型リスト出力環境である enumerate環境では，順序番号の
種類や修飾等の特徴を細かく指定することができません．
plain2 は列挙型リストの特徴を，なるべく入力文書そのままの形で清書結果に反
映させるように，リストマークを再定義して enumerate環境を使っています．

troff出力の場合には，順序番号の種類によって数字リスト ".AL 1"，アルファベッ
トリスト ".AL i"，ローマ数字リスト".AL I" を使い分け，".AL 1 ()" のように，
n括弧の修飾も忠実に出力します．

[[R
\input{list_enumcmp.raw}
]]R

[[R
\input{list_enumcmp.tex}
]]R

plain2 起動時に，"-nolistd" オプションを指定すると，LaTeX出力では入力文書
中でのリスト番号や修飾の種類とは関係なく，単純な enumerate 環境のリストに
として出力されます．troff出力の場合にも括弧修飾の指定が出力されなくなりま
す．

次の出力は"-nolistd"オプションを使ったものです．

[[R
\input{list_enumcmp.lofi}
]]R

plain2 自身には，ネストの制限がありませんが，LaTeX では4レベル，troff では
6レベルまでというネストの制限があります．
レベルの制限を超えた場合 plain2 は警告メッセージを表示します．

[[R
\input{list_nest.raw}
]]R

[[R
\input{list_nest.tex}
]]R

5.3.5. 記述型リスト

記述型リストは行頭のタイトル部分が，"[]"で囲まれているか，最後に半角コロン
":"が付けられていることで識別されます．(全角コロン"："は使えません)記述型
リストのタイトル部分の長さには制限(全角19文字まで)があり，長すぎる場合には
リストになりません．

[[R
\input{list_dscmp.raw}
]]R

[[R
\input{list_dscmp.tex}
]]R

記述リストを示すために使用したコロンや角括弧は，清書済みのテキストにもその
まま出力されます．コロンや角括弧を省いた記述型リストを書く方法は用意されて
いません．

特別な場合として，以下の記号を先頭に付けたリストが，そのマークを使った記述
型のリストとして出力されます．

	"→←☆★▽▼△▲□■◇◆●◯○◎※"

[[R
\input{list_dscspl.raw}
]]R

[[R
\input{list_dscspl.tex}
]]R

5.3.6. 記述型リストの出力

LaTeX出力では description環境を使ったリストとして出力します．troff 出力で
は ".VL 4 0" を使います．

5.3.7. リスト先頭行と継続行

項目型と列挙型のリストには，リストの題目と説明文が分かれた形のリストと，
説明文だけからなるリストとがあります

例えば，つぎに示すリストは，"troff" と "LaTeX" というリストの題目と，その
説明文という構成になっています．

[[E
      ・troff
	  UNIX標準の文書清書システム
      ・LaTeX
	  Lamport による TeX の拡張
]]E

一方，次の例のリストは，二つの説明文だけからなります．

[[E
      ・本物のUNIXのドキュメントは troff
	で書かれています
      ・最近は LaTeX で書かれている本を
	多くみかけます
]]E

plain2は，ビュレットや番号を持つリスト先頭の行と，その次の行の間のインデン
ト付け，リスト先頭の行の長さから，題目と説明文の切れ目の有無を判定していま
す．

まず，リストの2行目以降のインデント位置が，リスト先頭行のリストマーク開始
位置と説明文開始位置の間にあれば，その行は，リスト本文に継続する行と判定さ
れます．先頭の位置がリスト本文開始位置よりもインデントされている場合は，リ
ストに含まれる別の文章と判定されます．

	A)  リスト本文
       ↑   ↑
       │   リスト本文開始位置
       リストマーク開始位置

例外として，リスト先頭行の長さがテキスト幅の半分より短いときには，無条件に
切れ目があるものと判定されます．

また，一行だけからなるリストが連続する場合，リストの最後の行とその次の行は
無条件に別々の文と判定されます．

[[R
\input{list_cont.raw}
]]R

[[R
\input{list_cont.tex}
]]R

5.4. テーブルの詳細

以下に，テーブルの例を示します．

[[R
\input{table_smpl.raw}
]]R

[[R
\input{table_smpl.tex}
]]R

テーブルは "-", "=", "|", "+" などの枠線を使って囲むのが基本ですが，枠線の
ないテーブルを書くこともできます．ただし，枠線のないテーブルに対しては厳し
い判断基準が使われるので，期待どおりにテーブルにならない場合は，オプション
でテーブルの判定基準を調整するか，明示的にテーブルと指定してください．

次に示す例では，標準の解析パラメータで plain2 を通すと，テーブルのつもりで
書いた3行目から5行目が，例示になってしまいます．

[[R
\input{table_adjust.raw}
]]R

[[R
\input{table_adjust.texv}
]]R

テーブル判定の基準値を 60 に変更すると，テーブルとして解釈されます．

[[R
\input{table_adjust2.texv}
]]R

テーブルが正しく判定されるためには，plain2 が入力文書からテーブルのブロッ
クを正しく抜き出せるように，テーブルの前後に空白行をいれるか，テーブル全体
をインデントしておく必要があります．

ただし，テーブルの両サイドが罫線で囲まれていないと，インデントや空白行を入
れても，テーブルの領域を文書から切りだすことに失敗することがあります．この
ような場合には，"[[T","]]T" を使ってテーブルの領域を明示的に指定してしまっ
た方が良いでしょう．

5.4.1. JIS罫線テーブル

JIS罫線を使って書いたテーブルは，は線画として解釈されます．そのままでも，
入力イメージに忠実に出力が得られますが，どうしても，LaTex や troff のテー
ブルとして出力させたい場合には，"-ktable"オプションを使います．
線画の場合と同様，PC9800の罫線素片は使用できません．

また，"-ktable" オプションを指定した場合でも，下の例のように明示的にテーブ
ルと指定しないと，線画となってしまいますので注意してください．

[[R
\input{table_kanji.raw}
]]R

[[R
\input{table_kanji.tex}
]]R

5.4.2. フィールドのアラインメント

テーブル内の同じカラムに並ぶフィールドが全て右端または左端に揃っていれば，
それぞれ右寄せ/左寄せのフォーマットで出力されます．
また，全てのフィールドが揃っていなくとも，同じカラムの中の半分以上のフィー
ルドが右寄せまたは左寄せされていれば，そのカラムのディフォールトは右寄せ/
左寄せとなります．

この条件に合わないフィールドはセンターリングされます．

[[R
\input{table_align.raw}
]]R

[[R
\input{table_align.tex}
]]R

5.4.3. テーブルの制限

テーブルが正しく解釈されるためには，罫線の行を含めて最低3行のサイズが必要
です．
罫線を使わずに，空白で区切られたテーブルの場合は，最低横2項目・縦2行のサイ
ズを必要とします．

テーブルの一行の長さは最大1024文字に制限されています．また，テーブルのカラ
ム数も最大32に制限されています．(そんなに大きなテーブルを書くことがあると
は思えませんが）

plain2 は，極端に形が複雑なテーブルでも，解析することができます．ただし，
LaTeX出力では，次の例の7行目，12行目のように，同じ行に文字フィールドと横線
が書かれていると，余分な空白や線のはみだしが生じることがあります．troff出
力にはこのような問題はありません．

[[R
\input{table_cmplx.raw}
]]R

[[R
\input{table_cmplx.tex}
]]R

テーブルの枠線に使っている文字をテーブルのフィールドとして書くと出力が乱れ
ることがあります．縦線"|"は，必ず枠線と判別されてしまうので，フィールド中
に縦線"|"を置くことはできません．

また，フィールドに"-"が含まれていると，"-"が横の枠線と誤認されることがあり
ます．

[[R
\input{table_fail.raw}
]]R

[[R
\input{table_fail.tex}
]]R

5.4.4. テーブルの出力

LaTeX 出力では tabular 環境を使ってテーブルを出力します．テーブルがテキスト
幅に対して，ほぼ中央に位置していれば，テーブル全体を center環境で囲って出
力します．それ以外の場合，テーブルは左端に出力されます．

plain2 起動時に "-ref" オプションを指定すると，テーブルは
"\begin{table}[htbl]" で囲われ，必ずセンタリングして出力されます．また，表
題を"\caption{}"と"\label{}"の両方に出力します．
(((x図表・セクションの参照))章参照)

troff 出力では ".TS",".TE"で囲われた tbl の形式で出力されます．さらに，テー
ブル全体を ".DS", ".DE" で囲みテーブルに適当なインデントが付けられます．テー
ブルがほぼ中央に位置していれば，".DS CB"によりセンタリングされます．

5.5. 線画の詳細

入力文書から切り出されたブロック中の図形文字の割合などの基準が以下の条件を
全て満たすと，その領域は線画と判断されます．

	- 図形文字を含む行の数 > 行数÷3
	- 図形文字の数/行数    > 1
	- 図形文字の数/行数 ＋ (空白数/文字数)×8 > 1.5

図形文字として認識される文字を表((x線画で認識される図形文字))に示します．
線画として使える文字は，全て全角文字です．

		表 5. 線画で認識される図形文字
[[T
      +--------------+---------------------------+---------------------+
      | 種別         |  図形文字                 |備考                 |
      |==============|===========================|=====================|
      | 罫線素片     |  ─ ━ │ ┃ ┌ ┏ ┐ ┓  |PC9800の罫線文字は   |
      |              |  └ ┗ ┘ ┛ ├ ┝ ┠ ┣  |使えません           |
      |              |  ┤ ┥ ┨ ┫ ┬ ┳ ┯ ┰  |                     |
      |              |  ┴ ┻ ┷ ┸ ┼ ┿ ╂ ╋  |                     |
      +--------------+---------------------------+---------------------+
      | 矢印         |  ← → ↑ ↓              |                     |
      +--------------+---------------------------+---------------------+
      | 斜線         |  ／ ＼ ×                 |                     |
      +--------------+---------------------------+---------------------+
      | 点線         |  … ：                    |縦点線は全角のコロン |
      +--------------+---------------------------+---------------------+
      | 極太線       |  ＝ ‖                    |二重線で代用         |
      +--------------+---------------------------+---------------------+
      | 楕円         |  ＿ ￣                    |下線/上線で代用      |
      +--------------+---------------------------+---------------------+
]]T

線画として書いたつもりの領域が，期待どおり線画と判定されない場合，
"[[P","]]P" を使って線画領域を明示的に指定してください．

5.5.1. 線画の拡張技法

JIS罫線素片では太線と細線の交差を完全に表現することができません．また，点
線も用意されておらず，矢印も一種類の太さしかありません．限られた罫線文字を
使って美しい出力を得るため，plain2 は線画に対して以下の拡張を行っています．

1) 矢印付きの線
	JISの図形文字の矢印は細線の一種類しかありませんが，
	太線や点線と接続する位置に書かれた矢印は
	隣接する線種と同じ線で出力されます．

2) 太線，点線と細線の交差
	JISの罫線文字には細線と太線の交差が完全には含まれていません．
	また，点線を表す文字もありません．
	そこで，片側が終端となっている細線("┌"，"┐"のように文字の中央
	で線が終端している)に太線や点線が隣接している場合には，
	細線の部分も隣接する線種で出力します．

[[R
\input{picture_line.raw}
]]R

[[R
\input{picture_line.tex}
]]R

3) 斜線と細線の接続
	テキストエディタ上で，斜線"／"，"＼"と縦線，横線を隣接させても，線
	を完全に接続するようには書けませんが，次のルールを設けて斜線と横線
	を接続させて出力することとしています．
	    ・ 二つ以上連続して置かれた斜線の端が，縦線または横線に接続す
	       る場合，斜線を途中で曲げて縦横線に接続します．矢印の場合も
	       同様に接続します．
	    ・ 連続する斜線が縦横線で中断された場合，斜線を延長して縦横線
	       に接続します．

4) 斜線の矢印
	斜線の末端に"×"記号を置くと，斜線に続く矢印となります．
	2方向の斜線が同じ"×"記号を末端としている場合には，二つの
	矢印となります．

[[R
\input{picture_slant.raw}
]]R

[[R
\input{picture_slant.tex}
]]R

5) 丸い角
	縦線と横線の交差する部分に斜線が置くことで，丸い角を書くこと
	ができます．接続する線が太線の場合，円弧も太線となります．

[[R
\input{picture_round.raw}
]]R

[[R
\input{picture_round.tex}
]]R

6) 楕円(ディスクの絵)
	下線，上線《＿￣》を使ってコンピュータ関係の文書で頻繁に現れるディ
	スクの絵を書くことができます．

[[R
\input{picture_disk.raw}
]]R

[[R
\input{picture_disk.tex}
]]R

	上線は完全な楕円，下線は下半分だけの楕円です．ただし，troff出力で
	はディスク下側も完全な楕円になります．また，LaTeX出力では楕円の代
	わりに折れ線で出力します．

5.5.2. 文字サイズと図全体のサイズの調整

テキストエディタ上では，文字の幅は全角:半角=2:1 の固定比率ですが，清書系の
出力では文字ごとに幅の異なるプロポーショナルフォントが使われます．plain2
は文字列が隣接する線と交錯しないように，プロポーショナルフォントでの文字列
の幅を計算し，適切な大きさのフォントを選択します．

また，図全体の大きさもA4版の紙に収まる大きさに調整します．

[[R
\input{picture_align.raw}
]]R

[[R
\input{picture_align.tex}
]]R

[[R
\input{picture_adjust.raw}
]]R

このテキストを清書した結果は次のようになります．この例は幅が広すぎるので，
全体を枠で囲うのを省略しています．

[[R
\input{picture_adjust.tex}
]]R

5.5.3. 線画の出力

LaTeXでは picture 環境を使って線画を出力します．LaTeX には "\oval" という
楕円を書く機能がありますが，角を円弧にした長方形の"\oval" は使わず，折れ線
を使って楕円を表現しています．折れ線の形は，楕円の大きさによって変化します．

troff では ".PS",".PE" を使った pic の機能で出力します．ディスクの絵に使う
下半分の楕円が，troff 表示では完全な楕円として表示されてしまうという問題が
あります．

5.6. 例示の詳細

入力文書から切り出されたブロックがつぎの条件を満たすと，例示と判定されます．

	1) 空白を多く含む
		簡単な図のような場合
	2) 短い行がつづく
		プログラム例など
	3) 半角アルファベット文字以外を含まない行が多い
		このルールは英文の入力文書に対しては無効です

[[R
\input{example_intro.raw}
]]R

plain2 は各種のパラメータを使い，例示を判定しますが，例示の判定は微妙な問
題であり，どうしても，思い通りにならない場合あります．

次の例では，例示となってほしいプログラム実行例の部分が，各行が比較的の長い
ために，平文となってしまいます．

[[R
\input{example_adjust.raw}
]]R

[[R
\input{example_adjust.tex}
]]R

例示判定の基準値を 60 に変更すると，うまく例示として解釈されます．

[[R
\input{Example_adjust2.tex}
]]R

テーブルや線画の場合と同様，
"[[E","]]E" を使って明示的に例示領域を指定する方法もあります．

5.6.1. 例示の出力

LaTeX では verbatim 環境を使って出力します．さらに，verbatim 環境の中で行
間のスペースを減らしています．

troff では CW (Constant Width)フォント，行詰めなし(".nf")で出力します．
LaTeX 出力と同様に行間のスペースを減らしています．

5.7. 引用

次の条件を満たすブロックは引用と判定されます．引用の出力は例示と同じです．

	・インデントされていないこと
	・先頭の2文字が">>"(半角)であること
	・先頭の文字が">"または":"(半角)で，かつ二文字目も
	  同じ行が3行以上つづく

>> 内田です．
>>
>> 上流ゲートウェイの障害などのため，ニュース/メールの
>> トラフィックが滞っているようで，すっかり世の中から
>> 取り残されてしまいました．


5.8. 改ページ，空白

行の先頭に"^L"がある行は("^"と"L"ではなく，CTRL-L一文字です)，改ページ指定
とみなされ，行の残りの部分は無視されます．

plain2 は改ページ指定の行を，空白行とみなして解析します．従って，セクショ
ンタイトルの直前に"^L"の行を置くこともできます．

4行以下の空白行は，同じ数の空白行として出力しますが，
空白行が4行を越えて続く場合には，
相当する長さの空白ブロックとして出力します．

plain2 起動時に "-nospace" オプションを指定すると，
4行以下の空白行に対応する
改行コードの出力を停止しますが，
4行を越える空白ブロックの出力は変わりません．

[[R
\input{space_intro.raw}
]]R

[[R
\input{space_intro.texv}
]]R

5.8.1. 改ページ，空白の出力

LaTeX では改ページを "\newline"，空白は picture 環境を使って出力します．
troff では改ページを ".bp"，空白は".sp"を使って出力します．

4行以下の空白行は，tex では "\medskip"，troff では単なる改行として
出力します．
4行を越える空白ブロックはは，tex では "\picture" 環境，
troff では ".DS",".DE" を使って出力します．

5.9. テキストのアライメント

plain2 は，テキストのインデンテーション，右寄せなどの，入力文書から抜き出
されたアラインメント情報を，忠実に出力に反映させます．

5.9.1. インデンテーション

インデンテーションが付けられたテキストは別のテキストブロックであると判定さ
れます．ただし，半角4文字未満のインデンテーションは出力には反映されません．
出力にインデンテーションを反映させるためには半角4文字以上のインデンテーショ
ンが必要です．

[[R
\input{indentation.raw}
]]R

[[R
\input{indentation.tex}
]]R

5.9.2. 右寄せ，センタリング

次の条件を満たすテキスト領域はセンタリングと判定されます．
	・テキスト幅の1/8の領域が空いている
	・テキスト幅の1/4以上インデントされている
	・行の先頭がばらばら

また，次の条件を満たすテキスト領域は右端と判定されます．
	・テキスト幅の半分以上インデントされている．
	・テキストの右端がテキスト幅の4/5を超えている

[[R
\input{alignment.raw}
]]R

[[R
\input{alignment.tex}
]]R

右寄せやセンタリングと判定されなくても，適当なインデンテーション付けが行わ
れるので，ほとんどの場合，期待と大差ない出力が得られます．

5.9.3. テキストのアライメントの出力

LaTeX ではセンタリングを center 環境，右寄せを flushright で出力します．
LaTeX の標準的な機能では，テキストの範囲をインデントさせる機能がないので，
ブロック全体をlist 環境で囲い，その中で leftmargin を調整する方法を用いて
います．

troff ではセンタリングを".ce 9999", ".ce 0"，
右寄せを".ad r",".ad b" で出力します．
インデントには ".in"  を使います．

5.10. 図題，表題

図やテーブルに付けられたタイトルを識別し，図題，表題専用のレイアウトで出力
します．図表のタイトルは，表((x図題・表題のパターン))に示すキーワードと，
図表の番号，そしてタイトルというパターンで書きます．

	表 6. 図題・表題のパターン
      -----------------------------------
      | 図のタイトル  | 表のタイトル    |
      ===================================
      | 図            | 表              |
      | Figure        | Table           |
      | Fig.          |                 |
      | fig.          |                 |
      -----------------------------------

図表の番号には，半角または全角の数字が使えます．
数字には，半角または全角のドットを付けることもできます．

図題と表題は，それぞれリナンバリングして出力されます．LaTeX出力を選択した
場合，図表のタイトルを使って図表番号を参照することができます．
(((x図表・セクションの参照))章参照)

5.10.1. 図表題の制限

インデントされていない行は，図表題とはなりません．
逆に，普通の文章中で，"図1."のようなパターンが行の先頭に表れると，
図表題と誤解されることがあります．このような場合，
改行位置を変えるなどの方法で対処してください．

[[R
\input{ftitle_illeg.raw}
]]R

[[R
\input{ftitle_illeg.tex}
]]R


5.10.2. 図表題の出力

LaTeX 出力では "-ref" オプションを使用した場合，"\caption{}"を使って出力
します．

"-ref" オプションを指定しない場合，LaTeX 出力と troff 出力共に，"図xx.", "
表xx."をボルドフォントで出力します．ただし，入力文書が英文である場合は，
"Figure xx.","Table xx."として出力します．

5.11. Appendix

セクションタイトルの拡張として，Appendix を扱うことができます．Appendix 行
は，その行が Appendix であることを示す，表((xAppendixのパターン))のパター
ンとAppendix 番号，そして見だしからなります．

普通のテキストと Appendix 行が混同される危険を避けるため，Appendix 行の前
後は必ず空白行である必要あります．

	  表 7. Appendixのパターン
	-------------------------
	| 付録                  |
	| Appendix              |
	| APPENDIX              |
	| Ａｐｐｅｎｄｉｘ      |
	| ＡＰＰＥＮＤＩＸ      |
	-------------------------

Appendix 番号には列挙型リスト同様，アルファベット，ローマ数字，数字のいず
れでも使うことができます．
半角/全角，数字のあとのドットの有無は自由です．

[[R
\input{appendix.raw}
]]R

5.11.1. Appendixの出力

LaTeX 出力では "\appendix" を使っています．Appendix のタイトル自体はセク
ションタイトルと同様，"\section{}"で出力します．

troff 出力の場合は，対応する mm マクロの機能がないので，単純に "Appendix
見だし" というタイトルをボルドフォントで出力することで対応しています．


6. plain2の出力とカスタマイズ

plain2は解析結果を LaTeX と troff のいずれかの形式で出力します．また，セク
ション，リスト，図表のリナンバリングだけを行って，べた書きのまま出力する機
能も備えています．

テーブル，線画，リスト出力等は LaTeX , troff それぞれの出力に固定です．

[[R
~\\
\epsfile{file=modules.eps}\\
]]R

6.1. LaTeX出力

LaTeX 出力は jarticle スタイルを使っています．

	\documentstyle[]{jarticle}

jarticle以外のスタイルファイルを使いたい場合，またポイントサイズを変えたい
場合などは，次のいずれかの方法を使います．

    ・"\documentstyle[]"内の指定であれば，"-tstyle="オプションで指定する
[[E
		% plain2 -tstyle=epsf
		\documentstyle[epsf]{jarticle}
]]E
    ・出力形式のカスタマイズを行う
	そのスタイルを繰り返し使う場合に適します．
    ・文書先頭に"[[R","]]R"を使って，直接 \documentstyle を記述し，
      "-nopre"オプションを使う．
	文書タイトルを書くことができなくなる等のデメリットがあるので，
	この方法はあまり勧めません．
    ・plain2の出力を編集する
	plain2の出力をエディタなどで変更します．
	とりあえず，一回だけ変更したい場合にはこの方法でも良いでしょう．

jbookスタイルなどを使うためには，章番号の付け方にも変更が必要です．jbookス
タイルを使うための，出力カスタマイズの方法を付録に示しておきます．

6.2. troff出力

troff 出力は，標準で mm マクロを使った出力を生成します．ms マクロを選択す
ることも可能ですが，plain2 の機能を十分に生かすためにはmmマクロ の使用をお
勧めします．

6.3. べた書きのまま(リナンバリング)

文書ファイルに何度も手を加えているうちに，文書中のセクション番号や表番号な
どが，次のようにばらばらになってしまうことがあります．

[[R
\input{renumber.raw}
]]R

"-renum" オプションを使用すると，べた書きのまま，リナンバー処理のみを行なっ
た結果を出力します．リナンバの対象は，リスト番号，セクション番号，そして，
図表番号です．

前の文書を "plain2 -renum" に通すと，次のように，きちんとリンナンバリング
されたべた書き文書にすることができます．

[[R
\input{renumber_out.raw}
]]R

ただし，plain2 を通すと，入力中のタブおよび全角スペースは全て半角スペース
に置き換えられます．必要ならば，Emacs の tabify や UNIX の unexpand コマン
ドで，再度タブに置き換えてください．

	% plain2 -reum foo.pln | unexpand > foo_renum.pln


6.4. 特殊文字のクォート

plain2 は LaTeX出力 troff出力のそれぞれについて，バックスラッシュなどの特
殊文字をクォートする方法を2種類用意しています．

LaTeX出力では，次のように，通常の文章の中で使うクォートの形式と
"\section{}"のようなマクロ内で使うクォートの形式があります．

		表 8. LaTeX出力での特殊文字クォート
	-------------------------------------------------
	|文字 |  通常           |  マクロ内             |
	=================================================
	|  -  |  $-$            |  ←                   |
	|  =  |  $=$            |  ←                   |
	| ｜  |  $｜$           |  ←                   |
	|  <  |  $<$            |  ←                   |
	|  >  |  $>$            |  ←                   |
	|  #  |  \#             |  ←                   |
	|  $  |  \$             |  ←                   |
	|  %  |  \%             |  ←                   |
	|  &  |  \&             |  ←                   |
	|  *  |  *              |  $*$                  |
	|  ~  |  \verb+~+       |  {\tt \symbol{126}}   |
	|  _  |  \_             |  ←                   |
	|  ^  |  \verb+^+       |  {\tt \symbol{94}}    |
	|  {  |  \{             |  ←                   |
	|  }  |  \}             |  ←                   |
	|  \  |  $\backslash$   |  ←                   |
	-------------------------------------------------

troff 出力にも，通常の文書の中で使うクォートと，".H" のようなマクロ内で使
うクォートの形式があります．

		表 9. troff出力での特殊文字クォート
	-------------------------------------------------
	|文字 |  通常           |  マクロ内             |
	=================================================
	|  \  |  \e             |  ←                   |
	|  '  |  \'             |  ←                   |
	|  "  |  そのまま       |  \"                   |
	|  .  |  &\. (行頭のみ) |  そのまま             |
	-------------------------------------------------

6.5. 出力形式のカスタマイズ

plain2 の出力を，ユーザ自身の好みに応じて，また，文書形式に応じてカスタマ
イズすることが可能です．

出力フォーマットを定義したカスタマイズファイルを用意します．

例えば，次に示すカスタマイズファイルを使うことで，plain2 標準のLaTeX 出力
では， "\section{}" で出力される章番号を，セクション番号の付かない
"\section*{}" に変えることができます．

		% cat supsnum.p2
		SECTION_1       "\n\\section*{@1}\n"
		SECTION_2       "\n\\subsection*{@1}\n"
		SECTION_3       "\n\\subsubsection*{@1}\n"
		SECTION_4       "\n\\paragraph*{@1}~\\\\\n"
		SECTION_5       "\n\\subparagraph*{@1}~\\\\\n"

行の先頭に "#" を書くとその行はコメントとなります．また，行末に"\"をつける
ことで複数行にまたがったフォーマットを書くことができます．

カスタマイズファイルには，".p2"というサフィックスを付けてください．このカ
スタマイズファイルを使ってべた書き文書を plain2 に通した結果を示しておきま
す．

[[R
\input{section_star.raw}
]]R

[[R
\input{section_star.texv}
]]R

これを清書すると，次のようにセクション番号のない出力が得られます．

[[R
\input{section_stars.tex}
]]R

以下のディレクトリに置かれたカスタマイズファイルが自動的に検索されます．

	1) カレントディレクトリ
	2) 環境変数 PLAIN2_LIB に設定されたパス
	  (単一のディレクトリのみ指定可能)
	3) plain2 インストール時に指定されたディフォールトパス
	  (通常は /usr/local/lib/plain2)

現在の版では，複数の定義ファイルを同時に利用することはできません．

6.5.1. カスタマイズ可能なもの

表((xユーザ定義可能な出力形式))にカスタマイズ可能な出力形式の名称と，その
意味，引数の数を挙げます．ここに挙げた以外のリスト，テーブル，線画などの出
力は変更することができません．

	表 10. ユーザ定義可能な出力形式
---------------------------------------------------------------------------
| 名称         | 意味                 |引数|  形式| 引数の内容            |
===========================================================================
| DOC_BEGIN    |文書の始め            |   1|    数|フォントサイズ         |
|--------------|----------------------|----|------|-----------------------|
| DOC_END      |文書の終り            |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| PLAIN_BEGIN  |平文の始め            |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| PLAIN_END    |平文の終り            |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| EXAM_BEGIN   |例示の始め            |   1|    数|フォントサイズ         |
|--------------|----------------------|----|------|-----------------------|
| EXAM_END     |例示の終り            |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| BLANK        |空白行                |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| PAGE         |改ページ              |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| NEWLINE      |改行                  |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| SPACE        |複数空白行            |   1|    数|空ける行数             |
|--------------|----------------------|----|------|-----------------------|
| CENTER_BEGIN |センタリング始め      |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| CENTER_END   |センタリング終り      |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| RIGHT_BEGIN  |右寄せ始め            |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| RIGHT_END    |右寄せ終り            |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| INDENT       |インデント            |   1|    数|インデント量           |
|--------------|----------------------|----|------|-----------------------|
| INDENT0      |インデント終り        |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| FOOTN_BEGIN  |フットノート          |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| FOOTN_END    |フットノート終り      |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| REFER_BEGIN  |図表参照              |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| REFER_END    |図表参照終り          |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| BOLD_BEGIN   |ボルド                |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| BOLD_END     |ボルド終り            |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| INDEX_BEGIN  |インデックス          |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| INDEX_END    |インデックス終り      |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| SECTION      |セクション(一括)      |   1|    数|セクションの深さ       |
|              |                      |   2|文字列|セクションタイトル     |
|--------------|----------------------|----|------|-----------------------|
| SECTION_1    |セクション(第一レベル)|   1|文字列|セクションタイトル     |
|    ..        |..                    |  ..|    ..|..                     |
| SECTION_6    |セクション(第五レベル)|   1|文字列|セクションタイトル     |
|--------------|----------------------|----|------|-----------------------|
| SETSEC       |セクション(一括)      |   1|    数|セクションの深さ       |
|              |                      |   2|    数|セクション番号         |
|--------------|----------------------|----|------|-----------------------|
| SETSEC_1     |セクション(第一レベル)|   1|    数|セクション番号         |
|    ..        |..                    |  ..|    ..|..                     |
| SETSEC_6     |セクション(第五レベル)|   1|    数|セクション番号         |
|--------------|----------------------|----|------|-----------------------|
| APDX_BEGIN   |付録の始め            |   -|    - |                       |
|--------------|----------------------|----|------|-----------------------|
| APPENDIX     |付録                  |   1|文字列|セクションタイトル     |
|--------------|----------------------|----|------|-----------------------|
| TITLE        |タイトル              |   1|複数行|題名(引数1)            |
|              |                      |   2|複数行|文書番号(引数2)        |
|              |                      |   3|複数行|日付(引数3)            |
|              |                      |   4|複数行|所属部門(引数4)        |
|              |                      |   5|複数行|配付先(引数5)          |
|              |                      |   6|複数行|著者(引数6)            |
|              |                      |   7|複数行|連絡先(引数7)          |
|              |                      |   8|複数行|(引数8)                |
|              |                      |   9|複数行|(引数9)                |
---------------------------------------------------------------------------

章番号の定義には二つの方式があります．一つはセクションの深さごとに，別々の
定義を利用する SECTION_X の形式，もう一つは，セクションの深さと章題を引数
にする SECTION 形式です．

両方が定義されている場合には，SECTION_X の定義が優先的に利用されます．

6.5.2. カスタマイズ定義中での引数の指定

出力形式定義の引数は表((x出力定義の引数フォーマット))に示す形式で指定します．

		表 11. 出力定義の引数フォーマット
		----------------------------
		| 記法 | 対応する形式      |
		============================
		|  #n  | 数字              |
		----------------------------
		|  $n  | 通常のクォート    |
		|  @n  | マクロ内用クォート|
		----------------------------
		|  &n  | 複数行            |
		----------------------------

SECTION_1 を単に "@1" または "$1" と定義したとき，どのように変換されて出力
されるかを表((x出力変換の例))に示しておきます．

		表 12. 出力変換の例
	------------------------------------------------------------------
	|入力   |       |1. plain2 ~ べた書き - 入門                     |
	=================================================================
	|LaTeX  |"@1"   |plain2 \verb+~+ "べた書き" $-$ 入門             |
	|出力   |--------------------------------------------------------|
	|       |"$1"   |plain2 {\tt \symbol{126}} "べた書き" $-$ 入門   |
	------------------------------------------------------------------
	|troff  |"@1"   |plain2 ~ \"べた書き\" - 入門                    |
	|出力   |--------------------------------------------------------|
	|       |"$1"   |plain2 ~ "べた書き" - 入門                      |
	------------------------------------------------------------------

6.6. 標準出力フォーマット

plain2 内部に組み込まれている標準出力フォーマットを
表((xmmマクロroff標準フォーマット))，
表((xmsマクロroff標準フォーマットの差分))，
表((xLaTeX標準フォーマット))に示します．

ここに示した以外の出力フォーマットは変更できません．

		表 13. mmマクロroff標準フォーマット
      ----------------------------------------------------------------------
      |  機能名        |        定義                                       |
      ======================================================================
      |  DOC_BEGIN     |  ".nr Ls 0\n.S #1 #1+2\n"                         |
      |  DOC_END       |  ""                                               |
      |  PLAIN_BEGIN   |  ".P\n"                                           |
      |  PLAIN_END     |  ""                                               |
      |  EXAM_BEGIN    |  ".ft CW\n.vs -2\n.nf\n"                          |
      |  EXAM_END      |  ".fi\n.vs +2\n.ft\n"                             |
      |  APPENDIX      |  "\\fBAppendix $1\\fP\n"                          |
      |  BLANK         |  "\n"                                             |
      |  PAGE          |  ".bp\n"                                          |
      |  NEWLINE       |  ".br\n"                                          |
      |  SPACE         |  ".DS I\n.vs 13\n.sp #1\n.vs\n.DE\n"              |
      |  CENTER_BEGIN  |  ".ce 9999\n"                                     |
      |  CENTER_END    |  ".ce 0\n"                                        |
      |  RIGHT_BEGIN   |  ".ad r\n"                                        |
      |  RIGHT_END     |  ".ad b\n"                                        |
      |  INDENT        |  ".in #1/2u\n"                                    |
      |  INDENT0       |  ".in 0\n"                                        |
      |  FOOTN_BEGIN   |  "\\*F\n.FS\n"                                    |
      |  FOOTN_END     |  ".FE\n"                                          |
      |  BOLD_BEGIN    |  "\\fB"                                           |
      |  BOLD_END      |  "\\fP"                                           |
      |  SECTION       |  ".H #1 \"@2\"\n"                                 |
      |  SETSEC        |  ".nr H#1 #2\n"                                   |
      |  TITLE         |  "&1\n.ce 999\n\\fB\\s+4&2\n\\fP\\s-4\n.ce 0\n\   |
      |                |  .ad r\n&3\n.br\n&4\n.br\n&5\n.br\n&6\n.br\n&7\n\ |
      |                |  .br\n.ad b\n.br 2\n"                             |
      ----------------------------------------------------------------------

		表 14. msマクロroff標準フォーマットの差分
      ----------------------------------------------------------------------
      |  機能名        |        定義                                       |
      ======================================================================
      |  DOC_BEGIN     |  ".nr PI 2n\n.ps #1\n.vs #1+2\n"                  |
      |  PLAIN_BEGIN   |  ".PP\n"                                          |
      |  SECTION       |  ".NH #1\n @2\n"                                  |
      |  SECTION_1     |  ".NH\n @1\n"                                     |
      ----------------------------------------------------------------------


		表 15. LaTeX標準フォーマット
      ------------------------------------------------------------------------
      |  機能名        |        定義                                         |
      ========================================================================
      |  DOC_BEGIN     |  "\\documentstyle[$2]{jarticle}\n\                  |
      |                |  \\setcounter{secnumdepth}{6}\n\                    |
      |                |  \\setcounter{tocdepth}{6}\n\                       |
      |                |  \\topsep=0.1cm\n\                                  |
      |                |  \\parsep=0.1cm\n\                                  |
      |                |  \\itemsep=0.0cm\n\                                 |
      |                |  \\begin{document}\n"                               |
      |  DOC_END       |  "\\end{document}\n"                                |
      |  PLAIN_BEGIN   |  "\\par\n"                                          |
      |  PLAIN_END     |  ""                                                 |
      |  EXAM_BEGIN    |  "\\baselineskip=#1pt\n\\begin{verbatim}\n"         |
      |  EXAM_END      |  "\\end{verbatim}\n"                                |
      |  APDX_BEGIN    |  "\\appendix\n"                                     |
      |  APPENDIX      |  "\\section{@1}\n"                                  |
      |  BLANK         |  "\\medskip\n"                                      |
      |  PAGE          |  "\\newpage\n"                                      |
      |  NEWLINE       |  "\\\\\n"                                           |
      |  SPACE         |  "~\\\\\n\\begin{picture}(100,#1*15)\n\             |
      |                |  \\end{picture}\\\\\n"                              |
      |  CENTER_BEGIN  |  "\\begin{center}\n"                                |
      |  CENTER_END    |  "\\end{center}\n"                                  |
      |  RIGHT_BEGIN   |  "\\begin{flushright}\n"                            |
      |  RIGHT_END     |  "\\end{flushright}\n"                              |
      |  INDENT        |  "{\\list{}{\\leftmargin=#1ex}\\item[]\n"           |
      |  INDENT0       |  "\\endlist}\n"                                     |
      |  FOOTN_BEGIN   |  "\\footnote{"                                      |
      |  FOOTN_END     |  "}\n"                                              |
      |  REFER_BEGIN   |  "\\ref{"                                           |
      |  REFER_END     |  "}\n"                                              |
      |  BOLD_BEGIN    |  "{\\bf\\dg "                                       |
      |  BOLD_END      |  "}\n"                                              |
      |  INDEX_BEGIN   |  "\\index{                                          |
      |  INDEX_END     |  "}\n"                                              |
      |  SECTION_1     |  "\n\\section{@1}\n"                                |
      |  SECTION_2     |  "\n\\subsection{@1}\n"                             |
      |  SECTION_3     |  "\n\\subsubsection{@1}\n"                          |
      |  SECTION_4     |  "\n\\paragraph{@1}~\\\\\n"                         |
      |  SECTION_5     |  "\n\\subparagraph{@1}~\\\\\n"                      |
      |  SECTION_6     |  "\n\\subparagraph{@1}~\\\\\n"                      |
      |  SETSEC_1      |  "\n\\setcounter{section}{#1}\n",                   |
      |  SETSEC_2      |  "\n\\setcounter{subsection}{#1}\n",                |
      |  SETSEC_3      |  "\n\\setcounter{subsubsection}{#1}\n",             |
      |  SETSEC_4      |  "\n\\setcounter{paragraph}{#1}\n",                 |
      |  SETSEC_5      |  "\n\\setcounter{subparagraph}{#1}\n",              |
      |  TITLE         |  "\\title{\n&1\\\\\n}\n\\author{\n&6\\\\\n&4\n}     |
      |                |  \n\\date{\n&3}\n\\maketitle\n"                     |
      ------------------------------------------------------------------------

		表 16. NTT_TEX 定義時の差分
     --------------------------------------------------------------------------
     |  機能名       |        定義                                            |
     ==========================================================================
     |  DOC_BEGIN    |  "\\documentstyle[$2]{jarticle}\n\                     |
     |               |  \\setcounter{secnumdepth}{6}\n\                       |
     |               |  \\setcounter{tocdepth}{6}\n\                          |
     |               |  \\topsep=0.1cm\n\                                     |
     |               |  \\parsep=0.1cm\n\                                     |
     |               |  \\itemsep=0.0cm\n\                                    |
     |               |  \\renewcommand{\\bf}{\\protect\\pbf\\protect\\pdg}\n\ |
     |               |  \\begin{document}\n"                                  |
     --------------------------------------------------------------------------


7. より高度な使い方

7.1. 図表・セクションの参照

LaTeX 出力を選択した場合に限り，図表の参照機能(LaTeXの\ref)を利用すること
ができます．

図表を参照するためには，次の例のように，図表の見だしに使った文字列全部をコ
ピーして，インラインの"x"機能で囲みます．この文書を"-ref" オプションを付け
た plain2 に通すと，"\ref" と "\label" を使って図表の参照を行うLaTeX文書が
出力されます．

[[R
\input{reference.raw}
]]R

7.2. tgif+の絵の取り込み

べた書き文書以外にLaTeX の機能を使わなければならない代表的な例として，
tgif+ で書いた絵を文書中に取り込む方法を説明します．

1) tgif+ で絵を書く
	tgif+ を起動し絵を書きます．これを，eps 形式でセーブ，または .obj
	ファイルを"prtgif+ -eps" で eps に変換します．このファイル名を
	"tgif_fig.eps"とします．
[[R
~\\
\mbox{}\begin{center}
\epsfile{file=tgif_win.eps}\\
\end{center}
]]R

2) べた書き文書の作成
	raw モードの明示的指定を使って，べた書き文書に tgif+ の絵を取り込
	みます．ファイル名を tgif_doc.pln とします．
[[R
\input{tgif_doc.raw}
]]R

3) plain2を通す
	"-tstyle=" オプションで "epsf.sty" スタイルファイルを指定
	します．
[[E
		% plain2 -tex -tstyle=epsf tgif_doc.pln > tgif_doc.tex
]]E

4) LaTeXにかける
		% jlatex tgif_doc.tex
			...
			...

5) dvi2ps を通す
	dvi2p2 を通すことで，tgif+ で書いた絵が PostScript 形式の
	文書中に取り込まれます．
[[E
		% dvi2ps tgif_doc.tex > tgif_doc.ps
		 [/usr/local/lib/dvi2ps/tex.ps]
		Prescanning .
		Reading font info ...........
		[1 [tgif_fig.eps]]
]]E
	このファイルを PostScript プリンタに出力すると，
	次のように，tgif+での絵がはいった文書ができます．
[[R
\input{Tgif_doc.tex}
]]R

7.3. ヘッダ・フッタ

標準の plain2 には，文書のヘッダ・フッタを指定する機能は含まれていませんが，
出力カスタマイズ機能を利用して，タイトル部分に書かれた，題名，日付等を使っ
たへッダとフッタを付けることができます．

まず，付録Bのヘッダ・フッタ定義ファイル"header.p2"を用意します．この定義を
使って次の文書を plain2 に通すと，ヘッダに，題名と日付，フッタに，章番号，
章題，ページ番号が入った出力が得られます．

[[R
\input{header_text.raw}
]]R

	% plain2 -tex -fheader header_text.pln > header_text.tex
	% jlatex header_text.tex
		...
		...


      ┌────────────────────────┐
      │plain2ユーザガイド                         92/12│
      │                                                │
      │                                                │
      〜                                                〜
      〜                                                〜
      │                                                │
      │                                                │
      │                                                │
      │                                                │
      │7章                 高度な使い方              51│
      └────────────────────────┘

LaTeX用とtroff用両方のヘッダ・フッタ定義を付録に載せてありますので，
各人の好みに合わせて変更して利用してください．


8. インストール

8.1. 内部漢字コードの選択

plain2 のソースファイルのいくつかは，EUC漢字コードの日本語ストリング定数を
使っています．入出力に使用する漢字コードは，コマンドラインオプションによっ
て切り替えて利用することができますが，MS-DOS のように，シフトJIS を標準の
漢字コードとしている環境でのプログラムの再編集/コンパイルを容易にするため，
内部漢字コードをシフトJIS に変更してコンパイルすることもできます．以下に，
この手順を示します．

	1) 全てのファイルの漢字コードをシフトJIS に変換する
	2) plain2.h に定義されている INTERNAL_CODE を CODE_SJIS に
	   設定する

ただし，シフトJIS 環境を選択した場合，入出力は シフトJIS に固定され，JISコー
ド，EUCコードを選択することはできなくなります．

8.2. OS依存部の変更

plain2 は，比較的機種依存性が少いことが確認されていますが，OSの種類によっ
て，多少の変更が必要な場合もあります．System V のマシンでコンパイルする際
には Makefile においてCFLAGS の -DBSDフラグを削除してください．

	変更前:
		CFLAGS= -DBSD -DDEBUG

	変更後:
		CFLAGS= -DDEBUG

8.3. NTT TeX, ASCII TeX

plain2 は NTT版の TeX 環境を標準としています．
ASCII版 TeX 環境で利用するためには，plain2.h の NTT_TEX フラグを
undef してください．

	#define NTT_TEX         /* NTT jlatex   */


APPENDIX 1. カスタマイズファイルの例

LaTeXセクション番号なし(subsnum.p2)
	#
	# Suppress section numbers
	#       (Use \section* rather than \section)
	#
	SECTION_1       "\n\\section*{@1}\n"
	SECTION_2       "\n\\subsection*{@1}\n"
	SECTION_3       "\n\\subsubsection*{@1}\n"
	SECTION_4       "\n\\paragraph*{@1}~\\\\\n"
	SECTION_5       "\n\\subparagraph*{@1}~\\\\\n"

jbookスタイル(jbook.p2)
	#
	# jbookスタイルを使うための定義
	#
	DOC_BEGIN       "\\documentstyle[]{jbook}\n\
	\\setcounter{secnumdepth}{6}\n\
	\\setcounter{tocdepth}{6}\n\
	\\topsep=0.1cm\n\
	\\parsep=0.1cm\n\
	\\itemsep=0.0cm\n\
	\\begin{document}\n",
	SECTION_1       "\n\\chapter{@1}\n",
	SECTION_2       "\n\\section{@1}\n",
	SECTION_3       "\n\\subsection{@1}\n",
	SECTION_4       "\n\\subsubsection{@1}\n",
	SECTION_5       "\n\\paragraph{@1}~\\\\\n",
	SETSEC_2        "\n\\setcounter{section}{#1}\n",
	SETSEC_3        "\n\\setcounter{subsection}{#1}\n",
	SETSEC_4        "\n\\setcounter{subsubsection}{#1}\n",
	SETSEC_5        "\n\\setcounter{paragraph}{#1}\n",
	TITLE   "\\title{\n&2}\n\\author{\n&6\\\\\n&3}\n\\date{\n&5}\n\\maketitle\n",


LaTeXヘッダ・フッタ(header.p2)
[[E
	#
	# 題名，日付，章番号を使ったヘッダ・フッタ(LaTeX)
	#
	TITLE   "\\title{\n&2}\n\\author{\n&6\\\\\n&3}\n\\date{\n&5}\n\\maketitle\n\
	\\makeatletter\n\
	\\def\\ps@mypage{%\n\
	  \\let\\@mkboth=\\@gobbletwo\n\
	  \\def\\@evenhead{}\\def\\@evenfoot{}%\n\
	  \\def\\@oddhead{\\makebox[\\textwidth]%\n\
		{\\ &2\\hfill\\ &5}}%\n\
	  \\def\\@oddfoot{\\makebox[\\textwidth]%\n\
		{\\thesection\\ 章\\hfill\\rightmark\\hfill\\thepage}}}\n\
	\\makeatother\n\
	\\thispagestyle{mypage}\n\
	\\pagestyle{mypage}\n"
	SECTION_1       "\n\\markright{@1}\\section{@1}\n"
]]E

troffヘッダ・フッタ(header_t.p2)
[[E
	#
	# 題名，日付，章番号を使ったヘッダ・フッタ(troff)
	#
	TITLE   "&1\n.ce 999\n\\fB\\s+4&2\n\\fP\\s-4\n.ce 0\n\
	.ad r\n&3\n.br\n&4\n.br\n&5\n.br\n&6\n.br\n&7\n.br\n.ad b\n.br 2\n\
	.PH \"'&2''&5'\"\n\
	.PF \"''ro'%'\"\n"
	SECTION_1       ".H 1 \"@1\"\n\
	.PF \"'\\n(H1 章'@1'%'\"\n"
]]E
[[C

APPENDIX 2.  NEC CCS オプション

plain2 はNEC，C&Cソフトウェア開発グループの LaTeX/troff 環境で使われている，
A47,A471用紙マクロに対応しています．この機能を使うためには，plain2 コンパ
イル時，"plain2.h" のNEC_CCSフラグ をdefine してください．また，C&Cソフト
ウェア開発グループのLaTeX/troffマクロが必要です．

A47マクロを利用する場合，タイトル部分の最後の一行に"a47"と指定します．
"a47"以外に，"A47","a471","A471","shounin"と指定することができます．a47と
A47，また，a471とA471とshouninは同じ形式の指定です．

[[R
\input{title_a47.raw}
]]R

[[R
\input{title_a47.tex}
]]R


[[R
\input{title_shounin.raw}
]]R

[[R
\input{title_shounin.tex}
]]R

NEC依存タイトルでは，標準のタイトルに加えて表((xNEC文書専用のタイトルパター
ン))に示す文書番号の指定が可能です．

		表 17. NEC文書専用のタイトルパターン
  ----------------------------------------------------------------------------
  | 種類      | パターン      |形式|       例                                |
  ============================================================================
  | 文書番号  | 文書番号      |  A | 文書番号 p2-92-1123                     |
  |           | 技E           |  C | OSDL-技E92-001                          |
  |           | 技M           |  C | OSDL-技E92-022                          |
  ----------------------------------------------------------------------------

	形式:
		A) パターンより右側の部分を抜き出す
		B) パターンで囲まれた内側の部分を抜き出す
		C) パターンにマッチした行全体を使う

]]C
