サンプルを試す
著者:梅谷 武
作成:2014-05-23
更新:2014-05-24
 サンプルディレクトリは次のような構造になっています。
ftex_sample ─┬─ dic/		ラテン語辞書
             │
             ├─ styles/	スタイルファイル
             │
             ├─ 1_1.ftx	1章(ftx形式)
             │
             ├─ 1_1.html	1章(html形式)
             │
             ├─ 1_2.ftx	2章(ftx形式)
             │
             ├─ 1_2.html	2章(html形式)
             │
             ├─ filelist.txt	目次生成用リスト
             │
             ├─ index.html	目次(html形式)
             │
             ├─ makefile	メイクファイル
             │
             └─ menu.js	メニュー(javascript形式)
 まず最初にこのディレクトリを作業用ディレクトリへコピーします。例えばC:\workというディレクトリ下にコピーすることにしましょう。
 コマンドプロンプトを起動し、C:\work\ftex_sampleに入ります。
C:¥work¥ftex_sample>dir
 ドライブ C のボリューム ラベルは ?? です
 ボリューム シリアル番号は ????-???? です
 
 C:\work\ftex_sample のディレクトリ
 
2014/05/22  16:33    <DIR>          .
2014/05/22  16:33    <DIR>          ..
2014/05/22  16:09               865 1_1.ftx
2014/05/22  16:09             2,653 1_1.html
2014/05/22  16:32             1,070 1_2.ftx
2014/05/22  16:32             4,260 1_2.html
2014/03/19  16:17    <DIR>          dic
2014/05/22  16:02                18 filelist.txt
2014/05/22  16:13             1,987 index.html
2014/05/22  16:02               178 makefile
2014/05/22  16:13               806 menu.js
2014/05/22  15:45    <DIR>          styles
               8 個のファイル              11,837 バイト
               4 個のディレクトリ  ???,???,???,??? バイトの空き領域
 
C:¥work¥ftex_sample>
ここでmakeしてみましょう。
C:¥work¥ftex_sample>nmake
 
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.
 
 
C:¥work¥ftex_sample>
すでにmakeされているので、何も起こりません。
 そこで1_1.htmlを消して再度makeしてみます。
C:¥work¥ftex_sample>del 1_1.html
 
C:¥work¥ftex_sample>nmake
 
Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.
 
        ftex 1_1.ftx 1_1.html
Reading Dictionary : [ .\dic\Latin\adverb.csv ]
  words: 436 ([2]436, [3]0, [4]0, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\preposition.csv ]
  words: 44 ([2]44, [3]0, [4]0, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\conjunction.csv ]
  words: 43 ([2]43, [3]0, [4]0, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\pronoun1.csv ]
  words: 185 ([2]185, [3]0, [4]0, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\pronoun2.csv ]
  words: 30 ([2]30, [3]0, [4]0, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\noun1.csv ]
  words: 193 ([2]23, [3]0, [4]0, [5]167, [6]3)
Reading Dictionary : [ .\dic\Latin\noun2.csv ]
  words: 216 ([2]14, [3]0, [4]0, [5]202, [6]0)
Reading Dictionary : [ .\dic\Latin\noun3.csv ]
  words: 393 ([2]16, [3]0, [4]0, [5]3, [6]374)
Reading Dictionary : [ .\dic\Latin\proper_noun1.csv ]
  words: 67 ([2]12, [3]0, [4]0, [5]54, [6]1)
Reading Dictionary : [ .\dic\Latin\proper_noun2.csv ]
  words: 151 ([2]6, [3]0, [4]0, [5]97, [6]48)
Reading Dictionary : [ .\dic\Latin\proper_adj.csv ]
  words: 30 ([2]0, [3]25, [4]5, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\adjective1.csv ]
  words: 536 ([2]6, [3]425, [4]105, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\adjective2.csv ]
  words: 88 ([2]74, [3]12, [4]2, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\numeral.csv ]
  words: 140 ([2]64, [3]67, [4]7, [5]1, [6]1)
Reading Dictionary : [ .\dic\Latin\verb_gerd1.csv ]
  words: 3 ([2]3, [3]0, [4]0, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\verb_part1.csv ]
  words: 62 ([2]0, [3]39, [4]23, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\verb_indc1.csv ]
  words: 1726 ([2]1726, [3]0, [4]0, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\verb_infv1.csv ]
  words: 93 ([2]93, [3]0, [4]0, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\verb_impr1.csv ]
  words: 173 ([2]173, [3]0, [4]0, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\verb_subj1.csv ]
  words: 1105 ([2]1105, [3]0, [4]0, [5]0, [6]0)
Reading Dictionary : [ .\dic\Latin\verb.csv ]
  words: 463
Reading Dictionary : [ .\dic\Latin\verb_d.csv ]
  words: 60
Reading Dictionary : [ .\dic\Latin\verb_sd.csv ]
  words: 4
