
README.tech.jp: 技術情報
Shigeharu TAKENO <shige@iee.niit.ac.jp>


■日本語化パッチに関する技術情報

以下に、特にこの日本語化パッチに関する少し細かい (詳しい) 話を書
きます。


1. 日本語化パッチが行なうこと
-----------------------------
1.1. 日本語化パッチの機能
-------------------------

この日本語化パッチは、オリジナルの latex2html に対して、以下のこ
とを行ないます (各項目末のかっこ内は対応するファイル名)。

1) 日付 (各 HTML の一番下に現れるもの、最終ページに変換日として記
 述されるもの、及び \today コマンドの日付) や「図」「表」などの日
 本語化
 (styles/japanese.perl)
2) latex --> platex 等、内部で使用するコマンド名の変更
 (prefs.pm, config/config.pl)
3) 最終ページ「この文書について」の日本語化
 (styles/japanese.perl)
4) 生成される HTML ページ、および中間 LaTeX ファイルの nkf による
 漢字コード変換 (jp1.X のみ)
 (latex2html.pin, texexpand.pin)
5) 生成する HTML ページの META タグに日本語の charset を埋め込み
 (latex2html.pin, styles/japanese.perl)
6) 生成する HTML ページのヘッダのコメント部分に日本語化パッチバー
 ジョン等を埋め込み
 (latex2html.pin)
7) 各種日本語スタイルファイル用の perl スクリプトの追加
 (styles/ascmac.perl, styles/j-*.perl, styles/j*.perl, 
 styles/js*.perl (* = article,report,book), styles/jslides.perl)
8) Netpbm-10.2X, 10.XX.YY への対処
 (config/config.pl, pstoimg.pin)
9) 以下の各種問題、バグ等への対処
9-1) \i,\j へのアクセント画像が i,j へのアクセント画像と同一視さ
 れる問題の対処
 (latex2html.pin)
9-2) スタイルファイル名に '-' が含まれている場合 (j-article.sty 
 など) の対処
 (latex2html.pin)
9-3) \t{oo} が正しく画像化されない問題への対処
 (latex2html.pin)
9-4) \accent23 等に対する処理の問題への対処
 (latex2html.pin)
9-5) amsmath 上の equation 環境に % を書いた場合の問題への対処
 (styles/more_amsmath.perl)
9-6) psfrag のオプション引数を使用した場合の問題への対処
 (styles/psfrag.perl)
9-7) perl の undefined 命令への対処
 (versions/html2_2.pl, versions/table.pl)
9-8) fleqn 使用時に数式の左寄せ/センタリングが不統一になる問題へ
  の対処
 (versions/html*.pl (* = 3_2,4_0,4_01,4_1), versions/math.pl, 
 latex2html.pin, styles/more_amsmath.perl)
9-9) \prefacename の対応が中途半端になっている問題への対処
 (latex2html.pin)
9-10) ディスプレイ数式環境内の \label だけの行への対応
 (latex2html.pin)
9-11) math.pl 使用時に "mathend000#" が残る問題への対処 
  (latex2html.pin)
9-12) stylesheet に出されるロゴの問題の修正 (latex2html.pin)
9-13) TITLE に日本語が含まれる場合 META タグの charset 指定の方が
  先にないと真っ白なページが表示されることがある問題の対処 
  (latex2html.pin)

なお、9-1), 9-3) はこれで完全に解決しているわけではなく、まだ問題
が残っています。これらについては、README.notice.jp の [39] を参照
して下さい。


1.2. 追加された変数やオプション
-------------------------------

以下に、オリジナルの latex2html にはない変数やオプションの説明を
します。


・$JAPANESESETMONTHNAME (styles/japanese.perl)

