CNS guide 2002年度版

- 更新履歴 -

2002/03/25 作成

 
latexファイルからwebサイト構築について

概要

プログラム概要

 LaTeXファイルをwebで閲覧できるようにするためにlatex2htmlhttp://www.latex2html.org)を実行してHTMLファイルに変換する。しかしながらlatex2htmlの機能ではマクロや、デザインのサポートが十分ではないため、それらを補完するためにオリジナルのプログラムを作成し、必要な機能を提供する。

 このプログラムを使用するにはUNIXに対してのある程度の知識が必要である。

 このプログラム開発をするに当たっては、latex2htmlのドキュメントを読み、LaTeXのマクロ機能を理解し、Perlの知識(latex2htmlプログラムを触るには高いレベルの知識)必要になる。

 

プログラムの大まかな流れ

 

分割されたファイルを統合・マクロを文字列に置換

platexによりauxファイル生成

latex2html実行

1つのディレクトリに全てのファイルが置かれているので、章ごとにディレクトリに配置

デザインの適用

 

完成予定ディレクトリ

2   ファイル配置の説明

 サイトの1階層目に\partに当たるディレクトリ名。2階層目に¥sectionに当たるディレクトリ名、2階層目のディレクトリの中に\subsectionに当たるファイル名が格納される。

 1階層目の下のimgディレクトリの下にそのpartで使用する画像が格納されている。

 1階層目の下のindex.htmlは\section, ¥subsectionの目次である。

 

 

webの開発環境

webを作成するには以下の環境が必要になる

     CNS guideLaTeXファイルをコンパイルできる環境

     書き込み権限のあるlatex2htmlプログラム(プログラムを修正するため)

     webを作成するためのどこかのディレクトリ(最低45MBの空き容量)

 

準備

webで使用するための画像をlatexファイルで使用しているepsファイルとは別に用意する必要がある。(配置場所については後述)

3   web開発ディレクトリの説明

arrange – arrangelink.plをparseした後のファイル格納

bin – オリジナルプログラム格納

l2h_result – latex2htmlを実行した後のファイル格納

material – 完成版のサイトルートに取り込む素材格納(詳細後述)

textonly – CNSガイドのソースファイルをexportしたもの

tmp – 一時的なファイル保管

web – 完成版web格納

 

 

使い方

環境設定 - env_set.sh

 webの開発環境とlatex2htmlコマンドが格納されているディレクトリをシェルの環境変数として登録する。なお、このファイルはC shell用である。

4   env_set.shの中身

setenv BASE_DIR /home/t01549ym/public_html/guide/program

setenv L2H_DIR /pub/local-guide/cns/2002/html/latex2html

1行目の’BASE_DIR’にはwebの開発環境を指定し、2行目の’L2H_DIR’latex2htmlがインストールされているトップディレクトリを指定する。

 設定を反映する。

 

% source env_set.sh


 

はじめに - makeall.pl

 [プログラムの大まかな流れ]で説明されているように、複数のプログラムを実行してゆく。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実行の際に引数として実行したいステップの番号を指定しても、上記と同じ事ができる。

 

 

分割されたTeXファイルから1つのTeXファイルを作成 - integrate.pl

makeall.pl実行番号[1]

