======== keisen_j.def 作表マクロ (新JIS罫線V1.02) ======== ; ;【作表マクロの操作方法】 ; ; [ESC]H :作表メニュー ; ;・まず、『D 外枠の描画』メニューを選択し、カーソル位置に指定のサイズの外枠を ; 書きます。 ;・外枠を書き終わると、最下行に《作表 〔罫線%c〕》と表示され、作表モードに入り ; ます。 ;・作表モードでは、通常の編集コマンドの一部を、作表用のコマンドに置き換えます。 ; ; [CR] :罫線引く/消す(カーソルが上枠/左枠上の時) ; ^F,^A :横方向拡大/縮小(カーソルが上枠上の時) ; ^C,^R :縦方向拡大/縮小(カーソルが左枠上の時) ; ;・また、表の内部で文字を書いたり、文字を削除しても、右枠の位置はずれません。 ; ただし、矩形ブロックコマンド等で表の内部に文字列をコピーした場合は、 ; 右枠の位置はずれてしまいます。 ;・作表モードを終了する場合は、[ESC]H で作表メニューを表示して、『Q 終了』を ; 選択してください。 ;・既存の表で作表を行なう場合は、表の左上(┌)にカーソルを移動し、[ESC]H で ; メニューを表示し、『E 作表モードへ』を選択してください。 ;・随時、『S 罫線 [─]』メニューで罫線の種類を変更できます。 ; ;★注意★ 表の直後は、1行空けて空白行にしておかなければ、正常に動作しません。 * M マクロ 70 [ESC]H "作表メニュー" ?. (mm)? &q pp="─", :A t=pp.1-$9F, !01 (r)>?{ ; 作表メニューで分岐 >20 >10 { pp.1^=$35, >A } { mm-,&m("作表終了") / } } (mm)? >20 / ;--- 外枠描画 --- 10: xx=lx, &g("横幅:") (r<0)? . u=r&1~, &g("縦幅:") (r<0)? >^ v=r, (u+4>=wd)?{ wd=u+lx+5, &d } mi[, ei[, mi-, ei+, (ct)??{ #n #n } ; <-- v1.02 #l (t)? >A '┌' (u/2){'─'} '┐' >B :A '┏' (u/2){'━'} '┓' :B (v)?? >D #m (t)?'┃'?'│' (u){' '} (t)?'┃'?'│' (v<2)? >D #k (v==2)? >C (v-2){ #p #x } :C #i #x :D #m (t)? >E '└' (u/2){'─'} '┘' >F :E '┗' (u/2){'━'} '┛' :F ei], mi], >> ;--- 初期化 --- 20: mm+, &m("作表 〔罫線%c〕", '─'+t) x=lx, #> uu=lx, &x(x) ; カーソル位置の表の横幅を求める p="├┝┠┣┬┯┰┳┤┥┨┫┴┷┸┻┼┿╂╋│┃─━┌┏┐┓└┗┘┛", >> ;--- 1文字入力 --- 30: &p (c=r)(s)? >N ; 編集モードでなければスキップ (c<$FF)?{ &40 >^ } ; 文字の入力 (c==#m)?{ &50 >^} ; [CR] (c==#f || c==#a)?{ &60 >^ } ; ^F,^A (→←サイズ変更) (c==#c || c==#r)?{ &65 >^ } ; ^C,^R (↓↑サイズ変更) (c>=#h && c<#@ )?{ &40 >^ } ; 行の編集コマンド (c==#i || c==#p)?{ &40 >^ } ; ブロックのペースト :N &o(c) >^ ;--- 罫線保存 --- 40: (cd&1~!='│')??. ; <-- v1.01 &s &o(c) x=lx, #> xx=lx, #s d=cd&1~, &x(x) (d=='│')?{ (d=xx-uu)? >A } >Z :A (cd&1~!='│')?{ #d (lxA >Z } (d>0)?{ (d){ #h } >B } (-d){' '} :B &x(x) :Z #? ;--- 罫線描画/消去 --- 09: &o(c) 05: &f(cd,p) n=r, 06: a+=(t&1), a=p..a,&o(a!!) 50: &05 (n<0)? >09 (n>=24)? >09 (n>=22)? >55 (n>=20)? >51 (n<4)?{ #y . } (n<8)? >56 >09 ;--- ヨコ罫線 --- 51: &s i=0, :A #e i++,&f(cd,"│┃├┝┠┣") (r>=0)? >A #k (i){#x} #i mi[,mi+,a=n<<1&2,&06 :B &05 (n<0)? >D (n>=26)?{ a=n<<1&2+8, &06 >C } (n>=22)?{ &o('─'+t) >C } a=n&2+16, &06 :C (n<26)? >B :D mi], #a #? ;--- タテ罫線 --- 07: a+=(t&1)*2, a=p..a, &o(a!!) #s #x 55: &s mi[, mi+, a=n&1+4, &07 i=0, :A i++, (cd==$0D)? >B &f(cd,"─━") ((c=r)>=0)?{ a=16+c, &07 >A } (ck)?? #g &o('│'+t) #s #x >A :B #e a=12+c, &07 >70 56: &s mi[, mi+, i=0, :A i++, &05 (n<20)?{ &o('─'+n&1*11) #s #x (n&3~!=12)? >A >70 } ' 'mi-,' ' mi+, #s #s #x >A ;--- 拡大/縮小 --- 60: uu+=2, (c==#a)? (uu-=4) (cd!='─'&&cd!='━')? >09 &s mi[, mi-, i=0, :A (cd==$0D)? >70 i++, (c==#a)?{ #g (ck)?? #g >B } &o(cd) #s (ck)??{ &o(cd) #s } :B #x >A 65: (cd!='│'&&cd!='┃')? >09 (c==#c)?{ #k #i }? #y 70: mi], (i){ #e } &d * Pop up menu 1 "",12,4 "E 作表モードへ" "D 外枠の描画" "S 罫線 [$pp]" "Q 終了" * ======== End of keisen_j.def ========