文章節の前に章を付けたいNo.06789
deku さん 11/12/10 20:11
 
++++++++++++++++++++++++++++++
文中の章を節の前に付けたいのです。
++++++++++++++++++++++++++++++
〔コメント部〕

章001
★挨拶

001:文章…。
002:これからは、…。
★目的…
003:文章1…
004:文章A…
005:文章1…

101:私があなた…
〔コメント部〕
章002
【同じことが続く】

章100
001:…
++++++++++++++++++++++++++++++
これを以下のように変えたいのです。
++++++++++++++++++++++++++++++
★目的
1:1, 文章
1:2, これからは、
★目的
2:1,

100:1, 私があなた…
++++++++++++++++++++++++++++++
マクロ初めての挑戦で、if 文などで考えましたがお手上げです。
後、「章」のところで数字を加算することも出来るようですが、
それをどう書き上げるのか…勉強不足です。手ほどきかヒントをくだされ
ばありがたいです。こんな質問をするのがふさわしいのかわからないまま
投稿しました。失礼ならお許しください。

[ ]
RE:06789 文章節の前に章を付けたいNo.06790
deku さん 11/12/10 20:24
 
言葉足らずのところがありました。
このようなファイルが数十あり最終章の数字はまちまちです。この場合、文章の最後
(テキスト文章最後)に何か記号を入れてマクロを終了するのがよろしいでしょうか。
合わせておたずねします。

[ ]
RE:06789 文章節の前に章を付けたいNo.06791
山紫水明 さん 11/12/12 17:53
 
 dekuさん,

>文中の章を節の前に付けたいのです。

 もう一つ仕様がはっきりしないので,コメントがつきにくいのではないで
しょうか。
 私なりに解釈しましたが,外れているかもしれません。

//---------------------------------------------------
begingroupundo;
replaceallfast "(^★|^章).+$", "★目的", regular;
gofileend;
if( column > 0 ) insertreturn;
gofiletop;
#m = 1;
#n = 1;
while( 1 ) {
    searchdown2 "^★", regular;
    if( result == 0 ) break;
    while( 1 ) {
        movetolineno 1, lineno + 1;
        if( code == eof ) break;
        if( gettext( 0, y, 2, y) == "★") {
            #m = #m + 1;
            #n = 1;
            continue;
        }
        selectword;
        insert str(#m) + ":" + str(#n) + ",";
        #n = #n +1;
    }
}
endgroupundo;
endmacro;
//---------------------------------------------------

                          山紫水明(ユーザー)
                          SANSHISUIMEI

[ ]
RE:06790 文章節の前に章を付けたいNo.06792
秀まるお2 さん 11/12/12 18:01
 
ちょっとタイミングが遅くなりましたが、一応僕もマクロ作ってしまいました。

こんなんでいいのかどうかいまいち不明ですけども、一応書き込みします。

-----------------------------------------------------
    #show_count = 0;
    setcompatiblemode 0x0200;
    gofiletop;
    while(1) {
        searchdown2 "^(章|)([0-9]+)(:|)", regular;
        if( !result ) {
            break;
        }
        if( gettext( 0, y, 2, y, 1 ) == "章" ) {
            #show_count = val( gettext( 2, y, selendx, y, 1 ) );
        } else {
            delete;
            insert str(#show_count) + ":" + str( val( gettext( 0, y, selendx,
 y, 1 ) ) ) + ", ";
        }
        golineend2;
    }


[ ]
RE:06791 文章節の前に章を付けたいNo.06793
deku さん 11/12/13 12:36
 
秀まるお2 さん 山紫水明 さん 両氏へ
ご親切にここまで作成してくださり恐縮しております。「秀丸を100倍生かす強力マ
クロ」を読みながら出来るかなと始めたのですが、なかなか手強くて、助けを求めま
した。if文でと考えていましたがそうで無いと分かりました。また、仕様を十分伝え
られず申しわけありませでした。
++++++++++++++++++++++++++++++
目的は、章001から読み取り、"00"無しの"1"を節(001:)の前に貼り付けることです。
++++++++++++++++++++++++++++++
〔テキストの始まりはコメント部です〕
…(この部分は序章で)
1.文章
2.文章
3.文章
と、文頭に数字が入る解説文があります。

