セルのコンテンツに応じてライブで段落スタイルを適用する
発端はこちら。
・セル用(td)を[基準]スタイルとして参照する段落スタイルを作成し、行揃えのみ変更
— DTP Transit (@DTP_Transit) December 17, 2022
・正規表現の記述の精度を高めていき、ある程度の段階で適用し直し(適用モレを回避するため)
「こんな方法がある」があれば、ぜひ教えてください! pic.twitter.com/tfyQGWuqPE
セルに入る文字に応じてそれぞれの段落スタイルを適用したい、と。
どこかで似たような話があったなあ、と思ったらこれです。
セルのコンテンツが特定の文字列の場合に、セルの塗りを設定する
こちらのコメントで、「正規表現を使用したい」「書式を変更したい」という要望があったのを覚えていましたので、これを機会にちょっと変更してみました。なお、元記事は「A.既に入力が完了している場合」と「B.入力中に塗りを自動設定したい場合」の2種類のスクリプトを作りましたが、今回は手抜きで「B.入力中に塗りを自動設定したい場合」のみです。
動作イメージ
動作環境・制限事項
確認してませんが、CS5以降であれば動くんじゃないかなと思います。次のような制限事項があります。
- 段落スタイルグループには対応していません。
- 正規表現はExtendScriptの仕様で使えるものに制限されますので、InDesignで使用可能な正規表現が使えない場合があります(~Kとか。あと先読み後読みにも注意)。
ダウンロード
「cellParaStyle.zip」のダウンロードはこちら。
使い方
準備
ダウンロードしたzipファイルを解凍し、「cellParaStyle_start.jsx」「cellParaStyle_stop.jsx」を、InDesignの[Scripts Panel]フォルダに入れてください。それ以外のファイルはどこでもよいです。
設定(正規表現と適用する段落スタイルの紐づけ)は、任意のテキストファイルを作成し、その中に記述します。サンプルとして「sampleParaRegEx.txt」を用意してありますので、それを読んでください。↓中身はこれです(タブ記号は[TAB])。
###### 指定文字列と段落スタイルの設定 ###### # # #で始まる行はコメントとして扱われます。 # また、空行は無視されます。 # # 正規表現文字列と段落スタイル名をタブで区切って記述します。 # 段落スタイルグループには対応していませんので注意してください。 # 例 # 〒\d{3}-\d{4}[TAB]郵便番号スタイル # # 正規表現は上から順に評価し、一致した時点で以降の設定を無視します。 # 最下行にはすべての文にマッチ(.*)を入れて標準の段落スタイルを指定してください。 # ^[○×◎△-]$[TAB]td.center ^[\\¥¥]?\d{1,3}(,\d{3})*円?$[TAB]td.right ^[1-9]?[0-9](\.\d+)?[%%]$[TAB]td.right .*[TAB]td
実行
InDesignのスクリプトパネルから「cellParaStyle_start.jsx」を実行します。設定ファイルを指定するダイアログが出ますので、k設定を記述したテキストファイルを指定してください。
あとは普段通りの操作を行ってください。
終了
必要なくなったら「cellParaStyle_stop.jsx」を実行してください。実行しなくてもInDesignが終了するときには同時に終了します。