InDesign上で『|漢字《かんじ》』みたいに書かれたテキストをルビに変換するスクリプトです。
CS3くらいから動きそう。
仕様
・区切り文字からカッコの前までを親文字に、カッコ内をルビにします。
・デフォルトでは青空文庫の書式に倣って、区切り文字『|』、前カッコ『《』、後カッコ『》』です。モノルビの区切り文字は半角スペースまたは全角スペースです。変更もできます(後述)。
・以下の場合は区切り字を省略できます
①親文字が漢字で、親文字の前が非漢字
(例:こんにちは漢字《かんじ》)
②親文字が漢字で、親文字の前にもルビ用カッコ
(例:漢《かん》字《じ》)
※非漢字にルビをふる場合は区切り字が必須ってことですね
・以下の条件を満たすときはモノルビに、それ以外はグループルビにします
条件:ルビを『モノルビの区切り文字』で分割したときの文字列の個数が親文字の字数(2文字以上)に一致する
・ルビ化処理を行う対象は、
①テキストフレームにカーソルを置いてる場合:ストーリー全体
②表のセルにカーソルを置いてる場合:セル全体
③テキストを範囲選択してる場合:選択範囲
④表のセルを範囲選択してる場合:選択範囲のセル全部
⑤テキストフレームを選択してる場合:選択テキストフレーム
⑥テキストフレームを複数選択してる場合:選択テキストフレーム全部
⑦グループを選択してる場合:グループ内のテキストフレーム全部(グループ内グループも探索します)
・何も選択してない状態で実行すると下のダイアログが出て区切り文字等を変更できます。変更はInDesign終了時まで有効です。
※区切り文字やカッコを文字列にすることには対応してません。たとえば前カッコを『(●』、後カッコを『)』にして、『漢字(●かんじ)』をルビにするようなことができません。『漢字(かんじ)』にも『漢字●かんじ)』にも反応するようになってしまいます。
※デフォルトの区切り文字等を変更したい場合は直接スクリプトの最初の数行を編集しましょう。
・『ExtendScript Toolkitにログ書き出し』をONにすると、実行時にExtendScript Toolkitが開いてJavaScriptコンソールに処理したテキストの親文字、ルビ、モノorグループルビを書き出します。
・『区切り文字の省略を許さない』をONにすると区切り字が必須になります。区切り文字とカッコに同じ字を使うような場合(〓漢字〓かんじ〓みたいな)はONにしとくと誤認識が起きにくいかと。
ダウンロード
[
ルビ化ver1.0]
特徴
・わりと速い
テキストオブジェクトの一部分を拾ってくるメソッドで、よく使われてるものにcharacters.itemByRange(n,m)ってのがあるのですが、こいつが長いストーリーの後ろの方で使うとやたら重くなるっぽい…。なのでそいつを極力使わずに、意外と速いfindGrep()で代用してます。長いストーリー上でもわりとサクサク動きます。代償としてCS2以下では動かなくなってます。
・漢字の正規表現には、ものかの様のこちらのページ→(Unicodeで「漢字」の正規表現 http://tama-san.com/?p=196)にある[々〇〻\x{3400}-\x{9FFF}\x{F900}-\x{FAFF}\x{020000}-\x{02FFFF}]を使ってます。
サロゲートペア(16ビットのユニコード2つで表現される文字)が出てきてもズレないように作ったつもり。
ちゅうい
・親文字とカッコの間に脚注とかアンカー付きオブジェクトのアンカーとかが入ってるとうまくいきません。
・青空文庫うんぬんってタイトルにしてますが、単に『|漢字《かんじ》』の書式がテキスト打つときに便利だから採用しただけで、「これを使って青空文庫の小説をどしどし自動処理してね」的なモノではないです。ちゃんと自動組版やるならやっぱりXMLだのタグ付きテキストだの使おう
無駄に説明長くなったけど別に面倒くさいスクリプトじゃないですのよ
PR