読み込み時の空白変換は?No.05596
YUKI さん 00/04/11 11:50
 
ファイルタイプ別の設定
 →その他
 →保存するときの変換
で、
「タブを空白に変換する」を使うと、
TeXファイルで \verb 命令を使ったとき、編集中、空白をタブで入力
することができて楽です。ところが、次回そのファイルを読み込んだ
とき、タブが全部空白となっているので、現在は修正等行う前に空白
をタブに置換しています。そこで質問ですが、
 読み込むときの変換設定は出来ないものでしょうか? マクロで解決
できるものならば、マクロの作り方がまだわからないもので教えていた
だけたらありがたいです。読み込み時の変換は
「(ファイルタイプ別の設定
  →全般
  →タブの文字数
 で指定した数の)空白をタブに変換する」
というものです。

[ ]
RE:05596 読み込み時の空白変換は?No.05599
秀丸担当 さん 00/04/11 18:58
 
> 読み込むときの変換設定は出来ないものでしょうか? マクロで解決
>できるものならば、マクロの作り方がまだわからないもので教えていた
>だけたらありがたいです。読み込み時の変換は

読み込み時の変換はできません。
[編集]→[すべてを選択]
[編集]→[変換]→[TAB->空白]
をすれば、変換することができます。

これをマクロでするには、

 selectall;
 tospace;

と記述したマクロを作るだけでいいです。
あとはマクロ登録してキー割り当てしておけば、一発でできます。


[ ]
RE:05596 読み込み時の空白変換は?No.05601
ひろ さん 00/04/11 19:32
 
 YUKIさん今日は、ひろです。
> TeXファイルで \verb 命令を使ったとき、編集中、空白をタブで入力
 そもそも入力時に空白の変わりに tab を入力しているのはなぜでしょうか?
TeX では半角空白と tab は同じ意味になるので、使い分ける必要は無いと思
います。

[ ]
RE:05599 読み込み時の空白変換は?No.05608
YUKI さん 00/04/14 16:01
 
>[編集]→[すべてを選択]
>[編集]→[変換]→[TAB->空白]
>をすれば、変換することができます。
>
>これをマクロでするには、
>
> selectall;
> tospace;
>
>と記述したマクロを作るだけでいいです。
>あとはマクロ登録してキー割り当てしておけば、一発でできます。

[編集]→[変換]→[TAB->空白]

確かに、あっけなく一発でした。
愚かなことに、上記のルートがあることに気づきませんでした。
結局、昔覚えたワープロの操作を基本に、その場しのぎでやってき
たため新しいメニューや操作に目が行っていませんでした。大いに
反省してます。

どうもありがとうございました。

[ ]
RE:05601 読み込み時の空白変換は?No.05609
YUKI さん 00/04/14 16:13
 
ひろ様、コメントありがとうございます。

> YUKIさん今日は、ひろです。
>> TeXファイルで \verb 命令を使ったとき、編集中、空白をタブで入力
> そもそも入力時に空白の変わりに tab を入力しているのはなぜでしょうか?
>TeX では半角空白と tab は同じ意味になるので、使い分ける必要は無いと思
>います。

説明が不足していました。具体的には、そのまま出力の verbtim 環境で、
Cソースファイル等を張り付けて編集することがあります。半角4桁分の
字下げを次々に行っているので、tab でないと行内でのカーソル横移動が
素早く行えないことと、4桁戻すときなど空白4つも削除せねばならず耐
え難いです。
 というわけで、お尋ねした次第でした。

[ ]
RE:05609 読み込み時の空白変換は?No.05610
ひろ さん 00/04/14 19:05
 
 YUKI さん今日は、ひろです。
> 説明が不足していました。具体的には、そのまま出力の verbtim 環境で、
 説明不足というより単なる私の好奇心です(^^)。

> Cソースファイル等を張り付けて編集することがあります。半角4桁分の
 あとは蛇足です。
 取り敢えず、YUKI さんのやりたいことは、05599 で解決されたようですが、
C の source file を取り込みたいのでしたら、nifty:FTEX/MES/6/01100 か
らの tree が参考になります。

[ ]
RE:05596 読み込み時の空白変換は?No.05611
番頭++ さん 00/04/14 19:28
 
操作でもできますがマクロだとこうなります。

//*5    tospace1.mac
    selectall;
    tospace;
endmacro;

//*5    totab1.mac
    selectall;
    totab;
endmacro;

ただ tospace の処理は誰が書いても同じですが、その逆 totab は好みによりま
す。1 個のスペースをタブに変換するのか、残すのか ? 、プログラム中のリテ
ラルはどうするのか ?

これは秀丸のマクロで、個人的な totab です。参考までに ...
次のデータをこのマクロで処理するとわかると思います、tab 4 です。

