ルビ文字の検索

[10912]ルビ文字の検索 投稿者:みずは 投稿日:2007/03/02(Fri) 12:00
はじめまして。

DTPはまったくの素人で四苦八苦しながら、Win XP pro上で、InDesign CS2を使用することになりました。これからごく初歩的な質問をして、顰蹙を買うことも多々あるかと思いますが、アドバイスをいただければ、大変にうれしく思います。

今回の質問は、ルビ文字として手作業で振っている注番号に()をつける必要があります。そこで少しでも作業量を減らしたいと思い、ルビ文字(僕の場合は注番号ですが)を検索しようとてしてみたのですが、うまくゆきません。これって無理なのでしょうか。
» 1
[10912へのレス]Re: ルビ文字の検索 投稿者:梅花藻 投稿日:2007/03/02(Fri) 13:13
ルビに振られている文字で検索/置換を行うことは、たぶん出来ません。
ただ、「ルビが振られている文字」を検索するだけならば、

「検索形式の設定」の「ルビの位置と間隔」で「ルビの種類」を「モノルビ」

とすれば(残りの設定、検索文字列などはすべて空欄)、モノルビが振られた文字(および文字列)が、同様に「グループルビ」とすればグループルビの振られた文字列(文字)を検索することはできます。

スクリプトが書ければ、そこから更に複雑な処理(ルビの置換など)も可能です。
» 2
[10912へのレス]Re: ルビ文字の検索 投稿者:みずは 投稿日:2007/03/02(Fri) 14:15
梅花藻さん

 さっそくのご教示、感謝します。たしかにヒットしました。ありがとうございます。

 今回の作業は当初、tag付のテキストを出力し、sedで置換をして、再読込という手順を試みたのですが、結局、再読込の際に段落スタイルのうち、章のタイトルなどの一部の設定が有効にならず、やはりindesign上での編集するしかないのか、と泣きの涙ではじめた作業でした。

 indesign上のスクリプトについては、一からの勉強となりますが、少しずつ始めてゆければ、と考えています。何か良い参考書などがあれば、ご紹介ください。
» 3
[10912へのレス]Re: ルビ文字の検索 投稿者:いき 投稿日:2007/03/02(Fri) 14:24
>段落スタイルのうち、章のタイトルなどの一部の設定が有効にならず、

配置したのはテキストフレームですか、フレームグリッドですか?
» 4
[10912へのレス]Re: ルビ文字の検索 投稿者:梅花藻 投稿日:2007/03/02(Fri) 14:48
>何か良い参考書などがあれば、ご紹介ください。

JavaScriptの場合は、やはり古籏様の
 http://www.openspc2.org/book/InDesignCS2/index.html
 http://www.openspc2.org/reibun/AdobeJS/index.html
でしょうか。(書籍はよくわかりません)

それと、Resouces and extras CD中の
 スクリプティングガイド.pdf
 InDesign CS2 スクリプトリファレンス.pdf

ただしJavaScriptの場合、日本語機能であるルビ等の記述がリファレンス中にないので、ExtendScript Toolkit のデータブラウザ等をうまく利用して、道に調べていくしかありません。

あとは、ネット上で公開されているスクリプトを参考にして書いていくくらいでしょうか。
とにかく「習うよりも慣れろ」で、数多く書いてみることです。
» 5
[10912へのレス]Re: ルビ文字の検索 投稿者:みずは 投稿日:2007/03/02(Fri) 16:41
いきさん
 
 コメント、ありがとうございます。
 フレームグリッドではありません。

 状況は
 1)もとのindesignのファイル(フレームグリッド)にtag付テキストを流し込み置き換える。
 2)その際、フィルターのフレームグリッドのラジオボタンのチェックは外す。
 3)結果は段落スタイルが無効になっている部分があるので、その部分については改めて指定する必要がある。
 というものです。

 なぜなんでしょうか。

梅花藻さん

 ご教示、感謝します。道は遠そうですが、ご紹介のものを少しずつ勉強してゆきます。また分からないところが出てくれば、質問させていただくかも知れませんが、そのときはどうぞよろしくお願いします。

 今回のルビに関しては、liさんの正規表現 検索置換(β版)も役立ちそうなので、あちらの方でもまた質問してみたいと考えています。
