仕事が全然収まっていない中で、働き方改革法案の残業時間内でどうにか回るようにチームメンバーたちにがんばってもらっているこの頃です。こんばんは。
今回もこれらの記事の続きになります。
- InDesign 2020(15.0.2)で追加されたコミュニティスクリプト - DTPab
- InDesign 15.0.2 コミュニティスクリプトを紐解く 1 - DTPab
- InDesign 15.0.2 コミュニティスクリプトを紐解く 2 - DTPab
- InDesign 15.0.2 コミュニティスクリプトを紐解く 3 - DTPab
- InDesign 15.0.2 コミュニティスクリプトを紐解く 4 - DTPab
そして15.0.2のコミュニティスクリプトを紐解くシリーズも今回で最後となります。
はじめに
Adobeのヘルプだけでは心許ないので、中身をざっと解読してみました。その上でなるべく条件を整理してみたものです。間違いがあればご指摘ください。
SnapMarginsToTextFrame.jsx
機能の説明
選択したテキストフレームに合わせてドキュメントのマージン(天地左右の余白)を調整します*1。
実行後のダイアログにも表示されますが、すべてのマスターページのマージン設定が同時に変更されます。
前提条件
下記の条件を満たすテキストフレームを選択して実行します。
- (見開きの場合は)右ページに配置されている
- 回転されていない
- ページからはみ出ていない(後述)
また、長方形でない形状のテキストフレームを選択しても、そのテキストフレームの天地・左右のサイズにマージンは調整されます。
注意点
基本的に開発者の意図通りの状況で実行されることしか想定していないため、下記のような意地悪をしなければ問題ないです。
- ページからはみ出た、大きいテキストフレームを選択して実行すると設定がおかしくなる
- アンカー付きオブジェクトとして挿入されているテキストフレームに対しても実行可能
なので親のテキストフレームは左ページ、アンカー付きオブジェクトとして挿入しているテキストフレームを右ページに配置して、それを選択しても実行できる(結果は不正になる)
注意すべきはマスターページの扱いです。全てのマスターページのマージン設定が変更されますので、マスターページでマージンを使い分けている場合は注意してください。
また、マスターページのマージンが変更されるのですが、各ページのマージンがオーバーライドされたような状態になります。
例えば、Aマスターを天地左右10mmのマージン設定、Bマスターを天地左右20mmなどと異なる設定にしているとします。
この状態からスクリプトを実行すると、ドキュメントの各ページとマスターページのマージンがすべて選択したテキストフレームに揃えられます。
ドキュメントページの中でAマスターとBマスターを分けて適用していたとき、その後で仮にAマスターのマージンを手動で変更したとします。しかし、変更してもAマスターが適用されている各ページにマスターのマージン設定が反映されません。これが「各ページのマージンがオーバーライドされたような状態」という意味です。
これは(中のコード的に)マスターページを変更するのではなく、ドキュメント中の全てのページに対してマージン設定を変える処理を行っているためです。
SnapMarginsToTextFrameへの雑感
僕自身はこれを仕事で使うケースは1%もないのですが*2、1ページもののポスターやその他商印関係、付き物などには相性が良さそうです。
BreakTextThread.jsxと同じ開発者で、コードにたくさんコメントが残してあって勉強にもいいと思います。
中を見るとCC以降のほとんどのバージョンで動きそうな感じがします。少なくともCC2019以降のプロパティ変更への対応が読み取れたので、2017以降は間違いなく動くでしょう*3。
また、Undo履歴を残さない仕様になっているのもとても使い勝手がいいですね(Undoするとスクリプト実行前に戻れる)。
おわりに
これでInDesign 15.0.2で追加されたすべてのコミュニティスクリプトを確認できました。開発者の嗜好が色濃く反映された、どれも面白く素晴らしいスクリプトだと思います。
Adobeが開発した公式のサンプルスクリプトと違い、開発者がさまざまで、結果としてバラエティに富んだものになったなーというのが感想です。
InDesignのスクリプトが今後ますます盛り上がっていってくれると嬉しいなという思いを胸に、ここでコミュニティスクリプトの解説を終えます。
*1:開発者のサイトはこちら
Snap Margins to Text Frame | Id-Extras.com
*2:嫌味でもなんでもなく、フレームグリッドで版面計算する仕事しかないため
*3:利用しているプロパティの都合でCS5未満はどうしても動作しません