CNS guide 2002年度版
-
更新履歴 - 2002/03/25 作成
latexファイルからwebサイト構築について
LaTeXファイルをwebで閲覧できるようにするためにlatex2html(http://www.latex2html.org)を実行してHTMLファイルに変換する。しかしながらlatex2htmlの機能ではマクロや、デザインのサポートが十分ではないため、それらを補完するためにオリジナルのプログラムを作成し、必要な機能を提供する。
このプログラムを使用するにはUNIXに対してのある程度の知識が必要である。
このプログラム開発をするに当たっては、latex2htmlのドキュメントを読み、LaTeXのマクロ機能を理解し、Perlの知識(latex2htmlプログラムを触るには高いレベルの知識)必要になる。
分割されたファイルを統合・マクロを文字列に置換 ↓ platexによりauxファイル生成 ↓ latex2html実行 ↓ 1つのディレクトリに全てのファイルが置かれているので、章ごとにディレクトリに配置 ↓ デザインの適用 |
2 ファイル配置の説明 |
|
webを作成するには以下の環境が必要になる
・ CNS guideのLaTeXファイルをコンパイルできる環境
・ 書き込み権限のあるlatex2htmlプログラム(プログラムを修正するため)
・ webを作成するためのどこかのディレクトリ(最低45MBの空き容量)
webで使用するための画像をlatexファイルで使用しているepsファイルとは別に用意する必要がある。(配置場所については後述)
3 web開発ディレクトリの説明 |
|
webの開発環境とlatex2htmlコマンドが格納されているディレクトリをシェルの環境変数として登録する。なお、このファイルはC shell用である。
4 env_set.shの中身 |
1行目の’BASE_DIR’にはwebの開発環境を指定し、2行目の’L2H_DIR’はlatex2htmlがインストールされているトップディレクトリを指定する。
設定を反映する。
% source env_set.sh |
[プログラムの大まかな流れ]で説明されているように、複数のプログラムを実行してゆく。makeall.plはそれらのプログラムを統括する役割を持っている。
makeall.plを引数なしで実行するとメニューが出てくるので自分が実行したいステップの番号を入力して、[Enter]を押すとプログラムが開始される。
% perl makeall.pl -- prepareing directory ------------------------------------ No error Done. ------------------------------------------------------------ [1]. make all_1.tex file. [2]. replace from all_1.tex to all_2.tex. [3]. compile all_2.tex by platex. [4]. execute latex2html. [5]. move to folders. [6]. apply design. Please input the process number you would like to. ex) 1245 : _ |
% perl makeall.pl 456 |
また、makeall.pl実行の際に引数として実行したいステップの番号を指定しても、上記と同じ事ができる。
makeall.pl実行番号[1]
textonly/all/all.texの\inputコマンドによって指定されたファイルを統合し、1つのファイルを作成する。(tmp/all_1.tex)
makeall.pl実行番号[2]
環境設定 - env_set.shで作成したファイルを読み込み、正規表現によって指定した文字列を置換する。置換指定はreplace_src.plの40行目付近から始まる行。
正規表現についてはPerlの正規表現についてを参照。
makeall.pl実行番号[3]
latex2htmlでクロスリファレンスを有効にするためにはlatex2htmlをかけるtexファイルのauxファイルが必要になるため、platexによってTeXファイル内で置換 - replace_src.plで生成されたファイルをコンパイルする。
makeall.pl実行番号[4]
texファイルをhtmlファイルへ変換する。CNSガイドのtexファイルが巨大なため、ccz00でもコンパイルには2,30分かかる。
出力されたファイルはl2h_result/に格納される。
makeall.pl実行番号[5]
latex2htmlで出力されたHTMLファイルは1つのディレクトリに連番で保存されているため、\part, \section, \subsectionの番号とディレクトリを対応させたディレクトリに保存し、その際に変更になった<a>タグのhref属性などを変更している。
出力するディレクトリは arrange/ 以下
makeall.pl実行番号[6]
オリジナルのデザインを適用し、\section, \subsectionの目次を作成する。
1.
素材の準備
material/ ディレクトリ以下にサイトで使用するファイルを格納する。
· material/index.html サイトルートのindex.htmlを用意する。サイトルートの/index.htmlにコピーされる。
· img/ 以下にサイト全体、またはトップページで使用する画像を格納しておく。サイトルートの/imgにコピーされる。
· common/ にサイトで共有される画像以外のファイル(CSSファイルなど)を格納しておく。サイトルートの/commonにコピーされる。
· png/ 以下にはpart番号のディレクトリの中にTeXファイルで使用している画像の名前+拡張子のフォーマットで画像を保存しておく。サイトルートの各part以下のimgディレクトリの下にコピーされる。
2. テンプレートファイルの準備
[使い方]でプログラムの流れを理解した上で読み進めてください。
各プログラムでシェルの環境変数により、プログラムpathの設定をしているので各プログラムを実行する前に、かならず以下の環境変数をセットしておく。
5 env_set.shの中身(csh用) |
開発をする際は、.cshrc(csh用)に「souce /some/where/env_set.sh」などとして、シェルの立ち上げ毎に環境変数をセットされるようにすると、毎回環境変数をセットする手間が省ける。
プログラムの大まかな流れで説明してある各ステップをまとめてあるスクリプト。各プログラムには異なった入出力、オプションがあり、毎回それらを入力する手間を省くためのもの。はじめに - makeall.plで説明してあるように、各ステップのプログラムを実行してゆく。
第1引数 |
textonly/が置かれているディレクトリ |
第2引数 |
統合されたファイルを出力するディレクトリ |
第3引数 |
統合されたファイル名 |
第1引数で指定されたtexファイルのディレクトリのall/all.texを読み込み、\inputで指定されているファイルをその箇所に埋め込みんで1つのファイルに出力する。
第1引数 |
読み込み元ファイル |
第2引数 |
出力先ファイル |
第1引数で指定されたtexファイルを読み込み、置換処理をし、第2引数で指定されたファイルへ書き出す。replace_src.plの約40行目〜が置換処理の正規表現指定である。このスクリプトで簡単なコマンド置換を行っている。
第1引数 |
読み込み元ファイル |
第1引数で指定されたauxファイルのフォーマットを変換する。
例えば以下のように。
from:\newlabel{www-figure-www_info}{{1em.3.1}{247}}
to:\newlabel{www-figure-www_info}{{3.1}{247}}
第1引数 |
latex2htmlが出力したファイルのディレクトリ |
第2引数 |
ファイル構成を出力するディレクトリ |
latex2htmlが出力した、nodexx.htmlのファイルを1つずつ読み込み、<meta>の中のdescriptionのCONTENTの中身を読み込み、その中の情報を元に、[出力先] / [part] / [section] / [subsection].html
のようにファイルをディレクトリに配置しながらファイル名を変更する。また、その際にhrefで指定されている内容がずれてしまうのでそれも修正している。
-i |
arrangelink.plを通した後のサイトがあるディレクトリ |
-o |
完成したサイトの書き出し先ディレクトリ |
latex2htmlの書き出したHTMLページにデザインを適用するスクリプト。
このスクリプトはモジュールを呼び出す形で、複数のモジュールと設定ファイルを読み込みながらデザインを適用してゆく。
モジュール群
·
bin/mod_conv/add_abbr.pl
bin/mod_conv/abbr.txtでカンマで区切られた設定ファイルによって、定義された語句がHTMLファイル上で出現したら、その語をabbrタグで囲み、詳細をTITLE属性で指定する。
·
bin/mod_conv/add_link.pl
http://somewhere.com/path/ などのURLを含む語が出現したら<a>のHREF属性でリンクを張るという処理をするようだが、機能してないようだ。
·
bin/mod_conv/change_img.pl
<img>内でsrcのパスの書き換え。
·
bin/mod_conv/delete_big.pl
<BIG>を削除する。
·
bin/mod_conv/replace_pageref.pl
<a>のHREF属性に「1EM」という文字列が入り込んだ場合の例外処理のようだ。
設定ファイル群
·
bin/mod_conv/ind.xmp
[part] / index.html の雛形。__%%something%%__ はconv2002.pl内で、適宜置換される。
·
bin/mod_conv/page.xmp
[part] / [section] / [subsection].html の雛形。__%%something%%__ はconv2002.pl内で、適宜置換される。
·
bin/mod_conv/conv.config
xmpファイルなどの場所の設定。
·
bin/mod_conv/abbr.txt
語句が、1行にカンマ区切りになって、左に略語、右にそれの正式名称を記述する。これは、<abbr>のtitle属性で表される。(add_abbr.pl参照)
ファイル名 |
説明 |
l2h.tar.gz |
今回使用した、改造版latex2html |
latextest.tar.gz |
latex2htmlを改造するために出力したテストファイル |
program3024.tar.gz |
3月24日時点の開発ディレクトリ。例として保存してある |
program.tgz |
開発ディレクトリのテンプレート。これから作る |
latex2html内で、独自の環境(\jikkouなど)がほとんどうまく処理できなく、手作業で修正する必要があった。
また、途中までうまく画像が自動で出力されていたのだが、締め切り間近になった時に急に出力されなくなった。(latex2html内のimgタグ内のALTアトリビュートに画像パスを埋め込んでいたが、それが埋め込まれなくなった)
バックスラッシュと円マークをどう表現するかが問題であった。日本語に対応しているOSではバックスラッシュが円マークと表示されるため。
http://takeno.iee.niit.ac.jp/~shige/TeX/latex2html/ltx2html.html
を参考に
http://takeno.iee.niit.ac.jp/~shige/TeX/latex2html/data/162/latex2html-2K.1beta.tar.gz
からlatex2htmlの最新版をダウンロードし、
http://takeno.iee.niit.ac.jp/~shige/TeX/latex2html/data/l2h-2K1b+jp1.4.patch.gz
の日本語化パッチを当てた。
% ./configure --prefix=/pub/sfc/mchtml/cns-guide/2002/namazu \ --with-pmdir=/pub/sfc/mchtml/cns-guide/2002/namazu/lib \ --with-included-gettext \ --with-pmdir=/pub/sfc/mchtml/cns-guide/2002/namazu/pm % cd File-MMagic % perl Makefile.PL LIB=/pub/sfc/mchtml/cns-guide/2002/namazu/pm →INSTALLMAN3DIR=/pub/sfc/mchtml/cns-guide/2002/namazu/man % make % make install |
http://www.namazu.org/ より最新版のhttp://www.namazu.org/stable/namazu-2.0.10.tar.gz
をダウンロード。
以下、インストールを実行したオプション。
■http://takeno.iee.niit.ac.jp/~shige/TeX/latex2html/ltx2html.html
日本語化パッチ。現在のlatex2htmlの日本語化パッチアップデートの最新がある
■http://hashi4.civil.tohoku.ac.jp/soft/node12.html
latex2htmlの基本オプションとdot.latex2htmlとの対応の解説(日本語)
■http://www.damp.tottori-u.ac.jp/~ooshida/unix/latex2html/init.html
dot.latex2htmlの改造例
■http://www.sfc.keio.ac.jp/~s99893tm/info/index.html
2001年度版のweb作成の大まかな手順ドキュメント
環境情報学部 1年30組 ログイン名:t01549ym 松倉 友樹
2002/04/11 作成