Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2010-09-01

[][][][]第6回大阪DTPの勉強部屋

第6回『大阪DTPの勉強部屋』でおしゃべりします。

セッション1ではInDesign正規表現の基礎から実例までを学べるワークショップになっています。InDesign正規表現は飾りじゃありません。正規表現を使えば、今まで苦労していた手作業を一瞬で解決する魔法が手に入ります。正規表現を使ったことがない方、使ったことはあるがちょっと自信がない方に最適な講座です。概ね、EPUB版『InDesign者のための正規表現入門』をテキストにしています。およそ90分ですが、正規表現を学ぶきっかけになればと考えています。

会場では、CD-ROM版『InDesign者のための正規表現入門』を販売させていただくことになりました。CD-ROMの内容は

  • EPUB版『InDesign者のための正規表現入門』
  • HTML版『InDesign者のための正規表現入門』
  • セミナーで使用するスライドとすべてのDEMOムービー(.mov形式と.f4v形式)

が収録してあります。今回、大阪DTPの勉強部屋さんのご協賛をいただいて、通常価格1,000円のところ半額の500円で頒布しております。*1もしよければ、お求めください。なお、このCD-ROMは数に限りがあるため、通信販売を予定しておりません。


セッション2では、スクリプティングについてのディスカッションです。パネリストは下記のとおり。

おおまかな進行内容は、akane_nekoさんによる基本的なスクリプトのルーチン(初心者向け)。たけうちとおるさんとぼくとで、プログラミングTips(中級者向け)を予定しています。時間が許せばちょっとした質疑応答もあるようです。


ではみなさま、大阪で会いましょう!


参照

[大阪DTPの勉強部屋]9/25(土)開催!スクリプト特集に出演!? - 秋葉秀樹 個人ブログ

【大阪DTPの勉強部屋】9/25(土)に参加します - ちくちく日記

大阪DTP勉強会 - たけうちとおるのスクリプトノート

*1:すでにオンラインでEPUB版を購入済みの方は、iPhoneなどでご提示いただくか、巻末「リリースノート」に記載されている発行日を口頭で答えていただければ、さらに100円割引いたします。当日忘れちゃった人はごめんなさい。

2010-07-24

[][][]InDesign CS5ではスクリプトラベル使用禁止

ここに書かれている通りなんですが、InDesign CS5ではスクリプトラベルを手がかりにPageItemを参照するのが難しくなりました。CS4以前のスクリプトラベルに依存しているプログラムはうまく動きません。スクリプトラベルはもう過去の遺産になったようです。

たとえば、スクリプトラベル「hoge」を持つテキストフレームのcontentsを取得しようとして

var my_doc = app.documents[0];
var my_tf = my_doc.textFrames.itemByName("hoge");
alert(my_tf.contents);

と書いてもエラーになります。「item("hoge")」も同様です。

じゃあいったいitemByName()では何を渡すかといえば、レイヤーパネルの名前です。

f:id:seuzo:20100724015016p:image

つまり、CS5からはレイヤーパネルの名前からオブジェクトを参照しなければなりません。次バージョンでまたぞろ勝手に変えられたりしないことを祈るばかりです。

最初に挙げたAdobe Forums中ではapp.scriptPreferences.versionを一時的に書き換える方法が紹介されています。まあ、頭痛薬の代わりくらいにはなるかもしれません。

(追記:2010-07-26T17:21:47+0900)お〜まちさんが、この件についてまとめてくだざっています。参照してください。

[][][]InDesign CS5では、PageItemの親はPageではなくSpread

上記ブログにもちょっとコメントさせていただいて、すっかり「書いた気」になっていたのですが、一応ここにも書いておきます。

InDesignのスクリプトを長く書いていて、DOMがある程度染み付いている方は「PageItemの親はPageだよね」と何の疑いもなく信じています。しかし、InDesign CS5では、PageItem.parentはSpreadを返します(spreadの親はapplication。Pageを通貨しましせん。)。ですから気がつきにくく、Adobe流儀(驚き最大の法則)に振り回されてしまうかもしれません。


PageItemからPageオブジェクトを得たい場合は、InDesign CS5からPageItemオブジェクトに新しく追加された「parentPage」プロパティを使ってください。

var my_sel = app.documents[0].selection[0];//なにかページアイテムを選択している
var my_page = my_sel.parentPage;
alert (my_page.name);

「parentPage」プロパティについてはディザInDesignブログさんの記事で知りました。ありがとうございました。

2009-10-26

[][][][]文字の高さを実寸ぴったりにする

たとえばタイトルなどで文字の高さを10mmぴったりにしたいことがある。そんな時は文字の大きさを何級(または何ポイント)にすればいいのだろうか? 計算通りの40級で試してみるとこんな感じ。

f:id:seuzo:20091025164454g:image

