JumpToNote.mac 300b3についてNo.09310
みずは さん 21/04/04 23:33
 
秀丸エディタへの移行を考えていますが、秀丸エディタが中国語・日本語混在でファ
イルで、日本語でも中国語でも検索が可能なことに感動しています。残る僕にとって
の課題は、脚注機能です。
そこで山紫水明さんのJumpToNote.macの300b3を試させていただいています。このマ
クロを最初に使うとするとエラーがでます。288行目は\|ではなく、 \\|のようです。
で、メニューはファイルの先頭でマクロを実行することで出てくることは理解できま
した。
ただ思ったように作動しません。
たとえば
◯◯◯◯◯◯【注1】◯◯◯◯
△△△△△△△△△△【注2】
□【注3】□□□□□□□□□

□【注3】□□□□□□□□□
◯◯◯◯◯◯【注1】◯◯◯◯
△△△△△△△△△△【注2】
として番号を振り直すとうまくゆきません。
このあたりは僕の使用方法に対する理解が間違っているのでしょうか。
アドバイスいただければ、幸甚です。


[ ]
RE:09310 JumpToNote.mac 300b3についてNo.09312
秀丸担当 さん 21/04/06 08:43
 

マクロそのものついてはちょっとわからないですが、試してみたところでは、文字種
が全角数字の場合はずれるようで、文字種を半角数字にするといいようでした。
とりあえずの回避方法として、半角数字にしておいて、半角を全角に一括して置換す
るといいと思います。

例えば、検索文字列を「【注([0-9]+)】」、置換文字列を「【注\(1,ToZenkakuAlnu
m)】」、正規表現ONで全置換するといいです。
これをマクロにすると以下のような感じです。
setcompatiblemode 0x20000;
replaceallfast @"【注([0-9]+)】",@"【注\(1,ToZenkakuAlnum)】",regular;

手動操作だけでやるとしたら、[0-9]は\dとも書けるので、検索ダイアログで「【注\
d+】」で「すべて検索 - 複数選択」して、[編集]→[変換]→[英数字/記号/空白のみ
全角に]をすると簡単です。

[ ]
RE:09312 JumpToNote.mac 300b3についてNo.09313
みずは さん 21/04/06 15:28
 
丁寧な説明、ありがとうございます。強力な検索・置換機能があることがわかり、秀
丸エディタの魅力をさらに理解できました。
ただ今回の件、僕の説明が不正確でご迷惑をかけしますが、もともとJumpToNote.mac
では、半角数字がデフォルトで挿入されます。
また本文中の番号そのものもカット&ペーストで移動しても正しく振り直されます。
ただ別ファイルの注が、移動に対応した並べ替えできません。この点で困っています。
エディタに脚注機能を求めるか否には、いろいろ議論もあるようですが、仕事がら、
本文は本文で集中し、注は注で仕上げたいという思いがあり、双方を機械的に正しく
関連づけることができれば、と考えてきました。
ならばWordなりを使うという選択肢もあるのですが、やはりエディタの書きやすさが
手放せません。
よろしくお願いします。

[ ]
RE:09313 JumpToNote.mac 300b3についてNo.09314
秀丸担当 さん 21/04/06 17:48
 

全角と半角のことは勘違いがありました。
すみません。
マクロの使い方がわかっていなかったのですが、まず、単一のファイルで、単純に1
つの通し番号を付けるだけと思っていました。
それで、全角と半角の問題と思ったのは、文字種が半角に設定されていれば、もとも
とあった全角の番号が半角の番号に変換されると共に、1つの通し番号になるという
ことでした。
文字種が半角の設定で、既に半角の番号が付いている場合は、1つの通し番号ではな
かったです。
文字種が全角の設定で、既に全角の番号が付いている場合も、1つの通し番号ではな
かったです。
わざと全角と半角が食い違う状態を作れば、1つの通し番号になるようです。

それはいったん置いておいて、そもそもの前提条件として、マクロの使い方がどうい
う使い方を想定されているのかわからないです。
マクロを見てみたら、「test.txt」と「test注.txt」といったように末尾に「注」が
付いた2つのファイルが想定されているようでした。
あと、それとは別に、1つのファイル中の前半に本文、後半に脚注という使い方も想
定されているようでした。
すみませんが、そのあたりは山紫水明さんに聞いてみないとわからないです。