章001
★挨拶(タイトルです)

001:文章…。
002:これからは、…。
★目的…(タイトル)
003:文章1…
004:文章A…
005:文章1…

101:私があなた…
〔コメント部〕
章002
【一章と同じことが続く】

章100
001:…
++++++++++++++++++++++++++++++
これを以下のように変えたいのです。
++++++++++++++++++++++++++++++
〔コメント部〕
…(この部分は序章で原形のままです)
章001
★挨拶(目的と書いておりましたが、タイトル行で★の行は原形のままです)
1:1, 文章 (節の"001:" =>> ":1, "としたい
1:2, これからは、
★目的
章002
2:1,

章100
100:1, 私があなた…
++++++++++++++++++++++++++++++
それで、秀まるお2 さんの方は、"1:0, "となって、節がすべて ":0"となり、また、
序章の文頭数字は、"0:0"になります。
山紫水明 さん "★"を数えてくださったのですね。説明不足でほんとうにすみません。
章の数字(前の0を取った)を節の前に入れることだったのです。上記の説明でご理
解いただけるでしょうか。目下、お二人の作成してくださったマクロ文をみて、なる
ほどと感心しています。すごいですね。この会議室に分不相応な者ですがよろしくお
願いします。

[ ]
RE:06793 文章節の前に章を付けたいNo.06794
colder さん 11/12/13 14:11
 
colderです
これでいいのかな。

gofiletop;
while(1){
searchdown "^章\\d+",regular;
if(!result) endmacro;
$sho = str(val(gettext(foundtopx+2,foundtopy,foundendx,foundendy)));
beginsel;
searchdown "^章\\d+",regular;
if(!result) gofileend;
endsel;
replaceallfast "^0*(\\d+):",$sho+":\\1,",regular,inselect;
}

[ ]
RE:06793 文章節の前に章を付けたいNo.06795
山紫水明 さん 11/12/14 08:25
 
 dekuさん,

 案の定というか,私はまったく題意をとり違えていました。
 colder さんがお示しになったのはさすがに実にスマートだと思います。マクロ
を始めたばかりの方には少し敷居が高いかもしれませんが。

 秀まるおさんのは
    delete;
    insert str(#show_count) + ":" + str( val( gettext( 0, y, selendx,y, 1 )
 ) ) + ", ";