これは、japanese.perl に元々含まれていて (by 武藤さん) コメントア
ウトされていた日本の月名を、有効にしてそれらを切りかえて使用する
ための変数です。変数の値は 1,2,3 のいずれかで、それぞれの設定によ
って日本語の日付 (の japanese_today() による部分) の月名が

 1 ==> 1月、2月、3月、4月、...
 2 ==> 睦月、如月、弥生、卯月、皐月、水無月、文月、葉月、長月、
       神無月、霜月、師走
 3 ==> 孟春、仲春、季春、孟夏、仲夏、季夏、孟秋、仲秋、季秋、
       孟冬、仲冬、季冬

となります。デフォルトの値は 1 です。

この変数は japanese.perl の前に設定する必要がありますので、初期化
ファイル中で &do_require_package("japanese"); で japanese.perl を
読み込むときはその前に記述する必要があります。詳しくは「4. 日付と
変換者について」を参照してください。


・$USEJAPANESESEIREKI (styles/japanese.perl)

年号は、ASCII pTeX で定義されているマクロ \西暦 を用いても残念な
がら西暦にはならず、そのための変数です。この変数を明示的に 1 に設
定すれば、日本の日付表示 (の japanese_today() による部分) が西暦
つまり、「2005年8月14日」のような表記になります。デフォルトの値は 
0 でこれは元号表記 (「平成17年8月14日」等) を意味します。詳しくは
「4. 日付と変換者について」を参照してください。


・$USEBOTTOMLOCALEDATE (styles/japanese.perl)

各ページの下につく日付を日本の日付にするための変数です。これを 1
にすると

 Shigeharu TAKENO 平成17年8月14日

のように、0 とすると (デフォルト)

 Shigeharu TAKENO 2005-08-14

のようになります。

ページ下の日付等は初期化ファイルでより細かくカスタマイズすること
も可能です。また、この変数は japanese.perl の前に設定する必要があ
りますので、初期化ファイル中で &do_require_package("japanese");
で japanese.perl を読み込むときはその前に記述する必要があります。
詳しくは「4. 日付と変換者について」を参照してください。


・$TONATIVE (l2hconf.pm; jp1.10beta のみ)

数式等を LaTeX コマンドにかけて画像化する際に、生成される LaTeX 
ファイルの出力時の漢字コード変換のプログラムを設定します。デフォ
ルトでは 

 $TONATIVE = "|nkf -e";

のようになっています。Shift_JIS 環境の場合は

 $TONATIVE = "|nkf -s";

のように設定します。これを自分の LaTeX 環境に合わせて設定すること
で、元となる LaTeX ファイルの漢字コードが何であっても正しく処理で
きるようになります。なお、jp2.1beta は漢字コード変換を行いません
のでこの変数はありません。


・$TOHTML (l2hconf.pm, styles/japanese.perl; jp1.10beta のみ)

生成される HTML ファイルの出力時の漢字コード変換のプログラムを設
定します。デフォルト (l2hconf.pm) では

 $TOHTML = "| cat";

となっていて、すなわち漢字コード変換をしない設定になっています。
実際の漢字コード変換の設定は、styles/japanese.perl の方に設定さ
れていて、jp1.10beta ではデフォルトでは

 $TOHTML = "| nkf -j";

と設定されていてますが、これはコマンドラインオプション -lang (下
の -lang の項参照) で切りかえることができます。

なお、漢字コード変換ソフトとして nkf 以外のものを使用する場合は、
直接 styles/japanese.perl を修正してください。

jp2.1beta は漢字コード変換を行いませんのでこの変数はありません。


・-lang=(jis|euc|sjis|jutf|en|no), $REQUIRE_LANGUAGE (latex2html;
  jp1.10beta のみ)

日本語化パッチ jp1.10beta では、このオプション -lang=* で、生成す
る charset を変更できます。それぞれ、

 jis  => ISO-2022-JP (7bit JIS)
 euc  => EUC-JP
 sjis => Shift_JIS
 jutf => UTF-8

を意味し、また en は English (日本語なし) を、no は指定なし (初期
化ファイルでの設定を無視させるためのもの) を意味します。

