LaTeX2HTML に関する Q and A

目次

  1. はじめに (03/30 2016 更新)
  2. Q and A の一覧 (03/28 2018 更新) [Update]
  3. Q and A 本文 (03/28 2018 更新) [Update]
LaTeX2HTML 日本語化パッチのページへ戻る

はじめに

ここに LaTeX2HTML に関する簡単な QandA をつけておきます。 LaTeX2HTML (とその日本語化パッチ) に関する質問がありましたら メールをください。 Q and A として適当なものがあればここに載せていく予定です。

また、この Q and A に誤り、修正が必要な箇所を見つけた場合は ご報告をお願いします。 ご意見、ご希望なども歓迎します。

なお、ここに載っている情報は、latex2html の開発者とは何ら関係が無く、 単に shige の作成している物に 過ぎない個人的な見解であることを断っておきます。

目次へ戻る

QandA の一覧


目次に戻る

QandA 本文


Section 0. この FAQ や基本的な質問


Q 0.1. LaTeX2HTML とは何ですか

A 0.1.

LaTeX ファイルを HTML ファイルに変換するソフトです。perl で書かれていて、 LaTeX、perl, netpbm 等の必要なソフトが動作する環境ならば Unix, MS-Windows 等、いくつかの環境で動作します。

作者 (保守者) は、元々は Nikos Drakos (nikos@cbl.leeds.ac.uk) で、 現在は主に Ross Moore (ross@maths.mq.edu.au) が保守を行っています (とはいっても、2009 年以降、実際にはほぼ保守は行われていません)。


(09/26 2015 更新)
目次へ戻る

Q 0.2. LaTeX2HTML の正式名称はなんですか

A 0.2.

特に決まりはないようですが、マニュアルでは、 ソフトウェア名としては主に「LaTeX2HTML」、 すなわち LaTeX は本来の「LaTeX」と同じ (a は大文字で少し小さくベースラインより少し上に、 e も大文字で少し小さくベースラインより少し下に、 HTML はすべて大文字で) 書かれているようです。 以下で表示されるロゴも参照してみてください。

コマンド名や配布ファイル名などが「latex2html」とすべて小文字であるためか、 実際には「late2html」と書かれることも多いですし、 省略して「l2h」、「L2H」などと書かれることもあるようです。

この FAQ では、一応ソフトウェア名は「LaTeX2HTML」とし、 コマンド名、配布ファイル名等は「latex2html」としたいと思います。


(09/26 2015 更新)
目次へ戻る

Q 0.3. LaTeX2HTML のホームページはどこですか

A 0.3.

付属ドキュメントによれば、 以前は以下が LaTeX2HTML のホームページだったようですが、 現在はないようです。

LaTeX2HTML の最新版やドキュメントなどが以下の開発サイトにありますが、 ここも長い間更新されていません。

現在の最新版の配布物は、以下の CTAN サイトで見つかります。

なお、日本語化パッチについては、以下をご覧ください。


(09/26 2015 更新)
目次へ戻る

Q 0.4. この FAQ は誰が作っているのですか

A 0.4.

LaTeX2HTML の日本語化パッチ (のひとつ) のメンテナである竹野 (shige@iee.niit.ac.jp) が作っています。


(01/02 2016 更新)
目次へ戻る

Q 0.5. LaTeX2HTML と日本語化パッチの関係は

A 0.5.

日本語化パッチは、本来欧文用の LaTeX2HTML で、 日本語の LaTeX ファイルから日本語の HTML ファイルを生成できるようにするための修正差分です。

このサイトにある日本語化パッチは、 latex2html のインストール作業前に latex2html のソースファイルに日本語化パッチをあててインストールを行います。

現在のものは、武藤@Debian プロジェクト さんが作って公開していた latex2html-99.1 用の日本語化パッチを、その後の版に合わせて修正したり、 latex2html のバグの修正も追加したり、 日本語用の新たな機能もいくつか追加したものになっています。


(01/02 2016 更新)
目次へ戻る

Q 0.6. LaTeX2HTML 本体や日本語化パッチは更新されているのですか

A 0.6.

LaTeX2HTML 本体の更新は、公式には 2002 年以降ほぼ行われていません。 2008 年にほぼライセンスのみ更新され (latex2html-2008.tar.gz)、 2012 年には新しい perl 用の修正のみがわずかに入った latex2html-2012.tgz という配布物が公開されていました。 2015 年には Debian 関係のボランティアが作成したパッチを いくつか導入した配布物 latex2html-2015.tar.gz が CTAN サイトで公開されているようです。

日本語化パッチの更新は、あまり頻繁には行っていませんが、 何か問題が見つかったときや、新しい版が出たときなどに、 適宜修正を加えた日本語化パッチを更新、公開していく予定です。


(03/31 2016 更新)
目次へ戻る

Q 0.7. LaTeX2HTML の問題を見つけたり質問がある場合は

A 0.7.

本家のメーリングリスト latex2html-ml (英語、詳しくは 「Q 0.8. LaTeX2HTML について議論するサイト、 メーリングリストは 参照) で報告するという手がありますが、 竹野 (shige@iee.niit.ac.jp) も、 (今のところは) 可能な限り対応したいと思っていますので、 メールで連絡をしてください。


(03/31 2016 更新)
目次へ戻る

Q 0.8. LaTeX2HTML について議論するサイト、メーリングリストは

A 0.8.

メーリングリストは latex2html-ml (latex2html@tug.org ; 英語) があります。

現在は議論はほとんどありませんが (最近は議論は 1 回/2,3 ヶ月程度)、 まだ一応存続しています (2015 年 3 月現在)。

1994 年から 2003 年くらいまでの古いメーリングリストのアーカイブが 以下にもあります。

また、日本語の TeX に関する掲示板

でもたまに LaTeX2HTML に関する質問が投稿されることがあります。


(03/11 2015 更新)
目次へ戻る

Section 1. インストールや初期設定ファイルについて


Q 1.1. Linux の rpm や FreeBSD の package (や ports) はないですか

A 1.1.

詳しくは知りませんが、 オリジナル (英語版) の LaTeX2HTML のパッケージは今でもあるようで、 latex2html-2012 をベースにした rpm ファイルがあるようですし、 FreeBSD にも現在 (01/02 2016) は latex2html-2008 をベースにした ports があるようです。

日本語化パッチを当てたものは、以前はあったようですが、 最近は見当たりません。 FreeBSD の ports も現在 (01/02 2016) はなくなっているようです。

日本語化パッチをダウンロードして、 ドキュメントに従って自前でインストールしてください。


(01/02 2016 更新)
目次へ戻る

Q 1.2. MS-Windows に LaTeX2HTML をインストールしたいのですが

A 1.2.

日本語化パッチに含まれるドキュメントは、 基本的に Unix 環境を前提にしています。 MS-Windows でインストールする場合には、 オリジナルの LaTeX2HTML の配布物に含まれる英語のドキュメント、 または以下の阿部@北教大さんの WWW ページをご覧下さい。


(03/11 2015 更新)

なお、最近 (2017) 上記サイトにはつながらなくなっています。 阿部さんのとは違いますが、以下でも Windows への LaTeX2HTML のインストールの情報を紹介していますので、ご覧ください。


(07/21 2017)
目次へ戻る

Q 1.3. LaTeX2HTML の、サイズや check sum の違う配付物があるようです

A 1.3.

以前、例えば latex2html-2002-2-1.tar.gz は、 確かに現在私が知るだけでも 7 種類はありました。 それはその当時の開発版がその名前のまま更新されていたからです。

それ以降の latex2html-2008.tar.gz, latex2html-2012.tgz, latex2html-2015.tar.gz などは そういうことはないようです。


(01/02 2016 更新)
目次へ戻る

Q 1.4. netpbm-10.2X, 10.3X だと数式の画像変換がうまくいかないようです

A 1.4.

過去にいくつかそういう事例があったようです。


(01/02 2016 更新)
目次へ戻る

Q 1.5. l2h (wrapper スクリプト) があるのにうまく動きません

A 1.5.

以前の日本語化パッチでは l2h という wrapper スクリプトをつけていましたが、 現在の日本語化パッチではそれは取り除いています。

その古いスクリプトで問題が起きる場合があったようです。 「TeX Q&A 掲示版」 の 37151 番の記事で報告されていました。 対処法もそちらに書かれていますので、詳しくはそちらをご覧ください。


(03/31 2016 更新)
目次へ戻る

Q 1.6. Windows 版の LaTeX2HTML の初期化ファイルはどこに置けばいいですか

A 1.6.

適当なところに置いて、そのディレクトリを環境変数 HOME で設定すればいいようです。 逆に環境変数 HOME が既に設定されていれば、 それが指すディレクトリに置けばいいでしょう。

HOME を設定しない場合は、LaTeX2HTML はカレントディレクトリ (latex2html を実行するディレクトリ) で初期化ファイルを探すようです。

なお、初期化ファイル名は、Unix でも Windows でも 「.latex2html-init」とします。


(01/03 2016 更新)
目次へ戻る

