Hatena::ブログ(Diary)

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

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

InDesignのTips一覧

2008-12-31

[][][]IDMLノート(2)

サンプルを次々とやってみます。

「Conditional Text」サンプルを試す

このサンプルは条件付きテキストを制御するみたいです。まず、「ConditionalText.idml」を見てみましょう。

f:id:seuzo:20081230114926p:image

「run.sh」はこうなっています。

#!/bin/sh

sh conditionaltext.sh -off "Print Only" ConditionalText.idml  ConditionalText-PrintOnlyOff.idml
sh conditionaltext.sh -on "Print Only" ConditionalText-PrintOnlyOff.idml ConditionalText-PrintOnlyOn.idml

「ConditionalText.idml」に対して、「"Print Only"」を「-off」にしたものを「ConditionalText-PrintOnlyOff.idml」へ出力。

もうひとつ、「ConditionalText.idml」に対して、「"Print Only"」を「-on」にしたものを「ConditionalText-PrintOnlyOn.idml」へ出力するようです。早速実行してみましょう。

▼ConditionalText-PrintOnlyOff.idml 確かに、Print Only条件が非表示になっています。

f:id:seuzo:20081230115729p:image

▼ConditionalText-PrintOnlyOn.idml Print Only条件が表示になっています、ってことは変わっていないってこと^^

f:id:seuzo:20081230115822p:image

では、コマンドラインから

$ conditionaltext.sh -off "Web Only" ConditionalText.idml  ConditionalText-WebOnlyOff.idml

としてみましょうか。

▼ConditionalText-WebOnlyOff.idml なるほど、Web Only条件が非表示になっています。だからなんだ、とか言わないように。

f:id:seuzo:20081230120151p:image


「Copy Styles」サンプルを試す

「Copy Styles」サンプルは段落スタイルやオブジェクトスタイルをコピーするサンプルです。まず、「FromParagraphStyles.idml」をみてみます。

f:id:seuzo:20081231194621p:image

次に「ToParagraphStyles.idml」を見てみます。

f:id:seuzo:20081231194722p:image

実行ファイル「run.sh」の内容は下記の通りです。

#!/bin/sh

sh copystyles.sh -a -p FromParagraphStyles.idml ToParagraphStyles.idml CopyAllParagraphStylesResult.idml
sh copystyles.sh -e -p FromParagraphStyles.idml ToParagraphStyles.idml CopyExistingParagraphStylesResult.idml
sh copystyles.sh -n -p FromParagraphStyles.idml ToParagraphStyles.idml CopyNewParagraphStylesResult.idml

sh copystyles.sh -e -o FromObjectStyles.idml ToObjectStyles.idml CopyExistingObjectStylesResult.idml

なんだかたくさんオプションがありますね。ヘルプを確認してみましょう。

$ copystyles.sh -h
usage: CopyStyles [operation] [style type] [source file] [destination file] [output file]

	CopyStyles copies a style from a source IDML Package to a destination IDML Package.

Operations:
	-h	This help message.
	-a	All styles are copied from the source to the destination.
	-e	Existing styles or styles that share a common name are copied from the source to the destination.
	-n	New styles or styles not found in the destination are copied from the source to the destination.

Style Type:
	-p	Paragraph Styles.
	-o	Object Styles.

Examples: 
	CopyStyles -e -o FromObjectStyles.idml ToObjectStyles.idml CopyExistingObjectStylesResult.idml
	CopyStyles -a -p FromParagraphStyles.idml ToParagraphStyles.idml CopyAllParagraphStylesResult.idml

では、オプション「-a -p」を指定して、段落スタイルのすべてをコピーした「CopyAllParagraphStylesResult.idml」はどうなっているかというと...

f:id:seuzo:20081231201034p:image

すべての段落スタイルが統合されていますね。


「ICML Builder」サンプルを試す

「ICML Builder」サンプルはXHTMLファイルからをICMLに変換します。まず入力となるXHTMLである「story.html」をブラウザで見てみます。

f:id:seuzo:20081231205557p:image

実行ファイルである「run.sh」は下記のようになっています。

#!/bin/sh

sh icmlbuilder.sh xsl/icml.xsl story.html story.icml

実行結果の「story.icml」をInDesignドキュメントに配置してみます。

f:id:seuzo:20081231210215p:image


あ、今日は大晦日ですね。地球46億年を1年に例えると、今は原人が火を使い始めたくらいの時間だそうです。

今年もお世話になりました。来年もどうぞよろしくお願いいたします。

2008-12-30

[][][]IDMLノート(1)

InDesign CS4の新機能、IDML。自分の学習と備忘録も兼ねて、何回かに分けて少しずつやっていこうと思います。おつきあいいただければ幸いです。

わたしの現在の環境はMac OS X 10.5.6です。以下の説明はすべてこの環境を前提にしています。ディレクトリ階層などはわたしの好みを反映しているので、特に推奨というわけではありません。

InDesign CS4 IDML ReadMe(抄訳) - 名もないテクノ手」も参考にしてください。


必要なものをダウンロード

http://www.adobe.com/devnet/indesign/

の「HOME」タブから「Download the InDesign CS4 Products SDK」をクリックしてSKD一式をダウンロードします。

  • adobe_indesign_cs4_products_sdk_352mac.dmg

「Documentation」タブから下記ドキュメント類をダウンロードします。

ホームディレクトリにIDMLディレクトリを作成して、ダウンロードしたものをすべてコピーします。ディスクイメージはマウントして「SKD」以下をすべてコピーしました。スナップショットはこんな感じになります。

f:id:seuzo:20081225234803p:image


パスを通す

ターミナル上でツールを使えるようにパスを通します。~/.bash_profileを編集します。上記のようなディレクトリ階層ですとこんな感じ(該当部分のみ)。

export IDMLTOOLS_HOME="~/IDML/SKD/devtools/sdktools/idmltools"
export PATH=/usr/local/bin:$PATH:$IDMLTOOLS_HOME/bin

ちゃんとパスが通ったかどうかテストしたいなら、ターミナルを再起動して下記のコマンドをタイプしてみましょう

$ package.sh -h
Exception in thread "main" java.lang.NoClassDefFoundError: com/adobe/idml/Package

んげ! エラーでたわー

いろいろ試したあげく、どうやらホームディレクトリを指定するのに、「~/」は使えないと判明。ちゃんとフルパス指定しないといけないのでした。~/.bash_profileを再編集します。

export IDMLTOOLS_HOME="/Users/[username]/IDML/SKD/devtools/sdktools/idmltools"
export PATH=/usr/local/bin:$PATH:$IDMLTOOLS_HOME/bin

これでヘルプは出るかな?

$ package.sh -h
Error: Incorrect usage!
Usage: Package -hcd source destination
-h	This help message.
-d	Decompress source file into destination directory
-c	Compress all files in the source directory into destination file
-i	Call PackageInspector to dump info from this package.

なんとなくUsage出た感じ。こんなことでほんとにできるんだろうか、かなり不安になります^^

#実はこのへんで心が折れて、2日くらいダメ人間に成り下がっていました...


「Add Catalog Pages」サンプルを試す

準備が整ったら、サンプルのひとつも動かしてみましょうかね。実行する前にbefore.idmlファイルを見てみます。

f:id:seuzo:20081230013714p:image

実行ファイルである「run.sh」はこんな感じ

#!/bin/sh

sh addcatalogpages.sh input.xml before.idml after.idml

「addcatalogpages.sh」に対して、「input.xml」と「before.idml」を渡して、出力に「after.idml」を指定しているようです。「addcatalogpages.sh」はどうなっているかというと

#!/bin/sh

if [ "$IDMLTOOLS_HOME" ]; then
	
	export classpath="$IDMLTOOLS_HOME/jars/idmltest.jar:$IDMLTOOLS_HOME/jars/idmltools.jar:$IDMLTOOLS_HOME/jing/bin/xercesImpl.jar:$IDMLTOOLS_HOME/jing/bin/xml-apis.jar:$IDMLTOOLS_HOME/jing/bin/saxon.jar:$IDMLTOOLS_HOME/jing/bin/isorelax.jar"

	java -classpath $classpath com.adobe.idml.samples.AddCatalogPages "$@"

else

	echo Please define the environment variable IDMLTOOLS_HOME.

fi

こちらもクラスパスを定義して、javaに引数として渡しているだけのように見えます。

「input.xml」はこんな感じ。おそらくこれがXSLTによって変換されるんでしょうね。

<?xml version="1.0" encoding="UTF-8"?>
<Data>
    <Category id="1" name="Wear Aquo: Men">
        <Item id="1">
            <Name>Men’s Orange Tee</Name>
            <Number>#0003456</Number>
            <Description>Look hot in this new tee, fresh for 2007. Regular fit. Made in the USA.</Description>
            <Detail>Machine Wash</Detail>
            <Detail>27” from shoulder to hem</Detail>
            <Detail>100% Cotton</Detail>
            <Price>$24.00</Price>
            <Size> S, M, L, XL</Size>
            <Image>male_tshirt_1.jpg</Image>
        </Item>

#以下略Itemが16個並びます

    </Category>
</Data>

なんだかよくわからないまま実行です。

「やれるとは言えない。けど、やるしかないんだろ...」

「大丈夫、あなたなら出来るわ。」

とりあえず、行きます!

$ cd ~/IDML/SKD/devtools/sdktools/idmltools/samples/addcatalogpages
$ run.sh

2秒くらいで、「after.idml」が生成されました。新しいスプレッドが生成され、「input.xml」の内容がレイアウトされています。

f:id:seuzo:20081230020214p:image

f:id:seuzo:20081230020213p:image


正直ちょっとハードルは高いかもしれません。理屈がわかっていないから余計そう感じるのかもしれませんが。とりあえず、はじめの一歩でした。

2008-12-26

[]オライリージャパンがEbook Storeをオープン

若干遅いという感じがしなくもないですが、オライリージャパンがeBookの販売を始めたようです。

Ebook Storeオープン -- オラの村

言うまでもなくeBookの良さは

  • 検索性に優れる
  • ボリュームのある書籍も持ち運びが容易
  • ボリュームの小さなスポット商品の可能性を広げる

といったところでしょうか。しかし、現在ラインナップされているような300-400ページ程度の標準的なボリュームの本では、eBookよりもむしろ紙であることの優位性の方が高いような気がします(そもそも印刷を前提に企画されたのだからあたりまえか)。これくらいの本だと、目次・索引で十分検索できますし、持ち運びも強靭な体力を要しません。

米国O'REILLYで展開されているような50ページ程度の企画ものeBookが登場できる可能性は、非常に期待が持てます。たとえばこんな感じのもの...

http://oreilly.com/catalog/9780596517069/index.html


あと、もうちょっと安いといいな。せめて印刷本の半額くらいなら検索用に購入したいです。本の価格のほとんどが紙代・印刷代・流通費だとすると、半額ってのは悪くない線だと思うんですけれど...

2008-12-25

[][][].inddファイルを配置すると、マスターアイテムが欠落

InDesignSecretsの引用ですが、InDesign CS4で「.indd」ネイティブファイルを配置した時に、なぜかマスターアイテムの一部が欠落します。ネイティブファイルを配置って、書籍のイントロや、ムックの巻頭口絵などにちょいちょい使うので、ご注意ください。

再現方法は下記の通りです。


(1)マスターページに飾りの地アミやノンブル、柱などをいれて置きます。

f:id:seuzo:20081225211322p:image


(2)通常のやり方でページネーションします。

f:id:seuzo:20081225211423p:image


(3)違うドキュメントから、上記で作成したドキュメントを配置します。

f:id:seuzo:20081225211511p:image

ちゃんとリンクできたぞ。なにかおかしいのか?

f:id:seuzo:20081225211554p:image


(4)「表示画質」を「高品質表示」にします。

f:id:seuzo:20081225211729p:image

はい、消えた〜!

これ、表示だけではなくて、PDF書き出しや、プリントしても欠落しています。

f:id:seuzo:20081225211954p:image


回避方法

InDesignSecretsさんでは「すべてのページアイテムのオーバーライド」でマスターアイテムからオーバーライドさせる方法が紹介されています。

オーバーライドさせたくないのなら、PDFに書き出してから配置すればこのような欠落はなくなります。

まあ、派手めなバグなのでドットリリースで直されそうな気がします。(追記:2010-11-02T13:29:06+0900)このバグはInDesign 6.0.1アップデータで修正されているはずです。


参照

Nasty CS4 Bug: Missing Master Items in Placed .INDD -- InDesignSecrets

2008-12-24

[][]オンラインマニュアルにコメントを書き込む

Adobe CS4のオンラインマニュアルには、ユーザーがコメントを書き込めます。オンラインマニュアルが明らかに間違っている場合や、補足事項などをコメントとして書き加えることができます。ということで書き込んでみましたよ。

メタ文字は、検索を実行するときに文字または記号の代わりに使用する文字です。検索と置換ダイアログボックスの「テキスト」セクションにあるメタ文字はカレット(^)で始まり、「正規表現」セクションにあるメタ文字はチルド(~)または円記号(\)で始まります。メタ文字は、検索と置換ダイアログボックスの「テキスト」タブまたは「正規表現」タブで入力できます。

検索のメタ文字

いまどき「円記号」はないんじゃないの? 実際、Mac環境だと円記号(Unicode 00a5)ではメタキャラクタにならないし。ということでレッツポスト。


1)サインインします。

ここはどこかの匿名掲示板じゃないので、コメントを書くためにはAdobeIDでサインインしなくちゃいけません。記事の一番最後の部分からサインインします。

f:id:seuzo:20081224144111p:image

サインイン画面になるので、AdobeIDとパスワードを入力してサインインします。

f:id:seuzo:20081224144222p:image


2)コメントを追加

オンラインマニュアルの記事画面に戻りますから、一番下の「コメントを追加」ボタンをクリックします。

f:id:seuzo:20081224144351p:image

書きたいことを書きたいだけ書いてください。

f:id:seuzo:20081224144451p:image

コメントが追加されました。

f:id:seuzo:20081224144543p:image

名前が「名 氏」式なので、ジミー佐古田みたいなことになってます。


このコメントシステムは管理されているようです。そりゃそうだ。不適切な発言や、不平不満は削除される模様。わたしだって、ヘルプで探し物をしている時に他人の不平不満を読みたくないしね。*1

管理者によって認証され、ポイントが付加されるとメールが送られてきます。この「コミュニティヘルプポイント」ってよくわからないなあ...はてなポイントみたいなもの?(謎)


追記:モデレータ(管理者)の方へのお願い(2008-12-24 17:00:00 JST)

このオンラインマニュアルへのコメントは、質問や議論、告知や意思表明の場ではないことをご考慮いただきたいと思います。質問や議論はユーザーフォーラムへ誘導していただいて削除されるべきです。告知や意思表明は各自のブログなどで行っていただければいいかと。

言うまでもなく、オンラインマニュアルはわからないことを調べるためのページです。明らかな間違いへの指摘や追補をユーザーが追加できるのはすばらしい。けれども、そこで議論が繰り広げられたりしたら、(調べもののために読んでいる)ユーザーを混乱させるだけでしょう。すべてはユーザーの利益を最優先にしていただきたいと願います。

返信や同意、お礼の類いも不必要な情報です。BBSとは違うのです。なにとぞご理解いただきたく、追記させていただきました。


追記:クリエイティブコモンズ(2008-12-24 19:00:00 JST)

このオンラインマニュアルは、クリエイティブコモンズ*2のライセンスになっています。by-nc-saは、表示・非営利・継承の条件下で複製、頒布、展示、実演、リミックスが許可されているという意味です。企業サイトの良心としてこうしたライセンスを採用するのは評価に値します。

明示されていませんが、こうした場所に書き込まれたコメントもまたこのライセンスを継承すると考えるべきだと思います。自分の書き込んだコメントがあちこちで引用されたり配布されても合意済みということですね。

*1:いるんだろうなぁ、こういうところに質問を投げちゃうワケワカメ子ちゃんとか、イカリング君とか。コミュニティとかコミュニケーションの意味がわかっていない人たちってのはいる。そいで、探し物をしてるだけの人の平和な心を乱されちゃうんだよ。

*2クリエイティブコモンズについてはこちらを参照してください。

2008-12-23

[][][]Spacesから戻ってくると表示がおかしい

Spacesから戻ってくるとパレット類の表示がおかしいです。再現性が確実ではないので、もしからしたら環境依存かもしれません。

Spacesで異なるモニタからInDesignの動作しているモニタに戻ってくると...

コントロールパネル、ツールパネルがグレーアウトする例

f:id:seuzo:20081215191622p:image

開いているパレットが真っ白になる例

f:id:seuzo:20081215191618p:image

まあ、該当パネルをクリックするとすぐに復帰するので実害はないです。


InDesign CS3の頃からSpacesとは相性が悪いという噂。便利なんだよなあ、Spaces。

Mac OS X 10.5 で Spaces を有効にすると CS3 アプリケーションのインターフェイスが正しく動作しない -- サポートデータベース

2008-12-22

[][]「正規表現の世界」のスライドを公開

InDesign CS4からFlashへ書き出せるってことなんですけれど、わたし的にはプラットフォーム違うって気分は抜けきらなくて、遊びっぽくサンプル書き出ししてみました。

せっかくなので、今年あちこちでやった「正規表現の世界」のスライドを公開したいと思います。*1

副読本「regex world in InDesign CS3」(PDF)も併せて参考にしてみてください。

*1:せうぞーはスライド作るのにInDesign使っていたのか! そうさ。

2008-12-20

[][][]InDesign CS4 IDML ReadMe(抄訳)

InDesign CS4 IDML ReadMe (PDF, 88k )」について、日本語訳してみました。はじめの一歩。とりあえず翻訳なのでクオリティはとても低いです。まちがいなどありましたら、ご指摘ください。

実はまだIDMLには手がついていません。冬休みの宿題かな。。。読書会とかしたいなあ...

このドキュメントはAdobe InDesign CS4で利用可能なIDMLリソースの情報を含んでいます。

  • IDMLドキュメントについての要約
  • IDMLスキーマについてのインフォメーション
  • IDMLTools Javaライブラリの記述。 このライブラリはIDMLと共に働くためのクラス、サンプルコード、およびツールを含んでいます。

IDMLドキュメント

IDMLについては下記ドキュメントを参照すること。http://www.adobe.com/devnet/indesign/の「Documentation」タブの中からダウンロードできます。

Adobe InDesign CS4 IDML File Format Specification」
IDMLファイルフォーマットの仕様書
Adobe InDesign Markup Language (IDML) Cookbook」
IDMLを操作する上でのハウツーガイド。クックブック。

IDMLスキーマ

Adobe InDesign Markup Language (IDML) Cookbook」でRelaxNGスキーマとその書き方について、いかにプラグイン設定を特定するかを説明します。(便宜上、スキーマのバージョン、アドビプラグインの標準設定からのビルド)http://www.adobe.com/devnet/indesign/にある利用可能なドキュメントや、SDK/docs/references/idml-schema.zip.にあるInDesign CS4 Products SDKも利用可能です。

idml-schema.zipアーカイブ上のディレクトリ:

idml-schema/package
IDMLファイルのスキーマが含まれています。
idml-schema/single
スニペット(IDMS)のスキーマ、InCopyのストーリー(ICML)、InCopyのアサインファイル(ICMA)が含まれています。

IDMLTools

IDMLToolsはIDMLのためのJava、XSLTベースのツール、API、およびサンプルを含んでいます。 このサポートはいくつかのJavaのクラスで実装されます。パッケージはコマンドラインかJavaプログラムの中で使用できます。

WindowsとMac OSシェルスクリプトは各サンプルで含まれていて、コマンドラインからこれらのクラスの動作を簡単にします。


●必要とするもの
Windows
Java JSE version 5 (JDK 1.5) 以降http://java.sun.com/downloads/index.html
Mac
Mac OS 10.4以降ならばプリインストール済み

●IDMLToolsのためのセットアップ
  1. 環境変数IDMLTOOLS_HOMEを設定する。この環境変数シェルスクリプトの中でclasspathとして参照されます。これはidmltoolsディレクトリに対する絶対パスを含まなくてはいけません。【注意】IDMLTOOLS_HOMEはディレクトリセパレータ(/とか\)で終わってはいけません。現在のリリースのclasspathsでは扱えません。
  2. システムパスに sdk/devtools/sdktools/idmltools/bin を追加してください。これで準備できました。どんなディレクトリからのスクリプトも有効にして、パッケージしてください。

Windowsでは、環境変数はシステムのプロパティで設定します。システムのプロパティはコントロール パネルからか、またはマイ コンピュータを右クリックしてプロパティを選択すると表示されます。システムのプロパティで詳細設定タブを選択し、環境変数を押します。IDMLToolsディレクトリへの絶対パスを含む、環境変数IDMLTOOLS_HOMEを作成します。ユーザー環境変数PATHに、idmltools/binへの絶対パスを追加します。(ユーザー環境変数PATHがない場合は、作成してください)

Mac OSでは、環境変数を設定するいくつかの方法があります。Bash(デフォルトターミナル)を使用しているなら、シェル始動ファイルに追加できます。~/.bashrcファイルを探してください。もしこの名前のファイルがターミナル上でも見つからないないなら(Finder上ではドットファイルは見えません)、作成してください。 次に、以下の変数を定義してください:

export IDMLTOOLS_HOME="/sdk/devtools/sdktools/idmltools"
export PATH="$PATH:$IDMLTOOLS_HOME/bin"

あなたのidmltoolsパスに合わせて内容を変えてください。この設定を有効にするために、シェルを再起動させてください。


ソースコード

すべてのIDMLToolsソースコードは以下の位置に置かれています。

IDMLTOOLS/src

コードはふたつのパッケージに分離しています。

  • 「com.adobe.idml」再利用できるクラスを含みます。
  • 「com.adobe.idml.samples」サンプルに特定のコードを含んでいます。

すべてのクラスはひとつのJARファイルにビルドされます。

IDMLTOOLS/jars/idmltools.jar

Javadoc情報は「IDMLTOOLS/docs.zip」パッケージを解凍してください。

パッケージを再ビルドするために、IDMLTOOLSディレクトリにある「ant.bat」(Windows) か「ant」(Mac OS)を起動してください。

このbuild.xmlファイルからEclipseプロジェクトを作成するには、Eclipseを実行し、choose File > New > Projectを選びます。そして「Java Project from Existing Ant Buildfile」を選びます。「Link to the buildfile in the file system」ボックスをクリックします。あたらしいEclipseプロジェクトが作られ、既存のAntビルドファイルが動作します。


●Tools

IDMLToolsは2つの有用なプログラムあるいはツールを含んでいます。これらのツールを使用するためには、前述のセットアップに従ってください。

  • 「package」ツールは、あなたがIDMLを圧縮・解凍・検査することを可能にします。コマンドラインからヘルプを見ることができます。
windows: package.bat -h
Mac OS : package.sh -h
  • 「validate」ツールは、あなたがIDML、IDMS、ICMLおよびICMAファイルを有効にすることを可能にします。コマンドラインからヘルプを見ることができます。
windows: validate.bat -h
Mac OS : validate.sh -h

●サンプル

IDMLToolsはJavaとXSLTベースのサンプルを含んでいて、IDMLのデモとして動作します。次の表では「samplename」がsamplename変数として実行に使用されます。(下記の「サンプルを実行する」を参照)*1

Samplesamplename
Add Catalog Pagesaddcatalogpages
Conditional Textconditionaltext
Copy Stylescopystyles
ICML Buildericmlbuilder
Import XML Templateimportxmltemplate
Notesnotes
Page Builderpagebuilder
Replace Imagesreplaceimages
Replace Storyreplacestory

Note: これらのサンプルは Saxon と XSLT 1.0を使用します。


○サンプルを実行する

サンプルを実行するために(ディレクトリ移動):

Windows: cd SDK\devtools\sdktools\idmltools\samples\samplename
         run.bat
Mac OS : cd SDK/devtools/sdktools/idmltools/samples/samplename
         run.sh

使用法のメッセージを様々なオプションについて(ヘルプを見よ):

Windows: cd SDK\devtools\sdktools\idmltools\samples\samplename
         samplename.bat -h
Mac OS : cd SDK/devtools/sdktools/idmltools/samples/samplename
         samplename.sh -h

○Add Catalog Pages

「add-catalog-pages」サンプルは、既存のIDMLファイルへ生成されたコンテンツを追加します。コンテンツは、XML入力ファイル中のデータから生成されます。サンプルは、新しいストーリーとスプレッドを作成するためにXSLTテンプレートを使用します。また、designmap.xmlファイルを変更するためにJava APIを使用します。サンプルを実行する前に、before.idmlファイルを検査してください。

このサンプルの実行は新しいIDMLファイル「after.idml」を生成します。「before.idml」および「after.idml」を比較してください。「after.idml」の中の追加の2ページに気づいてください。


○Conditional Text

「conditional-text」サンプルは、IDMLファイル中のコントロールする条件付きのテキストを実証します。サンプルを実行する前に、「ConditionalText.idml」を検査してください。いくつかの条件を使用するテキストを含んでいます。

サンプルを実行すると、「ConditionalText.idml」の中の条件を変え、「ConditionalText-PrintOnlyOff.idml」ファイルを生成します。その後に、「ConditionalText-PrintOnlyOff.idml」の中で条件を再度変えて、「ConditionalText-PrintOnlyOn.idml」と呼ばれるファイルに保存します。


○Copy Styles

「copy-styles」サンプルはJavaとXSLTを使用して、あるIDMLドキュメントから別のドキュメントへ段落スタイルを複製します。サンプルを実行する前にドキュメントのスタートを「From;」から始めて検査します。これらはスタイルがコピーされるドキュメントです。次に、「To;」で始まるドキュメントのセットを検査してください。これらはスタイルが新しいファイルにコピーされ書かれるドキュメントです。

このサンプルの実行すると、「Copy」で始まるいくつかのファイルを生成します。これらはひとつのドキュメントのスタイルから複製された目的のファイルです。


○ICML Builder

「ICML-builder」サンプルは比較的単純なXHTML(story.html)ファイルをICMLに変換します。

変換はヘッドライン、テーブル、強調、オーダーリスト、アンオーダーリストをサポートします。

このサンプルを実行すると「story.icml」を生成します。ファイルを見るためには、InDesignドキュメントを開いて、スプレッドにファイルを配置してください。

他の入力ファイルやスタイルシートからこのサンプルを実行できます。これは本質的に単一のファイル変換です。ユニークなのは、それがデフォルトテーブル幅をスタイルシートへ渡すということです。これはInDesignの表が列幅を要求するからです(幅は内容によって決定されません)。

他の入力を備えたこのサンプルを実行するためには、「icmlbuilder.bat」(Windows)または「icmlbuilder.sh」(Mac OS)スクリプトを使用してください。


○Import XML Template

「import-XML-template」サンプルは、IndesignXMLインポート機能をエミュレートします。タグ付けされたコンテンツを変換するためにどのようにXSLTを使用するか実証します。このサンプルによって生成されたIDMLパッケージは、このファイルがIndesignで開いたときに、生成されるファイルと同一です。

このサンプルはマルチプルテキストとイメージの変換を1つあるいは2つの層のXML構造でサポートします。インポートされるXMLファイルは、Indesignの中の構造化ウインドウを開きXMLにルートをエクスポートして作成されました。XMLファイルはIndesignの外部で修正され、再度インポートされます。修正されたXMLファイルが再インポートされるとき、XMLファイルになされた修正がIDMLファイルに適用されます。

このサンプルの実行すると、「WomensShirts.idml」を生成します。このファイルは「MensShirts.idml」ファイルへ「Import.xml」ファイルをインポートした結果です。

他の入力を備えたこのサンプルを実行するためには、「importxmltemplate.bat」(Windows)または「importxmltemplate.sh」(Mac OS)スクリプトを使用してください。


○Notes

「notes」サンプルは、IDMLパッケージから注釈をいかに抽出または削除するかを実証します。XPath式は注釈を抽出するために使用されます。また、XSLTはパッケージでのXMLの変換により注釈を削除するために使用されます。

注釈ががパッケージから抽出される場合、そのパッケージからテキストファイルにコピーされます。注釈がパッケージから取り除かれる場合、一部のパッケージは削除されたすべての注釈で作成されます。オリジナルファイルは修正されません。

extra notesサンプルは「SampleNote_Notes.txt」ファイル(パッケージで見つかった注釈をすべて含んでいる)を作成します。

remove notesサンプルは「SampleNote_NotesRemoved.idml」ファイル(削除された注釈で「SampleNote.idml」のコピーである)を作成します。

他の入力を備えたこのサンプルを実行するためには、「notes.bat」(Windows)または「notes.sh」(Mac OS)スクリプトを使用してください。


○Page Builder

「page-builder」サンプルは、スタイルシートのインテリジェントなセットを使用して、単純なXML入力をIDMLパッケージに変換して実証します。これらのスタイルシートは、ハードコードされたされたIDMLとXSLT構造のコンビネーションを含み、その入力に反応します。

「page-builder」スタイルシートとXML入力はスプレッド変数を含むIDMLドキュメントを構築するために使用できます。スプレッドは位置決め変数とともにページ変数に含むことができます。更に、JPGイメージおよびテキストフレーム(単一またはリンクされた)のどんな数もページに基づいた座標を使用して、ドキュメントのページに加えることができます。

このサンプルの実行すると、作業ディレクトリーの中で「pagebuilder.idml」と呼ばれるファイルを作成します。

他の入力を備えたこのサンプルを実行するためには、「pagebuilder.bat」(Windows)または「pagebuilder.sh」(Mac OS)スクリプトを使用してください。


○Replace Images

「replace-images」サンプルは、IDMLパッケージでのXMLファイルの変更による他のリンクしたイメージと埋め込まれリンクしたイメージをどのように取り替えることができるか示します。XSLTはXMLファイル変換のために使用されます。

このサンプルはイメージを取り替えるために2つのユニークな近似が見られます。

  • すべてのイメージとリンクを、手動更新と再インポートできるXMLをエクスポートしてください。
  • 置換イメージを選ぶために、Java Swingユーザインターフェースを使用してください。

他の入力を備えたこのサンプルを実行するためには、「replaceimages.bat」(Windows)または「replaceimages.sh」(Mac OS)スクリプトを使用してください。


○Replace Story

「replace-story」サンプルは、IDMLファイル中のストーリーを抽出し交換する方法を実証します。ストーリーの中で使用されるどんな資源(スタイル、スウォッチなど)もターゲットドキュメントにおいて利用可能であると仮定します。

このサンプルを実行すると、「temp」ディレクトリーへ「ReplaceStory2.idml」の中のストーリーをすべて抽出します。その後「ReplaceStory.idml」の中のストーリーを、「temp」の中のストーリーのうちの1つに取り替えます。

他のファイル中のストーリーを抽出し交換するためにサンプルを使用することができます。「replacestory.bat」(Windows)あるいは「replacestory.sh」(MacOS)スクリプトを使用してください。

「replace-story」サンプルはそれ自身の属性(Self attributes)によってストーリーを指定します。パッケージでのストーリー自身の属性(Self attributes)を得るために、「パッケージ」ツールで"-i”(inspect:検査する)オプションを使ってください。

Windows:    package.bat -i ReplaceStory.idml
Mac OS :    package.sh -i ReplaceStory.idml

*1:【訳者注】下記に示すそれぞれのサンプルが、/SKD/devtools/sdktools/idmltools/samples/ ディレクトリに収められている各ディレクトリ名に対応しています

2008-12-18

[][]Adobe Creative Suite 4 Design Premiumが届きました。

本日、Adobe Creative Suite 4 Design Premiumが届きました。

f:id:seuzo:20081217215046j:image

f:id:seuzo:20081217215142j:image


インストール前にしておきたいこと

  • (わたしはデモ版を外付けの起動ディスクに入れたので)デモ版で使用した時のユーザー設定を保存して、アンインストール
  • システムを再起動して、アプリケーションやら不要なデーモンやらウイルスチェックやらを停止する
  • (フォントのバージョンとか神経質な人は)/Library/Fonts ディレクトリにある小塚フォントを退避
  • インストールDVDの「お読みください」をよくお読みしてやる

インストール中は待つべし、待つべし。MacProだと20〜30分、MacBook Proだともう少しかかりました。

f:id:seuzo:20081217215520p:image


これから購入予定の方へ

えーっと、このリンクから辿ってアドビストアでお買い物をしていただくと、ぶっちゃけわたしに小銭が入ります。サイトトップのバナーから入っていただいても同様です。「小銭が大事なんですよ、ブラザー」。これからも便利なスクリプトやらよいエントリーを書きますから、どうかみなさまひとつでもふたつでもお買い物をしてくださいませ。借金で年が越せないんですよ。


プレゼント

わたしの手元に使わなくなったデモ版があります。Adobe Creative Suite 4 Design PremiumのMac版です。もし欲しい方がいらっしゃいましたら、こちらからご応募ください。応募者多数の場合は抽選の上お送りさせていただきます。

[]いただきものお礼&おすそわけ

天下のモリサワさまからカレンダーいただきました。嬉しい。

百人一首がテーマのカレンダーです。部屋中が平安の雅に包まれるでしょう。わびさび。

f:id:seuzo:20081217215813j:image

あれ? なにかこんな特典がもらえるようなことをしましたっけ、わたし?

よし、とにかく褒めちぎっておこう。「モリサワべいべっ! PASSPORTイーネ!」

MORISAWA PASSPORT ONE

MORISAWA PASSPORT ONE


Adobeさまからもカレンダーいただきました。ありがとうございます。みなさまからの戴きもので新年を迎えられる幸せよ。

f:id:seuzo:20081217223420j:image

卓上カレンダーですが、とても使いやすいです。


プレゼント

※こちらプレゼントは、応募を閉め切りました。多数のご応募ありがとうございました。惜しくもはずれてしまった方、申し訳ありませんでした。

Adobeさまのカレンダーを2冊いただきましたので、このブログをお読みいただいている方に抽選で1冊をプレゼントさせていただきます。

もうひとつ、Adobe CS4の予約キャンペーンでいただいたミントケース。フリスクを持ち歩く習慣のないわたしは使わないので、こちらも読者プレゼントとさせていただきます。

f:id:seuzo:20081217224003j:image

もし欲しい方がいらっしゃいましたら、こちらからご応募ください。どちらが欲しいかも明記してください。応募者多数の場合は抽選の上お送りさせていただきます。

2008-12-17

[][][]正規表現スタイル Tips(2)

4桁の数字を4分数字、3桁の数字を3分数字、2桁の数字を2分数字にする

下図のような縦組で、数字を入力するだけでそれぞれの桁に応じた数字字形にします。

f:id:seuzo:20081215223720p:image

正規表現は以下の通り

文字スタイル正規表現
四分字形(?<!\d)\d{4}(?!\d)
三分字形(?<!\d)\d{3}(?!\d)
二分字形(?<!\d)\d{2}(?!\d)

f:id:seuzo:20081215224058p:image

適用結果はこうなりました。

f:id:seuzo:20081215224137p:image


num_glyphはもう役目を終えたかもしれないなあ。。。


図や表番号だけを太字&泣き別れ禁止にする

文中にある「図1」や「表2-3」などの文字列を自動的に太字にし、かつ泣き別れ禁止にします。下図のように文字列が泣き別れていると、なんだか気になって仕方ない人向け^^

f:id:seuzo:20081216171117p:image

使用する正規表現

[図表]\d\d?[\.-]?\d*

f:id:seuzo:20081216171256p:image

適用すると...

f:id:seuzo:20081216171314p:image


英数字の言語を「米国」にする

普段、なにげなく「日本語」属性で混植しているけれど、InDesign的には文字に正しい言語属性を適用するのがスジなんじゃないかと思います。ただ、面倒でやらなかっただけ。ちゃんと言語属性がついているとどんないいことがあるかっていうと、ハイフネーション処理(とユーザー辞書設定)、スペルチェック、自動修正(オートコレクト)*1などが使えるようになります。ひとつの段落の中に複数の言語が混じったとしても、特に問題ありません。

こんな文字列があったとして、

f:id:seuzo:20081216183341p:image

英数字の言語を「英語:米国」にするように正規表現スタイルを設定します。

使用する正規表現

[a-zA-Z0-9_\.,-]+

Note: 文字クラス表現の中で、文字と文字に挟まれたハイフン「-」は文字コード範囲を意味しますが、最初または最後に書かれたハイフンは、ハイフン自身を表しています。

f:id:seuzo:20081216183743p:image

このスタイルを適用すると.. ハイフネーションが正しく処理されています。

f:id:seuzo:20081216184032p:image

「編集」メニューから「欧文スペルチェク」-「ダイナミックスペルチェック」をチェックすると、あやしそうな単語に波線が入りました。

f:id:seuzo:20081216184249p:image

さらにオートコレクトで、「lovelove」を「J」にするよう設定し、正規表現スタイルで1文字の「J」(\<J\>)に対して、「Wingdings」フォントと文字カラーの変更する文字スタイルを設定します。

f:id:seuzo:20081216184817p:image

f:id:seuzo:20081216184816p:image

f:id:seuzo:20081216184815p:image

この状態で、「I lovelove you!」と入力してみましょう。

f:id:seuzo:20081216185043p:image

文字が確定するとオートコレクトが「J」に変換して、それを正規表現スタイルがすかさずキャッチして絵文字に変換してくれます。*2

f:id:seuzo:20081216185157p:image

どうだ、すげーだろ!(いばるな)

[][][]日本語オートコレクト(自動修正)は、ついただけ

自動修正(オートコレクト)機能は、InDesign CS4の新機能ではないです。InDesign CS3にもありましたが、「日本語」を選ぶことはできませんでした。後述するXMLファイルを作成しても表示さえしませんでした。

「環境設定」-「自動修正...」を選び、「自動修正を有効にする」をオンにして、ポップアップから日本語を選ぶと、内容を追加できます。

f:id:seuzo:20081216232022p:image

をを、日本語オートコレクトが...と色めき立ったわたし。さっそく「追加...」ボタンをクリックして日本語を入力してみました。けっこう名前間違える人が多いんですよ。気ぃわるいです。しかしそれも昨日までの話さ。今日からはInDesignが自動で修正してくれるんだもんね! 

f:id:seuzo:20081216232154p:image

「OK」ボタンをクリックすると...

f:id:seuzo:20081216232337p:image

なんだよ「無効な文字」って。傷つくよ。。。

~/Library/Preferences/Adobe\ InDesign/Version\ 6.0-J/ja_JP/Autocorrect/Japanese.xml を編集だ。力ずくでねじ伏せるぜ。

f:id:seuzo:20081216232555p:image

InDesignを再起動するとXMLを読み直してエントリーしてくれます。よし勝った!

f:id:seuzo:20081216232746p:image

ちょっとテストしてみるです。「ほげほげ[半角スペース]hogehoge」と入力して、

f:id:seuzo:20081216232932p:image

これで[半角スペース]を入力すると...

f:id:seuzo:20081216233116p:image

「hogehoge」が「fugafuga」に自動修正されました。あ〜、分かち書きが必要なのか...ちょっとヤな予感。

じゃあ次は日本語いってみよう。「市川[半角スペース]せいぞー」と入力して、これで[半角スペース]を入力すると...

f:id:seuzo:20081216233413p:image

どーん。変わってなーい。終了

[][][]appscript memo

自分用メモ。http://www2.rocketbbs.com/11/bbs.cgi?id=thats&mode=pickup&no=2089

begin
    require 'rubygems'
rescue LoadError
end
require 'appscript'

my_app = Appscript.app('Adobe InDesign CS3')
my_doc = my_app.make(:new=>:document) 
my_textframe = my_doc.make(:new=>:text_frame, :with_properties=>{:visible_bounds=>["6p", "6p", "24p", "24p"]}) 
my_textframe.contents.set("Hello World") 
p my_textframe.text_frame_preference[1].vertical_justification.get()
#my_align = :center_align #こちらでも正常に動作します。
my_align = 1667591796
my_textframe.text_frame_preference[1].vertical_justification.set(my_align)

*1:そうそう、細かいことでなんですが、InDesign CS4から日本語言語でオートコレクトが使えるようになりました。だがしかし! オートコレクトできるのは、英数字のみです。あたまかくしてしりかくさず...

*2:これはね〜、動いているのを見るとマジックですよ。InDesign CS4の入ってる環境は動画が撮れないのが残念。

2008-12-16

[][][]正規表現の変更点(1)

たまたま気がついてしまったんですけれど...正規表現が修正されています。内部的にL10N(localization)実装になったのだと推測します。どんなことが起こるかというと...


\wは仮名や漢字などを含む

古い処理系で育った人は\wはwordを構成する文字、すなわち[a-zA-Z0-9_]だと学校で習ったはずです。しかしL10Nで日本語に対応することで、漢字やひらがな、約物にマッチします。正規表現「\w+」で検索すると、下図のように「市川せうぞー24歳」すべてがマッチします。

f:id:seuzo:20081215012232p:image

ruby1.8系で

#! /usr/bin/ruby 
p "市川せうぞー24歳".slice(/\w+/)    #=>24

と「24」が返りますが、明示的にUnicodeを指定して実行すると...

#! /usr/bin/ruby -Ku
p "市川せうぞー24歳".slice(/\w+/)    #=>"市川せうぞー24歳"

が返ります。

まあ、これに関しては英数字だけにマッチさせたければ[a-zA-Z0-9]とすればいいので、あまり実害はありません。あれれ...と思うくらい。


\b(単語境界)\<(単語の始まり)\>(単語の終わり)は分かち書きが必要になる

日本人は歴史的に(誰に教わったわけでもなく)ダブルクリックで選択できる範囲を「単語」と認識していました。もちろんそれが正しくないのを誰もが承知です。だって、まともな日本語形態素解析のパーサーの登場はずっと後でしたし、手軽ではなかったから。そしてこのバッドノウハウの上に成り立っていることは、想像以上に多いのでした。

例えば、テキスト中の2桁数字を探すのに「\b\d\d\b」としていたら、どうなるでしょうか。

f:id:seuzo:20081215014046p:image

やはりマッチしてくれません。rubyでも同様です。

#! /usr/bin/ruby -Ku
p "市川せうぞー24歳".slice(/\b\d\d\b/)    #=>nil

2桁数字を探すには、こんな形になるでしょう。後読み・先読みを使うと、行頭・行末にある2桁数字にもマッチします。

(?<!\d)\d\d(?!\d)

ほかにもいくつか変更点があるかもしれません。

できれば続いてほしくないシリーズ....つづくのか?

2008-12-15

[][][]正規表現スタイル Tips(1)

こりゃ便利! と思えるような正規表現スタイルを使ったTipsを紹介するシリーズ(?)


ダーシを入力すると必ず2倍ダーシになる。

ダーシを2つ繋げて2倍ダーシにすると、ジャスティファイの具合で文字間が離れてしまうことがあります。行頭行末で泣き別れてしまうこともあります。かつ、ダーシが長くて文字にくっついたりするのも美しくありません。ひとつのダーシの水平比率を180%くらいに設定し、文字の前後のアキを八分くらい開いていると自然な感じになります。しかし、これをひとつひとつやっていたら気分がわるかろうて。こんなテキストがあったとします。

f:id:seuzo:20081213155631p:image

段落スタイルの「正規表現スタイル」を設定します。

f:id:seuzo:20081213155710p:image

はい。ダーシを入力するたびに、文字スタイル「2倍」が適用されて、読みやすい2倍ダーシになりました。

f:id:seuzo:20081213155817p:image


段落の最後のラインに1文字だけ残るのを禁止したい。

ちょうど上の図が、そんなことになっています。ひとりぼっちは淋しそう...行長の長い本文だとかなり気になります。ひとつひとつ目で確認するのも面倒です(いままでそうしていました、よね)。そこで、分離禁止だけを持つ文字スタイルを用意し、正規表現スタイルで

..[。」』?!…]?$

などと指定すると...

f:id:seuzo:20081213160517p:image

f:id:seuzo:20081213160516p:image

段落の最後の文字が自動的に2文字になりました。


正規表現スタイルはこのようにアイデア次第で、いままで面倒だった組版処理が現実的になる可能性があります。

シリーズ続く......か(?)


参考

5 Cool Things You Can Do with GREP Styles -- InDesignSecrets

[][][]正規表現スタイルは複数の文字スタイルを適用できる

InDesign CS4の正規表現スタイルでは、複数の文字スタイルを適用できます*1。たとえば、こんなテキストがあったとします。

f:id:seuzo:20081213164152p:image

このテキストに対して2つの正規表現スタイルを適用します。

文字スタイル正規表現
ゴシック[a-zA-Z0-9]+
赤文字\d+

f:id:seuzo:20081213174929p:image

つまり、テキスト中の「Love2you」の「2」に対して、文字スタイル「ゴシック」と「赤文字」が両方適用できます。実際にどうなるかというと...

f:id:seuzo:20081213174946p:image

をを、ちゃんと両方が適用されていますね。

そしてさらに! 今ならもれなく! 文字スタイルパレットからひとつだけお好みのスタイルをオマケでつけられる太っ腹(^^)。つまり、この状態に対してさらに文字パレットから文字スタイルを適用できます。

文字スタイルを適用したいテキストを選択します。

f:id:seuzo:20081213175554p:image

文字パレットから斜体を設定した文字スタイル「斜体」を適用します。

f:id:seuzo:20081213175646p:image

これだと「2」は3つの文字スタイルが適用されていることになりますね。

*1:先頭文字スタイルや先頭行スタイルも同様に複数の文字スタイルを持てるんだけど...今はよい用途用法を思いつかないので省略

2008-12-13

[][]Kulerパネル

Kulerパネルっていうのは、Adobeが運営するカラーコミュニティサイト「Kuler」を利用したAIRウイジットです。

Adobe CS4のInDesign, Illustrator, Photoshop, Flashなどで利用できます。


InDesignでの利用方法

まあ、Web Serviceとして「Kuler」を利用しても差し支えないわけですが、InDesign内でKulerパネルを使えばスウォッチへの取り込みなどが簡単にできるようになります。

「ウインドウ」メニューから「エクステンション」-「Kuler」を選ぶと、Kulerパネルが開きます。

f:id:seuzo:20081211180729p:image

検索フィールドから探したいテーマのキーワードを入力します。タイトル/タグ/制作者などを探せます。ここでは「sexy」と入力してみました。

f:id:seuzo:20081211181341p:image

いかにも妖艶な配色ですね^^ では「Deep Sexy」というテーマをクリックしてパネル下から「選択したテーマをスウォッチに追加」ボタンをクリックしてみます。

f:id:seuzo:20081211181827p:image

InDesignスウォッチに追加されました。

f:id:seuzo:20081211182142p:image

あれ? RGBですね。そう、Kulerで配信されているカラースペースは基本的にRGBなんですね。変更するには、いま追加した配色をすべて選択して、サブメニューから「スウォッチの設定...」を選択します。

f:id:seuzo:20081211182624p:image

スウォッチの設定」ダイアログでカラーモードを「CMYK」にします。

f:id:seuzo:20081211182733p:image

カラースペースがすべてCMYKになりました。あとは通常のスウォッチの使用方法と同じです。

f:id:seuzo:20081211182818p:image


新しいテーマの作成、Kulerに登録

Kulerパネルの「作成」タブをクリックします。配色ルールによって、簡単にバランスのとれた配色を作成できます。ひとつづつの色を細かくコントロールしたい時は、ルールを「カスタム」にして調整してください。

f:id:seuzo:20081211210049p:image

なかなかいい配色ができました。自分だけが使うのがもったいないくらいです^^ そんな「俺が、俺が...」な目立ちがり屋さんは、Kulerサイトで自分の作った配色を公開できます。自分のAdobeIDで登録できるので、自分用カラーライブラリという意味でも使えるかもしれません。

Kulerパネル下部にある「カラーテーマをkulerにアップロード」ボタンをクリックします。

f:id:seuzo:20081211210805p:image

Webブラウザが立ち上がって、Kulerサイトにつながり、テーマ登録画面になりました。

f:id:seuzo:20081211210934p:image

AdobeIDでログインして、名前(Name)とタグ(Tags)を入力し、「Save」ボタンをクリックします。今回は「KoharuBiyori」という名前をつけてみました。

無事登録できました。Kulerサイト上でも検索できますし、Kulerパネル上でも検索できます。KulerパネルはFeedを読んでいますので、更新まで少し時間がかかるかもしれません。

f:id:seuzo:20081211211240p:image


#どうでもいいことかもしれないが、「Kuler」なのか「kuler」なのか、ちょっと表記の基準がわからない。サイト上のTitleは「Kuler」だが、サービス名は「kuler」になっている。


参考

Kuler パネル -- InDesign CS4オンラインヘルプ

Kulerのカラーテーマの利用 -- AdobeTV

2008-12-12

[][]Real World Adobe Indesign CS4

Real World Adobe InDesign CS4

Real World Adobe InDesign CS4

まだInDesign CS4の日本語解説書が出ていないとはいえ、洋書を勧めることはないんじゃない? どんだけ早いモノ好き? と思う方がいるかもしれません。というか、きっといるでしょう。いるにちがいない。。。そういう(パン喰い競争的な)意味じゃないです。この本も実際には来年の2月の刊行予定ですし。

Scriptingに関しても、IDMLに関しても、詳細な技術資料はすべて英文でしか公開されていません。だから英文を読むのは仕方ない。けれど、こまったことに英文の資料はInDesignの英語版を元に書かれているんですよ。これ、ちょっとした盲点です。メニューやら用語やら微妙に独特なんですね。で、そういうことってどこにも書いていない。インターネッツを漁ってもいいですけれど、てっとり早いのは英語で書いてある解説書を買えばだいたい逆読みできるか、と。知りたいカテゴリーを中心にトピックを探せます。

あと、意外に便利なのは、スクリプトの名前や変数名を決める時。まあ、わたしなんかはどうせ適当でしょうよ、和製英語ですよ、ほっとけ。といったすてばちな気分にならずに、だいたい当たり障りのない名前を付けられます。名前付けがしっかりしていると、何ヶ月後かに自分のコードと対面して気分がいいです。本当です。

Real Worldは一応シリーズで、Real World Adobe Illustrator CS4なんてのもあります。だいたいどの本も800〜900ページくらいあります。内容も図解を中心に詳しく載っています。InDesign版はDavid Blatnerさんも書かれています。InDesign Conference Tokyo 2007でセミナーを受講された方もいるかもしれません。「I have your book, Real World」と言ったら、喜んでくれました。通じたかどうかはわかりませんが...

そしてさらに今なら、割安に洋書を買えます。円高で去年よりも3割くらい安いです。Amazonだと週1くらいで為替レートを見直しているようです。だから来年になっていきなり円安になったらゴメンね^^

ついでにおまけに、英語の勉強になる...kamo shiremasen maybe ;-p

[][][]透明グラデーション(と使用上の注意)

Illustrator CS4の新機能として「透明グラデーション」というちょっと面白い機能があります。グラデーションのカラー分岐点に「不透明度」が設定できるってもの。

f:id:seuzo:20081212122057p:image

f:id:seuzo:20081212122058p:image

グラデーションパレットのカラー分岐点「黒」を選択して、不透明度を0にしてみます。

f:id:seuzo:20081212122407p:image

f:id:seuzo:20081212122406p:image

いい感じで透明のグラデーションができました。

InDesign CS4にAIファイルをリンクしてみます。

f:id:seuzo:20081212123112p:image

PDFに書き出してもきちんと表示されています。

f:id:seuzo:20081212123019p:image

PDF1.4以降(PDF/X-4など)で書き出せば、透明オブジェクトはTuchUpオブジェクトツールで移動できたりします。

f:id:seuzo:20081212123349p:image


透明グラデーション使用上の注意

先日、SCREENさまのセミナーで「この透明オブジェクトを使用したドキュメントは、必ずInDesign CS4以上で使用してくださいね...さもないと...」というお話を聞いてきました。さもないと、どうなるかさっそくテストしてみましたよ。さきほどの透明グラデーションを使ったAIファイルをInDesign CS2にリンクしてみます。

f:id:seuzo:20081212123752p:image

あらま透明グラデーションじゃなくなってる。上図は高品質表示でかつオーバープリントプレビューです。

さらにPDF(PDF1.6)で書き出してみると...

f:id:seuzo:20081212123848p:image

オブジェクトがなくなっています。正確には、オブジェクト自体はTuchUpオブジェクトツールで触れるのですけれど、透明でもグラデーションでもなくなっています。


スクリーンさまの解説によりますと、どうやらIllustrator CS4の透明グラデーションは「ソフトマスク」(SMask : PDF1.4以降)と「グラデーション(シェーディング)」(sh : PDF1.3以降)がひとつのオブジェクトに同時に指定されているからだとか。エディタで開くと、たしかに2つのオペランドがありました。ってことは、Illustrator CS4の不具合ってこと? 今回はInDesign CS2での追試でしたが、InDesign CS3でも動作的に保証できないそうです。

IllustratorInDesignのバージョンを合わせるのは制作側の基本です。しかし、面付や、集版、共同作業なのかでこれらバージョンが違うことはよくあることです。十分注意してください。


参考

IllustratorCS4の透明グラデーション -- SCREEN 出力の手引きWeb

スクリーントレンドセミナー2008秋-技術セッション- - ちくちく日記

2008-12-11

[][]オブジェクトのミラー

「左ページのデザインを右ページに流用したい」「マスターページで片ページを作ったら、シンメトリーでコピーしたい」そんな場面はよくあります。InDesignはミラーコピーができないと思っている人が多いかもしれません。実際、何日か前にそんな書き込みがどこがでされました。もちろんInDesignでもオブジェクトのミラーはできます。

左ページの(複数の)オブジェクトを、右ページにミラーレイアウトする方法を、手順を追って説明します。画面はInDesign CS4ですが、InDesign CS3でも同様の手順でできます。


(1)ミラーコピーしたいオブジェクトを選択しておきます。

f:id:seuzo:20081210013401p:image


(2)拡大縮小ツールに切り替えて、スプレッドの中心をクリックします。

f:id:seuzo:20081210013503p:image


(3)option(alt)キーを押しながら、コントロールパネル内の「水平方向に反転」ボタンをクリックします。

単なるクリックで反転、option(alt)キーが押されていると「コピー」になります。

f:id:seuzo:20081210013843p:image

f:id:seuzo:20081210013840p:image

文字も反転してしまいました。でも大丈夫。


(4)変形パネルのサブメニューから「変形を消去」を選択します。

f:id:seuzo:20081210014152p:image


(5)できあがり

f:id:seuzo:20081210014220p:image

ノンブルは「のど元から整列」を選んでいれば、小口に揃います。

変形を消去は、コントロールパレットのサブメニューからも選べます。オブジェクトに回転やシアーが適用してあると、そうした属性も消去されてしまうのでご注意ください。

2008-12-10

[][]特色をプロセスに変換すると...

DTPデータを作る人のレベルっていうのは、ほんとうにひとそれぞれ、人生いろいろです。「をを! こんな方法があったのか」と関心することもあれば、「よりによってこんな方法とわ...」と脱力することもしばしば犬。そんな柴犬データの中でも、すべての色がDICの特色指定になっているワンコを見たことがあるかもしれません。

InDesignにはスウォッチパレットのサブメニューなどに「インキ管理」があり、すべての特色をプロセス4Cに置き換えできます。便利な機能ですね...

f:id:seuzo:20081209150256p:image

先日SCREENさまのトレンドセミナーに行ってきました。Trueflowのみではなく、たいへん興味深いお話を聴けました。このセミナーで上記の「すべての特色をプロセスカラーへ」に関する注意事項がありましたので、ご紹介します。

たとえば、下図のようにC=100のオブジェクトの上に、DIC638のオブジェクトがあり、この特色のオブジェクトに「塗りオーバープリント」が適用してあったとします。

f:id:seuzo:20081209151022p:image

特色の状態だと、オーバープリントは正しく適用されているのですが... 「インキ管理」ダイアログの「すべての特色をプロセスカラーへ」をチェックすると、どうなるでしょうか? はい、こうなります。

f:id:seuzo:20081209151233p:image

PDFに書き出しても同じです。Acrobatのプレビューはもちろんオーバープリントプレビューです。

f:id:seuzo:20081209151437p:image

オーバープリントが無効になってしまいました。あはは... 笑い事で済めばいいんですけれど^^ くれぐれもご注意あれ。

[][][]フォント置換

旧BBSでfourさんのフォント置換を改良したものを公開したことがありました。フォントの置換

わけあって、合成フォント内のフォントも置換できるようにしました。うまく置換しない場合もあるようですので、最後に「フォント検索」で確認してください。

(*
Replace_font.applescript
複数のフォントの置換をします。

http://bbs.ddc.co.jp/mt/indesignbbs/archives/10799_20070214164800.html
にあるfourさん(http://psychocat.net/scriptNote/)のスクリプトの改良。
複数のフォントを一度に置換できるようにした。

2007-07-01	ver.0.1	起こし
2008-12-07	ver0.2	合成フォント内の置換ができるようにした。
*)
--===================================★ここから 書き換えてください
--fonts_oldには置き換えたいフォント名。「ファミリー名(タブ)スタイル」に。空行は無視します。
set fonts_old to "" as Unicode text
set fonts_old to fonts_old & "Century Old Style\tRegular" & return
set fonts_old to fonts_old & "Century Old Style\tBold" & return
set fonts_old to fonts_old & "Times\tRoman" & return
set fonts_old to fonts_old & "Courier\tMedium" & return
set fonts_old to fonts_old & "Helvetica\tMedium" & return
set fonts_old to fonts_old & "Helvetica\tBlack" & return
set fonts_old to fonts_old & "Formata\tMedium" & return
set fonts_old to fonts_old & "O\tCRBBold" & return

--fonts_newには置き換えるフォント名。上のfonts_oldと行で対になるようにしてください。
set fonts_new to "" as Unicode text
set fonts_new to fonts_new & "Century Old Style Std\tRegular" & return
set fonts_new to fonts_new & "Century Old Style Std\tBold" & return
set fonts_new to fonts_new & "Times LT Std\tRoman" & return
set fonts_new to fonts_new & "Courier Std\tMedium" & return
set fonts_new to fonts_new & "Helvetica LT Std\tRoman" & return
set fonts_new to fonts_new & "Helvetica LT Std\tBlack" & return
set fonts_new to fonts_new & "ITC Franklin Gothic Std\tMedium" & return
set fonts_new to fonts_new & "OCR B Std\tRegular" & return

--段落スタイル中のフォントも置き換えたい場合はここを「true」に。そうでない場合は「false」にしてください。
set paragraph_style to true

--===================================★ここまで 書き換えてください

my doc_exists()
tell application "Adobe InDesign CS3"
	set fonts_app to name of every font --現在使用できるフォントリスト
	tell document 1
		set fonts_doc to name of every font --ドキュメントで使用されているフォントリスト
		set fonts_nothing to my cannotuse_fonts(fonts_app, fonts_doc)
		if fonts_nothing is not "" then my my_error("(参考)以下のフォントはシステムにありません。" & return & "置き換えリストに含まれていれば置換します" & return & fonts_nothing, false)
	end tell
end tell

repeat with i from 1 to count paragraph of fonts_old
	set a_font_old to (paragraph i of fonts_old) as Unicode text
	set a_font_new to (paragraph i of fonts_new) as Unicode text
	if a_font_old is not ("" as Unicode text) then --空行でないなら以下を実行
		if a_font_new is not in fonts_app then my my_error("(警告)" & a_font_new & "はシステムにないフォントです。", false)
		my replace_composite_font(a_font_old, a_font_new)
		if paragraph_style then my replace_para_style(a_font_old, a_font_new)
		my replace_font(a_font_old, a_font_new)
	end if
end repeat


----------------------------------●ドキュメントが開かれているかどうか
to doc_exists()
	tell application "Adobe InDesign CS3"
		if not (exists document 1) then
			activate
			my my_error("ドキュメントが開かれていません", true)
		end if
	end tell
end doc_exists

----------------------------------●現在の環境で使用できないフォントリストを作成
to cannotuse_fonts(fonts_app, fonts_doc)
	set tmp_str to "" as Unicode text
	repeat with i in fonts_doc
		if i is not in fonts_app then set tmp_str to tmp_str & i & return
	end repeat
	return tmp_str
end cannotuse_fonts

----------------------------------●合成フォント置換
to replace_composite_font(a_font_old, a_font_new)
	set {a_font_old_family, a_font_old_style} to as_split(tab, a_font_old)
	set {a_font_new_family, a_font_new_style} to as_split(tab, a_font_new)
	
	tell application "Adobe InDesign CS3"
		tell document 1
			repeat with i in every composite font
				if name of i is not "[No composite font]" then
					set i to (object reference of i)
					tell i
						repeat with ii in every composite font entry
							set ii to (object reference of ii)
							if (applied font of ii = a_font_old_family) and (font style of ii = a_font_old_style) then
								set applied font of ii to a_font_new_family
								set font style of ii to a_font_new_style
							end if
						end repeat
					end tell
				end if
			end repeat
		end tell
	end tell
end replace_composite_font


----------------------------------●段落スタイル置換
on replace_para_style(a_font_old, a_font_new)
	tell application "Adobe InDesign CS3"
		tell document 1
			set para_style to every paragraph style
			repeat with i in para_style
				set font_name to name of applied font of i
				if font_name is a_font_old then
					set a_font_new to my as_split(tab, a_font_new)
					set properties of i to {applied font:item 1 of a_font_new, font style:item 2 of a_font_new}
				end if
			end repeat
		end tell
	end tell
end replace_para_style

----------------------------------●フォント置換
to replace_font(a_font_old, a_font_new)
	tell application "Adobe InDesign CS3"
		tell document 1
			try
				set applied font of text style ranges of stories whose name of applied font is a_font_old to a_font_new
			on error errMsg number errNum
				--my my_error("以下のフォント置換でエラー" & return & a_font_old & return & a_font_new & return & errMsg & errNum, false)
			end try
		end tell
	end tell
end replace_font



----------------------------------○エラー処理
to my_error(err_str, my_stop)
	set err_str to err_str as Unicode text
	if my_stop then
		set my_stop to {"中止"}
	else
		set my_stop to {"中止", "続行"}
	end if
	tell application "Adobe InDesign CS3"
		activate
		beep
		set ANS to button returned of (display dialog err_str buttons my_stop) --警告ダイアログ出してストップ
		if ANS is "中止" then error number -128
	end tell
end my_error

----------------------------------○文字列をリストに分割する
to as_split(thedelimit, theText)
	set oldDelim to AppleScript's text item delimiters
	set AppleScript's text item delimiters to thedelimit
	set tmpList to every text item of theText
	set AppleScript's text item delimiters to oldDelim
	if length of tmpList is 1 then set tmpList to tmpList & {""} -------★今回のみの処理
	return tmpList
end as_split

Real World Adobe InDesign CS3を見ていたら、英語版には合成フォントってないみたい。メニューに載っていない。祖父江慎さんは日本の文化ってことだな...

2008-12-09

[][][]PiFontなどの丸数字を置換する

以前フォントに白抜き丸数字などなかった頃は、欧文のPiFontなどを利用していました。

そんなドキュメントをベースに作り直す時、今どきならば日本語フォントの従属の丸数字を使いたいものです。*1しかし、うまく一括置換できないことがあります。例を見てみましょう。

このドキュメントは白抜き丸数字に「European Pi 1」を使っています。

f:id:seuzo:20081207171130p:image

これを検索置換で置き換えていきます。設定は下記のとおり。

f:id:seuzo:20081207171843p:image

ひとつづつ確認しながら、検索置換をすればうまく置換されます。しかし、「すべてを置換」にすると...

f:id:seuzo:20081207171950p:image

文字化けちゃうんですね。あはは... おそらく最初に文字置換した時にミッシンググリフになって、属性置換に進まないのか、と想像します。

こんなとき、InDesign CS3なら「字形置換」がありました。さっそくこんな感じの設定で試してみます。

f:id:seuzo:20081207172251p:image

こんどは「すべてを置換」を実行して文字が置き換わりました。だがしかし! 欧文のPiFontってベースラインが設定してある。どこまでも面倒な...

f:id:seuzo:20081207172438p:image

しかたないので、字形置換のあとで正規表現を使って、属性置換をしてみます。

f:id:seuzo:20081207172647p:image

これでなんとなくうまくいく予感。最後に連続置換をするためのスクリプトを設定します。

f:id:seuzo:20081207173058p:image

実行すると...

f:id:seuzo:20081207173212p:image

はい、一発で白抜きの丸数字の置き換え完了です。

ただし、字形置換ではドキュメントに使われていないフォントを指定することができません。この例ですと、(8)まではドキュメント中に使われていましたが、(9)がありませんでした。この場合、(8)を処理したところでドキュメント中に「European Pi 1」がなくなり、(9)の字形置換がエラーで失敗します。そんな時は、最後の正規表現だけ手動でやらなくてはいけません。

*1:わたしの職場ではType1フォントをなるべく使わないでOTFに置き換える(欧文ならAdobe Font Folio OpenType Editionを使う)お沙汰がありますので、置き換えしなくちゃいけません。

2008-12-08

[][][]画像のリネーム〜貼り替え

リネーム

まずリネームですね。変換したIllustratorのファイルについている「 [更新済み]」を取るとか。

Bashが基本でしょ、そうでしょ」って方や、「Bridgeにあるよ〜」って方もいらっしゃると思いますが、専用のリネームツールを用意しておくとなにかと便利です。わたしが使っているのはshupapanっていうリネームツールです。設定したら、ドラッグ&ドロップでリネームできます。

f:id:seuzo:20081207182644p:image

f:id:seuzo:20081207182643p:image

正規表現が使えるのはいいんですけれど、$1などで後方参照できないのはちょっと不満。あー、そういえば遠い昔にわたしもリリースしていましたね^^


InDesign上で画像の再リンク

大量のリンクファイル(eps)があるとして、ファイル形式をAIなりPSDにしてしまうと、ただでさえ面倒な再リンクがさらに面倒になったりします。

f:id:seuzo:20081209134841p:image

しかし、画像の貼り替えというのは、ケースバイケースで要求も違いますし、差し替え違いなどのミスが大きな事故につながるリスクが高いので決定的なスクリプトはないようです。わたしが使っているのはこちら。

Update path names in links

これ、リンクしたい別フォルダを指定すると、そこのフォルダのファイルに再リンクしてくれます。何が賢いって、もし同じ拡張子のファイルがなくても、ファイル名さえ同じなら「".psd", ".tif", ".jpg", ".ai", ".eps", ".pdf", ".indd"」のどの拡張子でも再リンクします。

f:id:seuzo:20081209134930p:image

f:id:seuzo:20081209134929p:image

パス階層がちょっと離れていないと、うまく再リンクしてくれません。再リンクしたかどうか確かめるために、一旦InDesignドキュメントを移動するなりしてリンクを無効にするとわかりやすくていいです。

ほかにも下記アドビフォーラムのスレッドには、いくつかの要望に応じたスクリプトがあるようです。いろいろ試してみたらいいと思います。

http://www.adobeforums.com/webx?128@763.sdyni1gb1NB@.3bc94a3b.3bbf275d.59b50466

あ、InDesign CS4だとスクリプト使わなくても標準機能でこういうことができます。チェキら↓

[][]新しいリンクパネル

リンクパネルの外観

まず、リンクパネルは外観がかなり変わりました。「コラム」と「リンク情報」の上下に二分割され、下の「リンク情報」にはexifなどXMP情報が表示されます。サブメニューのコマンドも様変わりしています。

f:id:seuzo:20081208191806p:image

リンクパネルの表示項目をカスタマイズするには、リンクパネルのサブメニューから「パネルオプション...」を選び、「パネルオプション」ダイアログでコントロールします。

f:id:seuzo:20081208191737p:image

かなり詳細な情報が見られるのがわかりますね。

リンクパネル上の「コラム」からリンクアイテムのページ番号をクリックすると、すぐにリンク箇所が表示できます。

f:id:seuzo:20081208192537p:image


別のフォルダへの再リンク

変わったのは外観だけではありません。リンク機能が全体的に強化されています。なかでもお気に入りなのは、現在のリンクをフォルダごと変更できる機能です。このとき、特定の拡張子の変更も許容されます。そう、これってInDesign CS3ではスクリプトでやっていたことです。手順を追って説明しましょう。


(1)再リンクしたいリンクを選択します。

f:id:seuzo:20081208195254p:image


(2)リンクパレットのサブメニューから「フォルダに再リンク...」を選びます。

f:id:seuzo:20081208201158p:image



(3)再リンクしたいフォルダを選択し、拡張子を入力します。
  1. 「フォルダを選択」ダイアログで、再リンクしたいフォルダを選択します。
  2. 「次の拡張子でファイル名が一致する」チェックボックスをチェックします
  3. テキストフィールドに「ai」と入力します。
  4. OKボタンをクリックします。

f:id:seuzo:20081208195907p:image


(4)EPSがAIファイルに再リンクされました。

f:id:seuzo:20081208200035p:image


参考

リンクパネル -- InDesignの勉強部屋

グラフィックリンクの管理 -- InDesign CS4オンラインマニュアル

AdobeTV

2008-12-06

[][][]古いIllustratorファイルを「更新」で開いたら...

みなさまご存知の通りだと思いますが、Illustrator8などの古いバージョンのデータをIllustrator CS3などで開くと、文字組みが大きく変わります。古いIllustratorには文字組みや禁則処理の概念がありません。カーニングが自動だと妙に詰まってしまっています。数点なら手動でやってもいいんですが、何百点もあるとちょっと辛いなぁ、と。

みなさまそれなりにスクリプトなど書いておられるようですが、あまり見かけたことはないです。汎用的に処理できない場合も多々あるからでしょう。わたしも書いたものも汎用性はありません。だからおうち使い用です。適当にカスタマイズしてご使用ください。

/*
conv2CS3.jsx
Illustrator8などの古いバージョンのイラストレータデータをIllustrator CS3用に別名保存します。

●使い方
1)古いバージョンのドキュメントを「更新」で開きます。
2)選択モードなら、処理するするテキストフレームを選択しておく
3)このスクリプトを実行します。処理内容は以下のとおり
・レイヤーやオブジェクトがロックされているならロックを解除します。
・テキストフレームを下方向に-1pt移動させます。
・段落の禁則処理に「弱い禁則」を適用
・段落の文字組みに「行末約物半角」を適用
・文字のカーニングを「0」を適用
・Illustrator CS3形式で別名保存
・現在のドキュメントを保存せずに閉じる

●設定
「selection_mode」で「選択しているテキストフレームのみを処理するモード」
「my_save」で「修正したあとに別名保存するかどうか」
を設定できます。

history
2008-12-05	ver0.1	とりあえず

*/
//設定
var selection_mode = true;//選択しているテキストフレームのみを処理するモード、falseならすべてのテキストフレームを対象にする
var my_save = true;//修正したあとに別名保存するかどうか


//オブジェクトごとの処理
function doit(my_obj) {
	if (my_obj.constructor.name == "TextFrame") {//テキストフレームなら実行
		my_obj.layer.locked = false;//レイヤーのロック解除
		my_obj.locked =false;//オブジェクトのロック解除
		
		var moveMatrix = app.getTranslationMatrix( 0,  -1);
		my_obj.transform( moveMatrix );//テキストフレームを下方向に1pt移動(この処理が正しいかどうかナヤマしい。エリア内オプションでもうまく修正できない)
		
		for (var ii = 0; ii < my_obj.paragraphs.length; ii++) {
			var my_para = my_obj.paragraphs[ii];
			my_para.paragraphAttributes.kinsoku = "Soft";//禁則処理、弱い禁則
			my_para.paragraphAttributes.mojikumi = "GyomatsuYakumonoHankaku";//文字組み、行末約物半角
			my_para.kerning = 0;//カーニング、0
			//ここにフォントの置換など適当にやりたいことを追加してもよい
		}
	}
}

try{
	
	if(app.documents.length == 0){throw "ドキュメントが開かれていません"}
	var my_doc = app.activeDocument;

	if(selection_mode) {
		if (my_doc.selection.length == 0) {throw "テキストフレームを選んでください"}
		for (var i = 0; i< my_doc.selection.length; i++) {
			var my_selection = my_doc.selection[i];
			doit(my_selection);
		}
	} else {
		for (var i = 0; i< my_doc.textFrames.length; i++) {
			var my_selection = my_doc.textFrames[i];
			doit(my_selection);
		}
	}

	//別名で保存
	if (my_save) {
		var my_name = my_doc.name.toString().replace(/\..{2,4}$/, '');//拡張子の削除
		var my_savePath = my_doc.path.toString() + "/" + my_name + ".ai";
		my_savePath = new File(my_savePath);
		var my_saveOptions = new IllustratorSaveOptions; //AISaveOptionsではない?なぜか
		my_saveOptions.compatibility = Compatibility.ILLUSTRATOR13;//バージョン、Illustrator CS3
		my_saveOptions.fontSubsetThreshold = 100;//フォントサブセットにする、100%
		my_saveOptions.pdfCompatible = true;//PDF互換ファイルを作成、on
		my_saveOptions.embedLinkedFiles = false;//配置した画像を含む、off
		my_saveOptions.embedICCProfile = false;//ICCプロファイルを埋め込む、off
		my_saveOptions.compressed = true;//圧縮を使用、on
		my_doc.saveAs(my_savePath, my_saveOptions); //別名保存
		my_doc.close(SaveOptions.DONOTSAVECHANGES); //保存しないで閉じる
	}

}catch( e ){
	alert( e );//エラーがあったら迷わずここにきます
}

そうか、Illustratorではexit()が使えないんですね^^ 仕方がないから、全体をtryで囲って不注意があれば最後に飛ばすようにしました。goto文とか思い出してイヤな気持ちになったひとは適当に書き換えてくださいませ。

2008-12-05

[][][]組版時間を半減する! InDesign自動処理実例集

組版時間を半減する! InDesign自動処理実例集

組版時間を半減する! InDesign自動処理実例集

InDesignIllustratorのスクリプトを書いている人で、古籏一浩さんの名前を知らない人はいないだろう。古籏一浩さんはご自身のサイト「OpenSpace」において、JavaScriptの基礎からさまざまアプリケーションの操作法にいたるまで、豊富なサンプルを公開されている。こうしたサンプルの恩恵は大きく、わたしも参考にさせていただいております。

DTP分野の自動化、スクリプティングに関するサイトは多い。しかし、この分野に関する書籍は皆無といっていい。ほとんどの人が独学に頼っているのが現状だ。この分野の書籍はとても望まれていたのだ。

本書は古籏一浩さんと、「InDesign逆引きデザイン事典[CS3/CS2/CS対応] (DESIGN REFERENCE)」の共著者でもある古尾谷眞人(シータス)さんによる一冊だ。InDesignタグ、XML、スクリプティングなど、この本で学べる自動化手法は多い。自動化といってもさまざまな手法と深度がある。やりたいことに応じて、最短距離で進むためには、どんな手法がどんな場面で使用できるのかを知る必要がある。本書はこれから自動化に取り組まれる方に最適な構成になっている。初心者にもぜひおすすめ。


初心者の方は、プログラムを書くというと「大袈裟」に感じてしまうかもしれない。けれど、現時点でプログラムを書くことなしに自動化できることは少ない。そもそも、InDesignのスクリプトを書く上では、プログラミング能力以前にInDesignの操作方法や、組版ルールを知っている必要がある。これは一般的なプロのプログラマにはなかなか理解できないのだ。InDesignのスクリプトでは、プロプログラマよりもInDesignユーザーであるあなたの方が何十倍も資質がある。InDesignのスクリプト機能は非常に強力で奥深い。あなたはきっと新しいInDesignを発見するだろう。

わたしから、ひとつだけアドバイス。「ソースコードはコピペしてはいけない。すべてタイプしよう」頭でなく、手が覚える感じでタイプ力がアップすれば、プログラムを「書く」能力もアップする。すべての言語は「読む書く話す」の繰り返しで上達する。あなただけにこっそり教えるけれど、これはプログラムを習得する秘伝の奥義だ。初心者は数学的なアルゴリズムやプログラミングテクニックを恐れているんじゃない。単にコードをタイプするのを躊躇しているだけなんだってこと。

[][]相互参照機能を使ってみる(その3)

このエントリーは下記エントリーの続きになっています。とりあえず今回で一段落。

相互参照機能を使ってみる(その1) - 名もないテクノ手

相互参照機能を使ってみる(その2) - 名もないテクノ手

相互参照形式をカスタマイズする

相互参照形式にはあらかじめ9個のプリセットがあります。

f:id:seuzo:20081205185238p:image

では、これ以外の形式は使えないのでしょうか? 例えば、「〜〜です(see page13)」などとして、イタリックの文字スタイルを適用したりしたいのです。大丈夫、できます。手順を追って説明してみましょう。


(1)「相互参照形式」ダイアログを出します

「ハイパーリンク」パネルのサブメニューから「相互参照形式を定義...」を選択します。

f:id:seuzo:20081205190021p:image

「相互参照形式」ダイアログが開きます。

f:id:seuzo:20081205190152p:image


(2)新しい相互参照形式を作成
  1. 「相互参照形式」ダイアログの左下にある「+」マークをクリックします。
  2. 名前をつけます。ここでは「see」としました。
  3. 「定義」フィールドに、参照形式に使いたいタグを入力します。ここでは下記のようにしました。
(<cs name="italic">see <pageNum/></cs>)

ここで使用できるタグは、右側にあるボタンからも入力できます。詳しいタグの説明は「相互参照形式の使用 -- InDesign CS4オンラインヘルプ」を参考にしてください。

「相互参照形式」ダイアログに文字スタイルを選択できるポップアップメニューもありますが、今回のように一部分だけに文字スタイルを適用したい場合や、複数の文字スタイルを適用したい場合は、上記のようにタグで文字スタイルを適用できます。

f:id:seuzo:20081205192628p:image

最後にOKボタンをクリックすれば準備はできました。


(3)参照形式を適用する。

では、前回と同様の手順で相互参照を挿入します。このとき、「新規相互参照」ダイアログには、さきほど作成した相互参照形式「see」が選択しています。

f:id:seuzo:20081205193220p:image

外国の書籍みたいなかっこよさです(笑

f:id:seuzo:20081205193351p:image


まとめ

以上、相互参照機能について見てきました。ここでちょっと理屈を考えてみます。相互参照はひとつのドキュメントで完結しません。参照側のドキュメントを開けば、参照先ドキュメントのターゲットが更新されていないかどうか調べようとします。さらに更新には背面で(見えませんけれど)ターゲットドキュメントを開いてページ番号やセクション番号、段落文字列などをチェックする必要があります。このルートをたどる作業が1:1ならばまだ負担も知れているかもしれません。しかし、複数のドキュメントから参照をしている場合はどうでしょう。そのすべてのドキュメントを開く必要があるのです。これはアプリケーションやシステムに大きな負担になります。たとえば、この機能を目次や索引に使えば、リアルタイムでノンブルが得られるでしょう。しかし、それはちょっとやりすぎです。まだこの機能はできたてのほやほやなんです。目次や索引はそれぞれの機能を使ってください。

...などと年端のいかぬ子の将来を杞憂していたら、こんな報告を見かけました。

Adobe CS4の購入意欲が失せてきました -- CNET Japan ブログ


ん、まあわからないではないです。Adobe製品のファーストリリースはパブリックベータだから。パブリックベータをしないというのはこういうことです。Adobeはユーザーグループではありません。ユーザーがアプリケーションをどう使うか、使い方によってどんな状況になるのかを(想像はするけれど)自ら知ることはできないわけです。必要なら下記フォームから報告してください。

製品への要望 / 不具合報告 フォーム

ここで報告したから「絶対直る」と思い込んでいる方がいらっしゃいます。しかし、そのレポートが1つだけだったなら、その不具合は放置される可能性は高いと思います。ベンダーはユーザー報告の多い事例をユーザーからの第一要求とするでしょう。数は力です。

不具合は公表し、共有して、再現したなら報告するようにすればいいんじゃないか、それがユーザーのできることではないかと思っています。

なんか、話が脱線してしまいましたね...^^


参考

相互参照形式の使用 -- InDesign CS4オンラインヘルプ

ビデオ/相互参照 -- AdobeTV

2008-12-04

[][]Adobeがリストラ策600人のレイオフ。Tim Coleも...

世界的な金融不安の中、Adobeが大きなリストラ策を発表しました。そのなかには600人のレイオフが含まれるそうです。

Adobe Lays Off 600 in Restructuring -- InDesign Secrets

Company Announces Restructuring to Reduce Expenses; Provides Q1 FY2009 Targets

そして、Adobeエバンジェリストとして、長年わたしたちのguruであったTim ColeさんもAdobeを去ることになりました。Tim Coleさんは今年のInDesign Confernce 2008 Tokyoですばらしい講演を見せてくれたので、ご記憶に新しい方も多いと思います。また彼のブログ「Tim Cole’s InDesign BackChannel」もいつも驚きに溢れていました。このブログはAdobeアカウントですから、Tim Coleさんが退職されたらなくなってしまうかもしれません。

これはInDesign Userにとって大きな損失です。

[][]相互参照機能を使ってみる(その2)

昨日のエントリーのつづきです。


テキストアンカーに相互参照する

「新規相互参照」ダイアログのリンク先が「段落」である時、ターゲットとしてピックアップされるのは特定の段落スタイルが適用された段落だけです。段落スタイルに左右されないで、特定の場所に対して相互参照をしたいときはどうしましょう? そんな時に「テキストアンカー」を思い出してください。

全体の流れとしては、ターゲットドキュメント上で参照したい箇所にテキストアンカーを設定します。そして参照側のドキュメントからターゲットを指定して相互参照を作成します。


(1)テキストアンカーの作成

ターゲットドキュメントを開きます。「ウインドウ」メニューから「インタラクティブ」-「ハイパーリンク」を選択して「ハイパーリンク」パネルを出します。実は「ハイパーリンク」パネルは「相互参照」パネルと同じです。

f:id:seuzo:20081204182409p:image

テキストアンカーを設定したい部分のテキストを選択します。パレットメニューから「新規ハイパーリンク...」を選択します*1

f:id:seuzo:20081204183056p:image

「新規ハイパーリンク先」ダイアログが開きました。

f:id:seuzo:20081204183239p:image

このダイアログで、「種類」に「テキストアンカー」を選び、「名前」を入力してください。ここでは「てきすとあんかー」という名前をつけました。最後にOKボタンをクリックしてください。これでテキストアンカーが作成されました。

ん? パネル上はなんの変化もありませんね。なんだか知りませんが、このテキストアンカーはハイパーリンクパネルにはリストアップされません。ハイパーリンクパネルのサブメニューから「ハイパーリンク先オプション...」を選択すると、「ハイパーリンク先オプション」ダイアログが開きます。

f:id:seuzo:20081204183828p:image

f:id:seuzo:20081204183827p:image

「編集」ボタンをクリックすると、テキストアンカーを編集できます。


(2)テキストアンカーに相互参照する

参照したいドキュメントを開き、相互参照を挿入した部分に文字キャレットを置きます。

相互参照パネルのサブメニューから「相互参照を挿入...」を選びます。

f:id:seuzo:20081204184617p:image

「新規相互参照」ダイアログが開きました。

f:id:seuzo:20081204185213p:image

  1. 「リンク先」を「テキストアンカー」にします。
  2. ターゲットドキュメントを選択します。
  3. 「テキストアンカー」に参照したいテキストアンカーを選択します。ここではさきほど作成した「てきすとあんかー」を選択しました。
  4. 「相互参照形式」を好みで選びます。ここでは「テキストアンカー名とページ番号」を選択しました。
  5. OKボタンをクリックします。

f:id:seuzo:20081204185413p:image

相互参照の更新については、前回と同じ手順です。ちなみに、今回はテキストアンカーに文字列を使用しましたが、かならずしも文字に対して設定する必要はありません。挿入点でもかまいません。詳しくはオンラインヘルプをご覧ください。


参考

ハイパーリンク先の設定 -- InDesign CS4オンラインヘルプ

*1:※注意:このとき、サブメニューの一番上に「新規ハイパーリンク...」ってのがありますが、意味が違います。まぎらわしい!

2008-12-03

[][]相互参照機能を使ってみる(その1)

本文中で読者に別の場所を参照して欲しいとき、「〜〜です(123ページを参照)。」とか、「この件について詳しくは123ページの“ほげほげ”を参照してください。」などと入れたりします。InDesign CS3までは、こうした処理はすべて目視で確認して手動でタイプする必要がありました。最終ノンブルが決定するのは、下版直前だったりすると、見落としやノンブル間違いが頻発していた処理です。InDesign CS4の相互参照機能を使えば、こうした処理が自動で行えます。

ステップバイステップで、かんたんな相互参照を説明しましょう。

新規相互参照の挿入

(1)相互参照を挿入したい箇所に文字キャレットを置きます。

f:id:seuzo:20081203180010p:image


(2)相互参照パネルを開きます。

「ウインドウ」メニューから「書式と表」-「相互参照」を選び、相互参照パネルを開きます。

f:id:seuzo:20081203180643p:image


(3)新規相互参照を作成します。

相互参照パネルのサブメニューから「相互参照を挿入...」を選びます。

f:id:seuzo:20081203180907p:image


(4)新規相互参照ダイアログに入力します。

「新規相互参照」ダイアログが出ます。

f:id:seuzo:20081203181028p:image

ここですることは

  1. 「リンク先」を「段落」にします。
  2. 参照ターゲットを含んだドキュメントを選びます。
  3. 段落スタイルを選びます。図中では、「大見出し」を選びます。
  4. 段落スタイルを選ぶと、右にすべての大見出しを適用した段落が表示されます。ターゲットの段落を選択します。
  5. 「相互参照形式」を選びます。図中では「段落全体とページ番号」を選びました。
  6. 「OK」ボタンをクリックします。

文字キャレット位置に新規相互参照が挿入されました。

f:id:seuzo:20081203181841p:image


参照先ターゲットの変更

まず、参照先のドキュメントを開いてみます。ページ番号、セクション番号、見出し文字ともに正しいのがわかりますね。

f:id:seuzo:20081203182255p:image

参照先を編集してみます。ターゲットの前にもうひとつ見出しが増えたので、セクション番号が変わり、ページノンブルが変わり、文字も編集してみました。編集を終えたら保存しておきます。

f:id:seuzo:20081203182325p:image

さあ、参照している元のドキュメントを見てみましょう。

f:id:seuzo:20081203182532p:image

あれ? 変わっていませんね。おかしいな。。。大丈夫。まだ更新していなかったのです。相互参照パネルを見てください。さきほど作成した相互参照にアラートマークがついています。

f:id:seuzo:20081203182842p:image

相互参照パネルのサブメニューから「相互参照を更新...」を選択してください。

f:id:seuzo:20081203183042p:image

では、最初のページを見てみましょう。更新が反映して、正しくなっているのがわかります。

f:id:seuzo:20081203183218p:image


参照

相互参照 -- InDesign CS4オンラインヘルプ

ビデオ/相互参照 -- AdobeTV(本日の段階でまだ未公開)

2008-12-01

[][]正規表現でカタカナにマッチしなかったバグは直っています

InDesign CS3の正規表現検索では、カタカナにマッチしないというバグがありました。InDesign CS4では直っています。「マッチでーす」という文字列に対して、「マッチでーす」がヒットします。あたりまえだ

f:id:seuzo:20081130151234p:image

それから丸数字などにヒットしないのも同じ種類のバグでした(正規表現で丸数字を検索したい -- InD-Board)こちらも直っています。

f:id:seuzo:20081130151525p:image

疑り深い人は、まだまだあった、リテラルとして使えない文字orz - 名もないテクノ手に書いたプログラムで調べてもいいです。0020〜FFFFくらいまでをテストすると、

f:id:seuzo:20081130151829p:image

あたりの文字がまだマッチしない様子。しかしながら、u200Dは文字なしですし、uE00Aあたりは私用領域なので、ほぼ実害はないかと思います。

InDesign CS3は放置ってことですね^^

[][][]正規表現異体字のクエリが保存できない

InDesign CS3から直っていないバグ。異体字」のクエリでの記憶 -- InD-Board

1)検索置換ダイアログの「正規表現」タブから、「検索文字列」に「\d+」を入力する

2)置換形式に、「異体字」から「等幅半角字形」を指定する。

3)クエリに保存する。「数字を半角に」という名前をつけた。

f:id:seuzo:20081130153514p:image

4)検索置換ダイアログを閉じ、クエリのポップアップメニューから「数字を半角に」を選ぶ。

f:id:seuzo:20081130153643p:image

置換形式が消えています。なおってない。