単一のファイルで前半も後半も無く、1つの通し番号を付けるだけだとしたら、おそ
らくマクロはそういう使い方は想定していないようです。
敢えてそれを回避するとしたら、文字種の設定は半角にしておいて、マクロで番号を
振り直す直前に全角に置換してからやるといいと思います。

[ ]
RE:09314 JumpToNote.mac 300b3についてNo.09315
みずは さん 21/04/07 12:35
 
山紫水明さんに直接お尋ねすべきですね。

ただ私の希望の動作について、こちらのライブラリにある本マクロ(「注と本文を対
照して見るマクロ」)の説明と重複する点もありますが、以下、お伝えしておきます。

@仕事のうえで、出典を示したり、補足説明を加えるために文章に注をつけることが
あります。そのためのマクロを探していました。
A注の示し方は一般の書籍にあるように、注が付されたページの下にまとめるやりか
た(MS Wordのいう「脚注」)と、文章全体の最後にまとめるやりかた(Wordの「文
末脚注」)がありますが、ページの概念がそもそもないエディタの場合は、当然「文
末脚注」が基本だと思いますし、僕もそれを求めています。
B個人的には10ページ以下の文章で注をつける場合は、エディタで文書を作成し、Te
xのfootnoteの機能を使っています。
Cただかなり長い文章になると、エディタで作成している文章のなかにfootnote{}
で囲まれた文献の名前や長い説明が入ると、推敲のときに本文の流れが途切れて作業
しにくいときがあります。
Dそれで本文に注番号をつけながら、別ファイルに注の内容を記述してゆき、編集作
業の過程で本文で注が増えたり減ったり、あるいは移動した場合も、マクロで本文の
番号を振り直し、注ファイルの方も変更に応じてデータの並べ替えが行われることを
望みました。
E今回の山紫水明さんのマクロは、本文と注を分割する方法でも、本文の末尾に注を
配置する方法でも対応可能というすぐれものですが、僕は自分の作業のクセで、本文
と注を分割での使用を考えあれこれ試していました。

以上が、僕のマクロへの期待ですが、なかなかこうしたマクロを見つけられないのが、
これまででした。

なお先程、PayPalで秀丸エディタを購入しました。

[ ]
RE:09315 JumpToNote.mac 300b3についてNo.09316
秀丸担当 さん 21/04/07 17:04
 

詳しい情報ありがとうございます。
test.txtとtest注.txtといったような「注」付きのファイルで試してみたところでは、
2つのファイルの両方とも通しの番号が付くようでした
test.txtのほうの文を【注3】【注1】【注2】という順番となるように入れ替えて
編集したら、test注.txtのほうも自動的に順番が入れ替わるということではなく、te
st注.txtのほうも同じように順番を入れ替えて編集する必要があるようです。
両方とも順番を入れ替えた後、「注番号のふり直し」を行うと、通しの番号が両方と
も付くようでした。
test注.txtのほうを自動的に並べ替えるのは、もし自分でマクロを作るとしてもけっ
こう難しそうで、この動作はおそらくマクロの想定通りなのではないかと思います。

[ ]
RE:09316 JumpToNote.mac 300b3についてNo.09317
みずは さん 21/04/07 21:29
 
動作の確認ありがとうございました。
このマクロは番号を振り直すためのもの、ということですね。
なるほど。
その点をふまえれば、もともとのマクロの名前が「注と本文を対象して見る」という
ことを謳われているのも、当然のことなのでしょうね。
どこかで僕の希望する動きをフォローするものがあればよいのですが……。

[ ]
RE:09317 JumpToNote.mac 300b3についてNo.09318
秀丸担当 さん 21/04/08 15:59
 

いろいろあらかじめ限定された条件が必要ですが、置換やソートを使ってできないか
と思って作ってみました。
ファイルはtest.txtとtest注.txtといったように2つのファイルを想定しています。
脚注は末尾に「注」が付いたファイルで、必ず行単位になっている必要があります。

例えば本文(test.txt)を編集して、注3を行頭に移動したとします。
□【注3】□□□□□□□□□
◯◯◯◯◯◯【注1】◯◯◯◯
△△△△△△△△△△【注2】

脚注(test注.txt)はあらかじめ以下のようになっているとします。
【注1】◯です
【注2】△です
【注3】□です

test.txt上でマクロを実行すると以下のようになります。

本文(test.txt)
□【注1】□□□□□□□□□
◯◯◯◯◯◯【注2】◯◯◯◯
△△△△△△△△△△【注3】

