2013年11月15日

傍点を文字スタイルのInDesignタグに変換する

 青空文庫には傍点がついている書籍が少なくない。ひらがなに埋もれて単語がわかりにくい場合や、テキストの一部分を強調するときに傍点を追加する。InDesignタグで傍点を扱う場合、傍点自体をタグで指定する方法もあるが、あとで傍点の種類や大きさを変更する場合を想定するならば、傍点の処理は文字スタイルで行う方がわかりやすい。文字スタイルであれば、実際にレイアウトを確認しつつ傍点の大きさや親文字からの位置を微調整可能だ。

  InDesignでは傍点は圏点として指定する。強調する点の表記方法にはいくも種類があり、傍点以外にも丸傍点や二重丸や蛇の目などの圏点もある。傍点といえば通常は「黒ゴマ」と呼ばれる圏点を使う。InDesignでは単に「ゴマ」となっていてデフォルトの設定である。

131115-001.gif
*文字スタイルの圏点設定。傍点では「ゴマ」を選択する。

 たとえば文字スタイルで「圏点」というスタイルを作成しておき、青空文庫の傍点指定を文字スタイルの圏点に変換する。文字スタイルの圏点はInDesignタグでは

<cstyle:圏点>傍点テキスト<cstyle:>

となるので、傍点指定している部分を選択して置き換える。なお複数の圏点を使っている場合は文字スタイルを複数作成して使い分ければ良い。

 青空文庫では傍点は

秋から冬にもぐさ[#「もぐさ」に傍点]にして、

という具合に指定されている。[#...]内の傍点テキストは簡単に取得できる。「[#「(.+?)」に傍点]」で正規表現検索すると選択可能だ。問題はその前にある傍点を追加するテキストである。「[#「(.+?)」に傍点]」で選択した部分は簡単にいうと削除すればよい。その前のテキストには文字スタイルのタグを指定しなければならない。(.+?)で選択したものと同じ文字列もしくは文字数を選択する必要がある。

 ところが「(.+?)[#「(.+?)」に傍点]」で検索すると、「[#「(.+?)」に傍点]」の前にある文字は、つまり(.+?)の文字列は、段落の最初から選択されてしまう。傍点の括弧でくくられた文字列だけを選択することはできないのである。

 残念ながら、正規表現で選択した文字数と同じ文字数を取得して、その文字数だけを(…)で囲んだ文字集合として認識する方法はわからなかった。正規表現については知悉しているわけではなく、量指定子などを使えばもっとスマートにできる方法があるのかもしれない。傍点の括弧内にある文字列と同じ文字列をその前から選択する方法はあるのだろうか。

 傍点を変換するだけであれば、実は青空文庫のテキストデータを使うのではなくXHTMLファイルから変換すると簡単にできる。XHTMLファイルでは

秋から冬に<em class="sesame_dot">もぐさ</em>にして、

と記述されているので「<em class="sesame_dot">(.+?)</em>」で検索すれば一網打尽であった。XHTMLのタグをInDesignのタグに置き換えればいいだけである。となるといままでテキストベースで作成してきた変換ノウハウがすべてオシャカになるのでテキスト形式で変換する方法を考えてみた。

 ここでの問題は1つの変換式でやってしまおうとすることであった。つまり複数の式で一括変換するのである。つまり傍点テキスト一文字に対してその前にある選択テキストも一文字にする。

(.)[#「(.)」に傍点]    <cstyle:圏点>\1<cstyle:>
(..)[#「(..)」に傍点]    <cstyle:圏点>\1<cstyle:>
(...)[#「(...)」に傍点]    <cstyle:圏点>\1<cstyle:>
   〜
(....................)[#「(....................)」に傍点]    <cstyle:圏点>\1<cstyle:>


という変換式を文字数に合わせて作成する。今回は任意文字のドットを20個まで作成して、Jeditで一括変換することにした。文字数を限定すれば前にある取得文字も文字数も限定できたのである。傍点文字数が20以上の場合は、InDesignで手動で編集することになる。

131115-002.gif
*Jeditでの検索ウィンドウ。必要な文字数だけ検索置換の設定を作成する。

 
posted by jink0222 at 19:45 | Comment(0) | TrackBack(0) | InDesignタグで青空文庫 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。