検索と置換やスクリプトを使ったInDesignでの文章整形

この記事内の目次

InDesignで作業する前のテキストの段階で極力編集を済ませたいものですが、InDesign上での検索置換では、検索および置換にスタイルを絡めることができる優位性があります。

InDesignの[検索と置換]ダイアログボックスとクエリーの保存

InDesignの[検索と置換]ダイアログボックスには、次の5つのタブがあります。

  • テキスト
  • 正規表現
  • 字形
  • オブジェクト
  • 文字種変換

検索と置換の条件設定(クエリ)は、保存して再利用することができます。

保存したクエリは、「~/Library/Preferences/Adobe InDesign/Version 15.0-J/ja_JP/Find-Change Queries」内に、.xmlファイルとして格納されます。

また、[検索と置換]ダイアログボックスの[クエリ]のポップアップメニューにて、カテゴリの順番にブロックごとに区切られて表示されます。

あるふぁ(仮)さんのスクリプトで検索クエリーをメニューに表示する

あるふぁ(仮)さんのスクリプトを使うと、メニューバーに[置換]が追加され、[検索と置換]ダイアログボックスを開かずに実行できます。

「startup scripts」に「置換クエリをメニューに.jsx」を入れてInDesignを再起動します。

  • 「startup scripts」に入れてしまうと、アクセス権限の関係で再編集できません。別の場所において、シンボリックリンクを使っても同様。
  • 表示される順番の規則性が不明…
  • ダウンロードすると拡張子なしの「白紙ファイル」になっているときには、「.zip」の拡張子を付ければ解凍できます。
  • 改造すれば、オブジェクトの検索クエリも表示できます。

検索クエリーを改造して連続実行する

「バナナのつぶやき」さんの「4.スクリプトを書き換える」のテクニックを使えば、連続実行が可能です。むっちゃ便利ですが、テキストと正規表現など、カテゴリをまたがって実行することはできません。

ちょっと苦労したので、ソースコードを貼っておきます(文中のテキストは正しいのですが、画像内に余計な文字列があります)。

TextQueries=TextQueries.concat([{name:"連続置換",query:["クエリ名1","クエリ名2","クエリ名3"]}]);

「#正規表現知恵袋」

Twitterにて「#正規表現知恵袋」というハッシュタグがあります。

正規表現の使いどころについて知ることは編集作業の早道です。

モーメントにもまとめています。

欧文の整形にはデフォルトのスクリプト「FindChangByList.jsx」を利用

InDesignにデフォルトでついている「FindChangByList.jsx」というスクリプトを使うと、欧文の文章の整形を行うことができます。

設定内容は「FindChangSupport」フォルダー内の「FindChangByList.txt」に記載されています。

grep {findWhat:"  +"}    {changeTo:" "}  {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all double spaces and replace with single spaces.
grep    {findWhat:"\r "}    {changeTo:"\r"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all returns followed by a space And replace with single returns.
grep    {findWhat:" (?=\r)"}    {changeTo:""}   {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all returns preceded by a space and remove the space.
grep    {findWhat:"\t\t+"}  {changeTo:"\t"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all double tab characters and replace with single tab characters.
grep    {findWhat:"\r\t"}   {changeTo:"\r"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all returns followed by a tab character and replace with single returns.
grep    {findWhat:"\t(?=\r)"}   {changeTo:""}   {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all returns preceded by a tab character and remove the tab character.
grep    {findWhat:"\r\r+"}  {changeTo:"\r"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all double returns and replace with single returns.
text    {findWhat:" - "}    {changeTo:"^="} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all space-dash-space and replace with an en dash.
text    {findWhat:"--"} {changeTo:"^_"} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false} Find all dash-dash and replace with an em dash.

次の9つが設定されています。

Find all double spaces and replace with single spaces.
連続するスペースをひとつにする
Find all returns followed by a space And replace with single returns.
改行の後にスペースがある場合、そのスペースを削除する
Find all returns preceded by a space and remove the space.
改行の直前にスペースがある場合、そのスペースを削除する
Find all double tab characters and replace with single tab characters.
連続するタブ記号をひとつにする
Find all returns followed by a tab character and replace with single returns.
改行の後にタブ記号がある場合、そのスペースを削除する
Find all returns preceded by a tab character and remove the tab character.
改行の直前にタブ記号がある場合、そのスペースを削除する
Find all double returns and replace with single returns.
改行コードが連続する場合、1つにする
Find all space-dash-space and replace with an en dash.
「スペース」「ダッシュ」「スペース」を「ENダッシュ」に変換する
Find all dash-dash and replace with an em dash.
「ダッシュ」「ダッシュ」を「EMダッシュ」に変換する

「検索クエリーを改造して連続実行する」の「置換クエリをメニューに.jsx」にてまとめる方法はアクセス権限の関係で取扱いが面倒。単純な文字列の正規表現の検索・置換は、こちらに手を入れる方がスムーズです。