Q 1.7. l2hconf.pm と .latex2html-init はどちらが設定ファイルなのですか

A 1.7.

MS-Windows 版の latex2html ユーザにはわかりにくいかもしれませんね。 元々は、

のような意味合いがあり、 MS-Windows ではシステムのユーザがただ一人という場合が多いので、 どちらでもいいような気もしますが、 l2hconf.pm を個人設定ファイルとして使う場合、 以下のような問題点もあります。

だから、MS-Windows でも本来の個人用設定ファイルである .latex2html-init を使うのが無難でしょう。


(03/31 2016 更新)
目次へ戻る

Q 1.8. 各設定ファイルの優先順位を教えてください

A 1.8.

日本語化パッチ jp1.9, jp2.0 の場合までは、 各設定ファイルは以下の順に読み込まれていました。 (この

  1. lib/l2hconf.pm の設定
  2. l2hconf.pm の最後 (の方) で読み込まれる styles/japanese.perl
  3. bin/latex2html に書かれたデフォルトの設定
  4. HOME (ホームディレクトリ) の .latex2html-init (あれば)
  5. 現在のディレクトリの .latex2html-init (あれば)
  6. latex2html のコマンドラインオプションの設定
  7. latex2html のコマンドラインオプション -init_file で指定した初期化ファイルによる設定

日本語化パッチ jp1.10beta, jp2.1beta からは オリジナルの挙動にできるだけ近い以下のような形に変更しました。

  1. lib/l2hconf.pm の設定
  2. bin/latex2html に書かれたデフォルトの設定
  3. HOME (ホームディレクトリ) の .latex2html-init の設定 (あれば)
  4. 現在のディレクトリの .latex2html-init の設定 (あれば)
  5. latex2html のコマンドラインオプションによる設定
  6. latex2html のコマンドラインオプション -init_file で指定した初期化ファイルによる設定
  7. 使用したスタイルファイルに対応した perl ファイル (share/styles/*.perl, hsare/versions/*.perl) による設定

なお、.latex2html-init や -init_file での初期化ファイルの読み込みは、 同じ名前のファイルが 2 度読み込まれることはありませんが、 4. は 3. が読み込まれた場合でも、 現在のディレクトリがホームディレクトリでなけれ ば、4. があればそれは読み込まれます。

後に読み込んだものが、前の設定を上書きしますから、 下の方が優先順位は高いです。


(03/31 2016 更新)
目次へ戻る

Q 1.9. Shift_JIS 環境ではインストールがうまくいきません

A 1.9.


(03/31 2016, 07/21 2017 更新)
目次へ戻る

Q 1.10. TeX が UTF-8 環境の場合はどうすればいいですか

A 1.10.

jp2.1beta 系のパッチでは、 UTF-8 の LaTeX ファイルから UTF-8 の HTML を生成できます。 こちらは日本語コード変換は行いません。 画像生成等に必要な場合は、UTF-8 コードがデフォルトの platex コマンドを利用します。

また、jp1.10beta 系のパッチでは、 UTF-8 の LaTeX ファイルから、各種コードの HTML を生成できます。 こちらは nkf を利用してコード変換を行います。 画像生成等に必要な場合は、 UTF-8 コードがデフォルトの platex コマンドを利用します。

なお、UTF-8 への対応はまだ完全ではないかもしれません。 何か問題があればご連絡ください。


(03/31 2016 更新)
目次へ戻る

Q 1.11. latex2html-2006-1 や latex2html-2009-1, latex2html-2012 というものを見たのですが

A 1.11.

LaTeX2HTML の公式配布は、latex2html-2002-* の次は latex2html-2008 で、 その後は本家 (http://www.latex2html.org) での配布は行われていませんでした。

latex2html-2006-1 や latex2html-2009-1 は、本家の latex2html とは別に Julius O.Smith III さんが latex2html-2002-2-1 をベースにバグの修正や機能の拡張などを行っているもののようです。 詳しくは、以下をご覧ください。

なお、上記サイトで配布されている latex2html-2006-1.tar.gz, latex2html-2009-1.tar.gz には、日本語化パッチは対応はしていません (当たりません) のでご注意ください。

また、現在 CTAN サイトにある latex2html-2012.tgz は、 それによる Linux 用の「latex2html-2012」 の名前のついたパッケージなどもあるようですが、 この latex2html-2012 は、latex2html-2008 の perl に関する古い記述 (Warning が出る) の部分を修正したもののようで、 latex2html-2008 との実質的な違いはないようです。

ただ、latex2html-2012 では 2008 とは リビジョン番号が変わってしまっていて、 誤解を与える可能性もあるので、 latex2html-2012 に対応する日本語化パッチは作っていません。

現在 CTAN サイトには、latex2html-2015 なるものが置かれていますが、 これは、latex2html-2008 に、 Debian 系のボランティアが作成したいくつかのパッチを当てたもので、 公式版とは言えないものの、元のメンテナが機能していないこと、 当てられているパッチそれぞれが意味のある問題点の修正であること、 リビジョン番号も latex2html-2008 から正しく継承されていること などを考えれば、「準公式版」と言っていいのではないかと思います。 よって、現在の最新の日本語化パッチも、この latex2html-2015 に対応したものになっています。 ただし、これは内部バージョン番号は「2015」ではなく 「2008」のままのようで、 作成した HTML ファイルには「2008」と表示されます。


(03/31 2016 更新)
目次へ戻る

Section 2. 動作がおかしいとかうまくいかないとか


Q 2.1. LaTeX2HTML が画像に変換する数式の左や下に黒い線が残るのですが

A 2.1.

これが起こる原因は、例えば以下の 5 種類などが考えられます。

  1. latex2html の仮定している netpbm の版と実際に使用している netpbm の版があっていない場合に起こります。 特に、古めの latex2html と新しめの netpbm の組み合わせで 起きるようです。

    latex2html-2002-2 以降では configure で netpbm のバージョンも確認しますので、 この問題は通常は起こらないようになっています。

    この場合の対処法としては、

    などがあります。

    少し詳しい話をすると、直接的には Netpbm の新しい版 (9.X 以降) で pnmcrop の仕様が変更されたことが原因で、 pstoimg を修正する場合、 pnmcrop のオプションに " -sides " を追加します (複数箇所あるはずですが、 latex2html の版によって違うので何ともいえません)。 ただし、念のため pnmcrop -v で netpbm のバージョンが 9.X 以降であることを確認しておいた方が良いでしょう。

  2. latex2html-2002-1 の revision 1.68 位から、 lib/latex2html/l2hconf.pm 内の dvips 用のオプションとして、 $DVIPSOPT に '-Ppdf' オプションが設定されていることがありますが、 それが原因で線が残ることがあるようです。 「$DVIPSOPT .= " -Ppdf";」という行が有効な場合は、 その行を削除するか、先頭に '#' を入れてコメントアウトしてください。

  3. 本来の写植範囲を越えて、 右や上にドットを出力してしまう文字を使っている場合に 起こることがあるそうで、ある種の文字書体 (florid type face)、 または数式モードでのアクセントなどがそれに該当するそうです

    この場合、その数式にちょっとのスペースを加えてあげることで 回避することができるようで、例えば $...\,$ のように \, で右にスペースを入れる、あるいは \strut や \vrule で垂直方向にスペースを入れる、などといった方法があるそうです。

  4. 画像のところに \smash などの高さを 0 にしてしまう命令を使うと このようになってしまうことがあります。

    この場合問題を回避するには、 とりあえず \smash を使わないようにするしかありませんが、 html パッケージの \latexhtml コマンドを使えば、 dvi ファイルを作るときには \smash を使い、 latex2html にかけるときは \smash を使わないようにする、 というソースを書くことができます。 \latexhtml コマンドは 2 つの引数を取るマクロコマンドで、 1 つ目の引数は LaTeX にかけるときに使われる部分、 2 つ目の引数は latex2html にかけるときに使われる部分です:

        \latexhtml{ % ここは LaTeX が使う
          % \smash を使って書く
        }{ % ここは latex2html が使う
          % \smash を使わないで書く
        }
      
    ただし、\usepackage{html} が必要です。
  5. -html_version 3.2,math のようなオプションで math モジュールを使っている場合、 \limits などの特別な TeX 命令を使うと 画像の幅が正常に計算されずにこのようになることがあります。

    この場合黒い下線が残っている画像には、 LaTeX2HTML が想定している幅を越えている数式の部分 (多分ごくわずか) があるはずです。 そこに「\hspace{2mm}」などを使って余白を追加して、 幅がもう少しあることを LaTeX2HTML に認識させるようにすれば解消します。


(01/09 2016 更新)
目次へ戻る

Q 2.2. 自分が書いた TeX のマクロがうまく反映されないようなのですが

A 2.2.

そのマクロが、例えば \ifx や \gdef のような、 「LaTeX」の命令ではない「TeX」の命令を含んでいるものだとしたら、 それは「LaTeX2HTML」では認識されない可能性はあります。 「LaTeX2HTML」で認識されるマクロは原則として 「LaTeX」の命令によるものです。 ただし例外はあるようで、いくつかの TeX の命令も展開する場合もあるようです。

もし、上記のようなマクロの場合、それを LaTeX2HTML の作る HTML にも反映させるには、 \latexonly などを使ってそのマクロの定義は LaTeX2HTML では無効にし、 そのマクロに対応した処理を行う perl スクリプトを作る必要があります。 各種スタイルファイルのマクロに対応した perl スクリプトが LaTeX2HTML に付属しています (styles/ 以下) ので、 それが参考になるかも知れません。

ただし、この perl スクリプトは LaTeX2HTML の内部処理の様子を 多少知らないと作るのは難しいので、 latex2html と latex のどちらにもかけたいのであれば、 「LaTeX」からはあまり逸脱した LaTeX ファイルは書かないようにする、 あるいは \latexonly や \latexhtml 等を使って latex2html にかけるときにはそのマクロなしで済むようにすることをお勧めします。

もちろん、perl スクリプト作りに挑戦し、 LaTeX2HTML のコアな部分を極める、という方向もありで、 ある意味ではこれもお勧めです (^^)


(03/31 2016 更新)
目次へ戻る

Q 2.3. jsarticle を使っている場合 EPS の画像が切れるのですが

A 2.3.

奥村@三重大 さんが作っておられる「pLaTeX2e 新ドキュメントクラス」の jsarticle クラスを、

\documentclass[12pt]{jsarticle}
などのように、10pt でないサイズを指定して使用している場合、 includegraphics で取り込んだ EPS 画像が LaTeX2HTML にかけた HTML ファイルでは欠けてしまうことがあるようです。

この場合、奥村さんの Web ページ (http://oku.edu.mie-u.ac.jp/~okumura/jsclasses/) でも紹介されているように、長さがずれることがあるのが問題のようです。

回避策としては、includegraphics のオプションで、

\includegraphics[width=14cm]{file.eps}
としている場合は、
\includegraphics[width=14truecm,scale=1.1]{file.eps}
のように、1.0 より大きい scale を指定するとうまくいく場合があります。

ただし、width を指定していない場合はうまくいかないので、 LaTeX2HTML にかけるときは、とりあえず jarticle を使う、 という回避策もあります。


(01/14 2016 更新)
目次へ戻る

Q 2.4. 貼り込んだ画像や数式の背景色が正しく変換されないのですが

A 2.4.

画像によってはそのようになることがあるようです。

例えば、Tgif で作成した EPS 画像の中で、「白での塗りつぶし」 などを使って線を消した部分がある場合、 その部分を含んだ背景の透明化に失敗してしまうようです。 それは、以下のような原因で起きます (GIF 化の場合)。

PNG の場合は透明色として灰色が選ばれていますが、 やはり図形によっては同様のことが起こり得るのではないかと思います。

対処法としては、transparent の色指定を変える、という方法があります。 その色指定は、pstoimg が内部で参照する環境変数 TRANSPARENT_COLOR に指定することができますので、 背景がうまく透明化されなかった画像 (file/img9.gif とします) を以下のようにして作り直せばいいでしょう。

mv file/img9.gif .
setenv TRANSPARENT_COLOR "#b2b2b2"
latex2html -image_type gif file.tex
(setenv は csh 系のシェルの場合。bash などの sh 系のシェルの場合は 「TRANSPARENT_COLOR="#b2b2b2"; export TRANSPARENT_COLOR」とする)


(03/31 2016 更新)

追加情報です。数式の透明化がうまくいかない事例も見つけました。 調べてみると、Netpbm のバージョンによっては、 PNG 画像への変換で使用している pnmtopng にバグがあり、 透明化がうまくいかないことがあることがわかりました。 ただし、その問題は、組み合わせる gs のバージョンによっても それが起きる場合と起きない場合があるようです。

私が気がついたバグで言えば、 問題がある netpbm は、netpbm-10.0 から netpbm-10.20 まで、 および netpbm-10.22 から netpbm-10.30 までです。 netpbm-10.21 で一度修正されたのですが、 また 10.22 でエンバグされてしまっています。 むしろ netpbm-9.X ではソース上の問題はなさそうです。

とりあえずは、以下のような策が考えられます。

一番簡単なのは、GIF 画像にしてしまうことでしょうか。

(04/06 2017; 04/07 2017 更新)
目次へ戻る

Q 2.5. 数式内の日本語が文字化けする/出ない

A 2.5.

可能性としては、以下のものが考えられます。

  1. 数式を画像化する時に作られる images.tex のファイルの漢字コードが platex が仮定しているものと違っている
  2. latex2html が内部で images.tex をコンパイルするときに platex ではなくて日本語化されていない latex を使っている
  3. できた images.dvi を EPS に変換する dvips が日本語化されてない
  4. できた PS ファイルを画像ファイルに変換する gs が日本語化されていない

なお、これを確認するには -debug オプションをつけて実行すると /tmp/l2hXXXX に eps ファイルや中間画像ファイルも残りますので、 それらも参考になると思います。

1. の場合は、インストール作業を見直して必要なら再インストールするか、 l2hconf.pm を手で修正する (platex に --kanji オプションをつけるか、 nkf のオプションの変更等) が必要になると思います。

2. の場合は、l2hconf.pm の $LATEX の設定を platex (日本語化されている latex) に変更する必要があると思います。

3. の場合は、日本語化されている LaTeX がインストールされていれば、 通常日本語化されている dvips もインストールされていると思いますが、 その実行ファイル名が「dvips」ではない場合があり、 その場合は l2hconf.pm のその名前を適切なものに変更する必要があります。

例えば Linux では、日本語化されていない dvips は dvips、 日本語化されている dvips は pdvips と 'p' がついた名前になっていることがあるようですし、 MS-Windows では、dvips は dvipsk にしないといけないようです。 また、VFlib を使ってビットマップ化する dvipsv というものもあるそうで、 それを使うという手もあります。

4. の場合は、gs の設定を見直すか、 日本語化されている gs を適切に l2hconf.pm に指定する必要があります。 また、最近の MS-Windows 版の gs (gswin32c) だと -dWINKANJI オプションをつける必要がある場合もあるようです。

なお、3. で dvips として dvipsv を使う場合は、 4. の gs の問題は起きないと思います。 逆に、dvipsk でうまくいかなくて、dvipsv でうまくいく場合は、 gs が日本語対応でないか、日本語が使える設定がされてない可能性があります。


(03/31 2016 更新)
目次へ戻る

Q 2.6. 数式内の日本語の最後が切れてしまうのですが

A 2.6.

dvips(k) のバージョンによってはそのようになることがあるようで、 5.95a p1.7 などがこれに該当するようです。 それより前の版か後の版の dvipsk を使用してください。

MS-Windows 版の W32TeX では、 dvipsk の代わりに dvipsv を使う、という解もあるようです。


(01/17 2016 更新)
目次へ戻る

Q 2.7. 地の文の数式 ($ で囲むもの) の画像のベースラインがうまく合いません

A 2.7.

LaTeX2HTML は、地の文の数式を画像にする際、 その数式に 'y' のようにベースラインよりも下につきぬける文字が入る場合は、 その画像に適当に下にスペースを追加して画像を作成し、 そのような画像を HTML では「align="middle"」で配置し、 そうでない数式はスペースを追加せずに画像化して 「align="bottom"」で配置します。

latex2html はそのようにしてベースラインが合うように 一応努力をしているのですが、 ブラウザ、およびそのフォントの設定によってはその align の設定があまり合わないようで、 ブラウザ毎の癖もあるので、完全に合わせるのは難しいでしょう。

CSS に詳しければ、CSS を使って多少はうまく調整ができるかもしれません。


(03/31 2016 更新)
目次へ戻る

Q 2.8. amsmath, amstex package を使うと画像変換の処理が変わるようですが

A 2.8.

そういう仕様です。

これは、AMS パッケージを使うということは、 たくさん色んな数式が出てくるだろうということを見越した仕様のようで、 例えば、display 数式環境内の \mbox{文字} のような部分も、 画像化されずにそのまま文字として出力されるようになります。

「LaTeX Web コンパニオン」によれば (3.3 節)、 いわゆるプロフェッショナルモードでの数式モードなんだそうですが、 私にはよくわかりません。


(03/31 2016 更新)
目次へ戻る

Q 2.9. 画像変換時に "Bad file descriptor" のように言われて失敗します

A 2.9.

これは画像の作成に失敗した場合に出る典型的なエラーです。 いくつかの要因が考えられますから、 まず問題となる箇所をつきとめることが必要です。

そのためには、-debug オプションをつけて latex2html を実行してください。 そうすると、中間画像ファイルが /tmp/l2hXXXX/ のようなディレクトリに残りますし、 画像生成時のコマンドラインも表示されます。その表示を見れば、 どのプログラムで問題が起きているか分かりやすいと思いますし、 また、中間画像を見れば、どこで問題が起きたかも調べやすいと思います。

それらを見て、

のいずれであるかを調べてみるといいと思います。 そして、どれが問題であるかわかったら、 画像生成時に実行されたコマンドを手動で実行してみると、 実際にどこに問題が起きているかわかると思います。

また、Netpbm が rgb.txt を見つけられない、 という場合もこのエラーが起きるようです。 latex2html は、pnmtopng などを使って透明化する場合、 色名 'gray85' を使って透明化を行う場合があります。 しかしその場合 (特に MS-Windows 環境の場合) 色名を参照できずに pnmtopng が失敗する場合があるようです。

その場合は、 RGBDEF という環境変数を rgb.txt があるディレクトリに設定するか、 そもそも rgb.txt がない場合は latex2html の配布物に含まれている rgb.txt を適当なディレクトリにコピーするか、 latex2html が色名 'gray85' を参照しないで済むように pstoimg (MS-Windows の場合は pstoimg.bat) に書かれている 'gray85' という文字列を RGB 形式の表現である '#d9d9d9' に変える、 などの対処を行えばいいでしょう。

また、MS-Windows 上で PATH 環境変数に C:\WINDOWS, C:\WINDOWS\system32 などが抜けていると images.tex の生成に失敗する場合があるようです。 それも確認してください。


(03/31 2016 更新)
目次へ戻る

Q 2.10. top_navigation_panel に javascript 行を入れても出てくれません

A 2.10.

確かに、

"<script language=\"javascript\" src=\"hoge\">" .
"</script>" .
のような行を、.latex2html-init の top_navigation_panel 等に追加しても、 消されてしまいます。

これは、中身のなさそうなタグを latex2html が消しているためで、

"<script language=\"javascript\" src=\"hoge\">" .
" </script>" .
のように「</script>」の直前にスペースを一つ入れるとか、
"<script language=\"javascript\" src=\"hoge\">" .
"<!-- --></script>" .
のように「</script>」の直前に コメント記号を入れてしまえば消えなくなります。

なお、

"<takeno></takeno>" .
のような 1 行で中身のないタグを書きたい場合は、 スペースを入れる対処はうまくいかないので、
"<takeno><!-- --></takeno>" .
のようにコメント記号のようなものを入れる必要があります。


(03/31 2016 更新)
目次へ戻る

Q 2.11. tabbing 環境の変換がうまくいきません

A 2.11.

latex2html で tabbing 環境を含む LaTeX ファイルを変換しても、 確かにあまりまともに tabbing 環境を再現するようには変換してくれません。 そもそも tabbing 環境に直接対応するものが HTML にないため、 latex2html は tabbing 環境の処理があまり得意ではありません。

代替策として、tabbing 環境の代わりに tabular 環境 + multicolumn を使う、 という手があります。 ただ、それは LaTeX のソースとしてあまり綺麗ではない、と思うのであれば、 \usepackage{html} を使って、tabbing 環境のソースを latexonly 環境内に、 tabular 環境で書き直したものを htmlonly 環境内に書くといいでしょう。

簡単な例を紹介します。

  \begin{tabbing}
    1st \= 2nd \= 3rd \= 4th \= 5th \= 6th \kill
    \> (1) 1 行入力する (暗黙の getline)\\
    \> (2) 現在行が「ア」の行かチェック\\
    \> \> (3) 「ア」ならば、その行を保存して\\
    \> \> (4) その行が「イ」であるかチェック\\
    \> \> \> (5) 「イ」ならば、次の行を取得し\\
    ...
  \end{tabbing}

このような tabbing 環境の場合、html パッケージを使用し、 tabbing 環境を latexonly 環境で囲み、 htmlonly 環境で tabular 環境と \multicolumn で代用したものを追加します。

  \usepackage{html}
  ...
  \begin{latexonly}
    \begin{tabbing}
      1st \= 2nd \= 3rd \= 4th \= 5th \= 6th \kill
      \> (1) 1 行入力する (暗黙の getline)\\
      \> (2) 現在行が「ア」の行かチェック\\
      \> \> (3) 「ア」ならば、その行を保存して\\
      \> \> (4) その行が「イ」であるかチェック\\
      \> \> \> (5) 「イ」ならば、次の行を取得し\\
      ...
    \end{tabbing}
  \end{latexonly}
  \begin{htmlonly}
    \begin{tabular}{lllll}
      \multicolumn{5}{l}{(1) 1 行入力する (暗黙の getline)}\\
      \multicolumn{5}{l}{(2) 現在行が「ア」の行かチェック}\\ 
      & \multicolumn{4}{l}{(3) 「ア」ならば、その行を保存して}\\
      & \multicolumn{4}{l}{(4) その行が「イ」であるかチェック}\\
      && \multicolumn{3}{l}{(5) 「イ」ならば、次の行を取得し}\\
      ...
    \end{tabular}
  \end{htmlonly}

(03/31 2016 更新)
目次へ戻る

Q 2.12. 数式の位置合わせがうまくいきません

A 2.12.

地の文の数式の上下の位置合わせについては、 「Q.2.7. 地の文の数式 ($ で囲むもの) の画像のベースラインがうまく合いません」 を参照してください。 ここでは、 数式環境 (equation 環境、displaymath 環境、eqnarray 環境) に関する左右の位置合わせについて説明します。

標準的な数式環境である displaymath 環境 (\[ \])、equation 環境、 eqnarray 環境、eqnarray* 環境 (eqnarray 環境で数式番号なし) は、 LaTeX ではいずれもセンタリングされ、 \documentclass に fleqn オプション (数式左揃え) を指定した場合は LaTeX ではいずれも左端にマージン (余白) が少し入って左揃えになります。

一方、デフォルトの latex2html では、 それらの環境はいずれも通常はセンタリング、 fleqn の場合は、HTML 4.0 では以下のようになります。

HTML 4.0 以外や math.pl を使うとさらに変わる場合もありますが、 いずれも不統一で LaTeX とはだいぶ異なります。

そのため、latex2html の 日本語化パッチでは、 初期設定ファイル内で設定する「$USEFLEQNINDENT=1;」 というオプションが追加されていて、 これを指定すると、 fleqn の場合は上記すべての環境で 左端にマージンを入れた左揃えになります。 ただし、以下のような問題もあります。

なお、この挙動は今後も変更するかもしれません。


(03/31 2016)
目次へ戻る

Q 2.13. figure 環境の図番号が出ないものがあります

A 2.13.

\caption の中に \bar, \sin, \cos, \mbox, \boldmath 等の数式などが入っている場合、 それは .aux ファイルで展開されてしまうために番号が正しく参照されず、 \ref でその図番号を指定した場所に番号が表示されないことがあります。

この場合は、\caption 内でそれらの命令の前に \protect を置いて .aux ファイルで展開されないようにすると解決します。 例えば、

\caption{$\sin\theta+\cos\theta$ のグラフ}
という caption は、
\caption{$\protect\sin\theta+\protect\cos\theta$ のグラフ}
のように変更します。


(03/31 2016)
目次へ戻る

Q 2.14. includegraphics で取りこむ EPS ファイルの斜線パターンが LaTeX2HTML での変換後に斑点状になってしまうのですが

A 2.14.

Tgif で作った EPS ファイルなどの場合にそういうことが起こります。 Tgif は実際には斜線を書いてるのではなく小さい正方形を並べて書いていて、 それで latex2html が呼び出す pstoimg で拡大縮小されると、 斜線パターンが崩れてしまうようです。

原理的にうまく対処するのは難しいようなので、 とりあえず latex2html にかけるときは、 斜線パターンではなく、色でのベタ塗りにしてみたらいかがでしょうか。 \usepackage{html} で \latexhtml 命令を使えば、 LaTeX にかける場合と latex2html にかける場合の画像を 別なものに指定できます。例:

...
\usepackage{html}
\begin{document}
\begin{figure}
 \includegraphics{\latexhtml{fig-for-latex.eps}{fig-for-l2h.eps}}
...

(03/31 2016)
目次へ戻る

Q 2.15. MS-IE (Internet Explorer) で真っ白なページが表示される場合がある

A 2.15.

以前の latex2html では、 META タグによる charset 指定の前に TITLE タグに日本語が含まれているとそのようになる場合があったようです。

日本語化パッチでは、 l2h-2K8-jp1.10b2.10, l2h-2K8-jp2.1b1.10 (l2h-2K8-jp20100309) 以降はその問題は修正されています (by 鷹合@金沢工大さん)。


(03/31 2016)
目次へ戻る

Q 2.16. MS-Windows 上で「'which' が認識されてません」とかいうエラーが出ますが

A 2.16.

これは、MS-Windows 上の LaTeX2HTML で \usepackage{graphicx} を使用している LaTeX ファイルを処理すると起きるようで、 画像変換用の外部コマンドを探すための「Unix のコマンド」である which を使っているために起きる問題です。

l2h-2K8-jp1.10b2.13, l2h-2K8-jp2.1b1.13 (l2h-2K8-jp20110708) 以降はその問題は修正されていますが、 それ以前のバージョンでは以下のようにするといいでしょう。


(03/16 2016)
目次へ戻る

Q 2.17. ディスプレイ数式内で \ref コマンドを使用するとおかしくなる

A 2.17.

以前のバージョンでは、

\[
\mbox{(\ref{eq1})}' = \frac{1}{3}
\]
のようなものを latex2html に変換させると後ろの分数がおかしくなりました。 これは、通常の数式なら画像変換するための LaTeX ファイル (images.tex) にはこのまま書きだされるのですが、 \ref が含まれている場合は「% latex2html id marker ...」 というコメント行をつけていて、 それが空行を一行作ってしまうためのようです。 LaTeX ではディスプレイ数式環境 (\[ \]) 内では空行は許されていませんので、 そういう問題が起こります。

l2h-2K8-jp1.10b2.13, l2h-2K8-jp2.1b1.13 (l2h-2K8-jp20110708) 以降はその問題は修正されていますが、 それ以前のバージョンでは、latex2html を編集して 3400 ~ 3500 行付近にある

$contents = "\n% latex2html id marker $id\n$contents" if
という行を
$contents = "\n% latex2html id marker $id $contents" if
に直せばいいでしょう (後ろの \n をスペースに変える)。


(03/31 2016)
目次へ戻る

Q 2.18. tabular 環境の \hline, \cline の指定、無指定が反映されない

A 2.18.

LaTeX の罫線の方が HTML の TABLE の罫線よりも高機能なので、 全てを HTML で再現するには原理的に無理があります。 \usepackage{html} のもとで makeimage 環境で囲んで 画像化するのが楽な解決法でしょう:

\usepackage{html}
...
% html パッケージの makeimage 環境で囲む
\begin{makeimage}
\begin{tabular}{|c|c|}\hline
  a & b \\
  c & d \\ \hline
\end{tabular}
\end{makeimage}
これなら LaTeX の結果と同じものが得られます。

または、l2h-2K8-jp1.10b2.13, l2h-2K8-jp2.1b1.13 (l2h-2K8-jp20110708) 以降に導入されている $TDADDOPT (= TD タグへの追加オプション定義), $THADDOPT (= TH タグへの追加オプション定義) を利用して、 CSS と背景色を用いて、擬似的にそのようなものを実現することも可能です (が、少し面倒です):

\usepackage{html}
\newcommand{\celi}{\HTMLset{TDADDOPT}{CLASS="celgrp1"}}
\newcommand{\celii}{\HTMLset{TDADDOPT}{CLASS="celgrp2"}}
\newcommand{\celiii}{\HTMLset{TDADDOPT}{CLASS="celgrp3"}}
\newcommand{\celiv}{\HTMLset{TDADDOPT}{CLASS="celgrp4"}}
...
\begin{tabular}{|c|c|}\hline
\celi a & \celii b \\
\celi c & \celii d \\ \hline
\celiii e & \celiv f \\ \hline
\end{tabular}
\htmlsetstyle[TD]{celgrp1}{background-color=#ffccff}
\htmlsetstyle[TD]{celgrp2}{background-color=#ffffcc}
\htmlsetstyle[TD]{celgrp3}{background-color=#ccffff}
\htmlsetstyle[TD]{celgrp4}{background-color=#ffffff}
最初の \newcommand 部分は、 TDADDOPT を使って table タグの各要素に背景色毎のクラスを定義します。 tabular 環境では、各要素にその背景色を定義するマクロを色毎に追加し、 最後に CSS 定義を吐き出すための \htmlsetstyle を実行していて、 各クラスに実際の色を割り当てています。 もちろん、CSS ファイルは LaTeX ファイルとは別に直接書いても構いません。


(03/16 2016)
目次へ戻る

Q 2.19. \ref のところが節番号等でなくて四角い画像 (crossref) になる

A 2.19.

.aux ファイルがないときにそのようになることがあるようです。 latex2html にかける前に、latex でコンパイルして適切な .aux を作ってください。


(09/08 2011)
目次へ戻る

Q 2.20. \hspace で余白を空けたところが HTML では反映されない

A 2.20.

状況によって色々対処は違いますし、 CSS を使うのがエレガントなのでしょうが、 場当たり的な方法としては以下のようなものがあります:

\usepackage{html}
\newcommand{\mysp}{\latexhtml{\hspace{2zw}}{  }}
% 空白に見えるところは実際には全角スペース 2 つを書く↑
これでスペースを空ける場所に \mysp として使えば、 LaTeX では \hspace{2zw} に、 latex2html では全角スペース 2 つに展開されます。


(03/31 2016 更新)
目次へ戻る

Q 2.21. section に書いた数式が見出しに出ない

A 2.21.

\section の文字列は、各ページ上部にリンク先のタイトルとして使われますが、 そこに数式があるとその部分だけ抜けてしまいます。 この場合、html パッケージの元 \latexhtml を用いて、 数式環境で囲まない文字列を使ったセクションタイトルを使用するといいでしょう:

...
\usepackage{html}
\begin{document}
\section{\latexhtml{$\sin x$}{sin x} の微分}
...
累乗や添字のように、HTML の SUP, SUB タグで実現したい場合は、 以下のように \HTMLcode を用います。例えば、
...
\usepackage{html}
\begin{document}
\section{\latexhtml{$x^n$}{x\HTMLcode{SUP}{n}} の微分}
...
のようにすると、 後者は latex2html では「x<SUP>n</SUP>n」に展開されます。


(03/31 2016)
目次へ戻る

Q 2.22. jarticle に対応していないようなメッセージが最後に出る

A 2.22.

「No implementation found for style `jarticle'」と出るのだとしたら、 それは latex2html の日本語化パッチのインストール時の作業で 失敗している可能性があります。

latex2html のインストール先の styles/ というディレクトリ内に、 jarticle.perl というファイルがないとそうなります。 latex2html の日本語化パッチ付属のドキュメント通りに latex2html を展開したディレクトリ内で日本語化パッチアーカイブを展開すると、 jarticle.perl が等そこに入るようにインストールされるのですが、 そうでないと jarticle.perl 等がインストールされない場合があります。 その場合は、日本語化パッチアーカイブの styles/ 以下のファイルを、 すべて latex2html のインストール先の styles/ ディレクトリ内にコピーしてください。


(08/23 2016)
目次へ戻る

Q 2.23. graphicx に対応していないようなメッセージが最後に出る

A 2.23.

\usepackage{graphicx} とした LaTeX ファイルを latex2html にかけた際に、 「No implementation found for style `graphicx'」と出るのだとしたら、 それは現在の latex2html の仕様 (バグ) で、動作には問題はありません。

現在の latex2html では、graphicx style ファイルに対応する graphicx.perl を使用する代わりに graphixx.perl を使用していて、そのためそのようなメッセージが出ます。 ただ、あまり望ましいことではありませんので、 日本語化パッチ jp1.10beta2.16, jp2.1beta1.16 (08/26 2016) 以降ではその警告が出ないように修正してあります。


(08/23 2016; 08/26 2016 修正)
目次へ戻る

Q 2.24. 「Unescaped left brace in regex ...」のメッセージがかなり出る

A 2.24.

latex2html は Perl スクリプトなのですが、 Perl の仕様が一部 perl 5.22 (あたり) から変わってしまいました。 このメッセージはそれに伴うもので、 使用している perl のバージョンが 5.22 (あたり) 以降の場合に起きる現象です。

latex2html-20172 以降は、その問題に合わせた修正が入っていますので、 この現象は起きないのですが、 日本語化パッチはまだ latex2html-2017 に対応していません。 それまで、もう少しお待ちください。

または、そのメッセージに示されているスクリプト (latex2html, versions/html4_0.pl 等) の指定行番号のところにある正規表現の「{」「}」を、 自分で「\{」「\}」に書き直すという手もあります。
(07/03 2017 修正)
目次へ戻る


Q 2.25. \scriptsize を使ったら変になる

A 2.25.

例えば \scriptsize を使ったあと、 \normalsize を書いても文字サイズが元のサイズに戻らない、 といったことが起きるのですが、これは latex2html のバグです。 問題箇所は把握していますので、 少なくとも日本語化パッチではその内に修正したいと思います。

なお、\small や \footnotesize では問題は起きませんので、 とりあえずはそれらで回避してください。
(07/12 2017 修正)
目次へ戻る


Q 2.26. 画像化した数式が綺麗になりません (アンチエイリアスされない)

A 2.26.

7.07 (以前 ?) の Ghostscript を使っている場合は、 gs による画像変換時のアンチエイリアス化がうまく効かないようです。 9.X の Ghostscript を使用してください。

または、日本語化パッチの jp1.10beta2.18, jp2.1beta1.18 以降に 試験的に導入されている -dresolution オプション (詳しくは付属文書 README.tech.jp 参照) を使用して「-dresolution 144」のように指定するといいかもしれません。

以下にサンプルを示します。いずれも l2h-2017-jp2.1beta 1.18 での結果です。


(03/28 2018 修正)
目次へ戻る

Section 3. オプションについて、あるいはこのような動作をさせたいとか


Q 3.1. '~' を表示させるにはどうしたら良いですか

A 3.1.

単に LaTeX 上で表示させるなら、\~{} のような手もありますが、 これだと latex2html にかけるときれいには出ません。 正しくは、\textasciitilde を使います。

なお、latex2html に付属する url.sty というパッケージに用意されている \url というマクロを使えば、その中に「~」や「_」を含む URL をそのまま書くことができます:

...
\usepackage{html}
\usepackage{url}
\begin{document}
...
\begin{itemize}
\item URL: \url{http://takeno.iee.niit.ac.jp/~shige/test_site/}
...
URL の表示がタイプライタ体になり、 長い URL はそれなりに改行も適切に行われますし、 LaTeX, latex2html のいずれの出力も「~」や「_」がちゃんと表示され、 さらに latex2html の出力ではその URL へのリンクも生成してくれます。

ただし、\url も完全ではなく、 「%」が含まれる URL にはうまく対応していないようで、 LaTeX では「%」をそのまま書くのが正解、 latex2html では「\%」と書くのが正解となっているようです。


(03/16 2016)
目次へ戻る

Q 3.2. CJK package の latex ファイルを処理できますか

A 3.2.


(03/16 2016)
目次へ戻る

Q 3.3. 生成されるファイル名を node[数字].html から変更するには

A 3.3.

児玉@神戸高専さんが以下のページでその方法を紹介しておられます。

具体的には、以下のようにするようです (詳細は上のサイトを参照)。

なおこの方法の場合、 latex2html ではファイル名を 27 文字より長く指定してしまうと それを越えた分が切られてしまう仕様になっています。 もし、その制限を取りたい場合は、 latex2html 本体の中で定義されている関数 &make_name() の中の

#ensure no more than 32 characters, including .html extension
$title =~ s/^(.{1,27}).*$/$1/;
の部分をコメントアウトしてください。


(03/31 2016)
目次へ戻る

Q 3.4. 出力される HTML ファイルの日本語コードを指定したいのですが

A 3.4.

まず、日本語化パッチは、現在は 2 系統あります。

よって、コードを指定する場合は基本的に jp1.X 系統の日本語化パッチを使用することになると思います。

そして、それを当てた latex2html では、 生成する HTML ファイルの日本語コードを指定するオプション -lang が追加されています。

これらにより、HTML ファイルのコードが変換されるだけでなく、 例えば -lang=euc の場合は、

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
のようなコードを指定した行も HTML ファイルのヘッダに書き出されます。 逆に、このような行のため、 その後で HTML ファイルを latex2html とは別にまたコード変換をしてしまうと ブラウザでは日本語が文字化けしてしまうので注意してください。

なお、初期化ファイル (~/.latex2html-init) で

$REQUIRE_LANGUAGE="jis";
と書いておけば、デフォルトが「-lang=jis」としたのと同じ状態となります。


(03/31 2016)
目次へ戻る

Q 3.5. 日付や変換者名のカスタマイズの方法を教えてください

A 3.5.

latex2html の日本語化パッチに付属する README.tech.jp に詳しく書いてありますが、 状況は少し厄介です。

まず変換者名ですが、これは 2 種類あり、

は別々に設定されています。日付も同様で、

が別々に設定されます。

このうち、各ページの一番下に書かれる [a1],[d1] は、 「$ADDRESS」という変数で参照されますので、 初期化ファイル (~/.latex2html-init) でそれを書き換えることでカスタマイズ可能です。 例えば、初期化ファイルで、

$USEJAPANESESEIREKI=1;
$USEBOTTOMLOCALDATE=1;
&do_require_package("japanese");
$address_data[0]="竹野茂治";
$ADDRESS = "<i>$address_data[0]<br>\n$address_data[1]</i>";
のように書くと、[a1] は斜体で「竹野茂治」と表示され、 [d2] も斜体で「2016年3月22日」のように表示されます ($address_data[1] = 日付)。 上の設定の場合は、原則 [d1]=[d2]=[d3]、[a1]=[a2] となります。

さらに細かいカスタマイズをしたい場合は、 README.tech.jp をご覧ください。

なお、変数 $ADDRESS の値 ([a1] と [d1]) は、 コマンドラインオプションの -address でも指定できます。


(03/22 2016)
目次へ戻る

Q 3.6. HTML ファイルの背景色を変えたいのですが

A 3.6.

個人用の初期設定ファイル (~/.latex2html-init) に

$BODYTEXT = 'bgcolor="#e0ffff"';
のようなものを書いてください。

また、セクション毎 (HTML のページ毎) に色を変えたい場合は、 html パッケージの元で使用できる \bodytext コマンドで行えます:

\begin{document}
\section{赤いセクション}
\bodytext{bgcolor="#ffcccc"}
「赤い」という形容詞はある。
\section{青いセクション}
\bodytext{bgcolor="#ccccff"}
「青い」という形容詞もある。
\section{緑のセクション}
\bodytext{bgcolor="#ccffcc"}
「緑い」という形容詞はない。
\end{document}
なお、この方法では、latex2html が自動的に最後に付加する 「この文書について」のセクション (section* として扱われる) の色を指定することはできず、 最後のセクションの色がそのまま引き継がれます。 その色も指定する場合は、初期設定ファイルに以下のような infopagehook の設定を入れます (l2h-2K8-jp1.10b2.10, l2h-2K8-jp2.1b1.10 (l2h-2K8-jp20100309) 以降):
sub infopagehook {
   $BODYTEXT = 'bgcolor="#ffffff"';
}

(03/22 2016)
目次へ戻る

Q 3.7. 特定の画像だけサイズを変更したいのですが

A 3.7.

\usepackage{html} すると使える \htmlimage コマンドは、 生成される画像のサイズなどを画像化される環境毎に制御します。 よって、その画像が figure 環境などにある場合は、 その figure 環境内のどこか適当なところに \htmlimage コマンドを入れればいいでしょう。

\htmlimage は、\htmlimage{width=7cm} や \htmlimage{scale=1.2} のようにオプションを指定します。可能な指定は以下の通りです。

詳しくは、「Q 4.1. LaTeX2HTML の日本語のマニュアルなどはありませんか」 でも紹介している LaTeX2HTML 付属のマニュアルか、「LaTeX Web コンパニオン」をご覧ください。


(03/31 2016)
目次へ戻る

Q 3.8. CSS ファイルを LaTeX ファイルから設定する方法について教えてください

A 3.8.

latex2html は、HTML を出力する際デフォルトの .css ファイルも作りますが、 html パッケージを使用すれば、コマンド \htmlsetstyle, \htmladdtostyle, \HTMLcode などによって LaTeX ファイルの中から CSS に関する設定を行うことができます。 これらは、「Q 4.1 LaTeX2HTML の日本語のマニュアルなどはありませんか」 で紹介している「LaTeX Web コンパニオン」にも書かれています。

例えば

\htmlsetstyle[DIV]{displaymath}{color:red}
とすると、.css には
DIV.displaymath { color : red }
が書き出されます。なお、value 部分は '=' を ':' に変換してくれますので、
\htmlsetstyle[DIV]{displaymath}{color=#ff00ff}
のような書き方も可能ですし、複数行定義することもできるようです。

ただ、例えばセクションタイトル部分の背景色を設定するために

H1 { background-color : #ffccff }
を .css に書き出したい場合は、単に class 部分を省略して
\htmlsetstyle[H1]{}{background-color=#ff00ff}
とすると、tag 部分が「DIV」となって
DIV.H1 { background-color : #ffccff }
となってしまいますので、
\htmlsetstyle[H1.]{}{background-color=#ff00ff}
とする必要があります。

環境単位で .css の記述を適用させるためのクラスを定義、設定するには、 「LaTeX Web コンパニオン」に書かれているように html パッケージのもとで

\begin[myclass]{eqnarray}
...
のように環境の \begin 部分にオプション引数を与えます。 そうすると、HTML ファイルではその環境に対応する部分に 「CLASS="myclass"」がつき、 .css には「DIV.myclass { }」のような行が追加されます (DIV. になってしまうのはある種のバグ)。

もう少し小さい単位で適用させるクラスを定義、設定する場合は、 \HTMLcode コマンドを利用します。例えば、

\texttt{hoge}
という部分に SPAN タグを使用して mytt クラスを設定するには、 それを
\HTMLcode[class="mytt"]{SPAN}{\texttt{hoge}}
のように書けばいいようです。これは latex2html によって
<SPAN CLASS="mytt"><TT>hoge</TT></SPAN>
のように展開されますので、 適当な場所で「\htmlsetstyle[SPAN]{mytt}{...}」によって .css に必要なプロパティを書き出せばいいわけです。 なお、上のような \HTMLcode をいちいち書くのは面倒なので、 通常はマクロを利用することになるでしょう。

なお、従来の latex2html は、\TeX, \LaTeX, \latextohtml 等のロゴに関する CSS 用のクラスの定義や CSS 出力におかしなところがありましたが、 l2h-2K8-jp1.10b2.10, l2h-2K8-jp2.1b1.10 (l2h-2K8-jp-20100309) 以降は多少修正されています。


(03/31 2016)
目次へ戻る

Q 3.9. 目次のページから各セクションへのページへのリンクに frame target をつけることはできませんか

A 3.9.

初期化ファイルに

$target = "contents";
を入れておくと、 html ファイルへのリンク (目次、ヘッダやフッタのナビゲーション) の部分が
<A NAME="tex2html1" HREF="node2.html">...</A>
から、
<A NAME="tex2html1" target="contents" HREF="node2.html">...</A>
となります。

この a タグの target 指定は、 指定した名前のフレームに表示させることを意味しますので、 目次のページを残したまま、 もう一つのページに各セクションのページ内容を 表示させることができるようになります。


(03/22 2016)
目次へ戻る

Q 3.10. -title 指定で直接 HTML のタグを使用したい

A 3.10.

残念ながら latex2html の -title で指定した文字列からは、 SUB, SUP (大文字のみ、小文字は不可) 以外のタグは削除されてしまいます。 逆に SUB, SUP だけは直接指定できます。


(03/31 2016)
目次へ戻る

Q 3.11. 日本語化パッチを当てた latex2html で日本語を使わない HTML を作れますか

A 3.11.

作れます。 基本的には、 documentclass で日本語用のクラスファイル (jarticle 等) を使用しなければ、 オリジナルの仕様 (英語版) の latex2html の出力になります。

ただし、初期化ファイル (~/.latex2html-init) があり、 その中で日本語用の設定が使用されていると それにより日本語が含まれてしまう可能性があります。 その場合、-init で英語用の初期化ファイル (例えば l2h-en-init とする) を指定して読み込めばいいのですが、 -init を指定してもデフォルトでは ~/.latex2html-init が存在するとそれが先に読み込まれてしまい、 そのために日本語が残ってしまう場合もあります。

それを防ぐには、環境変数 L2HINIT_NAME を 英語用の初期化ファイル名に設定してから latex2html を実行します:

setenv L2HINIT_NAME l2h-en-init
# csh 系の場合。sh 系, bash の場合は
# L2HINIT_NAME=l2h-en-init ; export L2HINIT_NAME
latex2html file.tex
こうすれば -init を指定する必要もありません。

なお、latex2html は、L2HINIT_NAME で設定したファイルを、 まずホームディレクトリで探し、 それがなければ次にカレントディレクトリで探して読み込もうとしますので、 そのファイルはホームディレクトリかカレントディレクトリに置けばいいです。 上記の作業をシェルスクリプトにすれば楽に実行できるようになるでしょう。


(03/31 2016)
目次へ戻る

Q 3.12. なるべく画像に変換しないようにするには

A 3.12.

まず数式 (地の文の数式、およびディスプレイ環境等の数式) については、 math モジュールをロードするように、 「-html_version 4.0,math」というオプションを使ってください (4.0 は別バージョンでも可)。 -nomath というオプションを併用してもいいでしょう。 上付き、下付きも SUP, SUB タグで表現されるようになります。

また、ギリシャ文字 ($\alpha$ 等) については、 以下のいずれかのように画像化させない方法があります。

  1. 全角文字のギリシャ文字を使う (\latexhtml を用いて場合分けした LaTeX ファイルにする)
  2. Unicode のコード参照 (entity) を使用する
  3. unicode.pl の代用を初期化ファイル (~/.latex2html-init) に書く

1. の方法は、以下のようにする方法です。

\usepackage{html}
\begin{htmlonly}
 \renewcommand{\alpha}{α}
 \renewcommand{\beta}{β}
 \renewcommand{\gamma}{γ}
\end{htmlonly}
これで通常のように \alpha 等を使用し、 latex2html で変換する際に「-html_version 4.0,math」とすると ギリシャ文字の画像変換が行われず、日本語の全角文字のα等で表現されます。

2. の方法は、上の renewcommand を以下のようにします。

\usepackage{html}
\begin{htmlonly}
 \renewcommand{\alpha}{\symbol{945}}
 \renewcommand{\beta}{\symbol{946}}
 \renewcommand{\gamma}{\symbol{947}}
\end{htmlonly}
こうして、1. と同様に「-html_version 4.0,math」とすると、 今度はギリシャ文字部分が HTML の 16 進コード参照形式 (unicode entity 表記) である「&#945;」等に置き換わります。 コード番号については、Unicode のコード表を参照してください。 latex2html に付属する versions/unicode.pl にもその表があります。

3. の方法は、この versions/unicode.pl と同等の処理を行うもので、 上記の LaTeX 命令に対応する以下のような entity の表を作成し、 それを初期化ファイル ~/.latex2html-init に書き込むか、 あるいは書いたファイルを -init オプションで読み込みます:

%iso_2022_jp_character_map =
%EUC_JP_character_map =
%Shift_JIS_character_map = (
  'alpha' => '&#945;',
  'beta' => '&#946;',
  'gamma' => '&#947;'
);
%iso_2022_jp_character_map_inv =
%EUC_JP_character_map_inv =
%Shift_JIS_character_map_inv = (
  '&#945;' => '\\alpha ',
  '&#946;' => '\\beta',
  '&#947;' => '\\gamma '
);
この場合は、LaTeX ファイルの変更は必要ありません。 これで「-html_version 4.0,math」(必要なら -init でそのファイルを読み込む) とすると、やはり \alpha 等が 16 進の「&#945;」等に置き換わります。

なお、2. の \symbol の展開は、 以前の LaTeX2HTML では 10 進は 3 桁、 8 進指定は 3 桁までしかサポートしておらず、 しかも 16 進指定 (2 桁) の場合にはバグがありましたが、 l2h-2K8-jp1.10b2.13, l2h-2K8-jp2.1b1.13 (l2h-2K8-jp20110708) 以降ではその問題は修正されています。


(03/31 2016)
目次へ戻る

Q 3.13. 式番号表示を LaTeX2HTML でカスタマイズしたいのですが

A 3.13.

latex2html では、\usepackage{html} を使用すれば、 $EQNNO_START と $EQNO_END で 数式番号の表記を変更できるようになっています。 例えば、「(1)」を「【数 1】」のように変えたい場合は、

\HTMLsetenv{EQNO_START}{【数 }
\HTMLsetenv{EQNO_END}{】}
のようにすればいいのですが、 実際には表示が縦にくずれたような表示になってしまいます。それは、 table 環境で実装されている式番号の幅が固定長になっているからなのですが、 それは、latex2html の日本語化パッチでは $EQNO_WIDTH で変更できます (l2h-2K8-jp1.10b2.13, l2h-2K8-jp2.1b1.13 (l2h-2K8-jp20110708) 以降)。

よって上の設定に合わせて、例えば

\HTMLsetenv{EQNO_WIDTH}{10\%}
を追加すればうまくいきます。


(03/24 2016)
目次へ戻る

Q 3.14. LaTeX2HTML のオプションに関する説明は何を見ればいいですか

A 3.14.

latex2html のコマンドラインオプションの説明に関しては、 元々以下の 3 種類のものが配布物に含まれています。

  1. LaTeX 形式の詳細なマニュアル (docs/*)
  2. roff 形式のマニュアル (latex2html.1)
  3. perl pod 形式のマニュアル (latex2html.pin 本体の最後に含まれる)

1. は、自前で docs/ ディレクトリで make して作成するもので、 dvi にしてプレビューしたり印刷したり、PDF ファイルにしたりできます。 ただし、あまり更新されておらず、 latex2html 本体と合わない部分もかなりあります。 実際、latex2html-2016 に実装されているオプションのいくつかは、 docs/ のマニュアルには記載されていません。

2. は、Unix で標準的なコマンド「man latex2html」 でマニュアルを見るためのもので、 latex2html.1 というファイルはありますが、 デフォルトでは 1. と同様インストールはされませんので、 手動で適切なディレクトリにインストールする必要があります。 ただし、これもあまり更新されておらず、 latex2html-2016 に実装されているオプションのいくつかは、 説明がありません。

3. は、latex2html -h (または -help) で表示されるものですが (環境によってはあまり正しく表示されません)、 使用している latex2html のオプションをこれが一番反映しています。 ただし、そのいくつかのオプションには説明がなく (MISSING_DESCRIPTION となっている)、 またごく新しく追加されたオプション (-xbit, -ssi, -php) の記述はやはりありません。

ということで、現在の latex2html (2016) のコマンドラインオプションのすべてを説明しているドキュメントは、 残念ながら現在はありません。

この状況はよくありませんので、 上の中では一番新しくて修正が少なくて済む 3. を日本語化し、 説明が抜けている部分については説明を追加することを現在検討しています。
(07/06 2017)
目次へ戻る


Q 3.15. -split, -link の仕様がよくわかりません

A 3.15.

-split, -link は確かによくわかりにくいものの一つです。 docs/ 以下にあるマニュアルにはある程度説明があるのですが、 それ、および実験結果などを元に簡単に説明します。

まず、split は、どのレベルのセクションで作成する HTML ファイルを個別のファイル (node*.html 等) に分割するかを指定するオプションで、 link は、その個別の HTML ファイルに、 別のセクションへのリンクをどのレベルで入れるかを指定するオプションです。 それぞれ、以下のように指定します。

そして、この絶対的なレベル sa、相対的なレベル sr、 リンクするレベル lr の意味はそれぞれ「違っている」 ことに注意してください。 まず、latex2html では、セクションの絶対レベルを以下のように設定しています。

  1. part
  2. chapter
  3. section
  4. subsection
  5. subsubsection
  6. paragraph
  7. subparagraph
(なお、マニュアルには subsubparagraph が 8 と書かれているのですが、 latex2html-2016 ではその定義はありません)

この数値が「-split sa」の sa として指定する値で、 その指定された値を越えるレベルのセクションは、 個別のファイルには分割されず、一つの HTML ファイル内にまとめられます。 例えば、「-split 5」と指定すると、part(1) や chapter(2), section(3), subsection(4) は個別の HTML ファイル (node*.html) に分割されますが、 subsubsection より大きいレベル値のセクションについては、 それ用の個別の HTML ファイルは作られなくなり、 subsection の HTML ファイルの中に subsection のセクション名と本文、 そしてその下の subsubsection のセクション名と本文、等が書かれます。 part や chapter がない場合で、この「-split 5」の絶対指定の場合には subsection(4) までしか個別の HTML ファイルには分割されません。

「-split sa」は、 HTML ファイルへの分割を固定したレベルで設定できるメリットはありますが、 文書クラス (article, report, book) によらず固定レベルになるので、 大きい文書クラスでは HTML ツリーが深くなってしまう可能性があります。

一方「-split +sr」の sr は相対的な数値で、 これは文書内の最上位レベル (レベル値の最小値) のセクションに対する相対値になります。 例えば、文書内の最上位セクション (最小レベル値のセクション) が section(3) であるとき、 「-split +2」とすると、これは「-split 5」(3 + 2 = 5) と指定したことと同じになり、 文書内の最上位セクションが chapter(2) であれば、 「-split +2」は「-split 4」と指定したことと同じになります。

この「-split +sr」によって、 どのようなセクション分けを行っていても、 HTML ツリーが指定値以上に深くならないようにできます。 ただし、どのセクションレベルまで分割されるかは、 文書の最上位レベルがなんであるかによって変わってしまうため、 文書構造によって分割されるセクションレベルが変わってしまい、 統一性が失われるというデメリットもありますので、 これらは適宜使い分ける必要があるでしょう。

なお、-split 0、あるいは -split +0 とした場合は、 node*.html へのセクション分割は一切行われず、 基本的には全体が一つの HTML ファイル (index.html) になり、 その中にセクション名や本文がすべて書かれます。

一方、-link は、作成される HTML ファイル (index.html, node*.html) に、 その下のレベルのセクションの目次やリンクをつけるためのオプションです。 例えば、以下にある「Subsections」等のリンクの一覧 (小目次) がそれです。

なお、後者は、セクションというよりはタイトルページにあるリンクですが、 これも、少し挙動は違いますが、ほぼ同様のものです。

これらのリンクの一覧 (小目次) は、 その HTML ページの下 (レベル値は上) のレベルのセクションへのリンクになっています。 -link オプションには、このリンクの一覧を、 「どれくらい下のレベルまで作るか」を指定します。 例えば、「-link 1」とすると、 section 用の HTML ファイル (node*.html) では、 1 段の subsection までのリンクの一覧を作り、 subsection 用の HTML ファイルでは、 1 段の subsubsection までのリンクの一覧を作ります。 「-link 2」の場合は、section 用の HTML ファイルで、 上のタイトルページのリンク一覧のように、 2 段レベルの subsubsection までのリンク一覧を作ります。

つまり、この lr の値は各 HTML 毎に相対的な値であることになります。 もちろん、指定値より深いセクションがなければそこまでのリンクは作りません。

この -split, -link のデフォルト値は、 標準的な l2hconf.pm では 8 に設定されていて、 よって subparagph までのすべてのセクションを個別の HTML ファイルに分割し、 subparagraph までのすべてのリンクの一覧を作ることになりますが、 これらの初期値は、個人用の初期設定ファイル (~/.latex2html-init) 内で

$MAX_SPLIT_DEPTH = sa;
$MAX_SPLIT_DEPTH = -sr; # + でなく -
$MAX_LINK_DEPTH = lr;
のように書くことで、それぞれデフォルト値を上書きできます。 ただし「-split +sr」は、 初期化ファイル内ではオプションとは違い + ではなく、- で指定します。

なお、例えば「-split=5 -link=2」などの場合、subsubsection の分割は行われず、 一つの subsection の HTML ページの中に subsubsection も書かれますが、 その場合もそのページにリンク一覧が作られ、 ページ外へのリンクではなく「ページ内リンク」が貼られます。 この場合 section に対する HTML ページは単独ページなので、 そこに作られるリンク一覧は「ページ外リンク」になります。 これらの「ページ外リンク」と「ページ内リンク」では、 リンク一覧の置かれる場所が変わり、 「ページ外リンク」の方は文書の最後、 つまり section 本文が書かれた後にその下にリンク一覧がつきますが、 「ページ内リンク」の方は文書の最初、 つまり一番上にページ内リンクの一覧があって、 その下に subsection 以下の本文が書かれるようになります (実は、docs/ 以下のマニュアルにはここの部分の記載に誤りがあります)。

ただし、全体が 1 ファイルになる状態の場合は、 そのリンク一覧はもちろん「ページ内リンク」なのですが、 この場合のみ、その「ページ内リンク」は上ではなく下に置かれます。 タイトルより先にくるのは適切ではない、ということでしょうか。

なお、以下の本文以外のページに関しては多少例外的な扱いがされています。

最後に問題点を 2 つ紹介します。 実は latex2html-2016 では、-link の方も -split のように +n のような指定が可能になっているのですが、 こちらは -split とは違い、n と指定した場合と変化はないようです (実際の内部処理は両者では違いがあるのですが、 その違いがどの場合に起こりうるかはよくわかりません)。

また、例えば section 以下のレベル (レベル値は上) のセクションしかない場合、 「-split 1 -link 5」と「-split 2 -link 5」ではどちらも 1 ファイルの HTML ファイルができ、本来違いはないはずなのですが、 前者では作成される HTML ファイルにリンク一覧がつかず、 後者にはリンク一覧がつきます。 これは多分バグで、後者が正しい結果です。-split 0 も 1 と同様です。 バグの箇所も把握していますので、 そのうちに修正する予定です。
(07/12 2017; 07/14 2017 修正)
目次へ戻る


Q 3.16. -ps_images の場合「[IMAGE png]」と表示されるが「ps」なのでは

A 3.16.

-ps_images は、GIF/PNG 画像への変換の途中に生成される ps (PostScript) 画像の段階で画像変換をやめて、 その ps 画像を IMG タグでなく A タグでリンクをするためのオプションですが、 その際、確かに現行版の latex2html ではその画像の位置に 「[IMAGE png]」と表示されるようです。

しかし、実際には ps ファイルがリンクされているので、 確かに表示は不適切だと思います (LaTeX2HTML のバグだと思います)。 問題箇所は把握していますので、 少なくとも次期日本語化パッチでは修正する予定です。
(07/21 2017)
目次へ戻る


Q 3.17. -images_only が機能しない

A 3.17.

-images_only は、前回 (特に -no_images で実行した場合) latex2html を実行した際に生成した images.tex (インライン画像ファイルをまとめて作成するための LaTeX ファイル) を再使用して画像生成 (のみ) を行うためのオプションなのですが、 実際に -images_only で実行してみると、確かに途中で止まってしまい、 画像生成までは進んでくれません。

問題箇所は把握していますので、 少なくとも次期日本語化パッチでは修正する予定です。

なお、このオプションは、 数百ページにも及ぶようなよほど大きな LaTeX ファイルの処理か、 またはよほどマシン性能の低いコンピュータでの実行のためのものなので、 それ以外の状況ではこのオプションはあまり意味はありません。 とりあえずは -images_only をつけずに latex2html を再実行すればいいでしょう。
(07/21 2017)
目次へ戻る


Section 4. その他


Q 4.1. LaTeX2HTML の日本語のマニュアルなどはありませんか

A 4.1.

latex2html に付属する英語のマニュアルをほぼ全部訳されたものが以下にあります (そのページ自体も latex2html で作られているようです)。

元の英語のマニュアル自体がしばらく更新されていないため 現状には合わない点もありますが、大変参考になると思います。 この日本語訳の LaTeX のソースも公開されているようです。

MS-Windows 環境では、以下の Web サイトにインストールなどの情報があります。

なお、最近 (2017) 上記サイトにはつながらなくなっています。 阿部さんのとは違いますが、以下でも Windows への LaTeX2HTML のインストールの情報を紹介していますので、ご覧ください。

また、紙の情報では、少し古いですが以下の書籍があります。

また、さらに古いですが、以下の雑誌記事にもいくつか情報があります。


(03/31 2016; 07/21 2017 更新)
目次へ戻る

LaTeX2HTML のページへ戻る
作成日: 03/28 2018
竹野茂治@新潟工科大学 (shige@iee.niit.ac.jp)