uchida@ccs.mt.nec.co.jp
本ユーザガイドは plain2 , LaTeX , tgif を使って書かれています.
$Id: plain2.pln,v 1.4 1994/01/07 09:41:22 uchida Exp $
文書清書システムとして LaTeX や troff が広く使われるようになりました. LaTeX や troff を利用すると, 比較的手軽に高品位の文書を作成することができますが,LaTeX や troffを使いこなすことは初心者には容易ではありません.また,LaTeX や troffのコマンドが埋めこまれた文書は読みづらく,文書を推考しながら作成するのに適していません.
plain2 はべた書きされた文書を解析して, 自動的に LaTeX やtroff のコマンドを埋め込んだ文書に変換して出力するコマンドです. plain2 を使えば,LaTeX やtroff の知識がなくても, 簡単に美しい文書を作成できるようになります.
また,出力のカスタマイズ機能や, べた書き文書中に LaTeX や troff のコマンドを埋め込む機能を使って, 高度なレイアウトが必要な文書の作成にも利用することができます.
本ユーザガイドは以下のような構成になっています.
- plain2 の使い方の簡単な説明
- コマンドオプションの設定
- 文書形式の詳細
- 拡張機能
- 出力形式のカスタマイズ方法
前半部は,plain2 を始めて使う人を対象にした, 簡単な使い方の説明になっています.後半部では,既に plain2 に慣れている人を対象に,plain2の詳細な機能の説明や, より高度な応用例を紹介しています.
本ユーザガイドでは, べた書きされた文書を左側に行番号を付けた形式で示します.
べた書きの文書中では, 縦線の位置がずれて見えることがありますが,これはLaTeX の処理のために生じているもので,実際の文書中では縦線はきちんと揃っています.
1: 1. 本ユーザガイド中での例文の表示 2: 3: LaTeX処理の問題で,罫線がずれることがあります. 4: ----------------------------------------- 5: | 入力文 | 行番号付きで示します | 6: ----------------------------------------- 7: | 清書された | 枠線の中に示します | 8: | イメージ | | 9: -----------------------------------------
べた書き入力文書を plain2 に通し, 更に清書系に通した結果のイメージは枠線で囲んで示します. このユーザガイド自体は LaTeX を使って清書されていますが,特別な注意がある場合を除いて, troff を使ってもほぼ同等の清書結果が得られます.
本ユーザガイド中での例文の表示
LaTeX処理の問題で,罫線がずれることがあります.
入力文 行番号付きで示します 清書された
イメージ枠線の中に示します
このユーザガイドは , plain2 の "r2.5" 版をベースとしています.
plain2 は JUS Free software CD-ROM (1992) を始め,いくつかのフリーソフト配布パッケージに収録されて配布されています. また,何人かの方によってMS-DOS上に移植版が作成され, パソコン通信等からも入手可能です.ただし,93年末の時点で, これら配布媒体上のものはいずれも,1991年5月に fj.sources で公開された"r2.3" 版です.
r2.5 では r2.3 で発見されたいくつかのバグを修正した他, 出力形式のカスタマイズなどの新機能が導入しています.
バグレポート,改造報告などは uchida@ccs.mt.nec.co.jp までお願いします.
plain2の名前の由来
開発当初, plain2 はべた書きを LaTeXに変換する plain-to-tex = plain2texとplain-to-roff = plain2roff という二つのコマンドに分かれていました.その後の改定で二つの出力機能が一つのコマンドにマージされた結果, plain2-to-xxxの最後の部分が削られて,plain2 という名前のコマンドになりました.
ここでは,簡単な例を使って,plain2 を使った文書作成の方法を説明します. まず,つぎのようなべた書き文書を作成します.
1: 『はじめてのplain2』 2: by 内田昭宏 3: 1992/11/22 4: 5: 1. ようこそ plain2 の世界へ 6: 7: TeXなんて書けない,読めない.そんなユーザの声に応える 8: のがplain2です.使い方は簡単.特殊文字{\"'}もそのままどうぞ. 9: 10: % plain2 -tex example.pln > example.tex 11: % jlatex exapmle.tex 12: ... 13: ... 14: % xdvi example.dvi 15: 16: 1.1. 多様なリスト 17: 18: いろいろなリストが書けます.ネストもできます. 19: ・項目型リスト 20: 先頭にビュレット"・"やダッシュのある行 21: ・列挙型リスト 22: 1) 数字 23: 2) アルファベット 24: 3) ローマ数字 25: ・記述型リスト 26: 27: 1.2. テーブルと線画の機能 28: 29: plain2ならテーブルも簡単に書けます 30: ------------------------------------------------- 31: | | べた書き|マークアップ| ワープロ| 32: ================================================= 33: |覚えやすさ | ○ | × | ◎ | 34: |読みやすさ | ◎ | × | ◎ | 35: |データ交換 | ○ | ○ | × | 36: ------------------------------------------------- 37: 38: 簡単な絵くらいは書けます. 39: ┌──┐ ┌─────┐ 40: │べた│ ┏━━━━━━┓ │LaTeX│ 41: │書き┝→┃plain2┠┬→│┌────┴┐ 42: │テキ│ ┗━━━━━━┛│ ││troff│ 43: │スト│ │ └┤ │ 44: └──┘ └─→│ │ 45: └─────┘
plain2 は例文から次に示す文書構造を抽出し, 適切な LaTeX または troffのコマンドを挿入します.
1~3行 | タイトル | 22~24行 | 列挙型リスト |
5行 | セクションタイトル(深さ1) | 27行 | セクションタイトル(深さ2) |
7行 | 平文 | 29行 | 平文 |
10~14行 | 例示 | 30~36行 | テーブル |
16行 | セクションタイトル(深さ2) | 38行 | 平文 |
18行 | 平文 | 39~45行 | 線画 |
19~25行 | 項目型リスト |
ここでは,LaTeXを選択することにします.
% plain2 -tex example.pln > example.tex
入力文書の文字コードにはJISコード,または,EUCコードを使うことができます, 出力コードの標準はEUCコードです.オプションによって,入出力共にシフト JISコードを選択することも可能です.MS-DOSに移植されたplain2では, 入出力共にシフトJISコードが標準となっています.
これ以降の手順は,普通に LaTeXを使う場合と同じです.
% jlatex example.tex ... ...
LaTeXを使って清書された結果を次に示します.
バックスラッシュなど,LaTeXや troff処理系の特殊文字は自動的にクォートして出力されます.
出力に 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 ...
例文では,『はじめてのplain2』からの3行がタイトルです. タイトルは必ず文書ファイルの先頭でなくてはいけません. タイトルは省略することも可能です.
タイトルには,題名,著者名, 日付,所属などのうち必要なものを書きます.最初の例に示した書き方の他に, 各行の先頭にタグを付ける書き方もあります.
1: 『はじめてのplain2』 2: by 三田 一郎 3: フリーソフトウェア研究所 4: 1992/11/22 5: 6: 1. タイトルの書き方 7: 8: タイトル部分には空白行を入れることはできません. 9: タイトル部分と本文との間には一行以上の空白を置いてください.
1: 題名 はじめてのplain2 2: 著者 三田 一郎 3: 日付 1992/11/22 4: 所属 フリーソフトウェア研究所 5: 6: 1. タイトルの書き方 7: 8: タイトル部分には空白行を入れることはできません. 9: タイトル部分と本文との間には一行以上の空白を置いてください.
タイトル部分には空白行を入れることはできません. タイトル部分と本文との間には一行以上の空白が必要です.また, タイトル部分の全ての行は予め定められたパターン (タイトルの詳細 章参照)のいずれかにマッチしなくてはいけません. 一行でもパターンにマッチしない行があると, タイトル全体の解釈が失敗してしまいます.
例文には3つのセクションタイトルが含まれていす.セクションタイトルは, セクション番号(章番号,節番号)と見だし部分から構成されます.
セクションタイトルは行の先頭から始まっていなくてはなりません. また,セクションタイトル行の直前は必ず空白行でなくてはいけません. できれば,前後共に空白行とすることが望ましいです.例文では, セクション番号に全角数字と全角のドットを使っていますが, 半角数字と半角ドットを使うこともできます.
plain2 はセクション番号の値そのものにはほとんど注意を払わず,セクションの深さ(ドットで区切られた並びの数)だけに注目しています.
plain2 の出力を LaTeX や troff で清書すると,べた書き文書中でのセクション番号の値にかかわらず,セクション番号は続き番号となります.入力文書中では番号の数自体にはあまり注意を払う必要はありません.
1: 1. ようこそ plain2 の世界へ 2: 3: 2.4. 多様なリスト 4: 5: 3.1. テーブルと線画の機能 6:
ようこそ plain2 の世界へ
多様なリスト
テーブルと線画の機能
特別の構造を持たない普通の文章を平文と呼びます. 平文は,LaTeXやtroffを通すと行詰めされる指定で出力されます.
平文の間に空白行を入れることで,段落の区切りを表します.空白行を使わずに, 行の先頭に全角一個文の空白をおくことで段落を示すこともできます.
1: 我々が普段書く技術文書やメモには,章・リスト・表などの 2: 基本的な文書構造が多く使われ,細かいレイアウト調整が必要 3: とされることは少ない. 4: これら基本的な文書構造は,空白の配置やインデント・簡単 5: な記号を使ってべた書きテキストでも書き表すことができるに 6: もかかわらず,多くの場合,高い品質の印字を得るために, 7: TeXやtroffのマークアップ言語で文書構造を指定している. 8: 9: また,いわゆるWYSIWYGの文書作成ツールを使った場合にも入 10: 力速度,文書の交換性などに問題がある. 11: 12: 筆者らは,べた書きの文書の外観からその構造を解析し, 13: TeX/troffのコマンドに変換するプログラムを作成した. 14:
我々が普段書く技術文書やメモには, 章・リスト・表などの基本的な文書構造が多く使われ, 細かいレイアウト調整が必要とされることは少ない.
これら基本的な文書構造は, 空白の配置やインデント・簡単な記号を使ってべた書きテキストでも書き表すことができるにもかかわらず, 多くの場合,高い品質の印字を得るために,TeXや troffのマークアップ言語で文書構造を指定している.
また,いわゆる WYSIWYGの文書作成ツールを使った場合にも入力速度,文書の交換性などに問題がある.
筆者らは,べた書きの文書の外観からその構造を解析し, TeX/troffのコマンドに変換するプログラムを作成した.
コマンド実行例の部分は,行詰めをせずに, そのままのイメージで出力しなければなりません.このような部分を例示と呼びます.
プログラム例のように,比較的短い行が続く部分, 空白を多く含む行が続く部分などが例示と判定されます.
例文では,3つの項目からなる項目型リストの中に, 列挙型のリストがネストされています.
リストには,項目型リスト,列挙型リスト,記述型リストの3種類があり, リスト行の先頭に付けられたリストマークの種類によって識別されます.
1: ・ビュレットリストその1 2: ・ビュレットリストその2 3: 4: - ダッシュリストその1 5: - ダッシュリストその2
troff 出力を選択した場合には, ビュレットとダッシュの違いが区別して出力されますが, LaTeX出力ではビュレットとダッシュの違いは出力に反映されません.
- ビュレットリストその 1
- ビュレットリストその 2
- ダッシュリストその 1
- ダッシュリストその 2
1: 1) 数字列挙型 2: アラビック数字.1,2,3,... 3: 2) 英字列挙型 4: アルファベット.a,b,c,... A,B,C,... 5: 3) ローマ数字列挙型 6: 幅が一定でないです.i,ii,iii,iv,... I,II,III,IV,... 7: 8: [a] ドットによる修飾 9: 最後にドットを付ける.1.,2., a. b. 10: [b] 括弧による修飾 11: 右側か両側に付ける.A),B), (i),(ii) 12: [c] 角括弧による修飾 13: 角括弧の場合も同様.I], II],[1],[2]
- 数字列挙型
アラビック数字. 1,2,3,...
- 英字列挙型
アルファベット.a,b,c,... A,B,C,...
- ローマ数字列挙型
幅が一定でないです.i,ii,iii,iv,... I,II,III,IV,...
- ドットによる修飾
最後にドットを付ける.1.,2., a. b.
- 括弧による修飾
右側か両側に付ける.A),B), (i),(ii)
- 角括弧による修飾
角括弧の場合も同様.I], II],[1],[2]
1: コロンを置く: 2: タイトルの最後にコロンを付ける形式です. 3: 角括弧で囲む: 4: タイトル全体を角括弧で囲む形式です. 5: 6: [LaTeX] 配布フリーの処理系も多くパソコンでも使えます 7: [troff] 元祖UNIX の文書処理系ですが最近は斜陽ぎみか
- コロンを置く:
- タイトルの最後にコロンを付ける形式です.
- 角括弧で囲む:
- タイトル全体を角括弧で囲む形式です.
- [LaTeX] 配布フリーの処理系も多くパソコンでも使えます
- [troff] 元祖UNIX の文書処理系ですが最近は斜陽ぎみか
"-","=","|","+" を使って書いたべた書きのテーブルが,LaTeXのtabular 環境,または, troff の tbl 機能を使ったテーブルに変換されます.縦線と横線の交点は,横線"-"でも縦線"|"あるいは'+'のいずれでもかまいません.
plain2 は複数カラム/複数行にまたがるフィールドを含む,複雑なテーブルも扱うことができます.
1: --------------------------------- 2: |へん|つくり|| あわせて | 3: | | || 漢字 | よみかた | 4: |===============================| 5: | 金 | || 錫 | すず | 6: |----| 易 ||------+-----------+ 7: | | || 鯣 | するめ | 8: | |------||------+-----------+ 9: | 魚 | 非 || 鯡 | にしん | 10: | |------||------+-----------+ 11: | | || 鯰 | なまず | 12: |----| 念 ||------+-----------+ 13: | 手 | || 捻 | ひねる | 14: ---------------------------------
へん
つくり
あわせて 漢字 よみかた 金
易
錫 すず
魚
鯣 するめ 非 鯡 にしん
念
鯰 なまず 手 捻 ひねる
JISの罫線素片文字を使って書いた絵を,troffの PICまたはLaTeXのpicture環境の図に変換します. PC9800独自の罫線文字は認識されないので注意してください.
いくつかの特殊な記法を採用することで, 線画機能の表現力を拡充しています.日常的な作画はほとんどべた書きだけで済ますことも可能でしょう.
1: ┏━Ethernet 2: ┃ /───EWS4800 3: ↓ / 4: □━━━━┳━━━━━/━━━━━━━━━━━━━━━□ 5: ┌──┸──┐ / 2GBdisk 6: │/───\│× : 7: ││X- ││ : 8: ││Window││ ┌ ̄ ̄┐←……┘ 9: ┌┤\───/├┐│ │ 10: │└─────┘┝┥ │ 11: └───────┘└__┘
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 -tstyle=sss -roff -mm -ms -[no]listd -[no]space -[no]pre -[no]acursec -raw -renum -jis -euc -sjis -f file | LaTeX出力 LaTeXスタイルファイル追加 troff出力 mm マクロ 〃 troff出力 ms マクロ リスト修飾 空白行の削除のオン/オフ プリアンプルの出力/抑止 入力に忠実なセクション番号 raw出力モード べた書きのままリナンバ JISコード出力 EUCコード出力 入出力共シフトJIS 出力カスタマイズファイル指定 |
解析 オプ シ ョ ン | -table=ddd -exam=ddd -indsec -ktable -ref | テーブル制御 例示制御 インデント付きセクション 漢字罫線テーブル 相互参照(LaTeXのみ) |
そ の 他 | -v -dLevel -pt=Size | verboseモード デバッグオプション フォントサイズ |
オプションは,コマンドラインだけでなく,環境変数や, べた書き文書ファイル自身に指定することもできます. 文書ファイル中への指定方法については,タイトルの書き方 (タイトルの詳細 章)を参照してください. 文書ファイル中に指定された, 解析オプションの有効範囲はそのファイル内に限定されます.
LaTeX出力を選択します. jarticle スタイルを使った出力を生成します.
-tstyle=sss
LaTeX スタイルファイル指定します.例えば,"-tstyle=epsf" と指定すると,次のように出力されます.
\documentstyle[epsf]{jarticle} \setcounter{secnumdepth}{6} ...
-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
出力カスタマイズファイルを指定します. ( plain2 の出力とカスタマイズ 章 )
テーブルの判定基準値を0から100の間で設定します. ディフォールトの値は50です. テーブルのつもりで書いた部分がテーブルにならないとき,少し大きめの値を設定します.
# テーブルになり易くする % plain2 -table=80
-exam=ddd
例示の判定基準値を0から100の間で設定します.ディフォールトの値は 50です. 例示のつもりで書いた部分が例示にならないとき, 少し大きめの値を設定します.
# 例示になり難くする % plain2 -exam=30
-indsec
セクションは行の先頭に書くことが基本ですが, セクションがインデントされている文書を,どうしても plain2 の入力として使う必要がある場合に使用してください.ただし, この機能を使うとセクションとリストの判別が不正確になります.
-ktable
JIS罫線を使って書かれたテーブルも解析します.ただし, 罫線を使ったテーブルは, 罫線文字を使って書かれた線画と判別することが困難なため,"[[T","]]T" を使ってテーブルの範囲を明示的に指定してください.
-ref
表番号,図番号,セクションのリファレンス機能を有効とします. この機能は LaTeX 出力を選んだときだけ利用可能です.
-v
処理の途中経過を表示します.また,不連続な章番号, リスト番号に警告メッセージを表示します.
% 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]
- ヘルプ
"-help" 等,不正なオプションを入力することで, ヘルプメッセージを表示させることができます.
usage: plain2 [options] [files ...] ---- parser options ---- ---- output options ----(default) -table=dd: table factor [0-100](def=50) -roff: troff output -exam=dd: example factor[0-100](def=50) -ms/-mm: troff macro (mm) -indsec: sections can be indented -tex: tex output -ktable:enable JIS keisen table -tstyle=ss:tex style / CSS file -ref: figure/picture reference -html: HTML output -htmlold: old HTML output ---- encoding ---- -htmlonce: HTML (one path) output -jis: JIS code output -here: HTML table/picture ref. -sjis: Shift-JIS code input/output -renum: renumbering only -[no]listd:list decoration (on) ---- Others ---- -[no]space:spacing (on) -v: verbose output -[no]pre: preamble block (on) -dLevel: debug level -[no]acursec: section numbers (off) ----- experimental ---- -raw: quote special chars(off) -pt=Size: font size -f file: output customization plain2 r2.54 1994/04 by A.Uchida NEC Corporation (HTML output) by k-chinen@is.aist-nara.ac.jp, NAIST (unofficial patch 98/08/13 by N.Nide) (HTML table by KOBAYASHI Kenichi 2002/01/06)
オプションはコマンドラインの他に,環境変数に設定しておいたり, 入力ファイル中に指定することもできます.
plain2 は,次の順序でオプションを評価します.
- 環境変数変数
- コマンドライン
- 入力ファイル中のオプション
環境変数に定義されたオプションをコマンドラインで変更することはできますが, 入力ファイル中に記述されたオプションは, コマンドラインから変更することはできません.
環境変数 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} ...
plain2入力文書の先頭にも,オプションを指定することができます. ファイル先頭のタイトル部分で,"option" というキーワードに続けて, コマンドラインでオプションを指定するのと同じ書式でオプションを記述します. タイトル部分がない文書の場合には,ファイル先頭にオプション行を書き, 続いて空白行をおいてください.
文書ファイルで指定した解析オプションの有効範囲は, そのファイル内に限定されます. また,出力オプションは,plain2 に最初に読み込まれるファイルに書かれた場合に限り有効です. 2番目以降ののファイル中に出力オプションがあった場合,警告メッセージが表示され, そのオプションは無視されます.
1: 『plain2利用の手引き』 2: by A.Uchida 3: option -table=0 -exam=40 4: 5: タイトルに"-table=0"オプションがあるので, 6: 以下の部分はテーブルになりません. 7: +-----------------------------+ 8: | この領域は | テーブルに | 9: +-----------------------------+ 10: | なり | ません | 11: +-----------------------------+
plain2利用の手引き
A.Uchida
タイトルに"-table=0"オプションがあるので, 以下の部分はテーブルになりません.
+-----------------------------+ | この領域は | テーブルに |+-----------------------------+ | なり | ません |+-----------------------------+
plain2 は表plain2 の文書形式 に示す文書形式を扱うことができます. 明示的指定のところにアルファベットを示したものは, 後に述べるように明示的に文書形式を指定できるものです.
plain2 は,行全体, あるいは複数行からなる領域に対して文書形式をあてはめていきます. 行の途中から文書形式が変わったり,行の一部だけが別の文書形式となることはありません.
表 2.plain2の文書形式文書形式 | 明示的指定 |
---|---|
セクションタイトル 平文 引用 例示 テーブル リスト ページ 空白 線画 右寄せ センタリング 図表題 付録 raw出力 コメントアウト | - - - E T - - - P A N - - R C |
raw 出力とコメントアウトは通常のべた書き文書から自動的に判定されることのない特殊な機能です.raw 出力を指定された部分は,plain2 の処理を受けずに,そのままの形で出力されます.コメントアウトを指定された部分は出力されません.("-renum" を指定した場合は,コメントアウト部分もそのまま出力されます)
べた書き本来の主旨からは外れますが,入力文書中の指定した範囲の文書形式を明示的に指定する方法が用意されています.
例えば, 次のようにテーブルがきちんと出力されない,例示のつもりで書いた部分が行詰めされてしまうなど,どうしても思い通りの出力とならない場合は,明示的な指定を使うこともやむをえないでしょう.
1: plain2 は次のようなテーブルをうまく切り出して 2: 解析することができません. 3: ------------------------------- 4: 日付 | 行き先 | 交通費 5: =============================== 6: 7/07 | 天王台 | 880円 7: 7/21 | 宮崎台 | 400円 8: 8/17 | 池尻大橋 | 220円 9: 8/18 | 池尻大橋 | 220円 10: ------------------------------- 11: このような場合は,明示的に文書形式を指定する 12: しかないでしょう.
plain2 は次のようなテーブルをうまく切り出して解析することができません.
-------------------------------
日付 | 行き先 | 交通費===============================
7/07 | 天王台 | 880円7/21 | 宮崎台 | 400円8/17 | 池尻大橋 | 220円8/18 | 池尻大橋 | 220円-------------------------------
このような場合は, 明示的に文書形式を指定するしかないでしょう.
文書形式を明示的に指定するためには, その領域を"[[X"と"]]X" (Xはテキストタイプを指定するアルファベット一文字 )で囲みます."[[X"と"]]X"は両方とも行の先頭に書きます.
1: plain2 は次のようなテーブルをうまく切り出して 2: 解析することができません. 3: [[T 4: ------------------------------- 5: 日付 | 行き先 | 交通費 6: =============================== 7: 7/07 | 天王台 | 880円 8: 7/21 | 宮崎台 | 400円 9: 8/17 | 池尻大橋 | 220円 10: 8/18 | 池尻大橋 | 220円 11: ------------------------------- 12: ]]T 13: このような場合は,明示的に文書形式を指定する 14: しかないでしょう.
plain2 は次のようなテーブルをうまく切り出して解析することができません.
日付 行き先 交通費 7/07
7/21
8/17
8/18天王台
宮崎台
池尻大橋
池尻大橋880円
400円
220円
220円このような場合は, 明示的に文書形式を指定するしかないでしょう.
指定できる文書形式は次の7種類です.
- E: 例示(プログラム例,簡単な図など )
- T: テーブル
- P: 線画による図形
- A: 右寄せ
- N: センタリング
- R: plain2 の処理をせずそのまま出力する
LaTeX/troff のコマンドをべた書き文に挿入するときなど
- C: テキストブロックをコメントアウト
RとCは, 明示的に指定する方法以外ではおこることのない特殊な形式です.
1: raw 出力 2: [[MT 3: ここは,{\Large そのまま}出力されます 4: ]]M 5: コメントアウト出力 6: [[C 7: この部分は出力 8: されません. 9: ]]C
% plain2 -tex -nopre hint_raw.pln \par raw 出力 ここは,{\Large そのまま}出力されます \par コメントアウト出力 %% この部分は出力 %% されません.
明示的な指定を使った例を以下に示します.
1: [[E 2: ここは,例示ブロック(non-fill, constant-width)として 3: 出力されます. 4: ]]E 5: [[T 6: ここは テーブル として 7: 出力 され ます 8: ]]T 9: [[MT 10: ここは,{\Large そのまま}出力されます 11: ]]M 12: [[P 13: ┌→線画に 14: ここは─┘ なります 15: ]]P 16: [[C 17: この部分は出力 18: されません. 19: ]]C 20: [[N 21: ここはセンタリングして 22: 出力されます 23: ]]N 24: [[A 25: ここは右寄せで 26: 出力されます 27: ]]A 28:
plain2 の文書形式には含まれていない, フットノートや,文字フォント指定などの文書清書系の機能を利用するため, 特別な記法"((X","))",(Xは機能指定するアルファベット一文字)が用意されています.
- f: フットノート
- b: ボルドフォント
- r: rawモード("[[R","]]M"と同様 )
- x: リファレンス(LaTeXのみ )
- i: インデックス(LaTeXのみ )
1: plain2はUNIX((fUNIXはUSLが開発しライセンス 2: しています))上で開発されました. 3: ・行の中で一部を((bBOLD FONT にして 4: 強調))することができます. 5: ・清書系の機能を直接使うことも 6: ((r{\large 可能}))です. 7: ・使えるのは平文,リストの中だけです.
plain2は UNIX*1 上で開発されました .
*1 UNIXは USLが開発しライセンスしています
- 行の中で一部をBOLD FONT にして強調することができます.
- 清書系の機能を直接使うことも{\large 可能} です.
- 使えるのは平文,リストの中だけです.
ただし, この機能を使えるのは
- 平文
- リスト本文
plain2 は入力文書中に漢字コードが全く含まれていない場合, 英文文書と判定します.英文文書と日本語文書では, 文書解析と出力の処理に一部相違があります.
この章では,各文書形式について,より詳細に説明します.
文書ファイルの先頭から,最初の空白行までの範囲の行が, 全て表タイトルのパターン に挙げるパターンにマッチすると, そのブロックはタイトルと判定されます.ただし,標準のLaTeX出力では配布先, 連絡先に指定した部分は出力されません.
表タイトルのパターン 中に示した形式 (A,B,C)はマッチしたパターンの中からどの部分をタイトルとして取り出すかを表しています.
表 3.タイトルのパターン
- パターンより右側の部分を抜き出す .ただし,パターンより2個以上の空白がある場合, そこから右の部分だけが切り出される .
例(△は空白) 抜き出される部分 題名△pain2△ユーザガイド
題名△pain2△△ユーザガイド
[△題名△]△△pain2△ユーザガイドpain2△ユーザガイド
ユーザガイド
pain2△ユーザガイド
- パターンで囲まれた内側の部分を抜き出す
- パターンにマッチした行全体を使う
種類 | パターン | 形式 | 例 | LaTeX 標準 | troff 標準 |
題名 | 題名 『』 【】 引数1 | A B B A | 題名 plain2ユーザガイド 『plain2ユーザガイド』 【はじめてのべた書き入力】 引数1 ○○○○○○ | ○ | ○ |
文書 番号 | 文書番号 引数2 | A A | 文書番号 ABC-92-01-222 引数2 ○○○○○○ | − | − |
日付 | 日付 月 日 89-95/ /89-95 引数3 | A C C C C A | 日付 Tue Oct 13 1992 1992年10月 92/10/13 10/13/92 引数3 ○○○○○○ | ○ | ○ |
所属 部門 | 所属 本部 開発部 研究部/研究所 開本/開研/技研 引数4 | C C C C C A | 所属 田町電機 UNIX本部 フリーソフト開発部 PDS研究所 海岸通り技研 引数4 ○○○○○○ | ○ | ○ |
配付先 | 配付先 配布先 各位 殿 様 引数5 | A A C C C A | 配付先 別紙 配布先 ユーザの皆様 関係者各位 山田部長殿 鈴木課長様 引数5 ○○○○○○ | − | ○ |
著者 | 担当 著者 by 引数6 | A A A A | 担当 やまだたろう 著者 やまだたろう by 五十嵐一郎 引数6 ○○○○○○ | ○ | ○ |
連絡先 | 連絡先 TEL,Tel,tel 引数7 | A A A | 連絡先 foobar@foo.bar.baz.co.jp TEL 03-5432-#### 引数7 ○○○○○○ | − | ○ |
引数8 | A | 引数8 ○○○○○○ | − | − | |
引数9 | A | 引数9 ○○○○○○ | − | − | |
その他 | option comment | | option -exam=70 comment this is a comment | − | − |
次の3つは, タイトルの書き方のいくつかのバリエーションを示しています.
1: 『はじめてのplain2』 2: by 三田 一郎 3: フリーソフトウェア研究所 4: 1992/11/22 5: 6: 1. タイトルの書き方 7: 8: タイトル部分には空白行を入れることはできません. 9: タイトル部分と本文との間には一行以上の空白を置いてください.
1: 題名 はじめてのplain2 2: 著者 三田 一郎 3: 日付 1992/11/22 4: 所属 フリーソフトウェア研究所 5: 6: 1. タイトルの書き方 7: 8: タイトル部分には空白行を入れることはできません. 9: タイトル部分と本文との間には一行以上の空白を置いてください.
1: [ 題名 ] はじめてのplain2 2: [ 著者 ] 三田 一郎 3: [ 日付 ] 1992/11/22 4: [ 所属 ] フリーソフトウェア研究所 5: 6: 1. タイトルの書き方 7: 8: タイトル部分には空白行を入れることはできません. 9: タイトル部分と本文との間には一行以上の空白を置いてください.
これらの文書ファイルを plain2 に通して清書すると,下のような出力となります.
はじめてのplain2
1992/11/22 フリーソフトウェア研究所 三田 一郎
タイトルの書き方
タイトル部分には空白行を入れることはできません. タイトル部分と本文との間には一行以上の空白を置いてください.
形式Aのパターンでは, パターンの両側に括弧を付ける形式も許されます.半角/全角の括弧, 角括弧のいずれでも利用できます.
1: [ 題名 ] はじめての plain2 2: [ 著者 ] 三田 一郎 3: ( 日付 ) 1992年 11月 22日 4: [ 所属 ] フリーソフトウェア 研究所 5: 6: 1. タイトルの書き方 7: 8: このような形式も可能です.
はじめての plain2
1992年 11月 22日 フリーソフトウェア 研究所 三田 一郎
タイトルの書き方
このような形式も可能です.
タイトルのつもりで書いた領域の中に一行でもパターンにマッチしない行があると, タイトルとは解釈されません.次の例は著者名のつもりで書いた名前の行が, どのパターンにもマッチしないので,タイトルになりません.
1: 『タイトル解析失敗の例』 2: plian2ユーザの皆様各位 3: 晴海次郎 4: 1992年11月22日 5: 6: 著者名のパターンが正しくないので,タイトル 7: として認識されません.
『タイトル解析失敗の例』
plian2 ユーザの皆様各位晴海次郎1992年11月 22日
著者名のパターンが正しくないので, タイトルとして認識されません.
表タイトルのパターン を見ると, 一つの行が複数のパターンにマッチする可能性のあることに気が付きます. 例えば,"山田本部長様"という行は,配付先と所属部門の両方のパターンにマッチします. このような行に対しては,表の中で前の方に書いてあるパターンが優先されるので, この例は配布先と解釈されます.
題名が複数行にわたる場合や, 著者が二人以上いるような場合など,同一種類のパターンを複数行書くこともできます.
題名,著者名等の他に,オプションの設定と,コメント行を書くことができます. comment 機能は,RCS や SCCS を使って文書の版管理をする場合などに使ってください.
1: 題名 タイトルの書き方 2: 題名 --正しい例-- 3: 配布先 plain2ユーザ各位 4: 担当 有明 太郎 5: 日付 Tue Oct 11 1992 6: comment $Id: title_cmplx.pln,v 2.1 1994/04/19 09:34:20 uchida Exp $ 7: option -table=0 -exam=60 8: 9: 1. タイトル記述方法の例
タイトルの書き方 --正しい例--
Tue Oct 11 1992 有明 太郎 plain2ユーザ各位
タイトル記述方法の例
標準のLaTeX出力では,"\title{}","\author{}", "\data{}","\maketitle", の機能を使ってタイトルを出力します.標準では,文書番号,配布先, 連絡先は出力されません.LaTeXで,配布先, 連絡先のフィールドをタイトルの一部に表示したい場合や, タイトルを好みの形に変えたい場合には,出力カスタマイズの機能を利用してください.
troffでは,LaTeX の jarticleスタイルのタイトル出力をまねた形式で出力します.
行の先頭にセクション番号があり, 行の前が空白行(あるいは,ファイル先頭)であると, その行はセクションタイトルであると推定されます.ただし,この条件は列挙型リストの判定条件と競合するときがあります.リストにもなりうる形式の場合には,さらにいくつかの判定条件を適用した後,最終的にセクションタイトル判断されます.
セクション番号は,"番号+ドット"の繰り返しという形をしています. 番号とドットは,全角/半角どちらでもかまいません.
セクション番号の深さが2以上であれば,最後のドットを省略することができます. セクション番号が全角で書かれていれば,深さ 1でもドットを省略することができます.ドットを省略した場合には, 番号とセクションタイトルの間には一個以上の空白が必要です.
1: 1.はじめに 2: 全角数字+全角ドット 3: 4: 2. 概要 5: 半角の数字.稀にリストと混同の危険がある 6: 7: 2.3.サブセクション 8: 半角数字+半角ドットの繰り返し 9: 10: 2.3. サブセクション 11: ドットの後の空白はあってもなくても良い 12: 13: 3 かんたんな使い方 14: 全角数字 + 空白.ドットなし 15: 16: 3.1 サブセクション 17: サブセクションであれば, 18: 最後のドットはあってもなくても良い 19: 20: 3これ以降は不正なセクションです. 21: これは不正.ドットがない場合,空白が必要 22: 23: 3.3不正サブセクション 24: これは不正. 25: 章番号の直後には空白かドットが必要 26: 4.不正セクション 27: これは不正. 28: セクションタイルの前が空白でない 29:
はじめに
全角数字 +全角ドット
概要
半角の数字. 稀にリストと混同の危険がある
サブセクション
半角数字 +半角ドットの繰り返し
サブセクション
ドットの後の空白はあってもなくても良い
かんたんな使い方
全角数字 + 空白. ドットなし
サブセクション
サブセクションであれば, 最後のドットはあってもなくても良い
3これ以降は不正なセクションです.
これは不正.ドットがない場合, 空白が必要
3.3 不正サブセクション
これは不正. 章番号の直後には空白かドットが必要
4. 不正セクション
これは不正. セクションタイルの前が空白でない
セクションタイトルが思い通りの出力にならない場合, いくつかの原因が考えられます.
1: 1. はじめに 2: 3: 半角数字を使ったセクションと, 4: 列挙型のリストは同じ形式をしています. 5: 6: 1. 番号が1から始まっていて 7: 2. 空白行が間に無ければリストになります 8: 9: 1. 前後に空白行があれば 10: 11: 2. セクションとなります 12: 13: 4. まとめ 14: 15: セクション・リストの誤判定例でした.
はじめに
半角数字を使ったセクションと, 列挙型のリストは同じ形式をしています.
- 番号が 1から始まっていて
- 空白行が間に無ければリストになります
前後に空白行があれば
セクションとなります
まとめ
セクション・リストの誤判定例でした.
セクションタイトルがインデントされた文書を外部から入手して, どうしてもplain2 に通して LaTeX に変換して使いたいということがあります. 通常,plain2 はインデントされたセクションタイトルをセクションタイトルとは解釈しませんが,"-indsec" オプションを利用することで,インデントされたセクションタイトルの使用を許すことができます.
1: 1. はじめに 2: 3: インデント付きセクションを許すのは 4: 例外的なケースに限ってください 5: 6: 1.1. インデントされたセクション 7: 8: 1.2. おわり 9:
はじめに
インデント付きセクションを許すのは例外的なケースに限ってください
インデントされたセクション
おわり
plain2 はセクション番号の値そのものにはほとんど注意を払わず,セクションの深さ(ドットで区切られた並びの数)だけに注目しています.
例外として, 文書ファイルの先頭に表れるセクションが "1."以外のセクション番号を持つ場合,LaTeX や troff を通した出力も,入力と同じ番号から始まるように調整されます.これは,文書の途中から一部分だけを抜きだして清書する場合を考慮したものです.
1: 3.2. 環境変数によるオプション指定 2: 3: 3.3. 入力ファイル中の指定 4: 5: 4. plain2 の扱う文書形式 6: 7: 4.1. 明示的文章形式指定 8:
環境変数によるオプション指定
入力ファイル中の指定
plain2 の扱う文書形式
明示的文章形式指定
入力文書中のセクション番号の値をそのまま出力に反映させることも可能です. これには "-acursec" オプションを使用します.
1: 2. はじめに 2: 3: 使い道がよくわからないですが. 4: 強引にセクション番号を設定します. 5: 6: 3.2.4. 不連続セクション番号 7: 8: 不連続なセクション番号が 9: そのままの値で出力されます. 10: 11: 4.5. おわり 12:
はじめに
使い道がよくわからないですが. 強引にセクション番号を設定します.
不連続セクション番号
不連続なセクション番号がそのままの値で出力されます.
おわり
LaTeXでは,"\section{}","\subsection{}",から "\subparagraph{}"までを使ってを出力します. 標準のLaTeX出力には,セクションタイトルの深さが 5レベルまでという制限があります.この制限を越えた場合,全て "\subparagraph{}"として出力します.
1: 1. はじめに 2: 3: 1.1. つぎに 4: 5: 1.1.1. そのつぎに 6: 7: 1.1.1.1. さらにそのつぎに 8: 9: 1.1.1.1.1. まだそのつぎ 10: 11: 1.1.1.1.1.1. これはLaTeXの限界を越える
はじめに
つぎに
そのつぎに
さらにそのつぎに
まだそのつぎ
セクション番号の付かないセクションタイトル "\section*{}" を使いたい場合,入力文書には適当なセクション番号を付けておいて, 出力のカスタマイズで対応します. (出力形式のカスタマイズ 章 )
troff出力のセクションタイトルは mm マクロの ".H" を使用します. troff ではセクション深さの制限は 7レベルまでです.この制限を越えた場合, troff の処理の段階でエラーとなります.
% ditroff deepsec.pln ******************** ERROR:(<deepsec.pln>)input line 5:H:bad arg:8 ******************** Processing has been terminated.
行の先頭につけられたリストマークや記述リストのタイトル部分によって, その行がリストであることが推定されます. リストの中には,テーブルや平文, さらに別のリストをネストして置くこともできます.
行の先頭にビュレットやダッシュを持つ項目型のリストはリスト項目が一つでもリストと判定されます.ただし,同じリストに属するリストの項目の各行は, 全て先頭が同じ位置にインデントされていなればななりません.
1: 次の例が列挙リストになっては困ります. 2: 皆さんもご存知のように,円周率は 3: 3.14159.....と無限に続く値です. 4: 5: 次の例は列挙リストになりません. 6: i) 先頭が不揃い 7: ii) 一項目しない列挙リスト 8: iii) 見だしの長過ぎる記述リスト 9: iv) その他 10: 11: これは,項目が二つのリスト. 12: 5行目: セクションタイトル 13: 19行目: 項目型リスト 14: 15: 次の例は項目が一個のリストが二つと解釈されます.(行間があく) 16: 5行目: セクションタイトル 17: 19行目: 項目型リスト
次の例が列挙リストになっては困ります.
皆さんもご存知のように, 円周率は3.14159.....と無限に続く値です.
次の例は列挙リストになりません.
i) 先頭が不揃いii) 一項目しない列挙リストiii) 見だしの長過ぎる記述リスト
iv) その他
これは,項目が二つのリスト.
- 5行目: セクションタイトル
- 19行目: 項目型リスト
次の例は項目が一個のリストが二つと解釈されます. (行間があく)
- 5行目: セクションタイトル
- 19行目: 項目型リスト
項目型リストには表項目型のリストマーク に示すリストマークのいずれかを使うことができます.
表 4.項目型のリストマークマーク | 種別 | |
---|---|---|
・ * * + | ビュレット 半角アステリスク 全角アステリスク 半角プラス | ビュレット |
- − | 半角ダッシュ 全角ダッシュ | ダッシュ |
項目型リストは,一項目だけでも項目リストになるため, 行の先頭にたまたまビュレット("・")やダッシュ("-")があると, 項目型リストと誤解されることがあるので注意してください.
LaTeX出力では入力文中でのどのリストマークが使われていても, itemize 環境を使ったリストとして出力します. 出力中ではネストのレベルに応じてリストマークが LaTeX によって, 自動的に決められます.またネストの深さには LaTeX の場合4レベルまで, troff の場合6レベルまでという制限があるので注意してください.
1: ・LaTeXでの項目リストのマーク 2: - ダッシュ 3: - ダッシュ 4: - ダッシュ(LaTeXのネスト限界) 5: ・ビュレット 6: ・ビュレット 7: ・ビュレット(LaTeXのネスト限界)
- LaTeX での項目リストのマーク
- ダッシュ
- ダッシュ
- ダッシュ(LaTeXのネスト限界 )
- ビュレット
- ビュレット
- ビュレット(LaTeXのネスト限界 )
troff出力では,ビュレットリストとダッシュリストを区別して, ".ML"を使って出力します.リストのネストに応じて,ビュレットに対しては "\(bu", "・", "◇",ダッシュに対しては "-", "−" をリストマークとして使います.
列挙型のリストマークは,リストの順序を表す順序番号と, 括弧やドットを使った番号の修飾とで構成されます.
順序番号には数字,アルファベット,ローマ数字のいずれかを使うことができます. 番号の修飾には,括弧やドットを使った各種の形式が用意されています.
(".")
また,英文文書では,半角アルファベット +ドットの形式のリストも使うことはできません.
以下のような入力は列挙型リストとは解釈されません.
1: 不正なリストの例 2: 3: A] 大文字全角アルファベット 4: B] 大文字全角アルファベット 5: 6: (1) 括弧の修飾が異なる項目がある 7: 2) 括弧の修飾が異なる項目がある 8: 3. 括弧の修飾が異なる項目がある 9: 10: i) 行の先頭が 11: ii) 揃っていない 12: 13: a) リスト自身よりインデントされていない行がはさまる 14: ここで切れる 15: b) リスト自身よりインデントされていない行がはさまる
不正なリストの例
A] 大文字全角アルファベットB] 大文字全角アルファベット
(1) 括弧の修飾が異なる項目がある2) 括弧の修飾が異なる項目がある3. 括弧の修飾が異なる項目がある
i) 行の先頭が ii) 揃っていないa) リスト自身よりインデントされていない行がはさまる
ここで切れる
b) リスト自身よりインデントされていない行がはさまる
入力文書中のリストの番号は適当に付けておけば,LaTeX や troff で清書するとリナンバリングされます.ただし,リストの途中に1 または A 等,リストの先頭項目であることを示す項目が現れた場合, そこがリストの切れ目となり,それ以降は別のリストとなります.
リストの番号を全部"1"や"A"にすると,リストと判断されません.
1: 1) 番号を全部1にすると 2: 1) リストになりません 3: 4: 2. とりあえず,全部2にする 5: 2. これで,うまくいきます 6: 7: 1) リストの途中で 8: 2) 番号が1になると.... 9: 1) そこから 10: 2) 別のリストになります 11:
1) 番号を全部 1にすると1) リストになりません
- とりあえず,全部 2にする
- これで, うまくいきます
- リストの途中で
- 番号が1になると....
- そこから
- 別のリストになります
標準的な LaTeX の列挙型リスト出力環境である enumerate環境では, 順序番号の種類や修飾等の特徴を細かく指定することができません. plain2 は列挙型リストの特徴を, なるべく入力文書そのままの形で清書結果に反映させるように, リストマークを再定義して enumerate環境を使っています.
troff出力の場合には, 順序番号の種類によって数字リスト ".AL 1",アルファベットリスト ".AL i",ローマ数字リスト".AL I" を使い分け,".AL 1 ()" のように,n括弧の修飾も忠実に出力します.
1: a. 小文字半角アルファベット+半角ドット 2: b. 小文字半角アルファベット+半角ドット 3: [1] 半角数字+半角括弧 4: [2] 半角数字+半角括弧 5: (1) 全角数字+全角括弧 6: (2) 全角数字+全角括弧 7: I) 全角大文字ローマ数字+全角括弧 8: II) ローマ数字+全角括弧 9:
- 小文字半角アルファベット +半角ドット
- 小文字半角アルファベット +半角ドット
- 半角数字 +半角括弧
- 半角数字 +半角括弧
- 全角数字+全角括弧
- 全角数字+全角括弧
- 全角大文字ローマ数字 +全角括弧
- ローマ数字 +全角括弧
plain2 起動時に,"-nolistd" オプションを指定すると,LaTeX出力では入力文書中でのリスト番号や修飾の種類とは関係なく, 単純な enumerate 環境のリストにとして出力されます. troff出力の場合にも括弧修飾の指定が出力されなくなります.
次の出力は"-nolistd"オプションを使ったものです.
- 小文字半角アルファベット +半角ドット
- 小文字半角アルファベット +半角ドット
- 半角数字 +半角括弧
- 半角数字 +半角括弧
- 全角数字+全角括弧
- 全角数字+全角括弧
- 全角大文字ローマ数字 +全角括弧
- ローマ数字 +全角括弧
plain2 自身には,ネストの制限がありませんが,LaTeX では4レベル, troff では6レベルまでというネストの制限があります. レベルの制限を超えた場合 plain2 は警告メッセージを表示します.
1: 1) リストの多段ネスト 2: 1) レベル2 3: 1) レベル3 4: 1) レベル4 5: ここが LaTeXの限界 6: 2) レベル4-End 7: 2) レベル3-End 8: 2) レベル2-End 9: 2) レベル1-End
- リストの多段ネスト
- レベル 2
- レベル 3
- レベル 4
ここが LaTeXの限界
- レベル 4-End
- レベル 3-End
- レベル 2-End
- レベル 1-End
記述型リストは行頭のタイトル部分が,"[]"で囲まれているか, 最後に半角コロン":"が付けられていることで識別されます.(全角コロン ":"は使えません)記述型リストのタイトル部分の長さには制限(全角 19文字まで)があり,長すぎる場合にはリストになりません.
1: 記述型リストのタイトル部分の長さの制限について: 2: タイトルが長過ぎる場合,記述リストとは認識されません. 3: 4: 制限ぎりぎりに収まっているタイトル部分: 5: このリストのタイトルが制限ぎりぎりの長さです. 6: 7: 全角コロン: 全角のコロンではリストになりません. 8:
記述型リストのタイトル部分の長さの制限について :
タイトルが長過ぎる場合,記述リストとは認識されません .
- 制限ぎりぎりに収まっているタイトル部分: このリストのタイトルが制限ぎりぎりの長さです.
全角コロン: 全角のコロンではリストになりません.
記述リストを示すために使用したコロンや角括弧は, 清書済みのテキストにもそのまま出力されます. コロンや角括弧を省いた記述型リストを書く方法は用意されていません.
特別な場合として,以下の記号を先頭に付けたリストが, そのマークを使った記述型のリストとして出力されます.
"→←☆★▽▼△▲□■◇◆●◯○◎※ "
1: ★ 特殊記号を使ったリスト(記述型リストとして扱う) 2: ← 星印や丸印を使ったリストを書きたいという声に応えました 3: → これが記述リストの一部になっているのは実現上の都合です 4: ※ 質問禁止
- ★ 特殊記号を使ったリスト(記述型リストとして扱う )
- ← 星印や丸印を使ったリストを書きたいという声に応えました
- → これが記述リストの一部になっているのは実現上の都合です
- ※ 質問禁止
LaTeX出力では description環境を使ったリストとして出力します. troff 出力では ".VL 4 0" を使います.
項目型と列挙型のリストには,リストの題目と説明文が分かれた形のリストと, 説明文だけからなるリストとがあります
例えば,つぎに示すリストは, "troff" と "LaTeX" というリストの題目と,その説明文という構成になっています.
・troff UNIX標準の文書清書システム ・LaTeX Lamport による TeX の拡張
一方,次の例のリストは,二つの説明文だけからなります.
・本物のUNIXのドキュメントは troff で書かれています ・最近は LaTeX で書かれている本を 多くみかけます
plain2は,ビュレットや番号を持つリスト先頭の行と, その次の行の間のインデント付け,リスト先頭の行の長さから, 題目と説明文の切れ目の有無を判定しています.
まず,リストの2行目以降のインデント位置が, リスト先頭行のリストマーク開始位置と説明文開始位置の間にあれば, その行は,リスト本文に継続する行と判定されます. 先頭の位置がリスト本文開始位置よりもインデントされている場合は,リストに含まれる別の文章と判定されます.
A) リスト本文 ↑ ↑ │ リスト本文開始位置 リストマーク開始位置
例外として, リスト先頭行の長さがテキスト幅の半分より短いときには,無条件に切れ目があるものと判定されます.
また,一行だけからなるリストが連続する場合, リストの最後の行とその次の行は無条件に別々の文と判定されます.
1: ・つぎの行のインデントは,先頭行の本文と同じなので 2: 先頭行に連続するテキストです 3: ・つぎの行のインデントは,先頭行のリストマーク位置と同じなので 4: やはり先頭行に連続するテキストです 5: ・つぎの行は先頭行よりもインデントされているので 6: べつのテキストとなります("『いるので』の直後で"で改行される) 7: ・先頭の行が 8: 短いときはいずれにしても改行されます. 9: 10: 以下に挙げる名前をご存知だろうか 11: minix: mini size unix for PC 12: xinu: xinu is a reversed image of unix 13: gnu: gnu is not unix! 14: これらはどれもUNIXに対しての... 15:
- つぎの行のインデントは, 先頭行の本文と同じなので先頭行に連続するテキストです
- つぎの行のインデントは, 先頭行のリストマーク位置と同じなのでやはり先頭行に連続するテキストです
- つぎの行は先頭行よりもインデントされているので
べつのテキストとなります ("『いるので』の直後で"で改行される)
- 先頭の行が
短いときはいずれにしても改行されます.
以下に挙げる名前をご存知だろうか
- minix: mini size unix for PC
- xinu: xinu is a reversed image of unix
- gnu: gnu is not unix!
これらはどれもUNIXに対しての...
以下に,テーブルの例を示します.
1: 全く枠線のないテーブル 2: 地区 最寄り駅 時間 3: 本社 山の手線田町 0.2 4: 我孫子 常磐線天王台 1.5 5: 玉川 南部線向河原 1.0 6: 府中 京王線分倍河原 1.0 7: 8: 枠線の有るテーブル 9: +--------+---------------+-----+ 10: | 地区 |最寄り駅 |時間 | 11: +========+===============+=====+ 12: | 本社 |山の手線田町 | 0.2 | 13: | 我孫子 |常磐線天王台 | 1.5 | 14: | 玉川 |南部線向河原 | 1.0 | 15: | 府中 |京王線分倍河原 | 1.0 | 16: +--------+---------------+-----+ 17: 18: 交点の種類は任意 19: -------------------------------- 20: | 地区 |最寄り駅 |時間 | 21: |==============================| 22: | 本社 |山の手線田町 | 0.2 | 23: | 我孫子 |常磐線天王台 | 1.5 | 24: | 玉川 |南部線向河原 | 1.0 | 25: | 府中 |京王線分倍河原 | 1.0 | 26: |--------|---------------|-----| 27: 28: 両側に枠線がない.(明示的指定が必要) 29: [[T 30: ------------------------------ 31: 地区 |最寄り駅 |時間 32: ============================== 33: 本社 |山の手線田町 | 0.2 34: 我孫子 |常磐線天王台 | 1.5 35: 玉川 |南部線向河原 | 1.0 36: 府中 |京王線分倍河原 | 1.0 37: ------------------------------ 38: ]]T 39:
全く枠線のないテーブル
地区 最寄り駅 時間 本社 山の手線田町 0.2 我孫子 常磐線天王台 1.5 玉川 南部線向河原 1.0 府中 京王線分倍河原 1.0
枠線の有るテーブル
地区 最寄り駅 時間 本社
我孫子
玉川
府中山の手線田町
常磐線天王台
南部線向河原
京王線分倍河原0.2
1.5
1.0
1.0
交点の種類は任意
地区 最寄り駅 時間 本社
我孫子
玉川
府中山の手線田町
常磐線天王台
南部線向河原
京王線分倍河原0.2
1.5
1.0
1.0
両側に枠線がない.(明示的指定が必要 )
地区 最寄り駅 時間 本社
我孫子
玉川
府中山の手線田町
常磐線天王台
南部線向河原
京王線分倍河原0.2
1.5
1.0
1.0
テーブルは "-", "=", "|", "+" などの枠線を使って囲むのが基本ですが, 枠線のないテーブルを書くこともできます.ただし, 枠線のないテーブルに対しては厳しい判断基準が使われるので, 期待どおりにテーブルにならない場合は,オプションでテーブルの判定基準を調整するか, 明示的にテーブルと指定してください.
次に示す例では,標準の解析パラメータで plain2 を通すと,テーブルのつもりで書いた3行目から5行目が, 例示になってしまいます.
1: 次のように枠のないテーブルは, 2: 正しくテーブルと解釈されない場合があります. 3: 評価値を変える -table=60 4: 明示的に指定する "[[T"と"]]T" 5: そのまま我慢する 多分例示になる
% plain2 -tex -nopre table_adjust.pln \par 次のように枠のないテーブルは, 正しくテーブルと解釈されない場合があります. {\list{}{\leftmargin=8ex}\item[] \par 評価値を変える -table$=$60 明示的に指定する "[[T"と"]]T" そのまま我慢する 多分例示になる \endlist}
テーブル判定の基準値を 60 に変更すると, テーブルとして解釈されます.
% plain2 -table=60 -tex -nopre table_adjust.pln \par 次のように枠のないテーブルは, 正しくテーブルと解釈されない場合があります. ~\\ \mbox{}\begin{center} \begin{tabular}{ll} 評価値を変える & -table$=$60\\ 明示的に指定する & "$[$$[$T"と"$]$$]$T"\\ そのまま我慢する & 多分例示になる\\ \end{tabular}\\ \end{center}
テーブルが正しく判定されるためには, plain2 が入力文書からテーブルのブロックを正しく抜き出せるように, テーブルの前後に空白行をいれるか,テーブル全体をインデントしておく必要があります.
ただし,テーブルの両サイドが罫線で囲まれていないと, インデントや空白行を入れても, テーブルの領域を文書から切りだすことに失敗することがあります.このような場合には,"[[T","]]T" を使ってテーブルの領域を明示的に指定してしまった方が良いでしょう.
JIS罫線を使って書いたテーブルは,は線画として解釈されます. そのままでも,入力イメージに忠実に出力が得られますが,どうしても, LaTex や troff のテーブルとして出力させたい場合には, "-ktable"オプションを使います.線画の場合と同様, PC9800の罫線素片は使用できません.
また,"-ktable" オプションを指定した場合でも,下の例のように明示的にテーブルと指定しないと, 線画となってしまいますので注意してください.
1: これはテーブルになる. 2: [[T 3: ┌───┬─────┬┬───┬────┐ 4: │ 鯣 │ するめ ││ 鯰 │ なまず│ 5: ├───┼─────┼┼───┼────┤ 6: │ 鯡 │ にしん ││ 鰡 │ ぼら │ 7: └───┴─────┴┴───┴────┘ 8: ]]T 9: 10: これは線画になる.(ちょっと間延びする) 11: ┌───┬─────┬┬───┬────┐ 12: │ 鯣 │ するめ ││ 鯰 │ なまず│ 13: ├───┼─────┼┼───┼────┤ 14: │ 鯡 │ にしん ││ 鰡 │ ぼら │ 15: └───┴─────┴┴───┴────┘
これはテーブルになる.
鯣 するめ 鯰 なまず 鯡 にしん 鰡 ぼら
![]()
テーブル内の同じカラムに並ぶフィールドが全て右端または左端に揃っていれば, それぞれ右寄せ/左寄せのフォーマットで出力されます. また,全てのフィールドが揃っていなくとも, 同じカラムの中の半分以上のフィールドが右寄せまたは左寄せされていれば, そのカラムのディフォールトは右寄せ/左寄せとなります.
この条件に合わないフィールドはセンターリングされます.
1: +-------+-------+-------------+ 2: |右寄せ |左寄せ |センタリング | 3: +-------+-------+-------------+ 4: | 右 |左 | 中 | 5: |右右右 |左左左 | 中中 | 6: | 右右 |左 | 中中中中 | 7: +-------+-------+-------------+ 8: 9: 10: +----------------+------------+----------------+------------+ 11: |これも右寄せです|これは左寄せ| 右寄 | 左寄 | 12: +----------------+------------+----------------+------------+ 13: | 右 | 左左左 | 右 | 左左左 | 14: | 右右 | 左 | 右右 | 左 | 15: | 右右右 | 左左 | 右右右 | 左左 | 16: +----------------+------------+----------------+------------+ 17:
右寄せ 左寄せ センタリング 右
右右右
右右左
左左左
左中
中中
中中中中
これも右寄せです これは左寄せ 右寄 左寄 右
右右
右右右左左左
左
左左右
右右
右右右左左左
左
左左
テーブルが正しく解釈されるためには,罫線の行を含めて最低 3行のサイズが必要です. 罫線を使わずに,空白で区切られたテーブルの場合は,最低横2項目・縦 2行のサイズを必要とします.
テーブルの一行の長さは最大1024文字に制限されています.また, テーブルのカラム数も最大32に制限されています. (そんなに大きなテーブルを書くことがあるとは思えませんが)
plain2 は,極端に形が複雑なテーブルでも, 解析することができます.ただし,LaTeX出力では,次の例の7行目, 12行目のように,同じ行に文字フィールドと横線が書かれていると, 余分な空白や線のはみだしが生じることがあります.troff出力にはこのような問題はありません.
1: ----------------------------------------- 2: |テーブル出力| | 3: | の ----------------------------------- 4: |限界 | |テーブル| 線画 | 例示 | 5: ========================================= 6: | La | | | | | 7: | TeX |---------------------------------- 8: | | | LaTeXのテーブル出力では | 9: | | | 線がはみ出す問題がある | 10: |---------------------------------------- 11: | | | | | | 12: |troff|---------------------------------- 13: | | |troffのテーブルは問題無い | 14: |----------------------------------------
テーブル出力 の
限界テーブル 線画 例示 La
TeX
LaTeXのテーブル出力では
線がはみ出す問題がある
troff
troffのテーブルは問題無い
テーブルの枠線に使っている文字をテーブルのフィールドとして書くと出力が乱れることがあります.縦線"|"は,必ず枠線と判別されてしまうので,フィールド中に縦線"|"を置くことはできません.
また,フィールドに"-"が含まれていると, "-"が横の枠線と誤認されることがあります.
1: +--------+----------------+------+ 2: | 文字 | 読み |和名 | 3: +========+================+======+ 4: | * | アステリスク |星 | 5: +--------+----------------+------+ 6: | | | バー,パイプ |縦棒 | 7: +--------+----------------+------+ 8: | ~ | チルダ |---- | 9: +--------+----------------+------+ 10: | ^ | ハット | --- | 11: +--------+----------------+------+
文字 読み 和名 * アステリスク 星 バー,パイプ 縦棒 ~ チルダ ^ ハット ---
LaTeX 出力では tabular 環境を使ってテーブルを出力します. テーブルがテキスト幅に対して,ほぼ中央に位置していれば,テーブル全体を center環境で囲って出力します.それ以外の場合,テーブルは左端に出力されます.
plain2 起動時に "-ref" オプションを指定すると, テーブルは"\begin{table}[htbl]" で囲われ,必ずセンタリングして出力されます. また,表題を"\caption{}"と"\label{}"の両方に出力します. ( 図表・セクションの参照 章参照 )
troff 出力では ".TS",".TE"で囲われた tbl の形式で出力されます. さらに,テーブル全体を ".DS", ".DE" で囲みテーブルに適当なインデントが付けられます.テーブルがほぼ中央に位置していれば, ".DS CB"によりセンタリングされます.
入力文書から切り出されたブロック中の図形文字の割合などの基準が以下の条件を全て満たすと,その領域は線画と判断されます.
- 図形文字を含む行の数 > 行数÷3
- 図形文字の数/行数 > 1
- 図形文字の数/行数 + (空白数/文字数)×8 > 1.5
図形文字として認識される文字を表線画で認識される図形文字 に示します. 線画として使える文字は,全て全角文字です.
表 5.線画で認識される図形文字種別 | 図形文字 | 備考 |
---|---|---|
罫線素片 | ─ ━ │ ┃ ┌ ┏ ┐ ┓ └ ┗ ┘ ┛ ├ ┝ ┠ ┣ ┤ ┥ ┨ ┫ ┬ ┳ ┯ ┰ ┴ ┻ ┷ ┸ ┼ ┿ ╂ ╋ | PC9800の罫線文字は 使えません |
矢印 | ← → ↑ ↓ | |
斜線 | / \ × | |
点線 | … : | 縦点線は全角のコロン |
極太線 | = ‖ | 二重線で代用 |
楕円 | _  ̄ | 下線/上線で代用 |
線画として書いたつもりの領域が,期待どおり線画と判定されない場合, "[[P","]]P" を使って線画領域を明示的に指定してください.
JIS罫線素片では太線と細線の交差を完全に表現することができません. また,点線も用意されておらず,矢印も一種類の太さしかありません. 限られた罫線文字を使って美しい出力を得るため,plain2 は線画に対して以下の拡張を行っています.
1: ←──→ ↑↑↑↑ 2: ←━━→ │┃‖: 3: ←==→ │┃‖: 4: ←……→ ↓↓↓↓ 5: 太線・点線と矢印の接続 6: 7: ┏━━┓ ‖ ┃ : 8: ┃ ┃ ‖ ┃ : 9: ┌==┼━━┼……┐ ───┼─╂─┼─── 10: ‖ ‖ : : ‖ ┃ : 11: └==┴──┴……┘ ‖ ┃ : 12: 細線と細線の交差部分の表現
1: / 2: /── /→ /→ 3: /── / / / 4: 接続しない 接続する 接続する 接続しない 5: 斜線一文字 斜線連続 線の端 線の途中 6: 7: ───── ───── │ │ 8: / / /│ /│ 9: / / 延長 │ / │ 10: 延長する 延長する しない│ 延長│ 11: (半角ずれ) 斜線一文字 する 12: 13: 14: / \ / ┌─┐ 15: / \ / × │×│ 16: × × └─┘ 17: 斜線の矢印 二つの矢印 これは矢印ではない
1: ────\ ラウンドショルダ/─\ /─\ 2: │ │ぷ│ │れ│ 3: /─\ │ /━\ \─/━\─/ 4: │細│ │ ┃太┃ ┃2┃ 5: \─/ │ \━/ /─\━/─\ 6: │ │い│ │ん│ 7: \───────────\─/ \─/ 8:
1: 2: ┌ ̄ ̄ ̄ ̄┐ ┌ ̄ ̄┐ 3: │ │ │ │ ┌ ̄┐ 4: │ディスク│ └__┘ └_┘ 5: │ │ 小ディスク 6: └____┘
上線は完全な楕円,下線は下半分だけの楕円です. ただし,troff出力ではディスク下側も完全な楕円になります.また, LaTeX出力では楕円の代わりに折れ線で出力します.
テキストエディタ上では,文字の幅は全角:半角=2:1 の固定比率ですが, 清書系の出力では文字ごとに幅の異なるプロポーショナルフォントが使われます. plain2は文字列が隣接する線と交錯しないように, プロポーショナルフォントでの文字列の幅を計算し, 適切な大きさのフォントを選択します.
また,図全体の大きさも A4版の紙に収まる大きさに調整します.
1: ┌───────┐ 2: │ABCDEFGABC │←枠に余裕のある場合 3: │あいうえお │ 4: │abcdefghij │ 5: └───────┘ 6: ┌─────┐ 7: │ABCDEFGABC│←──サイズを小さくしないと 8: │あいうえお│ 枠に収まらない 9: │abcdefghij│ 10: └─────┘
1: ┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐ 2: │幅広線画││幅広線画││幅広線画││幅広線画││幅広線画││幅広線画││幅広線画│ 3: └────┘└────┘└────┘└────┘└────┘└────┘└────┘ 4: 5: ┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐ 6: │幅広線画││幅広線画││幅広線画││幅広線画││幅広線画││幅広線画││幅広線画││幅広線画│ 7: └────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘ 8: 9: ┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐┌────┐ 10: │幅広線画││幅広線画││幅広線画││幅広線画││幅広線画││幅広線画││幅広線画││幅広線画││幅広線画│ 11: └────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘└────┘
このテキストを清書した結果は次のようになります. この例は幅が広すぎるので,全体を枠で囲うのを省略しています.
LaTeXでは picture 環境を使って線画を出力します.LaTeX には "\oval" という楕円を書く機能がありますが,角を円弧にした長方形の"\oval" は使わず,折れ線を使って楕円を表現しています.折れ線の形は, 楕円の大きさによって変化します.
troff では ".PS",".PE" を使った pic の機能で出力します.ディスクの絵に使う下半分の楕円が,troff 表示では完全な楕円として表示されてしまうという問題があります.
入力文書から切り出されたブロックがつぎの条件を満たすと,例示と判定されます.
- 空白を多く含む
簡単な図のような場合
- 短い行がつづく
プログラム例など
- 半角アルファベット文字以外を含まない行が多い
このルールは英文の入力文書に対しては無効です
1: ・プログラムの引用 2: 3: uchar * 4: listSecBody(textp) 5: struct text *textp; 6: { 7: uchar *s; 8: s = textp->body + textp->indent + textp->headLen; 9: while (*s != '\0') { 10: if (*s != ' ') 11: break; 12: s++; 13: } 14: return s; 15: } 16: 17: ・図版 18: 19: XXNetへ 20: | 21: +---+---+ +-------+ 22: | CISCO | | CISCO | 23: +---+---+ +---+---+ 24: | | 25: ---+------+-------+----------------+-------+-------+---- 123.45.67 26: | | | | 27: +----++ +---+----+ +----+---+ +----+---+ 28: |ns-in| |○host-A| |●host-B| |○host-C| 29: +-----+ +--------+ +--------+ +--------+ 30:
plain2 は各種のパラメータを使い, 例示を判定しますが,例示の判定は微妙な問題であり,どうしても, 思い通りにならない場合あります.
次の例では, 例示となってほしいプログラム実行例の部分が,各行が比較的の長いために,平文となってしまいます.
1: 以下の部分は例示と解釈してもらいたいが.. 2: % cd plain2/src 3: % make 4: cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c plain2.c 5: cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c readfile.c 6: cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c miscutil.c 7: cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c section.c 8: cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c example.c 9: cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c list.c 10: cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c plaintxt.c 11: cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c spacing.c 12: cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c headfoot.c 13: cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c hint.c 14: cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c justify.c 15: cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c texout.c
以下の部分は例示と解釈してもらいたいが..
% cd plain2/src % make cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c plain2.c cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c readfile.c cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c miscutil.c cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c section.c cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c example.c cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c list.c cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c plaintxt.c cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c spacing.c cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c headfoot.c cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c hint.c cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c justify.c cc -DKANJI -DPICTURE -DBSD -DDEBUG -target sun4 -c texout.c
例示判定の基準値を 60 に変更すると, うまく例示として解釈されます.
テーブルや線画の場合と同様, "[[E","]]E" を使って明示的に例示領域を指定する方法もあります.
LaTeX では verbatim 環境を使って出力します.さらに,verbatim 環境の中で行間のスペースを減らしています.
troff では CW (Constant Width)フォント,行詰めなし(".nf")で出力します. LaTeX 出力と同様に行間のスペースを減らしています.
次の条件を満たすブロックは引用と判定されます.引用の出力は例示と同じです.
- インデントされていないこと
- 先頭の2文字が">>"(半角 )であること
- 先頭の文字が">"または":"(半角)で, かつ二文字目も
同じ行が 3行以上つづく
>> 内田です. >> >> 上流ゲートウェイの障害などのため,ニュース/メールの >> トラフィックが滞っているようで,すっかり世の中から >> 取り残されてしまいました.
行の先頭に"^L"がある行は("^"と"L"ではなく,CTRL-L一文字です ),改ページ指定とみなされ,行の残りの部分は無視されます.
plain2 は改ページ指定の行を,空白行とみなして解析します.従って, セクションタイトルの直前に"^L"の行を置くこともできます.
4行以下の空白行は,同じ数の空白行として出力しますが, 空白行が4行を越えて続く場合には, 相当する長さの空白ブロックとして出力します.
plain2 起動時に "-nospace" オプションを指定すると, 4 行以下の空白行に対応する改行コードの出力を停止しますが, 4行を越える空白ブロックの出力は変わりません.
1: 改行は次のように CTRL-L で示します. 2: ^L 3: 2. セクション 4: 5: 改ページを指定した行は,文書解析の上では空行とみなされます. 6: 7: 8: 4行以下の空白行は,相当する数の改行として出力されます. 9: 10: 11: 12: この下に,貼り込みのための空白を用意します. 13: 14: 15: 16: 17: 18: 4行を越える空白ブロックは,"-nospace"を付けても, 19: 空白として清書されます.
% plain2 -tex -nopre space_intro.pln \par 改行は次のように CTRL-L で示します. \newpage \section{セクション} \medskip \par 改ページを指定した行は,文書解析の上では空行とみなされます. \medskip \medskip \par 4行以下の空白行は,相当する数の改行として出力されます. \medskip \medskip \medskip \par この下に,貼り込みのための空白を用意します. ~\\ \begin{picture}(100,75) \end{picture}\\ \par 4行を越える空白ブロックは,"-nospace"を付けても, 空白として清書されます.
LaTeX では改ページを "\newline",空白は picture 環境を使って出力します. troff では改ページを ".bp",空白は".sp"を使って出力します.
4行以下の空白行は,tex では "\medskip",troff では単なる改行として出力します. 4行を越える空白ブロックはは,tex では "\picture" 環境, troff では ".DS",".DE" を使って出力します.
plain2 は,テキストのインデンテーション,右寄せなどの, 入力文書から抜き出されたアラインメント情報を,忠実に出力に反映させます.
インデンテーションが付けられたテキストは別のテキストブロックであると判定されます.ただし,半角4文字未満のインデンテーションは出力には反映されません.出力にインデンテーションを反映させるためには半角4文字以上のインデンテーションが必要です.
1: べた書き入力のオリジナルアイデアでは, 2: 複雑なフォーマット指定を必要とする 3: 文書は最初からターゲットとしないで, 4: べた書きで書ける範囲の文書を完全に 5: べた書きで済ませるという使い方 6: を期待していた. 7: 社内利用者を対象に実際に利用してもらっ 8: たところ, 9: マークアップとべた書きの組み合 10: わせ,入手した文書のTeX/troff 11: 化で使われるケースも多かった.
べた書き入力のオリジナルアイデアでは,
複雑なフォーマット指定を必要とする文書は最初からターゲットとしないで, べた書きで書ける範囲の文書を完全に
べた書きで済ませるという使い方を期待していた.
社内利用者を対象に実際に利用してもらったところ,
マークアップとべた書きの組み合わせ,入手した文書の TeX/troff化で使われるケースも多かった.
次の条件を満たすテキスト領域はセンタリングと判定されます.
- テキスト幅の 1/8の領域が空いている
- テキスト幅の 1/4以上インデントされている
- 行の先頭がばらばら
また,次の条件を満たすテキスト領域は右端と判定されます.
- テキスト幅の半分以上インデントされている.
- テキストの右端がテキスト幅の 4/5を超えている
1: 画面に表示されたイメージから印字結果を簡単に予想でき 2: ることから,べた書き入力による清書系はマークアップと 3: WYSIWIGの中間的特徴を持つと言える. 4: 5: センタリングは行頭が 6: ばらばらで,適当な行の長さがある場合 7: に限って,稀に発生します. 8: 9: べた書き入力を用いることで,文書作成効率の向上, 10: オンラインでの文書交換の改善が実現できる. 11: 12: 以上 13: おしまい
画面に表示されたイメージから印字結果を簡単に予想できることから, べた書き入力による清書系はマークアップとWYSIWIGの中間的特徴を持つと言える.
センタリングは行頭が
ばらばらで, 適当な行の長さがある場合
に限って,稀に発生します.
べた書き入力を用いることで,文書作成効率の向上, オンラインでの文書交換の改善が実現できる.
以上
おしまい
右寄せやセンタリングと判定されなくても, 適当なインデンテーション付けが行われるので,ほとんどの場合, 期待と大差ない出力が得られます.
LaTeX ではセンタリングを center 環境,右寄せを flushright で出力します.LaTeX の標準的な機能では, テキストの範囲をインデントさせる機能がないので,ブロック全体を list 環境で囲い,その中で leftmargin を調整する方法を用いています.
troff ではセンタリングを".ce 9999", ".ce 0", 右寄せを".ad r",".ad b" で出力します. インデントには ".in" を使います.
図やテーブルに付けられたタイトルを識別し,図題, 表題専用のレイアウトで出力します.図表のタイトルは, 表図題・表題のパターン に示すキーワードと, 図表の番号,そしてタイトルというパターンで書きます.
表 6.図題・表題のパターン図のタイトル | 表のタイトル |
---|---|
図 Figure Fig. fig. | 表 Table |
図表の番号には,半角または全角の数字が使えます. 数字には,半角または全角のドットを付けることもできます.
図題と表題は,それぞれリナンバリングして出力されます. LaTeX出力を選択した場合, 図表のタイトルを使って図表番号を参照することができます.( 図表・セクションの参照 章参照 )
インデントされていない行は,図表題とはなりません. 逆に,普通の文章中で,"図1."のようなパターンが行の先頭に表れると, 図表題と誤解されることがあります.このような場合, 改行位置を変えるなどの方法で対処してください.
1: 表1. 行の先頭から始まってはならない. 2: +------------------------+ 3: | 表題 | 図題 | 4: +------------------------+ 5: | 表,Table | 図,Figure | 6: +------------------------+ 7: 8: そのかわり,インデントされた行の先頭に 9: 図表題と解釈されるパターンが 10: 図1. に示すように.などと表れると, 11: 誤解釈されてしまします.
表1. 行の先頭から始まってはならない.
表題 図題 表,Table 図,Figure
そのかわり, インデントされた行の先頭に図表題と解釈されるパターンが
図 1.に示すように.などと表れると,
誤解釈されてしまします.
LaTeX 出力では "-ref" オプションを使用した場合, "\caption{}"を使って出力します.
"-ref" オプションを指定しない場合,LaTeX 出力と troff 出力共に, "図xx.", "表xx."をボルドフォントで出力します.ただし, 入力文書が英文である場合は,"Figure xx.","Table xx."として出力します.
セクションタイトルの拡張として,Appendix を扱うことができます. Appendix 行は,その行が Appendix であることを示す, 表Appendix のパターン のパターンとAppendix 番号,そして見だしからなります.
普通のテキストと Appendix 行が混同される危険を避けるため,Appendix 行の前後は必ず空白行である必要あります.
表 7.Appendixのパターン付録 Appendix APPENDIX Appendix APPENDIX |
Appendix 番号には列挙型リスト同様,アルファベット,ローマ数字, 数字のいずれでも使うことができます. 半角/全角,数字のあとのドットの有無は自由です.
1: Appendix A アペンディクスの書き方 2: 3: 付録 IV べた書き文書作例 4: 5: APPENDIX 7 漢字コード表 6:
LaTeX 出力では "\appendix" を使っています.Appendix のタイトル自体はセクションタイトルと同様,"\section{}"で出力します.
troff 出力の場合は,対応する mm マクロの機能がないので,単純に "Appendix見だし" というタイトルをボルドフォントで出力することで対応しています.
plain2は解析結果を LaTeX と troff のいずれかの形式で出力します. また,セクション,リスト,図表のリナンバリングだけを行って, べた書きのまま出力する機能も備えています.
テーブル,線画,リスト出力等は LaTeX , troff それぞれの出力に固定です.
LaTeX 出力は jarticle スタイルを使っています.
\documentstyle[]{jarticle}
jarticle以外のスタイルファイルを使いたい場合, またポイントサイズを変えたい場合などは,次のいずれかの方法を使います.
% plain2 -tstyle=epsf \documentstyle[epsf]{jarticle}
文書タイトルを書くことができなくなる等のデメリットがあるので, この方法はあまり勧めません.
jbookスタイルなどを使うためには,章番号の付け方にも変更が必要です. jbookスタイルを使うための,出力カスタマイズの方法を付録に示しておきます.
troff 出力は,標準で mm マクロを使った出力を生成します.ms マクロを選択することも可能ですが,plain2 の機能を十分に生かすためには mmマクロ の使用をお勧めします.
文書ファイルに何度も手を加えているうちに, 文書中のセクション番号や表番号などが, 次のようにばらばらになってしまうことがあります.
1: 1. ようこそ plain2 の世界へ 2: TeXなんて書けない,読めない. 3: 4: 2.3. リストのリナンバリング 5: 2) 項目型リスト 6: 2) 列挙型リスト 7: B] 数字 8: D] アルファベット 9: C] ローマ数字 10: 2) 記述型リスト 11: 12: 3.1. 表題のリナンバリング 13: 表3. へんとつくり 14: ----------- 15: | 辺 | 旁 | 16: =========== 17: | 金 | 錫 | 18: ----------- 19: 20: 3. おわりに 21: 表2. 字の読み 22: ----------------- 23: | 字 | 読み | 24: ================| 25: | 錫 | すず | 26: -----------------
"-renum" オプションを使用すると,べた書きのまま,リナンバー処理のみを行なった結果を出力します.リナンバの対象は,リスト番号,セクション番号,そして,図表番号です.
前の文書を "plain2 -renum" に通すと,次のように, きちんとリンナンバリングされたべた書き文書にすることができます.
1: 1. ようこそ plain2 の世界へ 2: TeXなんて書けない,読めない. 3: 4: 1.1. リストのリナンバリング 5: 1) 項目型リスト 6: 2) 列挙型リスト 7: A] 数字 8: B] アルファベット 9: C] ローマ数字 10: 3) 記述型リスト 11: 12: 1.2. 表題のリナンバリング 13: 表 1. へんとつくり 14: ----------- 15: | 辺 | 旁 | 16: =========== 17: | 金 | 錫 | 18: ----------- 19: 20: 2. おわりに 21: 表 2. 字の読み 22: ----------------- 23: | 字 | 読み | 24: ================| 25: | 錫 | すず | 26: -----------------
ただし,plain2 を通すと, 入力中のタブおよび全角スペースは全て半角スペースに置き換えられます. 必要ならば,Emacs の tabify や UNIX の unexpand コマンドで, 再度タブに置き換えてください.
% plain2 -reum foo.pln | unexpand > foo_renum.pln
plain2 は LaTeX出力 troff出力のそれぞれについて, バックスラッシュなどの特殊文字をクォートする方法を2種類用意しています.
LaTeX出力では,次のように, 通常の文章の中で使うクォートの形式と"\section{}"のようなマクロ内で使うクォートの形式があります.
表 8.LaTeX出力での特殊文字クォート文字 | 通常 | マクロ内 |
---|---|---|
- = | < > # $ % & * ~ _ ^ { } \ | $-$ $=$ $|$ $<$ $>$ \# \$ \% \& * \verb+~+ \_ \verb+^+ \{ \} $\backslash$ | ← ← ← ← ← ← ← ← ← $*$ {\tt \symbol{126}} ← {\tt \symbol{94}} ← ← ← |
troff 出力にも,通常の文書の中で使うクォートと,".H" のようなマクロ内で使うクォートの形式があります.
表 9.troff出力での特殊文字クォート文字 | 通常 | マクロ内 |
---|---|---|
\ ' " . | \e \' そのまま &\. (行頭のみ) | ← ← \" そのまま |
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 に通した結果を示しておきます.
1: 1. はじめに 2: 3: セクション番号のない出力 4: 5: 1.1. 入力は番号付き 6: 7: べた書き入力の方は,セクション識別のための 8: セクション番号がhtuyouです. 9: 10: 1.2. 出力は番号なし 11: 12: 清書された出力からは番号が消えます
% plain2 -fsupsnum -tex -nopre table_adjust.pln \par 次のように枠のないテーブルは, 正しくテーブルと解釈されない場合があります. {\list{}{\leftmargin=8ex}\item[] \par 評価値を変える -table$=$60 明示的に指定する "[[T"と"]]T" そのまま我慢する 多分例示になる \endlist}
これを清書すると,次のようにセクション番号のない出力が得られます.
はじめに
セクション番号のない出力
入力は番号付き
べた書き入力の方は, セクション識別のためのセクション番号がhtuyouです.
出力は番号なし
清書された出力からは番号が消えます
以下のディレクトリに置かれたカスタマイズファイルが自動的に検索されます.
- カレントディレクトリ
- 環境変数 PLAIN2_LIB に設定されたパス(単一のディレクトリのみ指定可能 )
- plain2 インストール時に指定されたディフォールトパス(通常は /usr/local/lib/plain2)
現在の版では, 複数の定義ファイルを同時に利用することはできません.
表ユーザ定義可能な出力形式 にカスタマイズ可能な出力形式の名称と, その意味,引数の数を挙げます.ここに挙げた以外のリスト,テーブル, 線画などの出力は変更することができません.
表 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 .. SECTION_6 | セクション(第一レベル) .. セクション(第五レベル) | 1 .. 1 | 文字列 .. 文字列 | セクションタイトル .. セクションタイトル |
SETSEC | セクション(一括) | 1 2 | 数 数 | セクションの深さ セクション番号 |
SETSEC_1 .. SETSEC_6 | セクション(第一レベル) .. セクション(第五レベル) | 1 .. 1 | 数 .. 数 | セクション番号 .. セクション番号 |
APDX_BEGIN | 付録の始め | - | - | |
APPENDIX | 付録 | 1 | 文字列 | セクションタイトル |
TITLE | タイトル | 1 2 3 4 5 6 7 8 9 | 複数行 複数行 複数行 複数行 複数行 複数行 複数行 複数行 複数行 | 題名(引数1) 文書番号(引数2) 日付(引数3) 所属部門(引数4) 配付先(引数5) 著者(引数6) 連絡先(引数7) (引数8) (引数9) |
章番号の定義には二つの方式があります.一つはセクションの深さごとに, 別々の定義を利用する SECTION_X の形式,もう一つは, セクションの深さと章題を引数にする SECTION 形式です.
両方が定義されている場合には,SECTION_X の定義が優先的に利用されます.
出力形式定義の引数は表出力定義の引数フォーマット に示す形式で指定します.
表 11.出力定義の引数フォーマット記法 | 対応する形式 |
---|---|
#n | 数字 |
$n @n | 通常のクォート マクロ内用クォート |
&n | 複数行 |
SECTION_1 を単に "@1" または "$1" と定義したとき, どのように変換されて出力されるかを表出力変換の例 に示しておきます.
表 12.出力変換の例入力 | 1. plain2 ~ べた書き - 入門 | |
---|---|---|
LaTeX 出力 | "@1" | plain2 \verb+~+ "べた書き" $-$ 入門 |
"$1" | plain2 {\tt \symbol{126}} "べた書き" $-$ 入門 | |
troff 出力 | "@1" | plain2 ~ \"べた書き\" - 入門 |
"$1" | plain2 ~ "べた書き" - 入門 |
plain2 内部に組み込まれている標準出力フォーマットを表mmマクロ roff標準フォーマット , 表msマクロ roff標準フォーマットの差分 , 表LaTeX 標準フォーマット に示します.
ここに示した以外の出力フォーマットは変更できません.
表 13.mmマクロroff標準フォーマット機能名 | 定義 |
---|---|
DOC_BEGIN DOC_END PLAIN_BEGIN PLAIN_END EXAM_BEGIN EXAM_END APPENDIX BLANK PAGE NEWLINE SPACE CENTER_BEGIN CENTER_END RIGHT_BEGIN RIGHT_END INDENT INDENT0 FOOTN_BEGIN FOOTN_END BOLD_BEGIN BOLD_END SECTION SETSEC TITLE | ".nr Ls 0\n.S #1 #1+2\n" "" ".P\n" "" ".ft CW\n.vs -2\n.nf\n" ".fi\n.vs +2\n.ft\n" "\\fBAppendix $1\\fP\n" "\n" ".bp\n" ".br\n" ".DS I\n.vs 13\n.sp #1\n.vs\n.DE\n" ".ce 9999\n" ".ce 0\n" ".ad r\n" ".ad b\n" ".in #1/2u\n" ".in 0\n" "\\*F\n.FS\n" ".FE\n" "\\fB" "\\fP" ".H #1 \"@2\"\n" ".nr H#1 #2\n" "&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" |
機能名 | 定義 |
---|---|
DOC_BEGIN PLAIN_BEGIN SECTION SECTION_1 | ".nr PI 2n\n.ps #1\n.vs #1+2\n" ".PP\n" ".NH #1\n @2\n" ".NH\n @1\n" |
機能名 | 定義 |
---|---|
DOC_BEGIN DOC_END PLAIN_BEGIN PLAIN_END EXAM_BEGIN EXAM_END APDX_BEGIN APPENDIX BLANK PAGE NEWLINE SPACE CENTER_BEGIN CENTER_END RIGHT_BEGIN RIGHT_END INDENT INDENT0 FOOTN_BEGIN FOOTN_END REFER_BEGIN REFER_END BOLD_BEGIN BOLD_END INDEX_BEGIN INDEX_END SECTION_1 SECTION_2 SECTION_3 SECTION_4 SECTION_5 SECTION_6 SETSEC_1 SETSEC_2 SETSEC_3 SETSEC_4 SETSEC_5 TITLE | "\\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" "\\end{document}\n" "\\par\n" "" "\\baselineskip=#1pt\n\\begin{verbatim}\n" "\\end{verbatim}\n" "\\appendix\n" "\\section{@1}\n" "\\medskip\n" "\\newpage\n" "\\\\\n" "~\\\\\n\\begin{picture}(100,#1*15)\n\ \\end{picture}\\\\\n" "\\begin{center}\n" "\\end{center}\n" "\\begin{flushright}\n" "\\end{flushright}\n" "{\\list{}{\\leftmargin=#1ex}\\item[]\n" "\\endlist}\n" "\\footnote{" "}\n" "\\ref{" "}\n" "{\\bf\\dg " "}\n" "\\index{ "}\n" "\n\\section{@1}\n" "\n\\subsection{@1}\n" "\n\\subsubsection{@1}\n" "\n\\paragraph{@1}~\\\\\n" "\n\\subparagraph{@1}~\\\\\n" "\n\\subparagraph{@1}~\\\\\n" "\n\\setcounter{section}{#1}\n", "\n\\setcounter{subsection}{#1}\n", "\n\\setcounter{subsubsection}{#1}\n", "\n\\setcounter{paragraph}{#1}\n", "\n\\setcounter{subparagraph}{#1}\n", "\\title{\n&1\\\\\n}\n\\author{\n&6\\\\\n&4\n} \n\\date{\n&3}\n\\maketitle\n" |
機能名 | 定義 |
---|---|
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" |
LaTeX 出力を選択した場合に限り,図表の参照機能(LaTeXの \ref)を利用することができます.
図表を参照するためには,次の例のように, 図表の見だしに使った文字列全部をコピーして,インラインの"x"機能で囲みます. この文書を"-ref" オプションを付けた plain2 に通すと,"\ref" と "\label" を使って図表の参照を行うLaTeX文書が出力されます.
1: 1.1. セクションの参照 2: 3: セクションタイトルを使って参照します.(((x図表の参照))章) 4: 5: 1.2. 図表の参照 6: 7: 最近の推移を表((xファイル転送利用量の増大))に示します. 8: 9: 表3. ファイル転送利用量の増大 10: -------------------------------------------------------- 11: | 項目 | 91年9月 | 92年6月 | 12: ======================================================== 13: | 転送ファイル数 | 660216 | 1375872 | 14: | 転送バイト数 | 76306048821 |165355265839 | 15: | 接続ホスト数 | 16218 | 32788 | 16: | 平均転送ファイル数/日 | 22007 | 45862 | 17: | 平均転送バイト数/日 | 2543534961 | 5511842195 | 18: -------------------------------------------------------- 19: 20: 図((x丸みをつけた角))のような表現も可能です. 21: 22: /──\ /──\ /──\ 23: │端末│━━━→│PC│━━━→│WS│━……→? 24: \──/ \──/ \──/ 25: 図2. 丸みをつけた角 26: 27:
べた書き文書以外にLaTeX の機能を使わなければならない代表的な例として, tgif+ で書いた絵を文書中に取り込む方法を説明します.
1: 1. tgif+ の利用 2: 3: tgif+ で書いた絵を次のようにして 4: べた書き文書に取り込みます. 5: 6: [[MT 7: \begin{figure}[h] 8: \begin{center} 9: \epsfile{file=tgif_fig.eps} 10: \end{center} 11: \end{figure} 12: ]]M 13: 14: うまくできたでしょうか?
% plain2 -tex -tstyle=epsf tgif_doc.pln > tgif_doc.tex
% jlatex tgif_doc.tex ... ...
% dvi2ps tgif_doc.tex > tgif_doc.ps [/usr/local/lib/dvi2ps/tex.ps] Prescanning . Reading font info ........... [1 [tgif_fig.eps]]
このファイルを PostScript プリンタに出力すると, 次のように,tgif+での絵がはいった文書ができます.
標準の plain2 には,文書のヘッダ・フッタを指定する機能は含まれていませんが, 出力カスタマイズ機能を利用して,タイトル部分に書かれた,題名, 日付等を使ったへッダとフッタを付けることができます.
まず,付録Bのヘッダ・フッタ定義ファイル"header.p2"を用意します. この定義を使って次の文書を plain2 に通すと,ヘッダに,題名と日付, フッタに,章番号,章題,ページ番号が入った出力が得られます.
1: 『plain2ユーザガイド』 2: by A.Uchida 3: フリーソフトウェア研究所 4: 92/12 5: 6: 1. はじめに 7: ・ 8: ・ 9: 10: 7. 高度な使い方 11:
LaTeX用とtroff用両方のヘッダ・フッタ定義を付録に載せてありますので, 各人の好みに合わせて変更して利用してください.
plain2 のソースファイルのいくつかは, EUC漢字コードの日本語ストリング定数を使っています. 入出力に使用する漢字コードは,コマンドラインオプションによって切り替えて利用することができますが,MS-DOS のように,シフトJIS を標準の漢字コードとしている環境でのプログラムの再編集/コンパイルを容易にするため,内部漢字コードをシフトJIS に変更してコンパイルすることもできます.以下に,この手順を示します.
- 全てのファイルの漢字コードをシフトJIS に変換する
- plain2.h に定義されている INTERNAL_CODE を CODE_SJIS に設定する
ただし,シフトJIS 環境を選択した場合,入出力は シフト JIS に固定され,JISコード,EUCコードを選択することはできなくなります.
plain2 は,比較的機種依存性が少いことが確認されていますが, OSの種類によって,多少の変更が必要な場合もあります.System V のマシンでコンパイルする際には Makefile においてCFLAGS の -DBSDフラグを削除してください.
- 変更前:
CFLAGS= -DBSD -DDEBUG- 変更後:
CFLAGS= -DDEBUG
plain2 は NTT版の TeX 環境を標準としています. ASCII版 TeX 環境で利用するためには,plain2.h の NTT_TEX フラグをundef してください.
#define NTT_TEX /* NTT jlatex */
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)
# # 題名,日付,章番号を使ったヘッダ・フッタ(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"
troffヘッダ・フッタ (header_t.p2)
# # 題名,日付,章番号を使ったヘッダ・フッタ(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"