English version is also available.

PADスタイルファイルの使い方

倉持 聡
satoshi@ueda.info.waseda.ac.jp

1996年 7月17日


目次

1. 書式
1.1. 描画コマンド
1.2. ボックスコマンド
1.3. スタイルパラメータ
2. 補注
3. 例
4. エラー
4.1. pad.styに起因するエラー
4.2. pad2tex使用時の不具合
5. 問題点
6. To Do
7. 連絡先
参考文献
付録

1. 書式

PADスタイルファイルで定義されるマクロの書式について説明します。以下の説 明において、タイプライタ体の文字は、そのまま入力ファイルに現れる文字であ ることを意味し、イタリック体で示した部分は、目的によって指定が変化するこ とを意味しています。

1.1. 描画コマンド

\padbox{text}

処理を表す枠を描きます。textはLRモードで組まれます。

\padwhile{cond}{proc}
\padrepeat{cond}{proc}

\padwhileは前判定反復、\padrepeatは問題向き 反復(後判定反復)を表す枠を描きます。condには判定条件を、 procには任意の処理を指定します。condはLRモードで 組まれます。procに何も指定しない(空白も入れてはいけません) 場合には枝は引かれません。

\padcond{cond}{proc1}{proc2}

選択を表す枠を描きます。condには判定条件を、proc1proc2には任意の処理を指定します。condはLRモードで 組まれます。\padwhile\padrepeatと同様に、 proc1proc2に何も指定しない場合にはそれぞれの枝は 引かれません。

\padcase{expr}{cases}

選択を表す枠を描きます。\padcaseは判定条件が2つ以上の時に 使って下さい。exprはLRモードで組まれ、枠の中央に描かれます。 casesには判定条件とそれに対応する処理の並びを指定します。 条件と処理は`:'で区切り、それらの並びは`,'で区切 ります。条件はLRモードで組まれます。

条件および処理の中に`:'または`,'を書く場合には、 それらをブレースで囲んで下さい。

\padsub{text}

サブルーチンを表す枠を描きます。textはLRモードで組まれます。

\padseq{procs}

連接を表す図を描きます。procsには処理の並びを指定します。 処理と処理の間は\\で区切ります。

\\にオプション引数lenを指定することにより、行間に len分の追加スペースを出力します。

\padlabel{label}

ラベルlabelを描きます.

\padref{label}

ラベルlabelの参照を表す枠を描きます.

\padboxss{texts}
\padsubss{texts}

これらは\padbox\padsub内で複数の行にわたって 処理を書くために定義してあります。それぞれの行は\\で区切り ます。

これらは単に引数を\shortstackに渡して呼び出しているだけです。 反復や選択のマクロの中で複数の行にわたって処理を書きたい場合には、 \shortstack[l]{引数}を引数として呼び出せば同じ効果が得られ ます。

\padmessage{message}

\padseq内で処理の並びに注釈を書く場合には、 \padmessageを使用して下さい。そうでないと左側の縦の線が 描かれません。

\padcomment{comment}

直前の処理の右側に注釈を書きます。commentはLRモードで組まれ、 その中心線が処理の本体のそれと一致するように配置されます。

1.2. ボックスコマンド

\savepad{name}{pad}

padで指定したPADを貯蔵所nameに保存します。name は通常のコマンド名です。LaTeXコマンドの\newsaveboxで貯蔵所を 作成する必要はありません。

\usepad{name}

\savepadによって貯蔵所nameに保存したPADを描画します。

PADの保存・使用には、LaTeXコマンドの\savebox\useboxではなく、これらのマクロを使用して下さい。

1.3. スタイルパラメータ

\padboxrule

PADの描画の際に用いるの線の太さ。枠の線の太さはこれの2倍です。ただし、斜 線の太さは変えられません。

\padboxsep

PADの枠と中身のボックスとの間のスペースの量。

\padcolsep

\padseq\padcondおよび\padcaseにおけるPAD同 士の間隔の最小値。

2. 補注

3. 例

[figure of nesting test]

図1: ネスティングのテスト

[figure of Ackermann function]

図2: アッカーマン関数

4. エラー

4.1. pad.styに起因するエラー

エラーが発生した時の対処方法を説明します。
! TeX capacity exceeded, sorry [parameter stack size=...].

\padcaseを多重にネストした時に出ることがあります。最も内側にあ るPADを\savepadで保存し、\usepadで使用して下さい。

! TeX capacity exceeded, sorry [semantic stack size=...].

これもネストが深い時に発生します。上と同様に対処して下さい。

現在のpad.styはリソースの使用をほとんど最適化していないので、複雑なPADや 大量に使用する時はなるべく BigTeX を使用して下さい。

! No room for a new ....

PADの数、\padcaseの分岐の数が多い時に発生します。残念ながらPAD の数を減らす、ファイルを分割する以外に有効な対策はありません。

4.2. pad2tex使用時の不具合

次に、pad2tex(
吉田 誠一氏 作)を使用した時に発生するエラーまたは不具合への対処方法を説明します。
PADが右側にはみ出る

はみ出てしまう場合の自動改行処理は行なっていないので、手動で改行を行なっ て下さい。具体的には、\padwhile\padrepeat padcondの判定条件のところで\shortstackを使って折り畳んで 下さい。

PADが下側にはみ出る

PADの途中での改ページは行なえません。まとまった処理をサブルーチン化する などして1ページに収まるようにして下さい。

! TeX capacity exceeded, sorry [main memory size=...].

出力位置が未定の図が多すぎる時に発生します。メモリ不足になる直前に \clearpageを挿入して下さい。

5. 問題点

6. TODO

7. 連絡先

バグ等の連絡は、
satoshi@ueda.info.waseda.ac.jpまでお願い致します。また、 pad.styの最新版の情報は、 http://www.ueda.info.waseda.ac.jp/~satoshi/padsty/padsty-j.htmlから得られ ます。

参考文献

[1] 二村良彦. プログラム技法 -PADによる構造化プログラミング-, 情報工学基礎講座, 第4巻. オーム社, 1984.

[2] Leslie Lamport 著, Edgar Cooke, 倉沢良一 監訳, 大野俊治, 小暮博道, 藤浦はる美 訳. 文書処理システム LaTeX. アスキー, 1990.
(原著: Leslie Lamport. LaTeX: A Document Preparation System. Addison-Wesley, 1986.).

[3]富樫秀昭. ASCII日本語TeX. スーパーアスキー. アスキー, Aug 1992 - Aug 1993.

付録

表1: PADの書式一覧

種類 書式 PAD
処理 \padbox{text} [image]
前判定反復 \padwhile{cond}{proc} [image]
問題向き反復
(後判定反復)
\padrepeat{cond}{proc} [image]
選択 \padcond{cond}{proc1}{proc2} [image]
選択
(判定条件が2つ以上)
\padcase{expr}{cases} [image]
サブルーチン \padsub{text} [image]
連接 \padseq{procs} [image]
ラベル \padlabel{label} [image]
ラベルの参照 \padref{label} [image]
処理(複数行) \padboxss{texts} [image]
サブルーチン(複数行) \padsubss{texts} [image]
メッセージ \padmessage{message} [image]
注釈 \padcomment{comment} [image]
PADの保存 \savepad{name}{pad} ---
保存したPADの使用 \usepad{name} ---


ホームページへ
satoshi@ueda.info.waseda.ac.jp