構造化FrameMaker ... 目次用 XMLのフォーマット
構造化FrameMaker(Structured)には目次作成機能が付いていますが、それを使わないで、
事前にFrameMakerにXMLインポートするの前段階の処理として目次用のXMLを生成(というか、XSLTを使って変換)
してから、FrameMakerでフォーマットするという方法があります。
その場合、目次項目のパラグラフフォーマットをEDDで指定する方法がわからなかったので調査しました。
TOC
このエントリーではシンプルな目次用アプリケーション(hellotoc)を作成してみます。
- STEP1 DTDの作成
- STEP2 DTDをEDDに変換
- STEP3 テンプレートの作成
- STEP4 アプリケーションの定義
- STEP5 XML文書の読み込みテスト
- STEP6 スタイル情報の追加(インデント)
- STEP7 スタイル情報の追加(リーダ+ページ)
- STEP8 テンプレートに適用
※テストに使用したバージョンは、日本語版 FrameMaker 7.2(Windows) です。
STEP1 目次用DTDの作成
こちらのエントリー(DocbookのXMLから目次情報を抽出する toc.xsl の作成) で作成した toc.xml にルート要素(toc)を追加した sample-toc.xml を使ってDTDを作成します。
$ java -jar trang.jar -I xml -O dtd toc.xml hellotoc.dtd
hellotoc.dtd
<?xml encoding="UTF-8"?>
<!ELEMENT toc (list)>
<!ATTLIST toc
xmlns CDATA #FIXED ''>
<!ELEMENT list (list|item)*>
<!ATTLIST list
xmlns CDATA #FIXED ''>
<!ELEMENT item (#PCDATA)>
<!ATTLIST item
xmlns CDATA #FIXED ''>
STEP2 DTDをEDDに変換
hellotoc.dtd を hellotoc.edd に変換します。
FrameMaker(Structured) を 起動...
- 【File - Structure Tools - Open DTD...】
- hellotoc.dtd を選択
- Use Structured Application : < No Application > を選択
- Open DTD File for : XML を選択
- hellotoc.dtd が EDDに変換されて表示
- 【File - Save As 】
- hellotoc_edd.fm というファイル名で保存
※EDDのスタイル設定は、なしで先に進めます。
STEP3 テンプレートの作成
STEP2 で作成したEDDをテンプレートに読み込ませます。
テンプレートは、FrameMakerが hellotoc アプリケーションで、
ひな形として使うドキュメントです。
以下の手順でテンプレートを作成します。
FrameMaker(Structured) を 起動...
- 【File - Open】
- hellotoc_edd.fm を選択
- 【File - New - Document 】
- Use Blank Paper: Portrait を選択 →新規ドキュメントが表示される
- 【File - Import - Element Difinitions...】
- Import from Document : hellotoc_edd.fm を選択
- Import ボタンをクリック
- 【File - Save 】
- ファイル名 template.fm として保存
STEP4 アプリケーションの定義
次にFrameMakerのアプリケーションを定義します。
今回は、以下の設定でアプリケーションを作成します。
- アプリケーション名: hellotoc
- テンプレート: template.fm
- DTD: hellotoc.dtd
- EDD: hellotoc_edd.dtd
- DOCTYPE: toc
- Public ID: -//OSIMA//DTD hellotoc//EN
準備
これらのファイルを慣例に従い、以下のディレクトリを作成した上で、その中にコピーしておきます。
- $STRUCTDIR/xml/hellotoc/
$STRUCTDIR は、通常は次のディレクトリを示します。(状況に合わせて読み替えしてください。)
- c:/Programe Files/Adobe/FrameMaker7.2/Structure
アプリケーション定義の追記
FrameMaker上で アプリケーション定義ファイルに今回作成する hellotoc を追加します。
アプリケーション定義ファイルのバックアップ
アプリケーション定義する前に 定義ファイルをバックアップしておくべきです。 通常は、アプリケーション定義ファイルは以下の場所にあります。
- $STRUCTDIR/structapps.fm
このファイルを別名でコピーするなどして、バックアップしておきます。
以下の手順でアプリケーションを作成します。
FrameMaker(Structured) を 起動...
- 【File - StructureTools - Edit Application Definitions ...】
- hellotoc アプリケーションの定義を追加
- 【File - Save 】
- 【File - Structure Tools - Read Application Definitions....】(これを忘れないこと!)
アプリケーションの追記結果は以下のようになります。
structapps

Structure View

STEP5 XML文書の読み込みテスト
それでは実際に sample.xml を STEP4 で定義した hellotoc アプリケーションを使って 開いてみます・・・その前に、Public ID を定義したので、 sample.xml の先頭部分に以下のように、DOCTYPE宣言を追加します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE toc PUBLIC "-//OSIMA//DTD hellotoc//EN" "">
それでは開きます。
FrameMaker(Structured) を 起動...
- 【File - Open】
- sample.xml を選択
- Use Structured Application: hellotoc
読み込まれると以下のように表示されます。

※スタイル情報はまだありません。
STEP6 スタイル情報の追加(インデントの追加)
EDDを適切に編集して、目次風のフォーマットを実現します。
EDDの編集
hellotoc_edd.fm を開いて、list エレメントを以下のように変更。(Text Format Rules)

sample.xmlにEDDを適用
sample.xml を開き...
- 【File - Import - Element Definitions...】
- Import From Document: hellotoc_edd.fm を選択
- Import ボタンをクリック

STEP7 スタイル情報の追加(リーダ+ページ)
hellotoc_edd.fm を開いて、item エレメントを以下のように変更。(Text Format Rules の Tab Stops)

※ Tab Stop position は大きすぎると用紙からはみ出すので最初は小さい値で試す方がよい。
※ Tab Stops Leader に設定する .... の数は4つ。
sample.xmlにEDDを適用
sample.xml を開き...
- 【File - Import - Element Definitions...】
- Import From Document: hellotoc_edd.fm を選択
- Import ボタンをクリック
itemテキストの後にタブを追加すると ... が表示される。

※ページ数を右揃えにフォーマットできる。
ページ番号の自動挿入
FrameMakerの相互参照(cross-reference)機能を利用すれば、 各目次項目のページ番号を自動で挿入することが可能。
STEP8 テンプレートに適用
最後に、EDD(helltoc_edd.fm)を テンプレート(template.fm) にインポートして完成です。
処理方法は、helltoc_edd.fm と template.fm を同時に開き、 template.fm をカレントドキュメントにした状態で、【File - Import - Element Definitions...】を実行。