マクロでの一時的なフォント指定についてNo.08101
かずらい さん 16/04/18 01:17
 
こんにちは

秀丸をいつも愛用させていただいており、質問のためカキコいたしました。

AA閲覧用に下記マクロを作っているんですが、うまく動作しません(MS UI Gothicな
ら可)。

アドバイスよろしくお願いいたします。m(_ _)m

  OS│Windows 7 Home Premium SP1 64bit
Soft│8.56

┌------┐
│マクロ│
└------┘
$$1 = getconfig("Font");
##1 = getconfig("FontSize");

if (getconfig("Font") != "MS Pゴシック") {
[Tab]config "f(MS Pゴシック) s16 z- h-";
}
else {
[Tab]config "f($$1) s##1 z+ h+";
}

[ ]
RE:08101 マクロでの一時的なフォント指定No.08102
秀丸担当 さん 16/04/18 17:18
 

うまくいかないケースが無いか調べてみたところ、マクロファイルがUnicodeで
書かれているとフォント名をうまく認識できないことがわかりました。
そういう場合でもできるように修正させていただきます。

現状で回避するには、もしマクロファイルがUnicodeだとしたら、Shift-JISで書
くか、フォント名を英語表記にすると回避できました。
例:
config "f(MS PMincho)";

[ ]
RE:08102 追加質問No.08103
かずらい さん 16/04/18 19:55
 
秀丸担当さん
ご回答ありがとうございました。m(_ _)m

無事解決いたしました。^^

追加質問で申し訳ないんですが、
config文内では、変数は使えないんでしょうか?

ご回答よろしくお願いいたします。m(_ _)m

┌-----┐
│マクロ│
└-----┘
$$1 = "MS ゴシック";
##1 = 15;
$$2 = "MS Pゴシック";
##2 = 16;

if (getconfig("Font") == $$1) {
config "f($$2) s##2 z- h-";
}
else {
config "f($$1) s##1 z+ h+";
}

[ ]
RE:08103 追加質問No.08104
でるもんたいいじま さん 16/04/18 20:15
 
こんばんは。秀丸ユーザのでるもんた・いいじまです。

> 追加質問で申し訳ないんですが、
> config文内では、変数は使えないんでしょうか?
...
> config "f($$2) s##2 z- h-";

config文に限らず、秀丸マクロにおいては、"..." で囲んだ中に
変数名を書いても、その内容には置き換わりません。
PerlやUNIXシェルスクリプトの発想はいったん捨ててください。

秀丸マクロの文字列関係の文法は明らかにMicrosoft BASICに由来します
(一部、C++を意識したものもみられます)ので、Visual Basicや、
同根であるExcelの数式を意識したほうがいいように思います。

上記の例でいうと、原則として次のように書くことになります。
config "f(" + $$2 + ") s" + str(##2) + " z- h-";

あるいは、最近のバージョンではsprintf()が使えますので、
次のように書いたほうが可読性に優れているかもしれません。
config sprintf("f(%s) s%d z- h-", $$2, ##2);

ではでは。

[ ]
RE:08104 お礼No.08106
かずらい さん 16/04/18 20:43
 
でるもんたいいじまさん
ご回答ありがとうございました。m(_ _)m

秀丸での文法の書き方、sprintfの使い方、とても勉強になりました。^^

また質問の際にはよろしくお願いいたします。m(_ _)m

[ ]