ルビを少し打つくらいなら良いのですが、割と大量に打たないとダメになったので、SAKURAエディターのマクロを書いて半自動化してみました。
まず、やりたいこと
1.選択範囲の文字をルビタグに変換
2.ルビを打つ際の効率化
の2点
↑選択してマクロを実行↓
タグに変換され、●文字部分に”ひらがな”を打ち込んでいきます。
selStr = GetSelectedString();
var buf = "";
if (selStr.length) {
for (var i=0; i<selStr.length; ++i) {
selStr.charAt(i);
buf = buf + selStr.charAt(i)+'<rp>(</rp><rt>●</rt><rp>)</rp>';
}
buf = '<ruby>'+buf+'</ruby>';
InsText(buf);
}
↑こちらが選択文字をタグに変換するマクロ
次にやりたいのが、●文字部分にカーソルを移動させたい。
毎回マウスをもって移動したり、矢印キーで移動させるのは面倒くさい。
カーソルを行の先頭に持っていき、登録したマクロをキーの組み合わせで実行させます。今回は一時的に SHIFT+CTRL+→ に登録して実行
カーソルが右に移動していき、●の文字が選択された状態で止まります。
これを繰り返して大量の文字を打ち込んでいきます。
var buf = "";
while (buf != "\r\n") {
Right();
Right_Sel();
buf = GetSelectedString();
if (buf == "●") break;
}
↑こちらが移動して、●を見つけたら選択して止まってくれるコード
注意点はこのプログラムはループしており、改行コードが\r\nだった場合に処理が停止するようになっています。
改行コードが\r\nじゃない場合は無限ループしちゃうので、下記のような上限を設定しておいた方が安全です。
var buf = "";
var i = 0;
while (buf != "\r\n") {
Right();
Right_Sel();
buf = GetSelectedString();
if (buf == "●") break;
i = i + 1;
if (i == 300) break;
}
●文字が300文字経っても出てこない場合は処理が停止します。
ほんの数分考えれば、こんなに効率的なものが構築できるSAKURAエディタはやっぱり優秀ですね。
もっと時間をかければより便利にできるのかもしれないですが、仕事になると納期の問題もあり、それを作る時間が勿体ないので、地道にやるのか、少し手を加えて効率化するのかの2択になるわけです。今回は結構な時間がリターンとして戻ってきました。
また何か思いついたらブログに書いていきます。