2014年02月06日

囲み文字にする方法を考える

DTP作業者にとっての難易度 ★★☆☆☆(2)


Twitter上で、囲み文字を実現する方法について触れられていたので試してみました。

※データ結合については次回以降で。



私が思いついたのは
【1】圏点の種類・サイズ・位置を調整して囲み文字にする
【2】下線で白抜き文字にする
【3】正規表現スタイルで囲み文字・白抜き文字を表現する
という3つの方法でした(【1】はTwitter上でも触れられていました)。
0206.png

以下、動画をご覧ください。


サンプルデータもありますので必要な方はお試しください。
いずれも設定には少し手間がかかりますし、それぞれ短所もあります。何か良い方法をご存知の方は教えていただけると嬉しいです。

※動画内で触れませんでしたが【2】には2文字連続では指定できない(つながってしまう)という欠点もあります。



サンプルデータはこちら《minimum_0206.zip》です(CS4以降)。

posted by 照山裕爾 at 05:16| Comment(0) | TrackBack(0) | InDesign-書式・スタイル | このブログの読者になる | 更新情報をチェックする

2013年06月24日

正規表現スタイルの活用……括弧書き部分の書式を変更する

DTP作業者にとっての難易度 ★★★★☆(4)

今まで「正規表現スタイルを使うと複雑な書式指定作業も簡単に処理できる」という例をご覧いただきました。しかし反対に「簡単そうに見えて意外と難しい」というケースもあります。今回は、そんな例を1つご覧いただこうと思います。

私がいただいた仕事で「本文中の括弧書き部分のみ文字サイズを変えてほしい」という指示を受けたことがあります。下図は、設定前の状態です。

0624-01.png


特に設定しないと最長一致になる


正規表現スタイルを使えば、簡単に設定できそうに思い、まずは以下のように設定してみました。

0624-07.png

『テキスト』欄は(.+)と設定しました。は、それぞれ全角の起こし括弧(始め括弧)と受け括弧(終わり括弧)です。.は任意の文字、+は1回以上の繰り返しという意味です。この設定で下図のような状態になりました。

※分かりやすいよう文字サイズだけではなくフォント、文字色も変更しています。


0624-02.png

これで一件落着……かというと、残念ながらそうではありませんでした。1つの段落内に括弧でくくられた箇所が複数存在すると、下図の「さしすせそ」部分のように不要な箇所まで書式が変わってしまうのです。

0624-03.png

正規表現では、特に指定をしない限り「最長一致」という処理がおこなわれます。「条件に合っている限り、できるだけ長い範囲を処理対象にする」ということです。今回の例でいえば、最初の起こし括弧(「か」の前の起こし括弧)から、最後の受け括弧(「と」の後の受け括弧)までが一連の処理対象となってしまうのです。


最短一致を設定する


