DTPab

DTPにまつわるあれこれ

「InDesign JavaScript教室」第1期の申込受付が始まりました

cs5.xyz

お〜まちさん(CS5)が以前の東京DTP勉強会で話していらっしゃった、希望者がいればInDesignを使ったJavaScriptExtendScript)の勉強会を開催しますというお話、実現することになりました。
詳細は上記リンクより確認してください。

で、なんで僕が便乗して宣伝しているかというと、僕もお手伝いとして参加するからです(以前告知済みですが)。定員20名(先着順)ということで、検討中の方はお急ぎください。事前登録の方も含めて、幸いにも順調に席が埋まってきています。

お〜まちさんも書いていらっしゃいますが、参加希望者が集まれば第2期、第3期と続くかもしれません。

東京以外の場所でも、希望者が多ければ開催したいと思っています。また、東京でも希望者が多ければ何回でも開催したいと思っています。

またとない機会ですので、みなさまゼヒゼヒご検討ください〜^^/

【追記 4/18 11:06】

なお、今回お手伝いいただいている、東京のDTPの勉強会主催のあかつきさんより、第1期参加者への特典として、次回DTPの勉強会(7月14日)へ招待していただけるということです。

なんと、7月開催のDTP勉強会へのご招待特典があるみたいです!
今回(第1期)だけの特典かもしれないので!
検討中の方は! 応募フォームへGo!

【追記 4/18 14:27】
今回募集分は定員となりました。ご応募ありがとうございました。

【追記 4/20 8:32】
今回参加できなかった方で次回開催を希望される方は、是非ともご連絡を。次回以降は僕がスタッフとして参加できるかどうかは分かりませんが、希望者が集まらないとなかなか開催に踏み切ることができません。ありがたいことに「どれだけ安く提供できるのか」を本当に考えてくださっているので、この機会に是非、次回開催希望をお送りください!^^

cs5.xyz

InDesignの正規表現検索チートシート

なんか前回も検索についての記事だったんですけど、今回もたまたま検索に関する記事です。やっぱりよく使うInDesign正規表現検索。
で、InDesign正規表現検索は標準機能ながら強力で使いやすいのですが、いかんせん入力が面倒。あの検索窓、少し大きくしたい…と思っている方は僕以外にもきっといるはず^^;
以前は、たまーに使う正規表現を(いちいち記憶してられないので)チートシートっぽく取っておいて、それをコピペするなどして使ってました。

特殊な数字の検索チートシート

ということで、まずは僕が使っているInDesign正規表現チートシートの一部を上げます。以下はすべてUnicodeのコードポイントが付番されているものだけです。念のため書いておくと、ここに挙げている正規表現はすべて基底文字*1で、字形を変えられていてもマッチ自体はしてしまいます。そのあたりの細かいところまでは考えていないので、検索対象をよく吟味して使ってください。それと、置換に使う場合は、そのフォントがグリフを持っていないことがあるので注意してください。

  • 丸数字(①〜⑳):[\x{2460}-\x{2473}]
  • 黒丸数字(❶〜⓴):[\x{2776}-\x{277f}\x{24eb}-\x{24f4}](❶〜❿:\x{2776}-\x{277f}、⓫〜⓴:\x{24eb}-\x{24f4})
  • 括弧数字(⑴〜⒇):[\x{2474}-\x{2487}]
  • 時計数字(Ⅰ〜Ⅻ):[x{2160}-\x{216B}]

スクリプト

これらの正規表現を、正規表現検索パネルの検索文字列に追加するスクリプトがこれです。

app.findGrepPreferences.findWhat += "[\\x{2460}-\\x{2473}]"; //丸数字を検索窓に追加

すごく単純なスクリプトなのでワンライナーです。
既に入力済みの検索文字列の後ろに追加します。+=の部分を単純な代入演算子=にすれば書き換えです。要するに既に入力済みの文字列は無視され、スクリプトで指定した検索文字列になります。
文字列で検索条件に追加する場合は、コードの通り、バックスラッシュ\エスケープして\\とします*2
あとは好みですが、文字クラスを表すブラケット[ ]は外してもいいかもしれません。そうすると単純に「\x{2460}-\x{2473}」という文字列が追加されます。

こんな感じで、「たまに使うけど覚えてられない細かい検索文字列」みたいのはスクリプト化してしまうと簡単です。

*1:フォントがコードポイントと結びつけているグリフ。InDesignからエディタにコピペしたときに字形が変わるというか戻ってしまうことがありますが、この「戻る」基準のグリフという意味です。

*2:Windowsではバックスラッシュではなく円マークです。

ExtendScriptでJSONオブジェクトを使う

何度か書いていますが、ExtendScriptはECMAScript3なので、ES5で実装されたJSON.parseメソッドやJSON.stringifyメソッドが使えません。
これを使えるようにするためには、JSONライブラリを実装します。

まずはここから「json2.js」をダウンロードします。

GitHub - douglascrockford/JSON-js: JSON in JavaScript

拡張子をjsからjsxincに変更し*1、適当な場所に保存してください(今回は仮にユーザーフォルダに直接置いたことにします)。

ExtendScriptの冒頭で、以下の1文を記述します。

#include ~/json2.jsxinc

#include以降は保存した場所の絶対パスです。適宜書き換えてください。
これでJSON.parseメソッドとJSON.stringifyメソッドが使えるようになります。

JSONオブジェクトの扱いや、JSONファイルの生成などはまた改めて。最近、自分用に作るスクリプトには外部ファイル連携させるものが増えてきていて、そういうときにJSONを利用しています。簡単なものはタブ区切りテキストとかでいいんですが、オブジェクトをそのまま記述できたりして便利です。

*1:実際はjsのままでも構いませんが、ExtendScriptではincludeするスクリプトは明示的にjsxincにしたほうが分かりやすいので、この流儀に従っています。