var mySel = app.activeDocument.selection; var myStr = mySel[0].contents.replace(/)/, ""); var myWord = mySel[0].characters; var strAry = myStr.split ("("); var oyamozi = strAry[0]; var rubi = strAry[1]; myWord.itemByRange(0,oyamozi.length-1).rubyString = rubi; myWord.itemByRange(0,oyamozi.length-1).rubyFlag = true; myWord.itemByRange(oyamozi.length,-1).contents= "";
親文字列の後ろに半角パーレンで囲んだルビ文字列を書く。
モノルビの区切りは空白(全角でも半角でもよい)。
例: 単純(たん じゆん)
これを選択して、上のスクリプトを実行する。
スクリプトにキーボードショートカットを割り当てておくと楽。
グループルビにしたいときは後から手作業で修正。
ちょっとコードを説明してみると…
- 2行目:ルビを囲っていた閉じパーレンは不要なので消去する。
- 4〜6行目:選択している文字列を開きパーレンで前後に分割する。前が親文字列(oyamozi)、後ろがルビ文字列(rubi)となる。
- 7〜8行目:選択している文字列のうち親文字数分(最初の文字が0番目なので、0〜oyamozi.length-1となる)にルビをつける。
- 9行目:開きパーレン以降(-1は末尾を意味する)は不要になったので消去する。
(2020-03-02追記)
2行目の置換のところを、
replace(/[((]([^(())]+)[))]/, "($1");
とするとパーレンは半角全角を問わなくなって便利かも。
0 件のコメント:
コメントを投稿