Top > FrameMaker Blog Index > 複雑なテーブル(表)やイラストをInDesignを使用して作成する

複雑なテーブル(表)やイラストをInDesignを使用して作成する

FrameMakerのテーブル(表)は、かなりよくできてはいますが、限界もあります。 特に、 非構造化FrameMakerと比べて、 構造化FrameMakerは制限が多く、顧客からのレイアウト要望に応えきれない場合があります。

そこで、複雑なテーブルは、FrameMakerとは別のアプリで作成し、EPSデータとして取り込みます。

このとき、EPSデータをどんな別アプリで作成するか...ですが、 たとえば、Illustratorで複雑なテーブルをつくれば、見た目の面で 顧客の要求に応えることはできます。
しかし、 このとき問題になるのが、テーブル中に含まれるテキストの翻訳です。 作成するドキュメントが単一言語だけでよい場合は問題ありませんが、 複数の言語に展開する場合は、 イラスト中のテキストの翻訳やその変更管理は非常に大きな作業コストアップ要因になります。

そこで、EPSデータ作成だからIllustrator...という安易な発想ではなく、 XML対応機能を備えている InDesignを使用して、テーブルを作成します。

同じ発想で、翻訳すべきテキストが含まれるイラストも Illustratorではなく、InDesignで作成することで、多言語展開時の作業コストを減らすことができます。

InDesign のXML機能

InDesignは、FrameMakerと違って、XML文書を流し込んでルールベースでフォーマットする、 という発想はしません。 たくさんのテキストフレームや画像フレームを使って紙面を構成していくソフトウェアなので、 XML対応方法もXMLとして書き出したフレームをXMLの要素に結びつけていくという方法をとっています。

手動で各フレームとXMLの要素を結びつけるのは面倒なので、 それを自動的に行うautotag.jsx というJavaScriptを用意しました。

autotag.jsx を使って InDesign データをXMLに変換

 変換に必要なファイル

Indesign CS3 で作動確認しています。

JavaScriptの設置

InDesignからJavaScriptを実行できるように、autotag.jsx,striptag.jsx を 以下のフォルダに配置します。

※ お使いのPCの InDesign CS3 のインストール先に応じて適宜読みかえてください。

InDesignデータをXML化

XML化対象となるInDesignデータを用意します。 これを test.indd として以下説明します。

  1. InDesign CS3 で test.indd を開く
  2. メニューから【表示 - 構造 - 構造を表示】
  3. 構造ビューのメニューから【文書型定義を読み込み】
    • autotag.dtd を選択
  4. 構造ビューの Root 要素の上のDoctypeを削除します
  5. スクリプトを実行
    1. メニュー【ウインドウ - 自動化 - スクリプト】
    2. アプリケーションフォルダ内の、autotag.jsx を選択して実行
  6. XMLファイルとして書き出し
    1. 構造ビューで Root 要素を選択
    2. 構造ビューのメニューから【XML書き出し】→ test.xml として保存

これで、test.indd の内容を XML化できました。

test.indd の内容をInDesign上で編集し要素が追加/削除された場合は、再度タグ付け処理が必要です。
その場合、 まずstriptag.jsx を実行し、 一度すべてのタグ付けを解除してから、再度autotag.jsxを実行します。

XML翻訳して翻訳結果を元のファイル(test.indd)に反映するには...

test.xml の内容を展開先の言語に翻訳し、あとは、test.indd に取り込めばOKです。

  1. InDesign CS3 で test.indd を開く
  2. 構造ビューを開き、Root要素を選択
  3. 構造ビューのメニューから【XML読み込み】を選択
    1. test2.xml を選択
    2. 結合モードで読み込み

test.xml の取り扱い上の注意

InDesignから出力したXMLは改行やインデントがありません。
翻訳時に翻訳しやすいように改行やインデントを入れてしまうと、 test.inddにXML読み込みしたときにレイアウトが崩れてしまいます。

改行やインデントを追加しないで、翻訳対象となるテキストだけを翻訳テキストに置き換えれば問題ありませんが、 この作業プロセスについては実際は工夫が必要です。