//*1 *** Macro for 「秀丸エディタ」***
//*1 【マクロ名】 KZ_ToTab1.mac - Ver. 03.04 - 1999/11/23
//*1  (C) Copyright 番頭++ (Bantou++). 1998 - 1999. All Rights Reserved.
//*1 【作者】 K.Nakatake / 番頭++ / E-mail:xxxxxxxx@nifty.ne.jp
//*1 【機能】
//*1 ・totab; の拡張処理 - 空白 ==> タブ 変換処理
//*1 ・tospace; は誰が作成しても同じですが、
//*1    totab; は解釈が異なるでしょう !!!
//*1 ・マクロとかには役に立ちます。と思います。
//*1 ・
//*1 【注意】
//*1 ・このマクロの仕様は予告無く変更されます。
//*1 ・
//
    if( version < 216 ){    //  inselect
        message "すみません、version (2.16) のチェックを行なっています !";  
about;
        endmacroall;
    }

    disabledraw;    disableinvert;
    #top = no;
    if( ! selecting ){
        #xs = x;    #ys = y;
        gofiletop;
        #top = yes; insertfix "\n";
        selectall;  tospace;    escape;
    } else {
        #xs = seltopx;  #ys = seltopy;
        #xe = selendx;  #ye = selendy;
        if( #xs != 0 ){ #xs = 0;    }
        escape; moveto #xs, #ys;
        if( ( #xs + #ys ) == 0 ){
            #top = yes; insertfix "\n";
        } else {
            left;
        }
        beginsel;   moveto #xe, #ye;
        tospace;
    }
//R $str_find1 = "[\x20][\x20]+|\"(\\\"|[^\"])+\"|'(\\'|[^'])+'|//.*$";
    $str_find1 = "[\x20][\x20]+";
    $str_find1 = $str_find1 + "|\"(([^\"\\\\]|\\\\[\\\\\"<>a-z0])+)\"|\"\"";
    $str_find1 = $str_find1 + "|'(([^'\\\\]|\\\\[\\\\'<>a-z0])+)'|''";
    $str_find1 = $str_find1 + "|[{;]\x20|}";
//R $str_find1 = $str_find1 + "|//.+$";
    $str_find1 = $str_find1 + "|//";
    searchdown $str_find1, regular, inselect;
    while( result ){
        escape;
        if( code == '\x20' ){
            #xa = seltopx;  #ya = seltopy;
            #xb = selendx;  #yb = selendy;
            moveto #xb, #yb;
            call pp_tab1;   //  call pp_tab2;   //  要カスタマイズです !!!
        } else if( code == '/' ){
            if( x != 0 ){
                left;
                while( code == '\x20' ){    delete; left;   }
                if( code != '\n' && code != '\t' ){
                    right;  insert "\t";
                } else {
                    right;
                }
            }
            if( code != '/' ){  message "bug1"; endmacro;   }
            right 2;
            if( code != '\n' && code != '\x20' && code != '\t' ){   right;  }
            if( code != '\n' && code != '\x20' && code != '\t' ){   right;  }
            if( code == '\x20' ){
                beginsel;
                while( code == '\x20' || code == '\t' ){    right;  }
                #xa = seltopx;  #ya = seltopy;
                #xb = selendx;  #yb = selendy;
                escape; moveto #xb, #yb;
                beginsel;   moveto #xa, #ya;    delete;
                while( x < #xb ){   insert "\t";    }
            }
//R         golineend2;
        } else if( code == '{' || code == ';' ){
            right;
            if( code == '\x20' ){
                while( code == '\x20' || code == '\t' ){    delete; }
                insert "\t";
            } else {
                //  left;
            }
        } else if( code == '}' ){
            #x = x; #y = y;
            left;
            if( code == '\x20' ){
                delete; insert "\t";
            } else {
                right;
            }
            right;
        } else {
            moveto selendx, selendy;
        }
        left;
        finddown;
    }
    if( #top ){
        gofiletop;  delete;
    }
//T moveto #xs, #ys;
    moveto 00, #ys;
    escape; setsearch "", 0x00; //  安易な記憶ケシ !!!
endmacro;

pp_tab1:    //  是非とも Tab
    beginsel;   moveto #xa, #ya;    delete;
    while( x < #xb ){   insert "\t";    }
    if( x > #xb ){  backspace;  }
    while( x < #xb ){   insert "\x20";  }
return;

pp_tab2:    //  無理せず Tab
    if( ( #xa / tabcount ) != ( #xb / tabcount )){
        beginsel;   moveto #xa, #ya;    delete;
        while( x < ( #xb - tabcount + 1) ){ insert "\t";    }
        while( x < #xb ){   insert "\x20";  }
    }
return;

endmacroall;
// end of macro.


[ ]
RE:05596 読み込み時の空白変換は?No.05620
YUKI さん 00/04/18 11:14
 
秀丸担当様、ひろ様、番頭++様、皆様ありがとうございました。
おかげさまで、現在の私のレベルでは快適に問題が解決しました。

tabの文字数を4に設定し、
秀丸担当様の回答
 selectall;
 tospace;
の2行目を、totab に変え、番頭++様のマクロから、
 endmacro;
を3行目に加えマクロ登録して ctrl+T にキー設定して使っています。

なお、番頭++のマクロを実行したところ、停止状態になったり(マクロ
の実行中止で終了しました)、30秒ほど何もしないままで終わったり
して、私のパソコンではどうも機能しませんでした。
また、ひろ様のアドバイスの nifty には入っていませんので、今後の
課題とさせていただきます。
いずれにしても、目に留めていただき、アドバイスをいただき感謝感激
です。

PS:「ひでまる」入力で秀丸と変換できなかったのが、「しゅうまる」
と入れたら出てきました(ATOK)。もしや、秀丸は「しゅうまる」と発
音するのでは? 恐縮。

[ ]
RE:05620 読み込み時の空白変換は?No.05621
YUKI さん 00/04/18 11:20
 
>なお、番頭++のマクロを実行したところ、停止状態になったり(マクロ

(なお、番頭++)「様」が抜けてしまいました。申し訳ありません。

言い訳:
1)++と打ち込んでいるうちにC++みたいな感じになって、つい名称で
あることを忘れてしまいました。
2)全文入力後、読み直しませんでした。

[ ]