InDesign Javascript のrow.keepWithNextRow

[1062]    InDesign Javascript のrow.keepWithNextRow | 投稿者:のりちゃん | 投稿日:2008/05/02(Fri) 20:10:16
複数のテキストフレームにまたがるテーブルの行の位置を
把握したくRow.keepWithNextRow を使用しているのですが
なぜか?エラーが発生してしまいます。

########
myRows = myTable.rows;

for( iQW = 0 ;; iQW ++ )
{
myRow = myRows.item(iQW);
if( myRow == null ) break;
alert( myRow.height );
alert( myRow.keepWithNextRow ); ←ここでエラー
}
########

ならば、Cell.keepWithNextRowでどうだ!
と試してみましたが、テキストフレームをまたいでいる
にも関わらずすべて「false」が通知されました。

テキストフレームをまたがるテーブルの行を検知する
場合、keepWithNextRowを使用するのは間違いなので
しょうか?
それともInDesignのバグでしょうか?
他のロジックでうまく検知する方法はないでしょうか?

皆さんの知恵をお貸し下さい。
なにとぞ、よろしくお願いいたします。
» 1
[1063]Re: InDesign Javascript のrow.keepWithNextRow | 投稿者:ミシマバイカモ | 投稿日:2008/05/03(Sat) 10:34:03
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88

>複数のテキストフレームにまたがるテーブルの行

というのがいまいち理解できないのですが、
keepWithNextRowはセルの属性-行と列の設定-段落分離禁止オプションの「次の行と連動(K)」のチェックボックスにあたります。
ですから、これがtrueならば、この行の次の行が一緒に動くことになるだけで、次のテキストフレームに押し出されているか否かを表わすわけではないのです。
(r/wのプロパティはどういう状態になっているとか、どのテキストフレームに属するとかの状態は示さなかったと思います)

また、row単位でkeepWithNextRowを表示させてもエラーにはなりませんでした。(Windows Xp InDesign CS2 4.0.5)

次のテキストフレームに移る行の位置を知る方法ですが、次のようなものでどうでしょう。

//Tableを選択して実行
var myTable = app.selection[0];
for (var i=1;i<myTable.rows.length;i++){
var p0 = myTable.rows[i-1].cells[0].insertionPoints[0].parentTextFrames[0].index;
var p1 = myTable.rows[i].cells[0].insertionPoints[0].parentTextFrames[0].index;
if (p0 != p1) alert(i + ":この行で次のテキストフレーム");
}
» 2
[1064]Re: InDesign Javascript のrow.keepWithNextRow | 投稿者:のりちゃん | 投稿日:2008/05/07(Wed) 11:52:35
ミシマバイカモ様

返信(ご丁寧な解説まで)ありがとうございました。

結果、OKでした。
parentTextFrameからたどる方法は思いつきませんでした。
ありがとうございました。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア