//Character Counter for TeX user. disabledraw; title "Character Counter: Working..."; #jpYN=getininum("hidemaru.ini","Env","JP"); if(!#jpYN){ #jpYNChanged=1; writeininum "hidemaru.ini","Env","JP",1; envchanged; } if(imestate){ #imeON=1; } if(freecursor){ #freeCursChang=1; config "r-"; } #orgX=x; #orgY=y; //---------------------------------------- #zenkaku=0; #hankaku=0; #zen=0; #gen=0; if (selecting) { #topx = seltopx; #topy = seltopy; moveto #topx, #topy; escape; while(!(x == #orgX && y == #orgY)) { call counter; } } else { gofiletop; while(1){ call counter; if(code==eof) break; } } setclipboard "(("+str(#hankaku)+"+1)/2+"+str(#zenkaku)+")/400="; beginclipboardread; $gen=getclipboard; setclipboard "(("+str(#hankaku)+"+1)/2+"+str(#zenkaku)+")/300="; beginclipboardread; $gen2=getclipboard; //---------------------------------------- if(#jpYNChanged){ writeininum "hidemaru.ini","Env","JP",0; envchanged; } if(#freeCursChang){ config "r+"; } moveto #orgX, #orgY; if(#imeON)imeswitch; enabledraw; message "2byte:"+str(#zenkaku)+" 1byte:"+str(#hankaku)+"\nPapers:"+$gen+"\nSpeech:"+$gen2+"min."; endmacro; counter: #c=code; if(#c==0x5C){ //"\"記号 #loop_counter=0; while(1){ right; #c=code; if(#c==0x62 || #c==0x65) { golineend; } if(#c==0x20 || #c==0x7B || #c==0x0D || #c>=0x8140) break; if(#c==eof) break; #loop_counter=#loop_counter+1; } if (1<#loop_counter && #loop_counter<5) #hankaku=#hankaku+2; } else if(#c==0x25) golineend; //コメント else if(#c>=0x8140) #zenkaku=#zenkaku+1; //全角 else if(#c==0x0D) #dum=1; //改行 else if(#c==0x09) #dum=1; //タブ else if(#c==0x7D) #dum=1; //"}" else #hankaku=#hankaku+1; //半角 right; return;