» 6
[10912へのレス]Re: ルビ文字の検索 投稿者:いき 投稿日:2007/03/02(Fri) 20:15
> 1)もとのindesignのファイル(フレームグリッド)にtag付テキストを流し込み置き換える。
> 2)その際、フィルターのフレームグリッドのラジオボタンのチェックは外す。
> 3)結果は段落スタイルが無効になっている部分があるので、その部分については改めて指定する必要がある。
 というものです。

私の読解力が足らないのでしょうか、1)は先のご発言の
> フレームグリッドではありません。
と相反するような気がするのですが。
もしフレームグリッドに配置しているのであれば、たとえ「グリッドフォーマットの適用」チェックを外していてもスタイルが反映されません。既知の問題です。
http://support.adobe.co.jp/faq/faq/qadoc.sv?227423+002

解決策1:フレーム内を全選択し、オーバーライドを削除。段落スタイルパレットにあるボタンを押せば一発でタグで指定した書式になります。ひとつずつ指定する必要はありません。

解決策2:一旦テキストフレームに配置し、配置した後でフレームグリッドに変換する。

解決策3:フレームグリッドはマスターに置いておき、ドキュメントページ上でマスターアイテムであるフレームグリッドに配置する。
» 7
[10912へのレス]Re: ルビ文字の検索 投稿者:ミシマバイカモ 投稿日:2007/03/03(Sat) 08:27
アクティブドキュメント全体のモノルビを検索して、半角数字1ないし2桁のルビが振られている場合に、()を付け、ルビの縦中横の組み数字を4にし、欧文も含めるとするスクリプトです。

1文字ごとの確認をしたりはしません。(スクリプトが長くなりますので)
全角数字も使たり、3桁になったりする場合には、
var repstr = "\^[0-9]{1,2}\$";
のところを変えてください。(正規表現を調べてください)

//------ここからスクリプト--------//
#target indesign

//検索置換のクリア
app.findPreferences = NothingEnum.nothing;
app.changePreferences = NothingEnum.nothing;
//モノルビを検索
app.findPreferences.rubyType = 1249013859;
var findList = app.activeDocument.search();
//半角数字1・2桁のルビに()を付ける
var repstr = "\^[0-9]{1,2}\$";
var regObj = new RegExp(repstr,"g");
for (var i=0; i<findList.length; i++){
var rubystr = ""+findList[i].rubyString;
if (rubystr.match(regObj) != null){
var temp = findList[i];
with (findList[i]){
rubyString = "(" + rubystr +")";
rubyAutoTcyDigts = 4;
rubyAutoTcyIncludeRoman = true;
}
}
}
» 8
[10912へのレス]Re: ルビ文字の検索 投稿者:ミシマバイカモ 投稿日:2007/03/03(Sat) 08:33
上記スクリプトの
var temp = findList[i];
は余分でした。(消し忘れ)

ExtendScript Toolkitでwith (findList[i]){の行あたりにブレークポイントを設定して、実行してみれば、データブラウザでtempの中身(このオブジェクト、character等)のプロパティ、メソッドを調べることができます。
» 9
[10912へのレス]Re: ルビ文字の検索 投稿者:みずは 投稿日:2007/03/03(Sat) 15:27
いきさん

 説明不足の僕の書き込みにも丁寧に対応していただき、感謝しています。

 「フレームグリッドではありません」というのは、「2)その際、フィルターのフレームグリッドのラジオボタンのチェックは外す」のことを言おうとしたものでした。

 いずれにしても既知の問題を質問するというお恥ずかしい話で恐縮しています。

 今回は、「解決策1」でうまく対応できました。ただ「段落スタイルパレットにあるボタンを押せば一発でタグで指定した書式になります」の部分が分かるまで一苦労でした。自分のトロさにあきれた次第です。

 ミシマバイカモさん

 見よう見まねで、スクリプトを動かしてみました。感動です。こうしたものをサッサと作れると楽しいだろうなと感心しています。本当にありがとうございました。

 今回は縦書で()も縦方向に配置されなければならないのでrubyAutoTcyDigts = 4;
rubyAutoTcyIncludeRoman = true;
 の2行はコメントアウトして使用させていただいます。

 今後ともよろしくお願いします。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア