DTPab

DTPにまつわるあれこれ

InDesignの自動スタイルに関するTips

はじめに

12月に入って途端に冬らしくなってきましたね。クリスマス前の風物詩であるAdvent Calendarですが、今年はDTP Advent Calendar 2018なるものが登場し、思わず参加させてもらいました。そしてこの記事はDTP Advent Calendar 2018の9日目の記事です。
ここまででいろんなジャンルのいろんな話が集まっていて、読んでいてとても面白いです。他の方の記事もぜひぜひ。

さて、僕の記事はというと、そこはやっぱり愛してやまないInDesignにまつわるエトセトラです。今回は段落スタイルにある、自動で文字スタイルを適用してくれる以下の機能に関する小ネタ集です。

  • 正規表現スタイル
  • 先頭文字スタイル(+ドロップキャップ)
  • 先頭行スタイル

手間の都合で文字だけのものもありますが、小ネタとして楽しんでもらえれば。

重ねがけの優先度

どの機能も指定した条件にマッチした文字列に対して文字スタイルを自動で適用するわけですが、同じ文字列に同時に複数の文字スタイルが適用されるとどうなるでしょうか?

  • すべてが同時に適用される
  • 重複した要素があれば以下の順で上書きされる(上に設定されているものが優先)
    • 正規表現スタイル
    • 先頭文字スタイル*1
    • 先頭行スタイル

ということで、正規表現スタイルが最も優先して適用されます。また、正規表現スタイルの中では、下に表示されるもの(後から追加したもの)ほど優先です。

先頭文字スタイルのTips

テキスト変数への適用

テキスト変数の「ランニングヘッド・柱(文字スタイル)」を使う際に、正規表現スタイルで適用する文字スタイルではテキスト変数が文字列を拾ってくれません。しかし、先頭文字スタイルであればテキスト変数がしっかりと認識してくれます。
僕は普段は正規表現スタイルばかり使っていますが、テキスト変数に限っては先頭文字スタイル以外に自動で当てる方法がありませんので、そういう意味では正規表現スタイルより歴史の長い先頭文字スタイルの面目躍如といったところでしょうか。

正規表現スタイルのTips

先程列記したの機能の中で僕が最もよく使うのが正規表現スタイルです。以下はその正規表現スタイルに関するTipsです。

全角数字はコードポイントで

正規表現スタイルで全角数字のみをマッチさせたい時、[0-9]だとうまくいきません。かといって\dとするとすべての数字にマッチしてしまうので、コードポイントで文字クラス指定するといいです。
[\x{ff10}-\x{ff19}]とすればOKです。

見た目で違いがわからない文字

例えばU+2212とU+FF0D。見た目にはどちらもマイナス記号なのですが、前者はMacで、後者はWinで「マイナス」と変換して出てくる記号です。これが正規表現では厳密に区別されてしまいます。詳しくは以下の記事を参照。

uske-s.hatenablog.com

要するにこれもコードポイントで文字クラスとして指定したほうが無難です。

言語設定は正規表現スタイルを使うべし

たまに見かけるのですが、段落スタイルの言語設定に日本語以外を設定するのはあまりお勧めしません。というのも、InDesignはそこまでアホじゃないので、例えば段落スタイルの言語設定を「英語:米国」にしたとき、日本語の文字列には「日本語」をオーバーライドで当ててくれます。
とは言ってもオーバーライドで当ててくれるだけで、その後文字を欧文に打ち替えても「日本語」のまま言語設定はオーバーライドされているんですね。
ここに実は罠があって、このような言語設定が入り乱れた欧文の文字列に対して書式メニューの「大文字と小文字の変更」機能を使うと、言語設定の区切りが単語の先頭と勘違いされてしまい、タイトルケースとセンテンスケースで意図しない結果になるのです。 f:id:uske_S:20181209003054g:plain こうならないために、言語設定に日本語以外を当てたい場合は、正規表現スタイルで言語設定を変更する方法をお勧めします。
[\l\u]とすれば大文字でも小文字でもマッチします。あえて[a-zA-Z]としてもOKですが、この正規表現では単純なアルファベット以外の欧文(éやç、üなど)に対応できません。 f:id:uske_S:20181209003854g:plain 必要に応じて使い分けてください。

不定文字数でも後読みとして使える便利なメタ文字

肯定後読み((?<=))では、*+{1,3}といった文字数が特定できない正規表現を扱えません。そこで有用なのが\Kです。
下のGIFは、本文中に登場する「意地」という文字列のうち、先頭から2番めに登場するものだけに色を付けるという正規表現スタイルです。 f:id:uske_S:20181209005609g:plain 肯定後読みを使った場合はうまくいきませんが、\Kを使うと、前に何文字あってもその後の部分だけを指定することができます。ただし、この正規表現が使えるのはInDesign CS6以降です。そこだけご注意ください。

以上、DTP Advent Calendar 9日目、InDesignの自動スタイルに関するTipsでした!明日は茄子川さんの「チラシDTP系の作業向き『Illustratorむちゃワザ 〜早く帰りたいよー〜』」だそうです。お楽しみに!

*1:先頭文字スタイルはドロップキャップと併用できません。ドロップキャップは先頭から指定した文字数分適用され、そこから先頭文字スタイルが適用される仕様です。

DTPerのスクリプトもくもく会#10を開催しました

はじめに

師走になって日に日に寒くなってきたような気がしますが、昨日12/1(土)、DTPerのスクリプトもくもく会#10を開催しました。今回は特別にアナウンスしたり宣伝したりしたわけではなかったのですが、なんと14人の方にご参加いただきました(当もくもく会史上最大)。これでもお一人がお仕事でキャンセルとなったのですが、それにしても14人というのは普段のもくもく会からすると倍近い人数です。
テーブルの配置の都合でちょっと狭かったかもしれませんが、特に大きな問題もなく無事開催できました(参加者の方にはメールをお送りしましたが、遺失物がありましたので、改めてお心あたりのある方はご連絡ください)。

第10回目という節目の開催で、2018年最後の「DTPerのスクリプトもくもく会」となりました。言うまでもないことですが、当もくもく会に参加していただく皆さまのご協力がなくては10回も続きませんでした。このもくもく会は細く長くやっていきたいと考えていますので、引き続き、よろしくお願いします。

開催報告

さて、今回のもくもく会で発表された内容の振り返りをしつつ、いただいたいくつかの質問への返答を改めて。

続きを読む

ESTKが動かない…?

昨日から、どうやらMac版のExtendScript Toolkitで不具合が生じているようです。

f:id:uske_S:20181121094014p:plain

動作アプリケーションを指定しても、ESTKで単体のスクリプトとして実行してもこの警告が出ます。
古籏さんの検証では、どうやら日付に問題があるとのこと。

現段階で根本的な解決方法はなく、以下のツイートでも言及されている方法しかありません。

USフォーラムでは話が少しずつ進んでいるようです(公式からも反応がありました)。

forums.adobe.com

Bracketsプラグインを利用してスクリプトを実行することはできるようで、本当にESTK自体の不具合、といったところでしょう。
Bracketsプラグインについて詳細はこちら。

qiita.com

詳細が分かり次第追記していきます。

【11/21 11:00 追記】
MacOS 10.10.6、ExtendScript Toolkit CC(4.0)の環境で試した結果が以下です。
いずれも、アプリケーションから直接スクリプトを実行することは可能です。この検証は、ESTKから対象アプリケーションを指定してスクリプトが実行できるかどうかを調べたものです。

アプリ バージョン リビジョン 警告 スクリプトの実行
ESTK CC 4.0 表示される 不可能
InDesign CC2017 12.1.0.56 表示される 可能
InDesign CC2015 11.4.1.102 表示される 可能
InDesign CC2014 10.2.0.69 表示される 可能
InDesign CC 9.3.0.106 表示される 可能
InDesign CS6 8.1.0.419 表示される 不可能
InDesign CS5.5 7.5.3.333 表示される 不可能
InDesign CS5 7.0.4.333 表示される 不可能
Illustrator CC2017 21.1.0 表示される 可能
Illustrator CC2015.3 20.1.0 表示される 可能
Illustrator CC2015 19.2.1 表示される 可能
Illustrator CC2014 18.0.0 表示される 可能
Illustrator CC 17.1.0 表示される 可能
Illustrator CS6 16.2.2 表示される 可能
Illustrator CS5.1 15.1.0 表示される 不可能
Illustrator CS5 15.0.2 表示される 不可能

以上のような結果となりました。
USフォーラムによるとfixに向けて開発チームが動いているようですので、詳細を待ちたいところです。

【11/21 21:00 追記】
どうやら、targetengineを指定すると(1回だけ警告が出るものの)、それ以降はスクリプトが問題なく動作するようです。
手元で試した限りでは、上記の表の「不可能」としていたInDesign CS製品でもスクリプトが動作することを確認しました。 その方法で試すとどうなるか、が以下の表になります。

アプリ バージョン リビジョン 警告 スクリプトの実行
ESTK CC 4.0 表示される 不可能
InDesign CC2017 12.1.0.56 1回だけ表示される 可能
InDesign CC2015 11.4.1.102 1回だけ表示される 可能
InDesign CC2014 10.2.0.69 1回だけ表示される 可能
InDesign CC 9.3.0.106 1回だけ表示される 可能
InDesign CS6 8.1.0.419 1回だけ表示される 可能
InDesign CS5.5 7.5.3.333 1回だけ表示される 可能
InDesign CS5 7.0.4.333 1回だけ表示される 可能
Illustrator CC2017 21.1.0 表示される 不可能
Illustrator CC2015.3 20.1.0 表示される 不可能
Illustrator CC2015 19.2.1 表示される 不可能
Illustrator CC2014 18.0.0 表示される 不可能
Illustrator CC 17.1.0 表示される 不可能
Illustrator CS6 16.2.2 表示される 不可能
Illustrator CS5.1 15.1.0 表示される 不可能
Illustrator CS5 15.0.2 表示される 不可能

ご覧の通り、main以外のエンジンを指定するやり方ではIllustratorが全滅となりました。InDesignを対象とするスクリプトであれば、これでもいいかもしれません。

試したコードはこんなんです。

#targetengine "hoge"

alert("fuga");

InDesignについてだけ言えば、現時点ではこれが一番分かりやすくて勝手が良いですかね。
引き続き何かあれば追記していきます。

【11/30 23:50 追記】
Ten_A師匠がAdobe自動化総合フォーラムにおいて解決方法を懇切丁寧に解説してくださっています。

forums.adobe.com

記事で紹介されていますが、ものかのさんがD&Dで修正できるアプリケーションを開発してくださいました。
これでこの記事への追記は最後でしょうかね。

原因を迅速に特定してくれたAdobeのecosystemチーム、
その解決方法を和訳して紹介してくださったTen_Aさん、
そしてパッチアプリを開発してくださったものかのさんに敬意を表したいと思います。