サンプルを試す
著者:梅谷 武
作成:2014-05-23
更新:2014-05-24
更新: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が置かれていなければならないという条件があることに注意してください。サンプルはこの条件が満たされるように作られています。