こんにちは。InDesign JavaScript初心者です。
InDesign文書上で索引マーカーのある文字位置に、索引マーカーの内容(索引テキスト)を書き出したいと思っていますが、下記の問題にぶつかっています。
・doc.indexesやindexオブジェクトを使ってループした場合、indexの位置情報が得られない(?)ので、索引テキストを書き込む位置を取得できない
・.findTextで "^I" を使って検索すると位置情報を得られるが、ヒットしたCharacterオブジェクトをIndexオブジェクトにキャストできない(?)ので、索引テキストを得られない
いずれか(または両方)を解決する方法は無いものでしょうか?
お知恵をお貸しいただけると嬉しいです。よろしくお願い致します。
[15437] えぬぬ (2013/04/02 Tue 21:24) mail
> お知恵をお貸しいただけると嬉しいです。よろしくお願い致します。
一般的に動かないソースを書かないと、
知恵が貸せないと思うのですが、どうでしょ?
手元で下記のソースを書きました。
変数aに索引パレットの最初の項目を参照しました。
#target indesign
var doc=app.activeDocument;
var a=doc.indexes[0].topics[0].name;
$.bp();
このnameプロパティを索引マーカー部分に挿入するということでしょうか?
nameプロパティが索引マーカー挿入後に元になった文字列を変更してしまうと異なるケースが発生するはずですが、その辺りはどうでしょう?
[15438] 流星光輝 (2013/04/02 Tue 22:40) web
流星光輝様
ご回答ありがとうございます。
すみません、今回はコードが動かないという問題ではなく、そもそも「こういうことができるのか」「どうしたら可能か」という質問のつもりでしたので、コードは掲載しませんでした。
やりたいのは、索引マーカーに登録されている索引テキストを、
文書上の索引マーカーがある文字位置に出力したいということです。
実は、下記Adobeのフォーラムで同様の質問をしたところ、解決できました。
http://forums.adobe.com/community/indesign/indesign_scripting?view=discussions
教えていただいたコードは下記です。
※私の環境(CS6)では動かず、.topics を .allTopics にしたら動きました。
indexTopics = app.activeDocument.indexes[0].topics;
for (i=indexTopics.length-1; i>=0; i--)
{
for (j=indexTopics[i].pageReferences.length-1; j>=0; j--)
indexTopics[i].pageReferences[j].sourceText.insertionPoints[0].contents = '('+indexTopics[i].name+')';
}
急ぎのため、オブジェクトモデルなどをあまり勉強しないまま質問することになり、失礼致しました。
どうもありがとうございました!
[15441] えぬぬ (2013/04/03 Wed 11:44)