Reading Dictionary : [ .\dic\Latin\verb2.csv ]
  words: 23
Latin dictionaries are created.
ftex Ver.2.7.0 2014-05-17
preamble analysis
structure analysis
add identifier
making metadata
making contents
making body
making remarks
making terms
 
C:¥work¥ftex_sample>
 これにより1_1.htmlが作成されました。
 makefileは次のようなテキストファイルになっています。
TARGETS = 1_1.html 1_2.html
 
ALL : $(TARGETS)
 
contents:
	ftex -c filelist.txt index_update.html
 
clean:
	del 1_*.html
 
.SUFFIXES:	.ftx .html
.ftx.html:
	ftex $< $@
 これは、成果物が1_1.htmlと1_2.htmlであり、これらを
	ftex 1_?.ftx 1_?.html
というコマンドで作成することを意味しています。
 nmakeを実行すると、1_?.htmlが存在するかどうか、存在する場合はそのタイムスタンプを依存する1_?.ftxのタイムスタンプと比べます。その結果、存在しないか、タイプスタンプが依存ファイルより古い場合に作成コマンドを実行します。
 nmake contentsは、filelist.txtに登録されているftx形式ファイルを走査して、目次を生成します。一般に目次はユーザーがデザインするhtml形式ファイルなので、目次自動生成機能は目次項目タグのみを生成し、それをユーザーが編集して目次:index.htmlを作成するようになっています。
 nmake cleanは成果物を消去します。
 ftexが生成するhtml形式ファイルには、javascriptによりメニューが付けられます。この際、ページ内メニューは自動生成されますが、全体構造を示すメニューはmenu.jsをユーザーが直接編集して作成するようになっています。
 サンプルのmenu.jsは次のようになっています。
function disp1() {
  if ( document.getElementById("menu1").style.display=='none' ) {
    document.getElementById("menu1").style.display = '';
  } else {
    document.getElementById("menu1").style.display = 'none';
  }
}
function disp2() {
  if ( document.getElementById("menu2").style.display=='none' ) {
    document.getElementById("menu2").style.display = '';
  } else {
    document.getElementById("menu2").style.display = 'none';
  }
}
function menu() {
  document.getElementById("menu1").style.display = 'none';
  document.getElementById("menu2").style.display = '';
  s = new dTree('s');
  s.add(0,-1,'');
  s.add(1,0,'ftexサンプル');
  s.add(2,1,'目次','index.html');
  s.add(3,1,'日本語','1_1.html');
  s.add(4,1,'ラテン語','1_2.html');
  document.write(s);
}
 メニューを編集するにはmenu関数内の木オブジェクトsに対して、次の関数によりノードを追加していきます。
  s.add(<自ノード番号>,<親ノード番号>,'題名'[,'URL']);
ここでノード番号の重複は許されません。
 上のメニューに新しいノードと新しいページを追加するにはmenu関数に次のように行を追加します。
function menu() {
  document.getElementById("menu1").style.display = 'none';
  document.getElementById("menu2").style.display = '';
  s = new dTree('s');
  s.add(0,-1,'');
  s.add(1,0,'ftexサンプル');
  s.add(2,1,'目次','index.html');
  s.add(3,1,'日本語','1_1.html');
  s.add(4,1,'ラテン語','1_2.html');
  s.add(10, 0,'ノード2');
  s.add(11,10,'ページ2_1','2_1.html');
  s.add(12,10,'ページ2_2','2_2.html');
  document.write(s);
}
 目次を上のレベルに上げて、ノード2の下に新しいノードを作ってみます。
function menu() {
  document.getElementById("menu1").style.display = 'none';
  document.getElementById("menu2").style.display = '';
  s = new dTree('s');
  s.add(0,-1,'');
  s.add(1,0,'目次','index.html');
  s.add(10, 0,'ftexサンプル');
  s.add(11,10,'日本語','1_1.html');
  s.add(12,10,'ラテン語','1_2.html');
  s.add(20, 0,'ノード2');
  s.add(21,20,'ページ2_1','2_1.html');
  s.add(22,20,'ページ2_2','2_2.html');
  s.add(30,20,'ノード3');
  s.add(31,30,'ページ3_1','3_1.html');
  s.add(32,30,'ページ3_2','3_2.html');
  document.write(s);
}
 このようにして任意の階層構造を作ることができます。
 1_2.ftxはラテン語翻訳支援機能の使用例です。
 ラテン語翻訳支援機能は本文の\Latinタグ内に埋め込まれたラテン語の文章を文構造が視覚的に把握できるよう品詞別に色分け、字体変換すると同時に、各単語にマウスを乗せると吹き出しに意味が表示されるようにするものです。
 \Latinタグを有効にするには、ftexを実行するカレントディレクトリ(今の場合はC:\work\ftex_sample)下にラテン語辞書dicが置かれていなければならないという条件があることに注意してください。サンプルはこの条件が満たされるように作られています。
クリエイティブ・コモンズ・ライセンス