の部分を
    $a = str( val( gettext( 0, y, selendx,y, 1 ) ) ) + ", ";
    delete;
    insert str(#show_count) + ":" + $a;

としたら,多分いいのではないかと思います。

                          山紫水明
                          SANSHISUIMEI

[ ]
RE:06794 文章節の前に章を付けたいNo.06796
deku さん 11/12/14 10:11
 
colder さんへ
ありがとうございました。マクロ文は半分も理解できませんでしが、分かるようにな
るまで学ばせていただきます。変換はとても高速です。

それで、変換後は、1章1節の場合

1:1, 「節が入り", "が入りますが」

このマクロでは、
1:,「節と半角スペースが抜けて」
すべての節で削除になってしまいます。

どこをどうすればよいのでしょう。

[ ]
RE:06795 文章節の前に章を付けたいNo.06797
deku さん 11/12/14 10:36
 
山紫水明 さんへ

秀まるお2さんのマクロに入れ替えますと出来ました!ありがとうございます。
それで、もう一つお聞きしてよろしいでしょうか。
***********************************
章001の前になりますが、
テキスト始まりのコメント部です
…(この部分は序章です)
1.文章
2.文章
3.文章
***********************************
無変換のところですが、変換後は、

0:1, .文章
0:2, .文章
0:3, .文章

となります。マクロでどこを触ればよいのかまだ分かりません。
たいそうなことでしたら、変換後に手で修正をと思いますが、いかがでしょう。突然、
勝手なお願いに快く協力してくださりありがとうございました。こちらでの編集作業
に大きな助けとなります。マクロってすごいですね。同時に奥深さを思い知らされま
した。

[ ]
RE:06797 文章節の前に章を付けたいNo.06798
秀まるお2 さん 11/12/14 11:39
 
 マクロ間違っててすみません。&山紫水明さん間違いご指摘ありがとうござい
ます。

 colderさんのマクロが一番エレガントだと思いますけど、とりあえず僕の
マクロを直す方向でやるとしたら、

    gofiletop;

 の後に、

    searchdown2 "^章[0-9]", regular;
    golinetop2;

 を入れれば、章番号0の部分はスキップして置換されると思います。

[ ]
RE:06796 文章節の前に章を付けたいNo.06799
colder さん 11/12/14 12:12
 
colderです。

ああスペースが入っていたのか
よく見ていなかった
最後のあたりの
replaceallfast "^0*(\\d+):",$sho+":\\1,",regular,inselect;

replaceallfast "^0*(\\d+):",$sho+":\\1, ",regular,inselect;
にすればうまくいくはずです。

[ ]
RE:06799 文章節の前に章を付けたいNo.06800
deku さん 11/12/14 21:25
 
colder さんへ
素早くお答えいただき感謝しております。
それで…、私の表現がまずく申しわけありません。
***************************
章001 (これは文頭にうまく挿入できました)
001:文章…。(この行の文頭数字は"節"なのです)
002:これからは、
**************************
それで、
"1:1, "
"1:2, "
として、節を残したいのです。ところが、、
"1:, "
"1:, "
と、すべての節が削除されます。

$sho =
このところでしょうか、マクロのヘルプを見て理解しようとしているところです。


[ ]
RE:06798 文章節の前に章を付けたいNo.06801
deku さん 11/12/14 21:27
 
秀まるお2 さんへ
ありがとうございました。うまく動作しております。
このマクロ少しずつ動きが分かるようになってきました。ありがたく思っております。

[ ]
RE:06800 文章節の前に章を付けたいNo.06802
colder さん 11/12/14 22:42
 
colderです

>それで、
>"1:1, "
>"1:2, "
>として、節を残したいのです。ところが、、
>"1:, "
>"1:, "
>と、すべての節が削除されます。

それは奇妙ですね。
こちらでは節が削除されることはありませんでした。
なぜ節が削除されるのか僕の方では分からないです

[ ]
RE:06800 文章節の前に章を付けたいNo.06803
山紫水明 さん 11/12/15 07:55
 
 dekuさん,

>と、すべての節が削除されます。

 こちらでも問題なく動きます。
 最後の置換文の(\\d+)の括弧が落ちていたり,\\1 がなかったりすると,ご指摘
のような症状が起こりますが,コピー&ペーストしてあればそれはないでしょうね。

                          山紫水明
                          SANSHISUIMEI

[ ]
RE:06803 文章節の前に章を付けたいNo.06804
deku さん 11/12/15 22:30
 
山紫水明 さんへ colder さん 秀まるお2 さん

こちらの別PC(古い)では、問題なく出来ました。
どちらも、XP 2002 sp3 ですが…。どうしたのでしょうね。
この件につきまして、対策法が分かればお教えください。

皆さまのご協力により、なんか出来るようになりました。大助かりです。
マクロもちょっぴり分かったような気がします?
ありがとうございました。

[ ]
RE:06804 文章節の前に章を付けたいNo.06805
deku さん 11/12/16 08:55
 
秀まるお2さん coldrさん 山紫水明 さんへ

解決しました。
正規表現の\\1 がうまくいっていないのは、BRegIF.DLL でした。
HMJRE.dll に変更すると出来ました。
互換性があると思っていたのですが、そうでなかったのですね。
とても勉強になりました。

[ ]