InDesign:ページ/スプレッド内だけ正規表現検索置換したいならスクリプトですぐだよ

街の静寂を破る美女の悲鳴
(だるい仕事の最中にTL覗いたら見つけた:美女でも悲鳴でもない)

https://x.com/luktar/status/1967540433145475405

これ、ふつうに基本的な検索置換でできると思ってた、というか自分が思い込んでしまってたんだけど、できないじゃんすか。
あらあらこれはこれは。

検索置換のターゲットを限定するところまでなら比較的かんたんにスクリプトで解決できるだわ、と
頼まれもしないのに気分転換を込めてちょっと書いてみました。
そのあと3〜4回修正しなければならなかったのがいつもの自分品質。


id_changeGrepOnPageOrSpread.jsx

CS3以降で動く気がします。


あそびかた

まず実行すると、怒られます(おい)。
これは正規表現検索の設定ができていない場合に出ます。

なので、検索置換ウィンドウを開いて、正規表現のほうで
検索文字列、置換文字列、検索形式、置換形式 をととのえておきます。

で、実行すると、入力を求めてきます。
アクティブページなら 1 を、アクティブスプレッドなら 2 を半角で入力してOK。

検索置換終了。やったわー。

過去に似たような処理を書いた気がして、掘り出してみようとも思ったけど
結局そんなに行数いかなかったのでこれでいっか。
拡張の可能性があるとすればページ範囲の指定ぐらいかなあ。

InDesign:段落の囲み罫と背景色が崩れたときの直しかた3選(そのうち2つはいまいち)

最近のInDesignには、「段落の囲み罫と背景色」という一見便利な機能(言い方!)があるんですが
これ、同じ設定の段落なら一括りにしてくれる設定にしていても、ちょっとのはずみで分断されてしまうことがしばしばあって、プリントやPDF書き出しのあと厳重にチェックしておかないとどこかで切れが発生してて得意先にこっぴどく怒られちゃうのです。
おおこわい。ああいやだ。

で、
その崩れちゃったときの直し方を現時点でまとめておきます。


の、前に

こんなもん、いま覚えても、いつか現象に直面したとき都合よく思い出せるわけがないだろう(と思う…)。
ので、ダメな状態をいつでも作れる手段も用意しました。やさしいなあ。

段落の「囲み罫」および「背景色」を設定した段落を連続で複数用意

グラフィックフレームをアンカー付きオブジェクトで挿入

グラフィックフレームのリンクを寸法違いの画像に置換。ほら壊れた。

これだけで百発百中。やったね。


というわけで、直し方ー。

1.外して付け直す

おすすめ度 ★☆☆☆☆

これは直感的操作で辿り着く解決法かも。たまに直らなくて焦る。
ただ、チェックを外す→チェックを入れる ということは、ストーリー全体で一括でやるわけにはいかないわけです。
チェックの入っていない段落にまでチェックを入れてしまうことになるので。
ストーリー内を目で追いながら、問題の出た箇所をピンポイントでやらないといけない。
チェックが入っている段落だけをループ処理するスクリプトをものかのさんが用意してくれましたが。

2.全ストーリーを再計算

おすすめ度 ★★☆☆☆

これは公式ヘルプで紹介されています。
https://helpx.adobe.com/jp/indesign/kb/235066.html
(追加情報の項を参照)
このコマンド、メニューにはなくて、ショートカットだけが存在しています。わかるかそんなもんっ
Ctrl + Alt + / キー(Windows)/Command + Option + / キー(macOS)
クイックアクセスからも実行可能。

イナズマボタンの隣にあるプルダウンメニュー(▼)から「メニューコマンドを含む」にチェックが入っていれば出ます。
メニューにないコマンドなのにね…

ただこれ、あまりにも長大なストーリーだと、直りません。上記ショートカット実行の瞬間だけは直るんだけど、すべてのキーから指を離したとたん、またおかしくなり直します。ちくしょうちくしょう。

3.すべてのストーリの構成を直ちにやり直す

おすすめ度 ★★★☆☆

※「ストーリ」は原文ママ
いま時点、これが一番信頼できます。うちのおすすめ。
「全ストーリーを再計算」同様、メニューにないコマンドです。
しかも初期設定ではショートカットが割り当てられていないので、
編集メニュー>キーボードショトカットを開いて1,000項目以上のコマンドを仕事中にボケーッと眺めていないと見つけられない(すみませんねえほんとに)。
「全ストーリーを再計算」同様、クイックアクセスからクイックにアクセスできます。

これ、ほんとに直ります。やったー。
ひんぱんに使う人はショートカットを設定しておくといいかも。

でこれ、うちの実務データ(66p、1ストーリー、アンカー付きオブジェクト50ヶ超)が知り得る限り最上位の厄介データで、これで大丈夫だったので他でも大丈夫じゃろう、とタカククリしてたんですが、ものかのさんご提供のテストデータでは全然ダメでした…記事のコメント欄を参照してください。
この3の方法だと、表示中のページだけ直って表示外ページがほぼ壊滅してしまう。なんでなんだ。

