ファイルAの文字列をファイルBから探しNo.24430
Knotopologynn さん 08/02/03 14:51
 
何時も,お世話になります.
Windows XP で秀丸エディタV6.03 を使わせて頂いております.
ファイルAの文字列をファイルBから探して一覧を作りたいのですが,
以下のようなことが出来るでしょうか?

「TeX ソースファイル」の「ファイルA」(fileA.tex)は {\aaa} ... {\zzz} のよう
な TeX 命令を約500語ほど用いた文章が書いてあります.{\aaa}などは重複して用い
ています.一方,「TeX スタイルファイル」の「ファイルB」(fileB.sty)には,例
えば,

 \newcommand{\aaa}{\ensuremath{a^2+b^2+c^2}}%
 \newcommand{\zzz}{\ensuremath{(\aaa)(\sin \theta +\cos \theta)}}%

のような記述が約10,000行ほど書いてあります.そこで,
「ファイルA」の {\aaa} ... {\zzz} に対応する「ファイルB」の

 \newcommand{\aaa}{\ensuremath{a^2+b^2+c^2}}%
 \newcommand{\zzz}{\ensuremath{(\aaa)(\sin \theta +\cos \theta)}}%

を一覧として書き出したいのですが,何か方法はあるでしょうか.なお,「ファイル
A」の {\aaa} ... {\zzz} に対応する「ファイルB」の
 \newcommand{\aaa}, \newcommand{\zzz}が書かれている行番号のみを書き出すので
もいいのですが,可能でしょうか? 教えて下さい.

[ ]
RE:24430 ファイルAの文字列をファイルBNo.24432
秀丸担当 さん 08/02/04 10:38
 

>Windows XP で秀丸エディタV6.03 を使わせて頂いております.
>ファイルAの文字列をファイルBから探して一覧を作りたいのですが,
>以下のようなことが出来るでしょうか?

マクロを作れば可能になると思います。
少々面倒ではありますが。
といいつつ試しに作ってみました。
マクロ実行後クリップボードと検索バッファの内容を書き換えてしまうので注意
が必要です。
17行目のスタイルファイルのファイル名は書き換える必要があります。
TeXの文法がよくわからないので、正規表現の書き方を変える必要があるかもし
れません。

setcompatiblemode 0x0200; //検索での表示=範囲選択
gofiletop;
setclipboard "";
while(1){
  searchdown "\\\\[a-z]+",regular,nocasesense,word;
  if(result==false)break;
  appendcopy;
  addclipboard "\x0d\x0a";
}
newfile;
disabledraw;
paste;
call SortUniq;

gofileend;
#end = linecount2;
insertfile "c:\\a.txt"; //スタイルファイル
setclipboard "";
gofiletop;
while(lineno<#end){
  selectline;
  getsearch;
  setsearch  "\\newcommand{" + searchbuffer + "}",0;
  #l=lineno;
  movetolineno 1,#end;
  finddown2;
  if(result!=false){
    selectline;
    appendcopy;
  }
  movetolineno 1,#l+1;
}
clearupdated;
closenew;
paste;
call SortUniq;
endmacro;

SortUniq:
selectall;
run "sort.exe <con >con";
while(1){
  replaceallfast "(.+)\\n\\1","\\1",regular;
  if(result<=0)break;
}
return;

[ ]
RE:24430 ファイルAの文字列をファイルBNo.24433
ENCODINGSHIFTJIS さん 08/02/04 11:07
 
案のみ ですが
検索語を 強調する 「強調定義」を作り(A から)
それを使って Bを開き
着色した 語 あるいは 行を拾う、
強調一覧とか マクロなどで。

[ ]
RE:24432 ファイルAの文字列をファイルBNo.24438
Knotopologynn さん 08/02/04 15:05
 
早速,マクロを作って頂き,ありがとうございます.そっくりコピーし,マクロ登録
をしてマクロ実行しましたところ,見事に成功しました.十分,使い物になります.
ありがとうございました.今の場合は,
\newcommand{*****}{#####} の一行のみが出力されますが,贅沢を言うと例えば,

\newcommand{\TNcomplexquandleABpiABxgkzb}{\ensuremath{%
 \TNfrac{-3.5}{\mkern5mu \left\{ \mkern5mu \lAmbBalgkza + \lAmdBclgkza%
   + \igdg \left( \mkern5mu \lAaBblgkza%
   + \lAcBdlgkza \mkern5mu \right) \right\} \xgki \mkern5mu}
 {0.8}{\AbpBbgkm}}}

のように複数行で記述されているものが多いので,これがすべて出力されれば完璧な
のですが,これは我が儘と言うべきでしょう.今のままでもリストアップには非常に
便利なマクロです.ご教授をありがとうございました.

>
>マクロを作れば可能になると思います。
>17行目のスタイルファイルのファイル名は書き換える必要がありま
>
>setcompatiblemode 0x0200; //検索での表示=範囲選択
>gofiletop;

[ ]
RE:24433 ファイルAの文字列をファイルBNo.24439
Knotopologynn さん 08/02/04 15:07
 
コメントをありがとうございました.秀丸担当さんの方法でうまく行きました.

>案のみ ですが
>検索語を 強調する 「強調定義」を作り(A から)
>それを使って Bを開き
>着色した 語 あるいは 行を拾う、
>強調一覧とか マクロなどで。

[ ]