2016年10月9日

ルビふり単純スクリプト

InDesignでのルビふりをちょっと楽にしようと単純なスクリプトを書いてみた。

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 件のコメント:

    コメントを投稿