4.1をスクリプトで

おすすめ度 ★★★★☆

おや、「3選」じゃなかったのかい? という話なんですけど。
というわけで1こ追加なのです。
ものかのさんが自分使い(ご本人使い?)しているスクリプトに改良を加えてご提供してご下さったので、ありがたく使わせてもらうことに。やっぱスクリプトだよなー(手のひら)。

段落背景色や段落囲み罫の表示不良を直す.jsx

ものかのさん、ありがたすぎる。えらすぎる。すごすぎる。尊い。
いつか新築で豪邸を建てたらエントランスの床にはものかのさんの手形をあしらいたい。

さいごに

いくつか紹介したんですが、どの手法を用いたとしても、最後は目視確認を必ず行うべきです。
これは実体験でも数回ひどい目に遭ったことから、切実に呼びかけたいところ。
いつの日か破綻のないバージョンが出ますようにお祈り。


おまけ

で、「全ストーリーを再計算」と「すべてのストーリの構成を直ちにやり直す」で何がちがうのさ、と。
わからんですね。
英語版のコマンド名を調べてみました。

全ストーリーを再計算
Recompose all stories
(すべてのストーリーを再構成)

すべてのストーリの構成を直ちにやり直す
Recompose all stories immediately
(すべてのストーリーをすぐに再構成)


…わからんですね。
すぐに「じゃない方」は一体、いつ再構成してくれるというのだろう… だれかおしえて。

InDesign:フレームグリッドを基準にベースライングリッドを整えるやつ

読まなくて全然いいプロローグ

毎回、泥をこねるような指示ばかりよこす得意先がおりましてなあ。
つねづね「見本組で制定したスタイル以外の体裁指示をアドリブでクリエイトしないでよー」
と苦情を伝えているんですけど、「でもー、著者がそうしてくれってー」って。ハー。
舵取りのできない編集さんが粒揃いの出版社なわけですが、新刊作業の際、
“お抱えのデザイナーに作らせたフォーマットデータ” を添えてきてくれたので
「ようやく俺の魂の叫びが届いたかよ」なんて思いきや、
初校直前から「やっぱりこうしてー、全部そうしてー」
再校時に「ここはこれ」「ここはコレ」「ここは此れ」
あの、これ と コレ と此れ は同じなんですか、別物なんですか…
などと、結局いつもの泥こね。

それはいいんだけど(じゃあ書くなよー)
よこされたフォーマットデータがフレームグリッドでできている。
それは受け入れる。
本文が対話形式。セリフ部分に「段落の囲み罫」がついている。
それもまあ、まあ…
このあと、たぶん絶対「0.5行アキ」などと割り切れない指示がくる。
それはとてもだめなのだ。段落の囲み罫はフレームグリッドにあまりにも忠実なのだ。
いかん、なんとか構造を変えねば。


ダウンロード

というわけで、かねてより欲しかったので、この機会にスクリプト書きました。
選択したフレームグリッドの設定をもとに、ベースライングリッドの設定をととのえるやつです。

baselineGridSetter.jsx

今回はgistにアップしました。
リンクに飛んだあと、右上あたりにある「DownloadZIP」ボタンを押しましょう。
たぶんCS3などでも動くと思います。


あそびかた

フレームグリッドを選択。もしくは中のテキストを選択。
(しなくても動きますが仕様は後述)

ベースライングリッドを◯◯に揃えます、的なアラートが出るので間違いないか確認(後述)。

ダイアログが出るので、なおしたベースライングリッドを何揃えで使うか選択。
このとき、実行時に選択したテキストがグリッド揃えなら初期値に反映されます。

でOKボタン。やったね。( ↓ スクショは「仮想ボディの上」で実行したもの)


こまかい仕様

興が乗って、フレームグリッド以外のものも対象にしたので、以下の簡素なフローチャートもどきを参考にどうぞ。

テキストフレームまたはテキストが選択されているか
テキストフレームに「カスタムのベースライングリッドを使用」のチェックが入っていれば、
ベースライングリッドの開始位置、間隔はカスタム略の設定を反映
カスタム略未使用なら、
フレームグリッドを対象とする。揃え位置選択ダイアログへ
フレームグリッドを選択していなければ、
アクティブページのドキュメントグリッドを対象とする。揃え位置選択ダイアログへ

揃え位置選択ダイアログを出す。初期値は「仮想ボディの中央」
選択テキストがあってグリッド揃えされていれば、
グリッド揃え選択ラジオボタンに反映
選択テキストフレームがあり、先頭段落がグリッド揃えされていれば、
グリッド揃え選択ラジオボタンに反映
条件外なら初期値のまま

みたいなかんじです。
ちなみにグリッド揃えの、ダイアログのラジオボタンにない項目の
「平均字面の上」「平均字面の下」については、座標値の決定に貢献がないため除外しました。

不都合については知りませんが、不具合については直していただいてかまいませんのでー。
直したらおしえてね。


ギャラリー