$REQUIRE_LANGUAGE はその指定する値 ("jis" 等) を保存する変数で、
~/.latex2html-init (~ は $HOME を意味します) でこの値を設定してお
けば、-lang を指定しなくてもデフォルトでそれを指定したことと同じ
になります。もちろんコマンドラインオプションで指定したものの方が
優先されます。

なお、これを指定すると、styles/japanese.perl が読み込まれ、en の
場合は styles/english.perl, no の場合は読み込みは行われませんが、
en や no の場合でも jarticle 等のクラスファイルを指定すると 
styles/japanese.perl が自動的に読み込まれますので、日本語化が行わ
れてしまいます。

デフォルトではこれらは何も設定されていません。


・$USEFLEQNINDENT (定義しているファイルはなし)

これは documentclass の fleqn オプションを使用しているときに、数
式をインデントつきの左寄せにして表示するための変数です。1 にする
とその機能が有効になり、0 (または未定義) ではオリジナルの挙動にな
ります。

標準的な数式環境である displaymath 環境 (\[\])、equation 環境、
eqnarray* 環境、eqnarray 環境は、デフォルトでは (HTML 3.2) fleqn 
のときは、

 displaymath => センタリング
 equation    => インデントなしで左寄せ
 eqnarray*   => センタリング
 eqnarray    => インデントつきの左寄せ

と、まるで不統一で、これらが混在するとかなり見にくいものとなって
いました (HTML 4.0 や math.pl を使うとまた変わります)。この変数を
1 にすると、fleqn の場合はこれらをそれなりに統一された、インデン
トつきの左寄せの出力にします。

ただし、以下のような問題もあります。

 □ eqnarray 以外の多くは <blockquote> で実現するので、その上下に
   ややマージンが空く
 □ amsmath 時の対応はまだ完全ではない
 □オリジナルの挙動とは大幅に異なるし、<div> を <blockquote> に置
   きかえるので、css を使っての調整にも支障がでる
 □ eqnarray の場合は、空要素や width="0" などを使用するあまり行儀
  のよくないコードになる

なお、fleqn を使用しない場合は、この変数の値によらずにオリジナル
の挙動と同じものになるのですが、HTML 3.2 では eqnarray 環境の数式
がセンタリングされませんので、できればコマンドラインオプションで
"-html_version 4.0" とするか初期化ファイル ~/.latex2html-init で
"$HTML_VERSON = '4.0';" 等として html4_0.pl, html4_1.pl などを利
用するといいでしょう。


・&infopagehook

これは、japanese.perl に追加されたもので、最後の「この文書につい
て」のページを作成する japanese.perl の &japanese_infopage() 内で

  &infopagehook if defined &infopagehook;

とだけ定義されています。よって、.latex2html-init でこのサブルーチ
ンを定義することでこの最後のページを多少制御できます。例えば、セ
クション毎に背景色を変えたい場合、普通のページならば \section の
後ろに

  \bodytext{bgcolor="#ffffaa"}

のようなものを書けば済むのですが、最後のページの色だけは通常は制
御できず、最後のセクションの色が引き継がれてしまいます。この場合
に、.latex2html-init 内に

 sub infopagehook {
    $BODYTEXT = 'bgcolor="#ffffff"';
 }

のようなものを入れておけばいいわけです。このように、最終ページの
カスタマイズを行う場合に多少この仕組みが利用できるのではないかと
思います。


2. オプション、初期化ファイル等の設定の優先順位
-----------------------------------------------

latex2html の挙動を変更/制御する場合、オプションや初期化ファイル
等によって設定ができますが、latex2html ではその設定がうまく効かな
い場合があります。これは、それらの設定が latex2html 内部でどのよ
うな順位で行なわれているかを把握することで、その理由を見つけ、対
処することができるかもしれませんので、ここにまとめておきます。

なお、日本語用の style/japanese.perl ファイルの読み込まれ方は、
jp1.10beta, jp2.1beta からかなり変更をしましたので、それもここで
説明しておきます。なお、以下の説明では、インストール先のディレク
トリを

 $bin = [prefix]/bin
 $lib = [prefix]/lib/latex2html
 $share = [prefix]/share/lib/latex2html

