|
以前にそういうものを移植などされたことがあるのですね。
【注2】が2つ以上あるのは想定しないことが前提条件ではあったのですが、同じ番
号があってもいいようにしてみました。
あとメニューを出して挿入もできるようにしてみました。
挿入は、使っていない番号を割り当てています。
あと適当にまとめてアンドゥなどできるようにしています。
$f="【注";
$r="】";
#max=1000;
setcompatiblemode 0x120200;
disablehistory 0xff;
if(strstr(basename2,"注.")>=0){
message
"ファイル名末尾に「注」が無いほうの本文ファイルで実行してください。";
endmacro;
}
$notefile=leftstr(filename2,strlen(filename2)-strlen(filetype))
+"注"+filetype;
if(existfile($notefile)==false){
message $notefile+"がありません";
endmacro;
}
menu "脚注挿入(&1)","脚注番号ふり直し(&2)";
#r=result;
if( #r==1 ) {
#horg=hidemaruhandle(0);
#x=x;
#y=y;
gofiletop;
#i=1;
while(1){
while(1){
gofiletop;
searchdown2 $f+"(" + str(#i) + "|" +
filter("","ToZenkakuAlnum","",str(#i)) + ")"+$r , regular;
if(result==false){
break;
}
#i=#i+1;
title str(#i);
}
$new = $f+filter("","ToZenkakuAlnum","",str(#i))+$r;
#hnote=findhidemaru($notefile);
if(#hnote>=0){
setactivehidemaru #hnote;
} else {
openfile $notefile;
}
gofiletop;
searchdown2 "^"+$new,regular;
if(result==false){
break;
}
}
setactivehidemaru #horg;
moveto #x,#y;
insert $new;
#hnote=findhidemaru($notefile);
if(#hnote>=0){
setactivehidemaru #hnote;
} else {
openfile $notefile;
}
gofileend;
if(column!=0){
insert "\n";
}
insert $new;
insertfix "\n";
} else if(#r==2){
question "本文ファイル : "+filename2+"\n\n"+
"脚注ファイル : "+$notefile+"\n\n"+
"本文ファイル中の脚注の順番に合わせて、"+
"脚注ファイルを並べ替えて、両方とも番号をふり直します。\n"+
$f+"(数字)"+$r+"の対応関係はあらかじめ一致している必要があります。"+
"よろしいですか?";
if(result!=yes){
endmacro;
}
disabledraw;
begingroupundo;
#horg=hidemaruhandle(0);
gofiletop;
#i=1;
$tempmacro="";
while(1){
searchdown2 @"(?<!\x01)"+$f+"[0-90-9]+"+$r , regular;
if(result==false){
break;
}
#x=seltopx;
#y=selendy;
$a=gettext(seltopx,seltopy,selendx,selendy);
replaceallfast $a,@"\x01"+$a,regular;
moveto #x,#y;
$tempmacro=$tempmacro+ "replaceallfast \""+
@"(?<!\\x01)"+$a+
"\",\""+
@"\\x01"+$f+filter("","ToZenkakuAlnum","",str(#i))+$r+
"\",regular;\n";
#i=#i+1;
if(#i>=#max){
endgroupundo;
message "多すぎます";
endmacro;
}
title str(#i);
}
//endgroupundo;
#hnote=findhidemaru($notefile);
if(#hnote>=0){
setactivehidemaru #hnote;
} else {
openfile $notefile;
}
disabledraw;
begingroupundo;
eval $tempmacro;
gofiletop;
while(1){
searchdown2 @"(?<!\x01)"+$f+"[0-90-9]+"+$r , regular;
if(result==false){
break;
}
delete;
insert $f+filter("","ToZenkakuAlnum","",str(#i))+$r;
#i=#i+1;
title str(#i);
}
replaceallquick "\\x01","",regular;
selectall;
filter "" , "Sort" , "000100100000001\"0001";//数値の大小関係
escape;
endgroupundo;
setactivehidemaru #horg;
disabledraw;
//begingroupundo;
gofiletop;
#i=1;
while(1){
searchdown2 @"\x01"+$f+"[0-90-9]+"+$r , regular;
if(result==false){
break;
}
#x=seltopx;
#y=selendy;
$a=gettext(seltopx,seltopy,selendx,selendy);
replaceallfast $a,$f+filter("","ToZenkakuAlnum","",str(#i))+$r,regular;
moveto #x,#y;
#i=#i+1;
title str(#i);
}
gofiletop;
endgroupundo;
}
|
|