InDesignにはInDesignタグという機能があります。レイアウトをタグとして書き出したり、タグを読み込んでレイアウトを作成する機能です。段落スタイルや文字スタイルもタグとして指定できますから、タグを設定して作成したテキストをInDesignに読み込むとそのままレイアウトが完成します。
InDesignのタグはXMLです。というと少し敷居が高くなってしまいますが、タグで指定したテキストに意味を持たせるものです。WebブラウザーのHTMLは基本的にオープンで統一された使用ですが、XMLでのタグは決められたシステム内のみで使うものです。どのような名前のタグでも自由に決めることができます。段落スタイルのタグは
<pstyle:本文>
と指定します。パラグラフ=段落のスタイルという意味のタグです。タグに続くテキストに段落スタイルが適用され、次の段落スタイルをタグで適用するまで段落スタイルが適用されます。ただしここで指定した段落スタイルは事前にInDesign側で作成して指定しておきます。つまり「本文」という名前の段落スタイルがInDesignにあれば、その段落スタイルが<pstyle:本文>で指定されたテキストに、そのまま適用されるわけです。
InDesignでレイアウトを作成しておき、テキスト内にInDesignタグとて段落スタイルを指定してあれば、InDesign上でレイアウトを指定する必要はありません。テキストファイルをテキストフレームに読み込むだけで段落スタイルや文字スタイルはレイアウトに反映します。
青空文庫では見出しや字下げなどを決められたルールで指定するようになっています。たとえぱ吉川英治の「三国志(一)桃園の巻」の冒頭には
[#3字下げ]黄巾賊《こうきんぞく》[#「黄巾賊」は大見出し]
という大見出しがあります。これをInDesign上にある「大見出し」という段落スタイルに置き換えるとします。ここでは3つの変換を行う必要がありますが、3つの変換を行うと、テキスト中のすべての大見出しの指定が同時に処理されてInDesignのタグに置き換われます。
青空文庫のテキストは最終的に
<pstyle:大見出し><cr:1><crstr:こうきんぞく>黄巾賊<cr:><crstr:>
というテキストに変換します。「大見出し」という段落スタイルとルビがInDesignタグに置換されます。そうすればInDesignに取り込んだテキストはルビも反映してInDesignに配置することができます。それでは具体的に解説してみましょう。まず、「[#3字下げ]」を「<pstyle:大見出し>」に変換します。この部分は正規表現は不要です。単に変換するだけです。
次にルビのある見出し文字「黄巾賊《こうきんぞく》」をInDesignのルビタグにします。ルビタグにする「<cr:1><crstr:こうきんぞく>黄巾賊<cr:><crstr:>」となります。みの場合はルビの変換には正規表現を使います。一般的に次のような検索と置換を行います。
|?([一-龠]+)《(.+?)》 <cr:1><crstr:\2>\1<cr:><crstr:>
正規表現では一定のテキストパターンを検索します。ルビは漢字に対して適用されますから、([一-龠]+)という文字列で漢字部分を検索します。[...]は文字を指定するときの記号です。ユニコードの「一」から「龠」までの漢字でなおかつ複数でも文字も対象にするので「+」が追加されています。これで一文字以上の漢字のみの文字列を検索できます。
青空文庫では連続する漢字の後半部にルビを指定する場合は「|(パイプラインとか縦線とかいいます)」で漢字を区切ります。そこで「|」あるいは漢字の文字列のいずれかを選択するために「?」を使います。
青空文庫のルビ文字は《...》で括られていますから《...》内の文字列を検索します。それが「《(.+?)》」です。「.」は任意の文字列を示しています。(.+?)で一文字以上の文字列が検索対象となります。
つまり「|」あるいは漢字の文字列があってそれに続いて《...》がある文字列を選択します。この組み合わせの文字列だけを選択します。検索文字列の中で(...で囲まれた文字列は抽出するための文字列です。ここでは漢字の文字列(親文字)とルビ文字を(...)で取り出します。
次にルビの指定をルビタグに変換します。(...)で括られた文字列を置換文字列に反映します。置換文字列には検索文字列にはない文字を自在に追加できます。つまりここでルビタグを置換文字列に追加します。ここで検索時に(...)でくくった文字列を挿入します。検索文字列の(...)の順番で番号で挿入します。Jeditでは番号の前に「\(半角のバックスラッシュ)」を追加します(一般的には正規表現では「\」ではなく「$」が使われます)。これでルビ文字をルビタグ内において親文字をルビ文字内に配置できます。
<cr:1><crstr:\2>\1<cr:><crstr:>
InDesignのタグには冗長と略書きがあります。ここでは略書きを使っています。最初の<cr:1>はルビを使うという意味です。「1」という数値がルビという宣言です。<crstr:>はルビ文字を「:」とタグの間に記述します。<crstr:\2>とすると検索時の2つ目の(…)の文字列が「\2」の位置に挿入されます。続いて「\1」で親文字を指定します。<cr:>と<crstr:>はルビとルビ文字のタグが終了したことを指定しています。こうして正規表現では検索文字列の後ろにあっても、(…)で選択された文字列は置換文字列内のどこにでも指定できるのです。
「[#「黄巾賊」は大見出し]」は不要なので削除します。見出しテキストは一定ではありません。「[#「([ぁ-龠]+)」は大見出し]」というテキストで検索して検索結果をなしにします。ここでは平仮名から漢字の最後までが使われている大見出しの文字列を検索して一括して削除します
これで青空文庫のテキストの指定はInDesignタグに置き換えられます。それ以外のテキストも同じようにエディタで検索置換することでInDesignタグに置き換えることができます。
テキストの検索置換は見出しやルビ以外にも外字や傍点などの処理も必要です。ですから、複数の検索置換を順序立てて行う必要があります。そこでJeditを使います。Jeditは複数の文字列で一括して置換できます。正規表現でも一括置換できます。ですから複数の単語での検索置換処理を1つのアクションで行うことが可能です。
すべての検索置換を一回のアクションで行うことは無理ですが、いくつかのステップにわけて処理すれば確実に青空文庫テキストの注記はInDesignタグに置き換わります。Jeditでは複数一括置換のリストをファイルとして保存しておくと、リストを読み込むことで簡単に検索置換を処理できます。さらに読み込んだリストはメニューに反映されますから、決められた順番に検索と置換を行うだけです。
下記の実際に青空文庫のテキストをJeditで変換した様子を解説したものです。あわせてご覧ください。
|
こんにちは、コンテンツ・ワークフロー・スーパーバイザーの上高地仁です。青空文庫テキストをInDesignに配置することが多くなりました。青空文庫テキストをInDesignタグに変換するというようなノウハウはWebで検索すればすぐにわかるだろうと思っていましたが、実際にはわかりやすく整理したものはありませんでした。実際に試行錯誤してやっと使い物になる方法を見つけて整理しました。 |
実際にこの方法で青空文庫テキストをInDesignにレイアウトしてみました。テキストをダウンロードしエディタで整形してInDesignに配置するだけです。レイアウトした後版面をチェックする時間も入れて30分もあれば作業は完成します。見出しや傍点、ルビ、外字、外字を含んだルビもあわせて半自動でレイアウトしています。
インターネットに青空文庫テキストを正規表現でInDesignタグに変換する方法が詳しく乗っていないのは、それほどInDesignタグが使われていないからでしょう。InDesignタグを追加したテキストをInDesignに取り込む時、どのような方法で配置するのがベターなのかはやってみないとわかりません。
InDesign上でInDesignタグを配置するにはテキストボックスをフレームグリッドにしなければなりません。テキストフレームのまま貼り込むと、文字スタイルは反映しても段落スタイルは反映しないのです。ですから文字物を作成する場合は、まず本文フォントを決めてレイアウトグリッドを作成します。それで段落スタイルを作成し、さらにページ上にフレームグリッドを作成するか、テキストフレームを作成してフレームグリッドに変換します。マスターページ上にフレームグリッドを作成して、ページ上でアクティブにしたフレームグリッドにInDesignタグテキストを配置すると、後ろのページはテキストの分量に合わせてそのまま自動生成されます。
慣れればめっちゃ便利です。必要な段落スタイルと文字スタイルを決めておいて、テキスト内の注記をInDesignタグに変換すればいいだけです。ややこしいのは外字の指定があり、なおかつルビがある場合です。その場合は少しは処理が面倒です。第3水準第4水準の漢字は面区点で記述されていますが、InDesignでは面区点は読めません。面区点は変換テーブルでユニコードに変換します。ユニコードにすれば、InDesignにそのまま外字として配置できます。
面区点とユニコードの変換テーブルは探してもありませんでした。そこで作成しました。このテーブルを使って面区点をユニコードにJeditで一括変換します。第3水準第4水準の文字数は3,695文字ですが、複数一括置換するので、リストを読み込んで置換するだけです。変換テーブルがあれば、面区点で記述してあっても、InDesignでOpenTypeフォントを使っていればそのまま漢字としてレイアウトされます。
青空文庫以外のテキストも同じような形式で記述しておけば、簡単にInDesignタグに変換してテキストを自在に貼り込むことができます。段落スタイルや文字スタイルはわかりやすい形でテキスト内に記述しておけば、簡単にInDesignタグに変換して貼り込むことができます。InDesignでレイアウトしたものもInDesignタグに書き出すと、別のレイアウトに簡単に配置することができます。
ここでは文字コードにシフトJISを使用しています。現在はJISのX0213も普及も進み字形の多いOpenTypeフォントも少なくありませんから、シフトJISでは使えない外字もテキストエディタで簡単に入力可能です。その場合はInDesignタグもシフトJISではなくユニコードで配置することが可能です。
青空文庫がシフトJIS対応なのは、古いシフトJISにしか対応していないOSやアプリケーションに配慮してのことです。シフトJIS内の文字コードで記述しておけば文字が化けてしまうことにはなりません。エディタでの表示は別にしてアプリケーションで表示する場合は、外字部分の注記をアプリケーションで読み込んで文字コードに変換すれば外字も問題なく表示可能です。ですから青空文庫形式で記述してもテキストのソースとしては汎用性はけっして低くありません。
『青空文庫テキストをInDesignタグに変換して配置する方法』は青空文庫テキストをエディタの機能で効率的にInDesignタグに変換する具体的な方法を示したものです。外字の多い吉川英治版「三国志」全巻を変換して動作を確認しました。
必要なアプリケーションは
InDesign CS6(CS4以降)
Jedit X 1.4以降
となっています。InDesignはCS6でなくてもCS4以降であればまず問題ありません。InDesignタグの機能に大きな機能追加はほとんどありません。InDesignタグの内、段落スタイルと文字スタイル、外字を読み込むときのユニコードのタグが読み込めればまったく問題はありません。エディタはMac版では複数の単語で一括置換できるものはJeditしか見当たらないので、Jeditをお使いください。
青空文庫のテキストであればマニュアルの手順にあわせて、Jeditで何度か変換してシフトJISで保存し、InDesignでテキストを配置するだけです。面区点をユニコードに変換するテーブルも用意しています。