とします (cf. 「2.4. make」)。

latex2html での設定、挙動の変更は以下で行なわれます。

[a] $lib/l2hconf.pm の設定 
[b] $bin/latex2html に書かれたデフォルトの設定
[c] ~/.latex2html-init の設定 (あれば) (注: ~ = $HOME)
[d] 現在のディレクトリにある .latex2html-init の設定 (あれば)
[e] latex2html のコマンドラインオプションによる設定
[f] latex2html のコマンドラインオプション -init_file で指定した初
  期化ファイルによる設定
[g] 使用したスタイルファイルに対応した perl ファイル 
 ($share/styles/*.perl, $hsare/versions/*.perl) による設定

全てのオプションの挙動がそうだとは限りませんが、通常は上の順番で
読み込まれ、後で読み込まれたものが、先に読み込まれた設定を上書き
します。

なお、[c],[d],[f] は Perl の require 命令を使用しているので同じフ
ァイルが 2 度読み込まれることはありません。[d] は [c] が読み込ま
れた場合でも、現在のディレクトリがホームディレクトリ (~) でなけれ
ば、それがあれば読み込まれます。


「1. 日本語化パッチが行なうこと」で紹介した日付等の設定を行なう日
本語の設定ファイル japanese.perl ($share/styles/japanese.perl) は、
標準では

・jp2.1beta の場合: 
 ドキュメントクラスで jarticle 等の日本語用クラスファイルが指定さ
 れている場合、[g] によって $share/styles/jarticle.perl が読み込
 まれ、その内部で japanese.perl が読み込まれる

・jp1.10beta の場合: 
  コマンドラインオプション -lang jis 等によって直接 japanese.perl
  が読み込まれる (タイミングは [f] と [g] の間) か、そうでない場
  合にドキュメントクラスで jarticle 等の日本語用クラスファイルが
  指定されている場合、[g] によって $share/styles/jarticle.perl が
  読み込まれ、その内部で japanese.perl が読み込まれる

となっています。つまり、いずれの場合も japanese.perl の順番はかな
り後ろの方で、優先順位が高い状態になっています (前の設定を後に読
み込まれたものが上書きするので後の方が優先順位が高い) ので、例え
ばデフォルトの japanese.perl に書かれている挙動を、オプションや初
期化ファイルで変更できない、ということになってしまいます。


今までの jp1.9, jp2.0 以前の日本語化パッチでは、japanese.perl フ
ァイルは、実は [a] の中 (の最後の方) で読み込まれる形になっていて
優先順位が低い状態になっていましたが、これは元々の latex2html の
オリジナルの仕様 (「LaTeX Web コンパニオン」でも説明されている形
式) とは少し違っていますので、現在の jp1.10beta, jp2.1beta からは
上のようにしてあります。

現在の日本語化パッチの元で japanese.perl に書かれている挙動を変更
するには、以下のような複数の方法があります。これは、「LaTeX Web 
コンパニオン」にも書かれている標準的な (多分正当な) 方法です。

・初期化ファイル ([c] か [d] か [f]) に、

   &do_require_package("japanese");

 と書いて、それを読み込んでおいてその後に変更したい変数を再定義す
 る (japanese.perl を一度読み込むと [f],[g] では 2 度読みはされず
 これで japanese.perl の設定が書き換えられる)。

・デフォルトの l2hconf.pm ファイル ([a]) を自分用にコピーし、その
 中に 

   &do_require_package("japanese");

 と書き、その自分用のファイルのフルパス名を環境変数 L2HCONFIG に
 設定し、変更したい変数等はこのファイルの中、あるいは初期化ファイ
 ルに記述する。

なお、「LaTeX Web コンパニオン」には、

  &do_require_package("$LATEX2HTMLSTYLES/japanese.perl");

のように書かれていますが、これは間違いで、最後に .perl をつけると
読み込んでくれませんし、$LATEX2HTMLSTYLES/ も必要ありません (逆に
$LATEX2HTMLSTYLES/ をつけると、本来の機能に反して 2 度読みされて
しまう可能性がありますので、つけてはいけません)。


ただし、これらの方法にも問題があり、[c],[d],[f] を切り替えて使っ
ている場合、

・[f] を指定しても、[c],[d] は、それが存在する場合はそれは上の順
 番で必ず一度読み込まれる
・[d] と [f] の間に展開されてしまう変数もある (うまく [f] で再定
 義が効かないものがある)

などに注意が必要です。特に問題なのが、英語の LaTeX との共存をする
場合と日付の日本語化の問題です。これらに関しては、「3. 英語版との
共存について」「4. 日付と変換者について」を参照して下さい。

なお、[c] の初期化ファイルのファイル名 (パス名を含まないファイル
名部分のみ) は環境変数 L2HINIT_NAME で変更可能なので、[c],[d] を
無効化する場合、L2HINIT_NAME を適当に設定してデフォルトの定義ファ
イルを読み込ませないようにする、という回避策はあります。


3. 英語版との共存について
-------------------------

日本語でない LaTeX ファイルや英語版の latex2html で公開したい場合
などのためにオリジナルの挙動の latex2html と共存させるには、今ま
での jp1.9,jp2.0 以前の日本語化パッチでは、wrapper スクリプトの 
l2h を使って

% l2h -en [LaTeX file]

とすることで英語化は可能でしたが、これは「2. オプション、初期化フ
ァイル等の設定の優先順位」の [a] の中で強制的に english.perl を読
みこむようにしているので、厳密にはオリジナルの挙動とは違っていま
した。jp1.10beta, jp2.1beta では、それを以下のようにしています。

・jp2.1beta の場合:
  ドキュメントクラスで jarticle 等の日本語用クラスファイルが指定さ
  れていなければ japanese.perl は読みこまれず、オリジナルの 
  latex2html の挙動と同じになる
  
・jp1.10beta の場合:
  -lang オプションがない、あるいは -lang=no の場合で、かつドキュ
  メントクラスで jarticle 等の日本語用クラスファイルが指定されて
  いない場合は japanese.perl は読みこまれず、オリジナルの 
  latex2html の挙動と同じになる (なお、-lang=en の場合は強制的に
  sytles/english.perl を読みこむ)


ただし、いくつか問題があります。


[a] 初期化ファイルで日本語の設定が行われている場合

これは例えば jp1.10beta の初期化ファイル (~/.latex2html-init) で

 $REQUIRE_LANGUAGE = "jis";

などと設定していたり、または強制的に japanese.perl を

 &do_require_package("japanese");

によって読み込ませている場合が相当します。前者の場合は

・コマンドラインオプションで -lang=no とする
・カレントディレクトリに .latex2html-init というファイルを作って
  その中で

    $REQUIRE_LANGUAGE = "no";

  とする (~/.latex2html-init を ./.latex2html-init で打ち消す)l
・コマンドラインオプションの -init_file で別な初期化ファイルを指
  定して上と同様にする

などの方法があります。しかし、-init_file で初期化ファイルを指定し
ても、「2. オプション、初期化ファイル等の設定の優先順位」で説明し
たデフォルトの初期化ファイル [c],[d] はそれらがあれば先にそれらが
読まれることに注意してください。


後者の japanese.perl を強制的に読み込ませている場合はかなりやっか
いです。japanese.perl を読んだことを打ち消すのは大変なので、その
初期化ファイル自体を打ち消すのが楽だと思います。一旦初期化ファイ
ル名を書き変える、という手もありますが、環境変数を利用する手もあ
ります。

例えば ~/.latex2html-init で japanese.perl を読み込んでいて、それ
を読み込ませないようにして、それに代わる初期化ファイル 
./l2h-en-init を読ませたい場合、環境変数 L2HINIT_NAME を使って

% setenv L2HINIT_NAME l2h-en-init (csh 系の場合)
% latex2html file.tex

とすると ~/.latex2html-init は読まれずに ./l2h-en-init が読まれま
す (ただし ~/l2h-en-init があればそちらが先に読まれます)。

L2HINIT_NAME は初期化ファイル名を設定する変数です (デフォルトでは
.latex2html-init)。


[b] documentclass のオプションで jarticle 等を使っている場合

jp1.10beta で -lang=(en|no) としても、documentclass のオプション
で日本語用の jarticle 等を使用している場合は、それにより 
japanese.perl が読みこまれてしまいます。よって、japanese.perl を
読みこませたくない場合は、jarticle などの日本語用クラスファイルを
使用しないでください。

また、japanese.perl を読みこむと、それにより $REQUIRE_LANGUAGE の
値により texexpand 内でも漢字コード変換が行われてしまいますので、
8bit コードを含む非日本語の LaTeX ファイルでは問題が起こる可能性
があります。


4. 日付と変換者について
-----------------------
4.1. デフォルトの値
-------------------

latex2html では、自動計算される日付は、

[d1] LaTeX の \today コマンドの展開結果
[d2] 各ページの一番下に書かれる日付
[d3] 最終ページに書かれる変換日

で使用され、変換者名 (latex2html の実行者名) も

[a1] 各ページの一番下に書かれる署名
[a2] 最終ページに書かれる変換者名

に自動的につきますが、これらは統一することもできますし、バラバラ
に設定することもできます。「1. 日本語化パッチが行なうこと」で紹介
した変数とともに、その仕組みなどについて説明します。

まず、デフォルトの値は以下のようになっています。

    | オリジナル *1)   | 以前の日本語化 *2)| 現在の日本語化 *3)
----+------------------+-------------------+-------------------
[d1]| August 14, 2005  | 平成17年8月14日   | 平成17年8月14日
[d2]| 2005-08-14       | 平成17年8月14日   | 2005-08-14
[d3]| 2005-08-14       | 平成17年8月14日   | 2005-08-14
[a1]| Shigeharu TAKENO | Shigeharu TAKENO  | Shigeharu TAKENO
[a2]| Shigeharu TAKENO | Shigeharu TAKENO  | Shigeharu TAKENO
----+------------------+-------------------+-------------------
 *1) オリジナルの (英語版の) latex2html-2002-2-1
 *2) jp1.9, jp2.0 以前の日本語化パッチを当てたもの
 *3) jp1.10b, jp2.1b 以降の日本語化パッチを当てたもの
 ただし、いずれも初期化ファイルの設定はなしで、*2),*3) は日本語化
 が行われる (japanese.perl が読み込まれる) ようにした状態。


4.2. それぞれが設定される仕組み
-------------------------------

[d1],[d2],[d3],[a1],[a2] は、latex2html 内部では次のように設定さ
れます。

[d1] \today コマンドは do_cmd_today() 関数で展開されるが、これは
  japanese_today() (正確には "$default_language"_today() 等) が定
  義されていればそれを使用し、そうでなければ default_today() 
  (= August 14, 2005 のような "[月名] [日], [西暦]" 形式) を使用
  する。
[d2] 関数 address_data('ISO') の返り値として渡される配列 
  @address_data の 2 番目の要素 $address_data[1]。address_data() 
  内部では、その引数をそのまま get_date() に渡して日付を取得して
  いる。
[d3] 関数 japanese_infopage() が実行される時点での配列値
  $address_data[1] がそのまま使用される。これはかなり後の方で実行
  される。
[a1] 関数 address_data('ISO') の返り値として渡される配列 
  @address_data の 1 番目の要素 $address_data[0]。
[a2] 関数 japanese_infopage() が実行される時点での配列値
  $address_data[0] がそのまま使用される。これはかなり後の方で実行
  される。

つまり [d1] は (do_cmd_today() の下請けの) japanese_today() によ
って、[d2],[d3] は get_date('ISO') によって日付が設定されているこ
とになります。実際には japanese_today() も内部で get_date() を呼
び出しています。

また、[d2],[a1] は、@address_data が取得された後でそれを

  $ADDRESS = "$address_data[0]\n$address_data[1]";

のようにしていて、実際にはこの $ADDRESS がページ下の出力として使
われています。


4.3. get_date()
---------------

日付を自動計算する関数は、プリミティブな関数である get_date() を
呼び出していますが、実はこれは色々な出力が可能な関数になっていて
これを使って日付をカスタマイズすることもできます。

get_date() には以下のような 4 種類の使用方法があります:

[g1] &get_date()
[g2] &get_date('ISO')
[g3] &get_date($format) (例えば &get_date("%d日%d月%d年"))
[g4] &get_date('$format',$order) 
  (例えば &get_date('"%d年%02d月%02d日"','1900+$y,$Month[$m],$d'))

これらはそれぞれ以下のようになります ([g3],[g4] は例の場合):

[g1] 8/14/2005
[g2] 2005-08-14
[g3] 14日8月2005年
[g4] 2005年08月14日

[g3],[g4] は見てわかる通り、sprintf() を内部で使用しています。
[g3] の場合は引数部分は日、月、西暦の順で入りますが、[g4] ではそ
れを更に細かく設定できます。ここで、$order には

 $y = 西暦 - 1900, $m = 月 - 1, $d = 日、@Month = 月名の配列

の変数の値を使うことができます。[g3] は実際に

 sprintf($format, $d, $m+1, 1900+$y)

を行っています。

なお、[g3] では $format (書式文字列) は '' で囲んでも "" で囲んで
もどちらでも構いませんが、[g4] では、$format は '" と "' で、
$order は '' で囲む必要があります。


4.4. カスタマイズ例
-------------------

[d1] のカスタマイズは、「1. 日本語化パッチが行なうこと」で紹介し
た変数 $JAPANESESETMONTHNAME, $USEJAPANESESEIREKI を使う以外に初
期化ファイル中では

・月名 @Month を再定義する ($JAPANESESETMONTHNAME とは別のものを)
・japanese_today() (または 直接 do_cmd_today()) を再定義する

などで行えます。@Month の再定義は、japanese_today() で使用される
月名をカスタマイズする場合は、

 &do_require_package("japanese");

のように japanese.perl を読み込んだ後で再定義する必要があり、
それは japanese_today() の再定義の場合も同様なのですが、
japanese_today() を再定義する場合は、単に上と同じ形式で 
japanese.perl を読み込んでもサブルーチンの検索順序のため (?) に
上書きがうまくいきませんので、japanese.perl の読み込みを

 BEGIN{
   &do_require_package("japanese");
 }

のように BEGIN ブロックで囲む必要があるようです。do_cmd_today() 
の再定義の場合は japanese.perl の読み込みは必要ありません。


[d2],[d3] を細かくカスタマイズするには、初期化ファイルの中で

・address_data($format,$order) (または直接 get_date()) を使う
・japanese_today() を使う

のような方法があります。ただし、japanese_today() を使う場合は先に

 &do_require_package("japanese");

として先に japanese.perl を読み込む必要があります。また、それら
で使用される月名の配列 @Month は、[d1] 同様に再定義したり、
$JAPANESESETMONTHNAME で切りかえることもできます。


[a1],[a2] のカスタマイズは、初期化ファイルの中で、直接
$address_data[0] や $ADDRESS を再定義すればできます。


なお、[d2],[a1] の各ページの一番下に書かれるものは、実際には 
$ADDRESS の値が使用されていますので、[d2] や [a1] とは無関係の文
字列を設定することも可能です。それは、latex2html のコマンドライン
オプション -address を使ってもできます。

以下にいくつかサンプルを紹介します。いずれも初期化ファイルでの設
定例です。==> の後に書いたのがその結果です。

1) [d1],[d2],[d3] を和暦に統一する:

 $USEBOTTOMLOCALDATE=1; 
 # 後に読み込まれる japanese.perl に影響する

 ==> [d1]=[d2]=[d3]="平成17年8月14日"


2) [d1],[d2],[d3] を日本語の西暦に統一する:

 $USEJAPANESESEIREKI=1;
 $USEBOTTOMLOCALDATE=1;
 # 後に読み込まれる japanese.perl に影響する

 ==> [d1]=[d2]=[d3]="2005年8月14日"


3) [d1],[d2],[d3] を和暦に統一し、[a1],[a2] も同じ日本語文字列に
  する:

 $USEBOTTOMLOCALDATE=1;
 &do_require_package("japanese");
 # ↑これがないと、後で japanese.perl が読み込まれたときに 
 # $ADDRESS が上書きされてしまう
 $address_data[0]="竹野茂治";
 $ADDRESS = "<i>$address_data[0]<br>\n$address_data[1]</i>";
 # <i> や <br> はデフォルトでは含まれていない

 ==> [d1]=[d2]=[d3]="平成17年8月14日", [a1]=[a2]="竹野茂治"


3) [d2] のみをカスタマイズ (和暦で表示を変更) する:

 # [d2] ([d3]) のカスタマイズ
 $address_data[1] = &get_date('"%dねん%2dがつ%2dにち"','1900+$y,
   $m+1,$d');
 $ADDRESS = "<i>$address_data[0]<br>\n$address_data[1]</i>";
 # [d3] をデフォルトの値に戻す
 @address_data = &address_data('ISO');

 ==> [d1]="平成17年8月14日", [d2]="2005ねん 8がつ14にち", 
     [d3]="2005-08-14"


4) [d1] を 14/8/2005 (イギリス式) に、[d2] を 14 Aug 2005 に、
  [d3]を和暦にし、[a1] をデフォルトの変換者名に、[a2] を指定した
  日本語文字列にする:

 # [d1] のために do_cmd_today() を再定義 
 sub do_cmd_today {
    local($today) = &get_date();        # 月/日/年
    $today =~ s|(\d+)/0?(\d+)/|$2/$1/|; # 日/月/年、に入れ替え
    join('',$today,$_[0]);              # この出力は決まった形式
 }
 # または japanese_today() の再定義も可
 # BEGIN{
 #   &do_require_package("japanese");
 # }
 # sub japanese_today {
 #    local($today) = &get_date();
 #    $today =~ s|(\d+)/0?(\d+)/|$2/$1/|;
 #    join('',$today,$_[0]);
 # }
 #
 # [d2],[a1]
 @Month = ( 'Jan','Feb','Mar','Apr','May','Jun','Jul','Aug',
   'Sep','Oct','Nov','Dec');
 @address_data = &address_data('"%d %s %d"','$d,$Month[$m],
   1900+$y');
 $ADDRESS = "$address_data[0]<br>\n$address_data[1]";
 # [d3]
 $address_data[1] = &get_date('"平成%2d年%2d月%2d日"','$y-88,
   $m+1,$d');
 # [a2] 
 $address_data[0] = "竹野茂治";

 ==> [d1]="14/8/2005", [d2]="14 Aug 2005", 
     [d3]="平成17年 8月14日",
     [a1]="Shigeharu TAKENO", [a2]="竹野茂治"


5) [d2],[a1] とは無関係なものをページ下に出力する:

 $ADDRESS = "竹野茂治＠新潟工科大学<br>2005 年吉日";
 # またはコマンドラインオプションで
 # -address="竹野茂治＠新潟工科大学<br>2005 年吉日"


5. 目次
-------
1. 日本語化パッチが行なうこと
 1.1. 日本語化パッチの機能
 1.2. 追加された変数やオプション
2. オプション、初期化ファイル等の設定の優先順位
3. 英語版との共存について
4. 日付と変換者について
 4.1. デフォルトの値
 4.2. それぞれが設定される仕組み
 4.3. get_date()
 4.4. カスタマイズ例
5. 目次

+=================================================+
 竹野茂治   〒945-1195 新潟工科大学 情報電子工学科 
 shige@iee.niit.ac.jp      TEL(&FAX): 0257-22-8161 
+=================================================+