これを解決するために、下図のように『テキスト』欄を(.+?と設定してみました。

0624-08.png

繰り返しを意味する+の後に?を入力すると「最短一致」という処理がおこなわれます。今回の例で言えば、最初の起こし括弧(「か」の前の起こし括弧)から最短の位置に存在する受け括弧(「こ」の後の受け括弧)までが1つの処理対象となります。同様に「た」の前の起こし括弧から「と」の後の受け括弧までも1つの処理対象となり、下図の状態になります。

0624-04.png

これで万事解決……かと思いましたが、残念ながらそうではありませんでした。

下図のように括弧書きの中に括弧書きが存在するようなケース(階層を成しているケース)では「最短一致」で希望通りの結果を得ることはできないのです。

0624-05.png


私なりの設定


いろいろ考えた結果、私が考えた設定は以下の通りです。この設定で三階層の括弧書きまでは問題なく処理できると思います。

0624-09.png

『テキスト』欄は([^()]*(([^()]*(([^()]*)[^()]*)*)[^()]*)*)と設定しました。下図は、この設定を適用した結果です。DTP作業者の皆さまは最下部のサンプルデータでお試しください。

0624-06.png

この設定についてのご説明は少し複雑で長くなりますので、ここで詳しくはご紹介いたしません。
一階層であれば([^()]*)
二階層であれば([^()]*(([^()]*)[^()]*)*
三階層であれば([^()]*(([^()]*(([^()]*)[^()]*)*)[^()]*)*ということからお考えいただければと思います。

[^()]*は「を除く文字」を「0回以上繰り返す」という意味です。



このように正規表現スタイルの設定に頭を抱えるケースは多々あります。編集者のみなさま、ぜひDTP作業者と話し合って設定の難易度を確認し、十分な準備時間をお与えいただきたく思います。一度しっかりした設定が整えば、その後の作業効率は格段に向上するはずです。

※プログラム的な素養のない私は頭を抱える場面が多く、今まで多くの先輩諸氏のノウハウをインターネット上で吸収してまいりました。これからも様々な場で情報を交換していきたいと思います。また、もっと良い設定があるという方は、何とぞご教示ください。よろしくお願いします。


サンプルデータはこちら《minimum0624.zip》です(CS4以降)。


(0624追記)

市川せうぞーさんが【正規表現の文字クラスまとめ - 名もないテクノ手】で「否定文字クラスを使うときには、明示的に……改行を含むように習慣付けましょう。」とお書きになっているのを読み、これから心がけようと思いました。今回の例では起こし括弧と受け括弧が複数段落に分かれるケースは少ないと思われますが、念のため改行「\r」も記述しておいたほうが良いように思います。その場合、設定は([^()\r]*(([^()\r]*(([^()\r]*)[^()\r]*)*)[^()\r]*)*)となります。

また、いろいろと試しているうちに、もう少し文字数の少ない記述方法もあることに気付きました。
一階層であれば([^()\r]*)
二階層であれば([^()\r]|([^()\r]*))*
三階層であれば([^()\r]|(([^()\r]|([^()\r]*))*))*といった設定です。
他にも、良い記述方法があればお知らせいただけると嬉しいです。
posted by 照山裕爾 at 03:54| Comment(4) | TrackBack(0) | InDesign-書式・スタイル | このブログの読者になる | 更新情報をチェックする

2013年06月13日

正規表現スタイルの活用……スペースを使わず文字間をあける

DTP作業者にとっての難易度 ★★☆☆☆(2)

私が担当した仕事で「見出しが2文字の時だけ文字と文字の間に全角アキを設けてほしい」という指示を受けたことがあります。
最も簡単な処理方法は、下図のように全角スペースを入力することかもしれません。

0613-002.png

※見出し行頭の数字は自動番号です(詳しくは《段落スタイル……『箇条書き』の『自動番号』機能を活用する》を参照ください)。見出しの文字数にはカウントしていません。

※処理後の図内の『0613-001.png』という表示は全角スペースが入力されていることを示します。



しかし、この処理方法は好ましくないと私は考えています。その理由は2つあります。

1つめの理由は、作業ミス(入力漏れ、不要箇所への入力)の可能性をゼロにできないことです。『検索/置換』機能をうまく使えば2文字の見出しだけを検索して全角スペースを挿入することは可能ですが、その後の過程で見出しの文章が変更になった場合に作業ミスが生じるかもしれません。

もう1つの理由は、レイアウトデータの2次使用を考えた時に全角スペースが邪魔になるということです。これは、後で動画をご覧いただくことにしましょう。

スペースを使わず文字間をあける


では、正規表現スタイルを使って自動的に文字間をあけてみましょう。

文字スタイルを用意する

まずは『文字後のアキ量』を『全角』と設定した文字スタイルを用意します。

0611-03.png

正規表現スタイルを設定する

次に見出しの段落スタイルに正規表現スタイルを設定します。設定内容は下図をご覧ください。

0611-04.png

『テキスト』欄は『^.(?=.$)』となっています。
『^.』は『段落行頭の1文字』が対象だという意味です(『^』は段落行頭、『.』は任意の文字)。
『(?=.$)』は、その直後の文字に関する条件を示しています。『.』は任意の文字、『$』は文章の終わりという意味(段落の終わりと考えて結構です)なので、『その直後は1文字だけで段落が終わる』……というのが今回の条件です。

設定は以上です。実際に、見出しが2文字の時だけ文字間が全角アキになることをご確認ください。

※お気づきだと思いますが、この方法には、文字間を全角アキではなく半角アキ、四分アキにすることも簡単だというメリットもあります(文字スタイルの設定を変更するだけで実現できます)。



全角スペースを入力した時の問題点

InDesignのレイアウトデータからはPDFファイルやWeb用のHTMLファイル、電子書籍用のePubファイルなどを書き出すことができます。今後、その使用場面が増えることは間違いないでしょう。これらのファイルを閲覧し、単語を検索する場面を想像してみてください。単語の間に不要な全角スペースが入力されている箇所は検索対象にならないのです。以下、PDFファイルの例をご覧ください(動画内・左側は全角スペースが入力されています)。

もしかしたら今後、不要な全角スペースを無視して検索する機能(たとえば正規表現を用いた検索機能)が各種ビューワに備わるかもしれません。しかし全ユーザが使いこなすことは期待できないように思います。やはりデータ上に不要な全角スペースを入力しないほうが親切であり、安全なのではないでしょうか。

サンプルデータはこちら《minimum0613.zip》です(CS4以降)。
posted by 照山裕爾 at 18:45| Comment(0) | TrackBack(0) | InDesign-書式・スタイル | このブログの読者になる | 更新情報をチェックする