日本語だとだいたい合っているように見えるけれど、厳密に見ると10mmよりも少し小さくなっている。文字(字面)は仮想ボディよりも小さくデザインされているのが普通だからだ。たとえば「seuzo」のように、アルファベットのshort letterだけの文字列だったらどうやって天地を合わせればいいのだろうか? ガイドを引いてちょっとづつ大きさを変えて合わせるしかない?

こんな時に使える便利なスクリプトのご紹介:

Define cap- or x-height, not the slug | InDesign FAQ

このスクリプトは、ダイアログで与えられた文字を別のテキストフレーム上でアウトラインを取って大きさを計算している。

実際に使ってみよう。まず、下図のように天地を揃えたい文字列を選択する。

f:id:seuzo:20091025164455g:image

スクリプトを実行し、文字の高さに「10mm」、文字に「s」を入力する。

f:id:seuzo:20091025164456g:image

「OK」ボタンを押して処理すると、天地が10mmぴったりになっているのがわかる。

f:id:seuzo:20091025164457g:image

もちろん、日本語も大丈夫。

f:id:seuzo:20091025164458g:image

f:id:seuzo:20091025164459g:image

大見出しなどに限定*1だけれど、とても便利に使える感じ。

ちなみにダイアログが日本語化しているのは14行目から18行目を下記のように修正したから。*2

var sNoSelection = { en: "No text selected", de: "Es ist kein Text markiert.", ja: "テキストを選択してください" };
var sNoDocument = { en: "No document open", de: "Es ist kein Dokument offen.", ja: "ドキュメントを開いてください" };
var sDialogName = { en: "Define character height", de: "Zeichenh�he eingeben", ja: "文字の高さを調整" };
var sCHeight = { en: "Height of Character:", de: "H�he des Zeichens:", ja: "文字の高さ" };
var sDefCharacter = { en: "Character:", de: "Ma�gebendes Zeichen:", ja: "文字" };

*1:言うまでもないけれど、間違っても本文には使わないように^^

*2:「ja:"〜〜"」って追加すればいいってことね。デンマーク語ドイツ語文字化けっぽい。はてなめっ! 

2009-10-07

[][]大阪DTPの勉強部屋「スクリプトを作る」分科会

大阪DTPの勉強部屋「スクリプトを作る」分科会が行われます。

大阪DTPの勉強部屋 分科会の予定

09/10/15日(木)スクリプト勉強会します。 - たけうちとおるのスクリプトノート

  • 10月15日(木)19:00〜21:30
  • メビック扇町 5F 503号室
  • 無料
  • ノートパソコン持参推奨。

講師はたけうちとおるさん。力量も人柄も折り紙付きですね。きっとよいワークショップになると思います。近隣の方は行ってみるといいんじゃないでしょうか。

推測ですが、ノートマシンにはInDesignとか入ってるといいのかな。。。詳細はたけうちさんのブログをチェックしてください。人気があるようだと会期中に何回か開催されるようですよ。

2009-08-03

[][]自慢じゃないですが、いままで一度だって日本語ファイル名をサポートしたことはありません。

日本語ファイル名を扱うのはとてもやっかいなことだ。そうしたことに努力を傾注する方々を見るにつけ、強い敬意を覚える。たいへんだろうな、とも思う。クライアントから渡されるファイルのファイル名が日本語バリバリロケンローだったとしても、無下に突き返すわけにはいかない。なんとかするのがプロってものだろうとも思う。

しかしながら、この問題を積極的にフォローしようって気分にはどうしてもなれない。

第一に、自分がまったく日本語ファイル名を使わないから。実害がぜんぜんないんだよね。まったく平和で困っていない。正規表現の使えるリネームソフトがあれば、たいていの問題は平和的に解決できている。

第二に、日本語名はどこかで必ず破綻するから。ファイル名を使うのはアプリケーションだけじゃない。OSにしろ、ネットワークにしろ、CUIにしろ、必ずどこかで問題になる。バージョンやその組み合わせによっても対応が違う。だってさ、ISO 9660 Level 2に準拠していないんだもん。


日本語ファイル名によって、なんらかの不具合が起きた時「バグだバグだ」と騒ぐ人たちがいる。圧縮ソフトで文字化けしては騒ぎ、FTPや宅ふぁいる便で文字化けしたと騒ぎ、ホームページにアップしても見られない(なんかヘンな日本語だな^^)と言ってはサポートを困らせる。もっと平和に暮らせないのかね? 世界的に見れば、ほとんどのプログラマは英語圏にいる。そこでは日本語ファイル名などまったく想定されていない。仮にUTF-8対応で見えていたとしても、それが文字化けせずに正しく表示しているかどうかの判定すらできない。

とりあえず、騒がれる前にちゃんと書いておこう。

自慢じゃないですが、ぼくはは一度だって日本語ファイル名をサポートしたことはないです。


参照

ファイル名規則 - 名もないテクノ手

PowerRenamer

多機能リネームソフト - Shupapan