InDesignでどこに段落スタイル・文字スタイルが当たっているかを表示する

これは隠し機能なのか? previewColorプロパティの機能が判明!

なんてサブタイトルを付けましたが、今まで謎だった機能の正体を見つけましたというお話。


InDesignでどこに段落スタイル・文字スタイルが当たっているか、また、手動で設定を変更したところはどこかを確認したいことがあります。

スタイルが当たっているかどうかは拙スクリプト「段落スタイル・文字スタイルの適用状況を表示する」で確認することができますが、既存のスタイル設定を変更したりスウォッチを追加するので使われにくいという面がありました(本当か? 単に知られてないだけじゃないの?)

手動で設定を変更したところは、CC2015.3(11.3)以降で「オーバーライドマーカー」という機能が追加されました(ここまでが前提条件)

ところで、スクリプトの話に変わりますが、ParagraphStyle、CharacterStyleオブジェクトにはCS4以降、previewColorというプロパティがあります。これはいったい何なのか今まで分からなかったものが、やっと判明したのです。ただ、これはスクリプトから操作できるのですが、画面から操作するところが見つからない。つまり隠し機能なのか? というところで誰か知っている人がいましたら教えてくださいませ。


まず、段落スタイル・文字スタイルが当たっているドキュメントを用意します。

そして、次のスクリプトを実行します。

var pss = app.documents[0].paragraphStyles;
var css = app.documents[0].characterStyles;
pss.itemByName("aa").previewColor = UIColors.RED;
pss.itemByName("bb").previewColor = UIColors.BROWN;
pss.itemByName("cc").previewColor = UIColors.ORANGE;
css.itemByName("11").previewColor = UIColors.GREEN;
css.itemByName("22").previewColor = UIColors.VIOLET;
css.itemByName("33").previewColor = UIColors.LAVENDER;

ここで重要なバグがあるので注意! UIColorsの値すべてが使えるわけではありません。別の色が表示されたり、全く表示されなかったりします。コード内の値は表示はされますが色が異なります(どうなるのかは次回予定。値はRGB表記([R, G, B]の配列)も使えるはずなのですが、こちらも使えません(エラーは出ないのに着色されない。なんだかなぁ。

あ、色の指定を解除するにはNothingEnum.NOTHINGを指定してください。

さて、スクリプトが実行されたら「スタイルオーバーライドハイライター」

をクリックして確認できます。

こんな風に、段落スタイル・文字スタイルが当たっているところが着色されて表示されるというわけです(シアンはオーバーライド、それ以外はスタイルが当たっているところ)

でも、どの色がどのスタイルなのか、瞬時に判断できないところが難点ですよね。それでボツ?機能になっているのかもしれません(バグも多そうだし。でも、もしかするといずれインターフェイスを整えて「新機能」として出てくるかもしれません。