脚注(test注.txt)
【注1】□です
【注2】◯です
【注3】△です


以下がマクロ内容です。
---------

  $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;
  }
  question "本文ファイル : "+filename2+"\n\n"+
    "脚注ファイル : "+$notefile+"\n\n"+
    "本文ファイル中の脚注の順番に合わせて、"+
    "脚注ファイルを並べ替えて、両方とも番号をふり直します。\n"+
    $f+"(数字)"+$r+"の数は重複なく、対応関係はあらかじめ一致している必要があ
ります。"+
    "よろしいですか?";
  if(result!=yes){
    endmacro;
  }
  disabledraw;
  #horg=hidemaruhandle(0);
  gofiletop;
  #i=1;
  $tempmacro="";
  while(1){
    searchdown2 $f+"[0-90-9]+"+$r , regular;
    if(result==false){
      break;
    }
    $a=gettext(seltopx,seltopy,selendx,selendy,1);
    $tempmacro=$tempmacro+ "replaceallfast \""+
        @"(?<!\\x01)"+$a+
        "\",\""+
        @"\\x01"+$f+filter("","ToZenkakuAlnum","",str(#i))+$r+
        "\",regular;\n";
    #i=#i+1;
    if(#i>=#max){
      message "多すぎます";
      endmacro;
    }
    title str(#i);
  }
  #hnote=findhidemaru($notefile);
  if(#hnote>=0){
    setactivehidemaru #hnote;
  } else {
    openfile $notefile;
  }
  disabledraw;
  eval $tempmacro;
  replaceallquick "\\x01","",regular;
  selectall;
  filter "" , "Sort" , "000100100000001\"0001";//数値の大小関係
  escape;
  setactivehidemaru #horg;
  disabledraw;
  gofiletop;
  #i=1;
  while(1){
    searchdown2 $f+"[0-90-9]+"+$r , regular;
    if(result==false){
      break;
    }
    delete:

    insert $f+filter("","ToZenkakuAlnum","",str(#i))+$r;
    #i=#i+1;
    title str(#i);
  }
  gofiletop;

[ ]
RE:09318 JumpToNote.mac 300b3についてNo.09319
みずは さん 21/04/08 22:21
 
ありがとうございます。私の我が儘なリクエスト、応えていただき、大変に感動して
います。
今日・明日は少し忙しくしていますが、週末にかけて動作確認してまた報告させてい
ただきます。取り急ぎ、お礼まで。

[ ]
RE:09318 JumpToNote.mac 300b3についてNo.09321
みずは さん 21/04/11 17:46
 
週末が猛烈に忙しく、まったく確認できませんでした。申し訳ありません。
動作確認できました。ご案内のようにしっかりと動きます。ありがとうございました。

ただたとえば
◯◯【注1】◯◯……
△△△【注2】△△……
の【注1】と【注2】との間に【注2】をいれた場合、test.txtの方は11から3へ
と無事並び替えができますが、test注.txtの方は【注2】がふたつになります。
この辺りはたぶん最初から想定されているのだとは思いますが、ご報告しておきます。

test.txtの任意で場所でマクロを実行すると、注を挿入するようにできれば、便利だ
と思います。このあたりの私のイメージは、10年以上前にRAMIFAさんが作られたMead
ow版をxyzzyに私が移植しようとした、以下の取組に示されています。
https://rakunet.org/tsnet/TSfree/88/2660.html

……時間が経つのは本当にはやいと感じます。

[ ]
RE:09321 JumpToNote.mac 300b3についてNo.09323
秀丸担当 さん 21/04/12 12:11
 

以前にそういうものを移植などされたことがあるのですね。
【注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;
   
  }

[ ]
RE:09318 JumpToNote.mac 300b3についてNo.09324
みずは さん 21/04/12 23:06
 
さらなるバージョンアップ、心から感謝します。本当に嬉しいです。
また動作確認をしてご報告します。まずはお礼まで。

[ ]
RE:09323 JumpToNote.mac 300b3についてNo.09326
みずは さん 21/04/13 22:44
 
動作確認もできました。本当に願っていたマクロを作成していただき、感激していま
す。これからも秀丸エディタを使って仕事をしてゆく、勇気が出てくるマクロでした。
今後またお世話になると思いますが、よろしくお願いします。またこのマクロは私だ
けでなく、有益だと思う人も多いのではないかと想像します。秀丸エディタとともに、
広く使われてゆくことを願っています。

[ ]