textonly/all/all.tex\inputコマンドによって指定されたファイルを統合し、1つのファイルを作成する。(tmp/all_1.tex

 

TeXファイル内で置換 - replace_src.pl

makeall.pl実行番号[2]

 環境設定 - env_set.shで作成したファイルを読み込み、正規表現によって指定した文字列を置換する。置換指定はreplace_src.pl40行目付近から始まる行。

 正規表現についてはPerlの正規表現についてを参照。

 

auxファイルを作成するためにpLaTeXをかける – platexコマンド

makeall.pl実行番号[3]

 latex2htmlでクロスリファレンスを有効にするためにはlatex2htmlをかけるtexファイルのauxファイルが必要になるため、platexによってTeXファイル内で置換 - replace_src.plで生成されたファイルをコンパイルする。

 

latex2htmlの実行 – latex2htmlコマンド

makeall.pl実行番号[4]

 texファイルをhtmlファイルへ変換する。CNSガイドのtexファイルが巨大なため、ccz00でもコンパイルには2,30分かかる。

出力されたファイルはl2h_result/に格納される。

 

規定ディレクトリに配置 – arrangelink.pl

makeall.pl実行番号[5]

 latex2htmlで出力されたHTMLファイルは1つのディレクトリに連番で保存されているため、\part, \section, \subsectionの番号とディレクトリを対応させたディレクトリに保存し、その際に変更になった<a>タグのhref属性などを変更している。

 出力するディレクトリは arrange/ 以下

 

デザインを適用 - conv2002.pl

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.        テンプレートファイルの準備

bin/mod_conv/ind.xmpbin/mod_conv/page.xmpファイルを用意する。ind.xmpファイルは\section, \subsectionの目次のページのテンプレート、page,xmp\subsectionのファイルのテンプレート。

 テンプレートファイル内に、「__%list%__」などの記述があるが、これはconv2002.plによって各ページで異なる内容を置換する内容である。詳しくは機能詳細参照。

 

 完成したサイトはweb/以下に格納される。

 

 

機能詳細

[使い方]でプログラムの流れを理解した上で読み進めてください。

env_set.sh

 各プログラムでシェルの環境変数により、プログラムpathの設定をしているので各プログラムを実行する前に、かならず以下の環境変数をセットしておく。

5   env_set.shの中身(csh用)

setenv BASE_DIR /home/t01549ym/public_html/guide/program

setenv L2H_DIR /pub/local-guide/cns/2002/html/latex2html

開発をする際は、.cshrccsh用)に「souce /some/where/env_set.sh」などとして、シェルの立ち上げ毎に環境変数をセットされるようにすると、毎回環境変数をセットする手間が省ける。

 

makeall.pl

 プログラムの大まかな流れで説明してある各ステップをまとめてあるスクリプト。各プログラムには異なった入出力、オプションがあり、毎回それらを入力する手間を省くためのもの。はじめに - makeall.plで説明してあるように、各ステップのプログラムを実行してゆく。

 

integrate.pl

1引数

textonly/が置かれているディレクトリ

2引数

統合されたファイルを出力するディレクトリ

3引数

統合されたファイル名

 第1引数で指定されたtexファイルのディレクトリのall/all.texを読み込み、\inputで指定されているファイルをその箇所に埋め込みんで1つのファイルに出力する。

 

replace_src.pl

1引数

読み込み元ファイル

2引数

出力先ファイル

1引数で指定されたtexファイルを読み込み、置換処理をし、第2引数で指定されたファイルへ書き出す。replace_src.plの約40行目〜が置換処理の正規表現指定である。このスクリプトで簡単なコマンド置換を行っている。

 

preprocess_aux.pl

1引数

読み込み元ファイル

1引数で指定されたauxファイルのフォーマットを変換する。

例えば以下のように。

 from:\newlabel{www-figure-www_info}{{1em.3.1}{247}}

   to:\newlabel{www-figure-www_info}{{3.1}{247}}

 

arrangelink.pl

1引数

latex2htmlが出力したファイルのディレクトリ

2引数

ファイル構成を出力するディレクトリ

latex2htmlが出力した、nodexx.htmlのファイルを1つずつ読み込み、<meta>の中のdescriptionのCONTENTの中身を読み込み、その中の情報を元に、[出力先] / [part] / [section] / [subsection].html のようにファイルをディレクトリに配置しながらファイル名を変更する。また、その際にhrefで指定されている内容がずれてしまうのでそれも修正している。

 

conv2002.pl

-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ではバックスラッシュが円マークと表示されるため。

 

 

リファレンス

インストール方法

·         latex2html

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

の日本語化パッチを当てた。

 

·         namazu

% ./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 をダウンロード。

以下、インストールを実行したオプション。

 

 

参考文献

·         latex2html

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作成の大まかな手順ドキュメント

 

ドキュメント作成

環境情報学部 130 ログイン名:t01549ym 松倉 友樹

2002/04/11 作成