MS-Windows への LaTeX2HTML のインストールに関しては、 以前は阿部@北教大さんの Web ページが良く知られていましたが、 最近はその Web ページは閉鎖されたのかつながりませんし、 LaTeX2HTML は元々 MS-Windows へのインストールの手順もついていますので、 それに従った日本語版の LaTeX2HTML のインストールに関する説明などをここに書いていこうと思います。
TeX の環境は、現在日本語の LaTeX が使える典型的な以下の 2 つの環境を仮定します。
日本語コードは、主に UTF-8 の環境を仮定しますが、 Shift_JIS の話も可能であれば追加したいと思います。 必要なソフトや必要な設定、あるいは本体などの修正が必要な場合は、 それらを紹介していきたいと思います。
ここには、MS-Windows に LaTeX2HTML をインストールするための インストール用のファイルを置きます。 元々は Unix 用のオリジナル (英語版) の配布ファイル (.tar.gz) と 日本語用のパッチファイルを別々に配布していたのですが、 MS-Windows 上ではそのファイルの展開やパッチ当ても容易ではないので、 日本語化パッチを当てたファイル一式を zip ファイルにしたものと、 日本語ドキュメントをここに置きます。
現在は、日本語化パッチ 3.X 版、2.X 版を置きますが、 それらは以下の違いがあります。
UTF-8 の LaTeX ファイルを処理する場合は 2.X 版の方が多分いいでしょう。 Shift_JIS の LaTeX ファイルを処理する場合は、3.X 版を使ってください。 なお、生成される HTML ファイルは、現在は入力と同じコードになります。
MS-Windows への日本語化 LaTeX2HTML のインストール手順については、 インストールファイル の付属ドキュメント (README.win-*) をご覧ください。 必要なソフトウェア等に関する説明もあります。
なお、jp 2.X と jp 3.X では手順に違いがありますので、
ご注意ください。
(04/11 2017; 04/19 2017 更新)
ここに、日本語の LaTeX ファイルと、 MS-Windows 版へインストールした latex2html による変換結果のサンプルを 置いておきます。テストに使用してください。以下に注意を書きます。
-image_type svg -ienc sjis -oenc sjis
):
l2htest-ja-s-texlive-svg
-image_type png -ienc sjis -oenc sjis
):
l2htest-ja-s-texlive-png
-image_type svg -ienc utf8 -oenc utf8
):
l2htest-ja-u-texlive-svg
-image_type png -ienc utf8 -oenc utf8
):
l2htest-ja-u-texlive-png
-image_type svg -ienc sjis -oenc sjis
):
l2htest-ja-s-w32tex-svg
-image_type png -ienc sjis -oenc sjis
):
l2htest-ja-s-w32tex-png
-image_type svg -ienc utf8 -oenc utf8
):
l2htest-ja-u-w32tex-svg
-image_type png -ienc utf8 -oenc utf8
):
l2htest-ja-u-w32tex-png
MS-Windows への LaTeX2HTML のインストールする際の注意や、 MS-Windows 版の配布ファイルに関する注意などを上げておきます。
latex2html-2023.2 をベースにした Win 用のファイルを更新しました (jp3.2beta1.38)。
日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (09/13 2023)」 等を参照してください。
latex2html-2023 をベースにした Win 用のファイルを更新しました (jp3.2beta1.37)。
日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (03/01 2023)」 等を参照してください。
latex2html-2022.2 をベースにした Win 用のファイルを更新しました (jp3.2beta1.36)。
日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (10/21 2022)」 等を参照してください。
latex2html-2022 をベースにした Win 用のファイルを更新しました (jp3.2beta1.35)。
日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (01/25 2022)」 等を参照してください。
latex2html-2021.2 をベースにした Win 用のファイルを更新しました (jp3.2beta1.34)。
日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (10/28 2021)」 等を参照してください。
latex2html-2021 をベースにした Win 用のファイルを更新しました (jp3.2beta1.33)。
日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (10/22 2021)」 等を参照してください。
なお、元々の日本語化パッチのアーカイブファイル名の変更 (日付をパッチバージョン番号に) にともない、 Win 用のアーカイブファイル名も変更しました。
latex2html-2020.2 をベースにした Win 用のファイルを更新しました (jp3.2beta1.32)。
日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (03/19 2021)」 等を参照してください。
latex2html-2020 をベースにした Win 用のファイルを更新しました (jp3.2beta1.31)。
日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (05/15 2020)」 等を参照してください。
latex2html-2020 をベースにした Win 用のファイルを更新しました (jp3.2beta1.30)。
日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (03/04 2020)」 等を参照してください。
ようやく、最新のリリース版である latex2html-2020 に追いつきました。 2019.2 までのバグが修正されていますので、 なるべく新しい方をご利用ください。
latex2html-2019.2 をベースにした Win 用のファイルを更新しました (jp3.2beta1.28)。
日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (02/22 2020)」 等を参照してください。
なお、実害はあまりありませんが、2019 でのバグが修正されていますので、 なるべく新しい方をご利用ください。
latex2html-2019 をベースにした Win 用のファイルを更新しました (jp3.2beta1.27)。
日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (02/20 2020)」 等を参照してください。
latex2html-2018.3 をベースにした Win 用のファイルを更新しました (jp3.2beta1.26)。
日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (02/18 2020)」 等を参照してください。
なお、今回は特に Windows 用の不具合 (本体の不具合、追加ファイルの不具合、ドキュメントの不具合) に対する修正がいくつか入っていますので、 latex2html-2018.3 ベースのものを入れる場合は、 以前の版ではなくこの版のものを使用してください。
latex2html-2018.3 をベースにした Win 用のファイルを更新しました (jp3.2beta1.25)。 この版からは jp3.2 系の更新ファイルのみです。
2018.3 ではだいぶ大きな改変が行われていますが、 日本語化パッチの変更点については、 LaTeX2HTML のページ の「更新情報等 (12/28 2019)」 等を、 2018.3 本体の変更点については、 付属ドキュメント (README.patch-jp) を参照してください。
latex2html-2017.2 をベースにした Win 用のファイルを更新しました (jp2.1beta1.20, jp3.1beta1.20)。
変更点については、 LaTeX2HTML のページ の「更新情報等 (04/23 2019)」 を参照してください。
latex2html-2017.2 をベースにした Win 用のファイルを更新しました (jp2.1beta1.19, jp3.1beta1.19)。
変更点については、 LaTeX2HTML のページ の「更新情報等 (07/22 2018)」 を参照してください。
latex2html-2017.2 をベースにした Win 用のファイルを更新しました (jp2.1beta1.18, jp3.1beta1.18)。
ベースが変わったことでいくつか修正した点もありますし、 Windows 版 (jp3.1beta) に特有の以下の問題もいくつか修正してあります。
なお、jp3.1beta の convert utf8 した UTF-8 版では、 .aux ファイルの日本語コードに注意が必要です。 UTF-8 の日本語 LaTeX ファイルを platex でオプションなしで コンパイルすると、.aux ファイルが Shift_JIS の日本語コードになる場合があります。 その場合、それを jp3.1beta の UTF-8 版で変換すると、 大量の警告メッセージが表示される場合があります。
作成される HTML ファイルに実害はないかもしれませんが、 それを避けるには、.aux ファイルも UTF-8 になるようにするといいでしょう。 例えば platex に -kanji=utf8 のオプションをつけて実行すると、 .aux ファイルも強制的に UTF-8 で出力されるようです。
その他の latex2html-2017.2 等に関する情報については、 LaTeX2HTML のページ を参照してください。
jp 2.X の、 「注意等 (04/18 2017)」 で報告した問題とドキュメントを修正した 2017 04/19 版、 および Encode モジュールを使用する jp3.X 版がそれなりに動くようになりましたので、それを公開します。 これらの違いはだいたい以下の通りです。
まだ jp 3.X 版は色々不安定なところもあるのではないかと思います。 そういう意味では、nkf 版 (jp 1.X) の MS-Windows 版を作成する意味はあると思いますので、 可能ならばそれも検討してみようかと思います。 もし不具合等あれば連絡してください。
現在ここで公開している MS-Windows 用のインストールファイルには、 ラッパーバッチファイル l2h.bat を付属させていますが、 2017 04/11 版も間違いがありましたし、 それを修正した 2017 04/17 版も間違いがありました。失礼しました。
2017 04/17 版の l2h.bat の
「%l2hdir%\bin\latex2html.bat %*
」
という行は、正しくは先頭に call をつけて
「call %l2hdir%\bin\latex2html.bat %*
」
としなければいけません。
新しくリリースするファイルは修正しますが、
それまでは手動で修正しておいてください。
04/11 に公開した版の付属ドキュメント ( README.win-jp) の 2.4.1 節、2.4.2 節で、TEXPATH の設定が書いてありますが、 これは間違いでした。TEXPATH は設定しないでください。 ドキュメントやバッチファイルを一部修正した 04/17 版を公開します。 失礼しました。
なお、TEXPATH を設定すると、 そこに latex2html 用のスタイルファイル (latex2html-2016\texinputs\ 内のもの) がインストールされてしまいますが、 それは本来 texmf の下にインストールされるべきものです。
Shift_JIS の日本語コードの LaTeX の場合も少し調べてみましたので、 書いておきます。
従来の阿部@北教大さんの MS-Windows 用の LaTeX2HTML では、 Shift_JIS の LaTeX ファイルを内部で一旦 EUC-JP の日本語コードに変換してから LaTeX2HTML に処理させていました。 なぜそういう処理が必要なのかはよく把握していませんでしたが、 Shift_JIS ファイルをそのまま処理させるとうまくいっていなかったようです。
現在の perl は encoding に対応した処理が可能になっていますから、 それを使えば 1.X 系列の日本語化パッチが使用している nkf も必要ないかなと思い、 nkf を使わずに perl 自体で文字コード処理を全部行う版を 3.X として多少作業はしていたのですが、あまり進んでいませんでした。 perl の encoding の処理もかなり複雑なところがあり、 なかなか一筋縄ではいっていません。
今回、Shift_JIS に特化して、入力と出力はいずれも Shift_JIS で、 という形で試したところ、色々とわかってきて、 とりあえず Shift_JIS への対応はめどが立ってきました。 現在公開している UTF-8 版とマージすることもできそうなので、 現在残っている問題が解決したら、UTF-8 版とマージして、 新しく 3.X 系列として、すなわち nkf を使用せず、 perl の encoding 処理を利用して文字コードの問題を解決するバージョンを 公開したいと思っています。
ただ、perl の encoding モジュールは、現在は推奨されていないようで、 そういうモジュールによる文字コード変換を どれくらい信用してよいのかわかりませんし、 安定して動作できるのかもやや未知数なところはあります。 よって、MS-Windows で動作する 1.X 系列も必要なのかなと考えています。
最後に latex2html と Shift_JIS の問題を簡単に説明しておきますと、 現在の perl は、内部処理は UTF-8 で統一していて、 ファイルの入力時、あるいは出力時に特定のコードから、 あるいは特定のコードに変換するのは、 perl スクリプトの最初の部分で宣言するだけでよいので それほど難しくはありません。 実際、そういう宣言をいくつか必要なものに挿入すると 基本的な Shift_JIS の問題は解決しますが、 それでも処理が途中で中断してしまいます。 しかもかなり不可解なところで止まっていたのですが、 その問題は「データベース」にありました。
latex2html では、環境や数式の管理などに perl のデータベース機能も利用しているのですが、 ファイルの入出力とは違いデータベースの方は 単なる宣言だけで自動的なコード変換は行ってくれません。 よって、データベースの連想配列への代入文の右辺に perl の内部コードなどが置かれているとエラーになっていました。 そういう箇所を全部明示的に UTF-8 などのコードに変換していけば、 この問題は解消しそうです。
次は、perl の話を上げておきます。MS-Windows 用の TeX システムは以下の 2 つを仮定します。
[a] の方は、perl は TeX のシステムには含まれていませんので、 latex2html を使うには別にインストールする必要があります。 MS-Windows 版の perl としては Active perl が有名で、 それを利用すればいいでしょう。
バージョンは 2,3 用意されているようですが、 新しめのものであればどれをインストールしても多分問題はありません。 デフォルトでは C:\Perl\bin どにインストールされ、 path も設定されます。
一方 [b] の方は、デフォルトで TeX システムに perl も含まれていますので、 それを利用すれば perl を追加インストールする必要はありません。
perl は「c:\texlive\2016\tlpkg\tlperl\bin」に 最小限のものがインストールされているようで、 例えば perl のマニュアルを見るためのツールである perldoc などはないようです。 そのため、latex2html も -h (-help) が効きません。
なお、latex2html の -h (-help) が効かない問題は実は Active Perl をインストールした (perldoc がある) [a] の方でも起きていて、 「無効なパラメータ」といったような妙なメッセージが出て 正しくヘルプが表示されません。 原因がわかり次第、また報告したいと思います。
次は、ghostscript (gs) の話を上げておきます。
今回、MS-Windows 用の TeX システムとして以下の 2 つを利用しました。
[a] の場合、gs は TeX システム (c:\w32tex) とは別に c:\gs\gsVVVV (VVVV はバージョン番号) などにフルセットでインストールされます。 gs のバージョンは複数のものから選ぶことができるようです。
また、[b] の場合、gs は TeX システム (c:\texlive\2016) 内にサブセットがインストールされるようです。 それらに関する注意をまとめておきます。
[a] の場合、prefs.pm の EXTRAPATH に gs のパス (c:\gs\gs7.07\bin 等) を入れておけば config.bat で gs は認識してくれます。 gs のバイナリは、latex2html は MS-Windows 上では gswin32c.exe を検索します。
ただし、gs 7.07 を使う場合は、 cmap ファイルはデフォルトでは gs の方にはインストールされないようなので、 TeX システムの方にある cmap ファイル (c:\w32tex\share\texmf-dist\fonts\cmap\adobemapping\cmap-resources の下の CMap の中身) を gs の方 (c:\gs\gs7.07\Resource\CMap) にコピーして、 gs_res.ps ファイルの設定を書き換える必要があります。 新しい 9.X なら cmap もインストールされるようです 詳しくは、例えば以下を参照してください。
さらに、gs7.07 の場合は、デフォルトで設定されている msmincho.ttc, msgothic.ttc では日本語がうまく処理できません。 よってうちでは IPA フォントを使って代用しましたが、 gs7.07 はやや苦労が多いと思いますので、 なるべく gs9.X を使うことをお勧めします。
gs は TeX システムに含まれています (c:\texlive\2016\tlpkg\tlgs 以下)。 しかし、不要なものがだいぶ削除された サブセットがインストールされるようで、 そのためデフォルトでは latex2html がうまく認識できません。 latex2html の config/config.pl では、 gs のライブラリディレクトリの確認を gs_init.ps があるかどうかで行っているのですが、 [b] の gs のサブセットには gs_init.ps が含まれていません。 よってその部分を showpage.ps などに書き換えないと gs がないと思われてしまいます (新しい日本語化パッチでは対応しています)。
さらに、デフォルトの gswin32c.exe では ライブラリディレクトリが -h の出力に含まれていないので、 gs のライブラリを正しく検出させるには環境変数 GS_LIB を設定する必要があります。
一方で、[a],[b] には TeX システムの方に gs のラッバーバイナリである rungs.exe というコマンドが含まれています。 これを gswin32c.exe の代わりに使えば GS_LIB の設定は必要ないようですし、 EXTRAPATH に gs のパスを設定する必要もありません。 prefs.pm の gswin32c を rungs に変えるだけで、 そのあたりはうまくいくようです。
netpbm の pnmtopng で背景が透明化できないバグがある問題 (cf.「注意等 (04/09 2017)」) ですが、たまたま透明化できることもあるようで、 むしろそのバグに気がついたのは gs7.07 との組み合わせで実行したときで、 gs9.21 との組み合わせでは透明化ができていました (常にうまくいくかどうかはわかりません)。
すなわち、他のオプション (-dTextAlphaBits=4 とか) の影響かもしれませんが、 gs の ppmraw デバイスの出力が gs7 と gs9 では多少違いがあるようで、 数式を画像化したような白黒のデータについては、 gs9 は PPM 出力を出しているようで、 gs7 は PGM 出力のようでした。 背景色も両者で少し違う色になります。 そのため pnmtopng のバグの顕在化に違いが出るようです。
ただし、pnmtopng のバグは、pgm より ppm の方が出やすそうなので、 なぜ pgm の方にむしろ出ているのかがよくわかってはいません。
次は、空白付きパスの問題を上げておきます。
MS-Windows には、「C:\Program Files (x98)」「C:\Users\hoge\My Documents」 など、空白の含まれるパスが平気で使われていますが、 Unix 由来のプログラムではそれが問題となることがあります。 latex2html も同様で、 空白が含まれるパスにコマンドがインストールされている場合、 latex2html ではうまく認識されません。
引用符で囲むなどの対応を試してみたのですが、 いずれもうまくいきませんでした。 しかし、MS-Windows では「8.3 形式」という、 古い形式のパス指定もできるようになっていて、 それを使えば空白のない別名のパス指定ができることがわかりました。 「8.3 形式」は、コマンドプロンプトで「dir /x」とすると確認できます。 例えば、「C:\Program Files (x98)」であれば「C:\PROGRA~2」が 8.3 形式のパスで、それを使って指定することができます。
ただし、どんな名前のパスでも 8.3 形式でうまくいくかというと そうでもないようで、例えば「c:\gs (w32tex)」というディレクトリの 8.3 形式は「C:\GS(W32~1」になるのですが、ここに含まれる '(' が邪魔をして、 そこでなんらかのコマンドラインが切られてしまい、 うまくいきません。
一方、7.07 あたりの古い ghostscript を MS-Windows で使う場合、 日本語の EPS ファイルを表示するためには cmap ファイルを自分でインストールして、 gs_res.ps ファイル内のパスを書き換える必要がありますが、 その中では ( ) 内にパスを書くのですが、 それは空白が含まれるパスでも ( ) が含まれても問題はなく、 特にエスケープする必要も "" で囲む必要はないようです。
LaTeX2HTML では数式の画像化や画像変換などで Netpbm が必要になりますが、 MS-Windows で Netpbm を使う場合の問題点等をまずあげておきます。
LaTeX2HTML では、netpbm のいくつかのツールを使用するのですが、 新しめの netpbm ではいくつかのツールが別のコマンドに置き換えられ、 元々のコマンドはそれらを呼び出す wrapper スクリプトになっていることがあります。
LaTeX2HTML に関係するツールで言えば、 pnmflip や ppmquant がそうなっていて、 pnmflip は netpbm-10.13 から pamflip を呼びだす perl スクリプト、 ppmquant は netpbm-10.19 から pnmquant を呼び出す perl スクリプトになっています。 しかも、pnmquant も perl スクリプトで、 pnmcolormap を内部で呼び出しています。
perl のラッパースクリプトでも Unix では全く問題はないんですが、 MS-Windows ではそれをそのままコマンドとして使うことはできず、 perl の引数として使わないといけません。 そして、LaTeX2HTML の config/config.pl スクリプトも、 MS-Windows 上では perl スクリプトをコマンドとして認識してくれず、 10.19 以降の netpbm ではデフォルトでは ppmquant や pnmflip が使えないと認識され、 そして画像変換ができなくなってしまいます。
そこで、新しい LaTeX2HTML パッチでは config/config.pl に手を入れ、 perl スクリプトの場合も認識し、 「perl -w pnmflip」のように使うようにしています。 しかし、ppmquant の方はまだ問題があり、 上に書いたように ppmquant は 2 段の perl スクリプトになっていますし、 ppmquant の代わりに pnmquant を使おうとしても それが利用する pnmcolormap に問題があり、 MS-Windows 版が公開されている 10.27 の pnmcolormap はうまく実行できない問題があるようです (そういう報告がありますし、実際うちでもそうでした)。
よってこれらの問題を避けるには、 10.18 以前の netpbm と、 新しい日本語化パッチを使う必要があります。
LaTeX2HTML では、デフォルトで数式や貼り込み画像を PNG か GIF のいずれかの画像に変換することができます。 PNG に変換する場合は netpbm の pnmtopng、 GIF に変換する場合は netpbm の ppmtogif を使います。 いずれも、背景画像の透明化が行われ、 HTML ファイルの背景画像を適当に指定した場合でも、 それらの画像がそれにマッチした表現ができるようになっています。 デフォルトでは PNG への変換になっています。
しかし、pnmtopng の透明化には実はバグがあり、 netpbm の 10.0 から 10.30 までの 10.21 以外のバージョンすべてで 透明化する色の選択に失敗することがあります。 なお、その問題は LaTeX2HTML で使用する gs (ghostscript) のバージョンも関連するようで、 その組み合わせで透明化に失敗します。 うちでは、netpbm-10.18 と gs 7.07 の組み合わせで起きましたが、 gs 9.21 だと起きませんでした。 細かく言えば、gs 7.07 と gs 9.21 で生成する中間ファイルの形式に PGM, PPM の違いがあるようです。
pnmtopng のバグは、10.21 で一旦修正されているのですが、 10.22 でまたエンバグされてしまっていて、 それが 10.30 まで続いています。 10.31 以降はその問題は修正されていますし、 また逆に少し古い netpbm-9.X の版にはその問題はありません。 なお、10.31 にはまた別の問題があります (「LaTeX2HTML に関する注意 (02/17 2006)」)。
なお、GIF に変換する ppmtogif には透明化のバグの問題はないようです。
上のことを考慮すると、 Unix だと単に 10.32 以降の netpbm を使えばいいのですが、 MS-Windows の場合は最初の問題には 10.18 以前の netpbm、 後の問題には 10.32 以降の netpbm、 を使わないといけない、というかなりいやな状況になっています。
さらに、MS-Windows では、 自前で netpbm をコンパイルしない限り公開されている MS-Windows 用バイナリを使わないといけないわけですが、 その種類は残念ながら多くはありません。 代表的なものとしては、以下にある 10.27, 10.18.4 です。
その 2 つのバージョンでは上の問題を 完全に解消することは難しいです。
さらに、上で公開されている 10.18.4 の netpbm のツールは、 なぜかいくつかのコマンドの拡張子が .exe になっておらず、 そのせいで LaTeX2HTML の config/config.pl が認識できなくなっています。
ということで、MS-Windows で LaTeX2HTML を使う場合、 上記の問題を避けるには、 以下のような方針でいくのが楽かなと考えています。
どうしても PNG 化したい場合で背景が透明化されない場合は、 HTML の背景色と画像の背景色を合わせる、という手がありますし、 環境変数 TRANSPARENT_COLOR を指定して透明化がうまくいくようにする、 という手もなくはないです。
画像化を GIF にするには、latex2html の「-image_type=gif」 というオプションを使うか、初期化ファイルの 「$IMAGE_TYPE="gif";」という指定を使用します。