README.notice.jp: LaTeX2HTML に関する一般的な注意 Shigeharu TAKENO ■一般的な注意 いくつか LaTeX2HTML に関する一般的な注意を述べます。 [1] GIF ライセンスの問題 (現在は問題がありませんので、この注意は 削除しました) [2] パッチを当てた後にできる styles/japanese.perl に、日本語用の 設定が行われています。この中の sub japanese_titles には、例えば styles/english.perl を見れば分かりますがまだ日本語用にはカスタマ イズされていない項目がたくさんあります。styles/japanese.perl に 直接書き加えてもいいでしょうが、初期化ファイル ~/.latex2html-init 内で &do_require_package("japanese") ; した後で必要なものを $next_name = "次"; $up_name = "上"; $prev_name = "前"; のように追加してもいいでしょう。 ただし、例としてあげた $next_name, $up_name, $prev_name は、本来 はナビゲーションボタンの下のリンクの前に書かれる "Next:", "Up:", "Previous:" を定義する変数なのですが、初期化ファイル内に top_navigation_panel() が定義されている (latex2html についている dot.latex2html-init を使っている場合) 場合は、その中に "Next:" 等 がハードコードされているので、上のように設定してもそれが効きませ ん。初期化ファイルの (top|bottom)_navigation_panel() の定義を直接 書き直してください。 [3] root になれない場合は、個人のホームディレクトリにインストール して使いたい、ということもあるでしょうが、その場合は configure の ときに --with-texpath=[path] をつけて、適当なインストール先を指定 するのを忘れないようにしてください。 そうでないと、latex2html 用のスタイルファイルが、システムの TeX のディレクトリ (/usr/local/share/texmf/tex/latex/html など) にイ ンストールされようとしてしまいます。 [4] 日本語 pLaTeX ではマクロの名前を日本語 (全角文字) にすること もできますが、日本語名のマクロは latex2html はうまく処理してくれ ないようです。半角のアルファベットのマクロ名に変えてください。 [5] 現在の版の latex2html は、LaTeX2.09 形式の LaTeX ファイルも一 応は通るように作られていますが、LaTeX2.09 の形式のファイルに対し ては色々不具合が起こります。LaTeX2e に移行できるならそうした方が いいでしょう。LaTeX 2.09 の LaTeX ファイルを HTML に変換する場合 は、latex2html 97.1 以前のものを使った方がいいかもしれません。 [6] 数式を画像化したファイルを作成するのに /tmp/l2hXXXX (XXXX は プロセス番号) という作業ディレクトリが作られて、通常は作業終了後 に消されるのですが、-debug オプションをつけて起動した場合にはその ディレクトリは残ったままになるようです。知らずに何度も -debug オ プションを実行していると /tmp を 使い尽くしてしまう可能性がありま すので気をつけてください。(というか私がそうやってしまった (^^;) [7] psfrag は現在の版ではおおむねうまくいくようです。ただし、端の 方の文字を変換する際は、文字がはみ出て切れてしまうことがあります ので注意して下さい。 [8] \section, \caption に数式を入れる場合は注意が必要です。 \caption では、\sin などが .aux ファイルで展開されて図番号が正し く割り当てられないことがあります。その場合 \protect でその展開を 抑制して \caption{$\protect\sin\theta$ のグラフ} のようにする必要があります。 \section のタイトルはページ上部のリンク先のタイトルとして使われま すが、数式部分は抜けてしまいます。よって、 \usepackage{html} として \section{\latexhtml{$\sin x$}{sin x} の微分} のようにするといいでしょう。 [9] LaTeX では、位置を左寄せ、右寄せ、中央寄せにするときは、 flushleft 環境、flushright 環境、center 環境を使うやり方と \raggedright, \raggedleft, \centering の宣言を使うやり方がありま すが、 宣言を使う方は LaTeX の出力と LaTeX2HTML の出力で異なる結 果になる場合があるようですので、宣言の方は使わないようにするのが いいようです。 [10] \includegraphics{} で画像ファイルを回転させるオプション angle を使うと LaTeX2HTML ではその画像は表示されなくなります (dvips の問題)。よって、元の画像を回転しておいて angle を使わない ようにするか、または \usepackage{html} として \begin{figure}[h] \latexhtml{\includegraphics[angle=270]{hoge.eps}}% for LaTeX {\htmlimage{flip=r270}\includegraphics{hoge.eps}}% for l2h \end{figure} のようにする必要があります。なお、この \htmlimage{} を使う方法は figure 環境内でないと効かないようです。 [11] 奥村@三重大 さんの jsarticle, jsbook スタイルにも対応しまし た (by 高久さん)。 [12] jbook, j-book スタイルにも対応しました (by 児玉さん)。 [13] ブラウザによっては日本語と欧文アクセントを使った HTML 特殊文 字 (ö など) は同居できず表示されない (または文字化けする) 場 合があります。 latex2html は、 ・欧文アクセントに対応した HTML 特殊文字があれば &#[num]; に変換 する (charset に依存) ・無い場合は $ACCENT_IMAGES (起動時オプション -accent_images) が 設定してあれば画像に変換し、設定してなければアクセントを外す (例えば \"{o} -> o という風に) という形になっています。 以前の日本語化パッチ (jp1.4~1.9, jp2.0) では、$UNUSEACCENT という 変数を設定し、それによって ・$ACCENT_IMAGES (起動時オプション -accent_images) が設定してあれ ば常に画像に変換し、設定してなければ常にアクセントを外す ということもできるようにしてありましたが、この機能には問題がある ことが分ったことと、ブラウザ側の対応により現在はこの機能の必要性 が低くなっていることを考えて、jp.1.10, jp2.1 以降の日本語化パッチ からは削除しました。今後は、公開するとしても別な形での公開となる と思います。 なお、'i' または 'j' にアクセントを付ける場合、LaTeX では上の点を 取ってからアクセントをつけることがありますが、その場合 LaTeX では 例えば "\'\i" と書いても "\'{\i}" と書いても同じ物と解釈されます が、残念ながら latex2html ではこれを別なものと解釈し、後者は "\'i" とみなしてしまいます。よってその場合は前者を使用するように して下さい。 また、latex2html では、LaTeX ではサポートされていない、丸が上に付 くアクセント (Ex. オングストローム記号) もサポートされています。 LaTeX で使う場合は、例えば u の上に丸を付ける場合は \accent23u の のように書きます。しかし、これを \accent23{u} と書くと LaTeX では アクセントにならず丸と u が左右に分かれます (latex2html ではどち らも OK です)。 [14] 例えば \newcommand{\mymacro}[1]{\mbox{\rm #1}} のようなマクロは latex2html ではうまく展開されないようです。場合 によって \newcommand{\mymacro}[1]{{\rm #1}} のようにするといいかもしれません。また、'\@' で始まる名前のマクロ や、\gdef などもうまく展開されない可能性があるようです。 [15] tabbing 環境の変換は苦手のようで、tabular 環境に変えてくれ、 というメッセージが出ます。実際に tabbing 環境を変換したものは、ず れた形で表示されるようですので、tabular 環境で書き直すか \latexhtml で書き分けると良いようです。 [16] 2 重引用府 '"' を LaTeX で使う場合、「"a", ``a''」のような書 き方がありますが (もちろん LaTeX での表示は異なりますが)、 latex2html は、通常これらを 「"a", ``a''」のままにしか変換せず、 例えば 「"a", "a"」のようにはしてくれません (日本語化パッチの問題ではなく、オリジナルの latex2html の仕様のよ うです)。 [17] 例えば「LaTeX の書き方」のような文書を LaTeX で書く場合など で 「\begin」のような文字列を出力するマクロを無理矢理 \newcommand{\macroA}{\texttt{\symbol{"5C}begin}} のように書いてしまうとこれは latex2html では通りません。この場合 やや裏技的ですが、例えば \usepackage{html} の元で \newcommand{\macroA}{\latexhtml{\texttt{\symbol{"5C}begin}}% {\verb+\begin+}} のようにするとうまくいくようです。通常 \verb はマクロ内ではうまく 機能しませんが、この場合は LaTeX では \texttt{} の方 (\latexhtml の第 1 引数の方) が展開されるので関係なく、また、latex2html では 第 2 引数の方が解釈され、それが \verb 内なので \begin 自身が特殊 な意味を持つ物と解釈されることもなくうまくいくようです。 [18] latex2html が生成する各ページ上部のリンク先の文字列には section 名が用いられますが、この名前の文字数は l2hconf.pm や ~/.latex2html-init で定義されている $WORDS_IN_NAVIGATION_PANEL_TITLES (デフォルトでは 4) で決まりますが、これは空白で区切られている単語数を数えているので 日本語のセクション名に対してはあまり意味がありません。しかし、こ の値はデフォルトでは 4 と定義されていますが、セクション番号もそれ にカウントされるので実際には単語数は 3 で切られてしまいます。例え ば、数字と日本語の間などに半角の空白をはさんで \section{0 の 0 乗ってなあに} のように書いている場合は、見出し文字列が 1 0 の 0 とされてしまいます (1 はセクション番号)。これを避けるには、上記の 変数の値を負の値にする (1000 と指定したことと同じことになる) か、 あるいは LaTeX のファイルで空白の代わりに '~' を使って \section{0~の~0~乗ってなあに} とする、という手があります。これなら単語数は 1 と数えられますし、 '~' はちゃんと空白に変換されます。 [19] 画像ファイルに下線が残る、というのは latex2html と netpbm の バージョンがうまく対応していない場合の典型的な症状なのですが、そ れ以外にも起こる場合があるようで、l2hconf.pm の (または configure する前の prefs.pm の 220 行付近の) DVIPSOPT に -Ppdf が設定されて いる場合はそれを無効にして -E だけにしてみてください。 この -Ppdf で問題が起こる原因ですが、奥村@三重大 さんの「TeX Q&A 掲示板」 http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/ の 37151,37161 番以降のたくさんの記事で栗山さん、角藤さんに色々教 えてもらって様子がわかりましたが、以下のような状況のようです。 1) 黒線の残る画像を調べると、gs で PPM 画像に落としたときに本来 L 字型の黒枠が左と下につくはずなのだが、黒線が残るものはその縦線 が下に少し (1 ドット幅) 突き出ている 2) そのために、その後の処理の pnmcrop が下の黒線を削除するのに失 敗している 3) これは dvips のオプションによってそういうことが起こることがあ るようで (例えば -Z をつける)、細かくいうと dvips で alt-rule.pro の後で tex.pro や texc.pro を読みこむようにして作 った EPS ファイルではそういうことは起こらない (Vine Linux や W32TeX ではそのために起こらないらしい) 4) しかし、-Ppdf の場合、tex.pro や texc.pro を、PDF 用により適切 な再定義をしている alt-rule.pro を、その後でまた tex.pro や texc.pro で上書きするのはおかしい 5) -Ppdf の場合、まれにフォントの生成で失敗して出力できない可能性 もある 6) そもそも PDF 出力用のオプションである -Ppdf を使って作った EPS を PNG/GIF を作るために PPM に落すということ自体がナンセンス よって現在の jp1.10beta, jp2.1beta 以降のパッチでは -Ppdf は無効 にしてあります。 [20] LaTeX の文書で URL を書く場合、latex2html に用意されている html.sty を利用して、そこに用意されている \htmladdtonormallink 等 のマクロを利用すると便利です。その場合、'~' という記号を書く場合 は '\~{}' などではなく、\textasciitilde を使います。 また、長い URL を書く場合は url.sty に用意されている \url を使う と便利なようです。この中では '~' はそのまま書きます。ただしこの場 合 latex2html で変換した HTML ファイルでは '~' は空白になってしま います。 [21] 画像ファイル等を includegraphics を使って読み込んでいる場合 \includegraphics{./file.eps} \includegraphics{./subdir/file.eps} のようにカレントディレクトリからの相対パスを "./" を入れて指定す ると、latex2html が内部で呼び出す dvips によって 画像を生成すると ころで失敗しますので、この場合は './' を取って \includegraphics{file.eps} \includegraphics{subdir/file.eps} のようにするといいようです。 [22] オリジナルの latex2html は CJK パッケージ (英語版の LaTeX2e で中日韓の文書を書くためのパッケージ) に対応していましたが、日本 語化パッチ jp1.X は、CJK パッケージを用いた日本語文書には対応して いません。CJK パッケージと併用する場合は、日本語化パッチ jp2.X を 使って下さい。こちらは nkf を使用しておらず、CJK パッケージの日本 語文書でもちゃんと変換できるようです。 [23] latex2html は数式等を画像化した部分の ALT 属性として、元の LaTeX の数式表記を利用していますが、長い数式では ALT = "数式の頭の部分 ... 数式の最後の部分" のようにその一部を切り出して使用しており、その数式に日本語が含ま れている場合、2 バイト文字を 1 バイト目と 2 バイト目の切れ目で切 り離してしまって文字化けを起こしてしまうことがあります。 今のところ、適当な所にスペースを挟んでみるとか、逆にスペースを取 ってみるとか、文章の表現をかえてみる、といった回避策しか残念なが らわかっていません。 [24] equation 環境内の \label コマンドは、その位置によって不具合 が出ることがあります。それは latex2html 内で \label コマンドが削 除された latex ファイルをコンパイルするからで、例えば \begin{equation} \label{test1} \int_0^1\sin x dx \end{equation} のように \label 単独の行を作ってその先頭にスペースが入っている場 合 (以前の latex2html では) equation 環境内に空行ができることにな ってしまいますが、ディスプレイ数式環境内の空行は LaTeX ではエラー になります。よってその場合は \begin{equation}\label{test1} \int_0^1\sin x dx \end{equation} や \begin{equation} \int_0^1\sin x dx\label{test1} \end{equation} のように書いて、\label のみの行を作らないようにするか、\label の みの行に先頭に空白を入れずに \begin{equation} \label{test1} \int_0^1\sin x dx \end{equation} のようにするとうまくいきます。 なお、jp1.10beta, jp2.1beta ではこの問題への対処も行なわれていま すので、最初の書き方でも問題はありません。 [25] 生成する画像形式を GIF/PNG 以外に JPEG にしたい場合は、 http://takeno.iee.niit.ac.jp/~shige/TeX/latex2html/ の「注意、その他 (11/14 2003)」をごらん下さい。 [26] 画像ファイルはデフォルトでは透過画像になるのですが、それがう まくいかずに灰色背景の画像になってしまう、あるいはブラウザで透過 画像がうまく表示されない、という場合は画像の背景色を指定してみる といいでしょう。数式等の画像の背景色は、color パッケージを用いて l2hconf.pm 内で $LATEX_COLOR = "\\pagecolor[gray]{.7}"; と定義されています。例えば ~/.latex2html-init 等で $BODYTEXT = "bgcolor=\#e0ffff"; のようにして背景色を定義している場合は、 $LATEX_COLOR = "\\pagecolor[rgb]{0.875,1,1}"; のようにこの背景に合う色を ~/.latex2html-init で定義すると良いで しょう。0.875 = 224/256 (16 進 e0 = 10 進 224) です。\pagecolor の設定法については color パッケージに関する説明 (例えば「LaTeX グ ラフィックスコンパニオン」など) を参照して下さい。 [27] 生成される HTML ファイル名を node[数字].html から変更したい 場合は、 http://takeno.iee.niit.ac.jp/~shige/TeX/latex2html/ の QandA Q.6. をごらん下さい。 [28] 奥村@三重大 さんが作っておられる jsclasses (pLaTeX2e 新ドキ ュメントクラス) を使っている場合、includegraphics で取り込んだ EPS 画像が latex2html では切れる場合があります。この問題は \documentclass[12pt]{jsarticle} などのように、10pt でないサイズを指定して jsarticle クラスを使用 している場合に起こるようです。これは jsclasses の WWW ページ の FAQ に書いてある「長さがずれます」の話が原因のようです。例えば \includegraphics[width=14cm]{file.eps} としても、LaTeX の出力は 14cm にはならず、14cm にするには \includegraphics[width=14truecm]{file.eps} とせよ、と書かれています。ところが、latex2html 上の問題はこれでは 解決せず、やはり一部切れてしまいます。真っ当な解決策ではないので すが、これを避けるには、とりあえずは \includegraphics[width=14truecm,scale=1.1]{file.eps} のように、1.0 より大きい scale を指定するといいようです (どんな場 合でもこれで大丈夫かどうかはわかりません)。 LaTeX のレベルでも、 scale=1.1 は無視されるようで、 とりあえずはどちらでも大丈夫なよう です。 ただ、単に \includegraphics{file.eps} とした場合もこの問題が引っかかり、奥村さんの WWW ページでは、 LaTeX レベルでは、 \includegraphics[scale=0.83333]{file.eps} とせよ (12pt の場合) とあるのですが、この場合は latex2html では上 記のような回避策が取れません。とりあえずは、常に width を指定する 以外無いようです。 [29] latex2html の日本語化パッチでは、現在のところ長さの単位の zw,zh をサポートしていません。 [30] \usepackage{graphicx} を使用している場合、latex2html では *********** WARNINGS *********** No implementation found for style `graphicx' のようなものがでますが、これは正常動作ですので問題ありません。実 際には graphixx.perl, graphics-support.perl が読み込まれます。 また、graphics-support.perl では \includegrahics での画像ファイル は GIF,JPEG,PNG,TIFF,PICT,PCX,BMP,SGI,XBM,XWD をサポートしています。GIF/PNG/JPEG 以外はそのまま張り付けるのでは なくて netpbm を利用して JPEG に変換してから張り付けるようです。 指定の仕方は通常の EPS の場合と同じですが、拡張子で画像形式を判断 しますので、拡張子まで正しく指定して下さい。なお、上記の画像形式 それぞれでサポートされているの拡張子名は以下の通りです。 .gif, .jpg (または .jpeg), .png, .tiff, .pict, .pcx, .bmp, .sgi, .xbm, .xwd [31] マニュアル等には書かれている --image-only という機能は、現在 (98.1 以降) は実際には無効化されています。使用したい場合は、 latex2html の 820 行目付近 (jp1.10beta2 の場合は 850 行目付近) に ある &cleanup(1); を &cleanup(0); に直して、 latex2html -debug file.tex (この後必要なら file/images.tex を編集) latex2html -debug -images_only file.tex のようにしてください。なお、-debug を使わないと file/ 内の TMP デ ィレクトリとデータベースファイルが残りません。 [32] latex2html は epic,eepic には対応していません。よって、epic, eepic 等で書いた図を latex2html で使用したい場合は、 1. 図だけを取り込んだ LaTeX ファイルを作りそれを dvips -E にかけ て EPS ファイルにしてしまう 2. その EPS ファイルを includegraphics で取り込む とするしかないようです。 [33] latex2html は、地の文の数式 ('$' で囲んだもの) を画像にする 際、地の文と baseline が合うように、下に少し空白を付加した画像を 作りそれを、 を使って張りつけることもあるし、 空白を取って で張りつけることもあるようです (align="middle" は画像の中央とテキストの baseline が合うようにな る)。 ところがその align="middle" は Mozilla (1.5) には bug があってう まく baseline が合うようには表示されないようです。 Netscape 4.8 では正しく表示される、との報告が latex2html-ML にありました。 Firefox にもその問題があったようですが、新しい Firefox では修正さ れた、という報告も latex2html-ML にはありました。 http://tug.org/pipermail/latex2html/2005-September/003003.html [34] 数式を \fbox{} で囲んだ場合、latex2html では式番号がそこで変 になります。これは latex2html が \fbox{} 内は触らずにそのまま丸ご と画像化してしまうためです。例えば \begin{equation}\label{eq:2} x^2+y^2=z^2 \end{equation} \fbox{ \begin{minipage}{0.8\linewidth} \begin{equation}\label{eq:3} x^3+y^3=z^3 \end{equation} \begin{equation}\label{eq:4} x^4+y^4=z^4 \end{equation} \end{minipage} } \begin{equation}\label{eq:5} x^5+y^5=z^5 \end{equation} (\ref{eq:5})(\ref{eq:4})(\ref{eq:3})(\ref{eq:2}) のを latex2html にかけると、その HTML 表示の数式番号は x^2+y^2=z^2 (1) x^3+y^3=z^3 (1) x^4+y^4=z^4 (2) x^5+y^5=z^5 (2) のようになり (もちろん本来は (1),(2),(3),(4) の順で式番号がつくべ きだし LaTeX ではそうなります)、かつ最後の ref の部分は (4)(3)(2)(1) のように表示されてしまいます (こちらは合ってます)。 このような場合、\refstepcounter や \addcounter などを使って無理矢 理 equation カウンタを手動で操作する (かつ \fbox{} 内の数式へのリ ンクは、画像化された \fbox{} 部分の先頭辺りに貼る) という手もあり ますが、html パッケージの \htmlborder コマンドを使って、\fbox の 代わりに minipage 環境部分に (HTML の table タグの border を利用 して) 外枠を書く、という手があります。 こうすれば \fbox{} 部分がまるごと画像化されることはなくなり、数式 番号やリンクも正常になります。上の例でいえば \usepackage{html} を追加して、\fbox{} 部分を以下のように書き直します。 \latexhtml{% ここは LaTeX が認識する (上と同じ) \fbox{ \begin{minipage}{0.8\linewidth} \begin{equation}\label{eq:3} x^3+y^3=z^3 \end{equation} \begin{equation}\label{eq:4} x^4+y^4=z^4 \end{equation} \end{minipage} } }{% ここは LaTeX2HTML が認識する \begin{minipage}{0.8\linewidth}\htmlborder{} \begin{equation}\label{eq:3} x^3+y^3=z^3 \end{equation} \begin{equation}\label{eq:4} x^4+y^4=z^4 \end{equation} \end{minipage} } \htmlborder{} は minipage 環境などに table タグの外枠を書くコマン ドで、デフォルトでは "border=1" という属性を table タグにつけます が、その線の幅を広くしたい場合は、\htmlborder{3} のようにします。 [35] jp1.8 から、HTML 出力の別の漢字コードへの変換をユーザーレベ ルで可能にし、また jp1.7 では問題があった JIS の LaTeX ファイルの 処理も行なえるようにしました。現在は初期化ファイル ~/.latex2html-init やコマンドラインオプション (jp1.10beta2 の場 合) でそれを切り替えることができます。 jp1.9 からは UTF-8 でも出力できるようにしました。ただし、UTF-8 へ の漢字フィルタ (nkf (2.X), tcs, iconv 等) が必要ですし、後述する ように不十分な点もあります。また、jp2.X 系列は漢字コード変換は行 いませんので出力漢字コードの選択はできません。 jp1.10beta1 の場合は、~/.latex2html-init で切り替えることができま す。この場合は、$charset と $TOHTML の 2 つの変数を設定しますが、 これらは styles/japanese.perl で定義されていますので、その設定の 前に &do_require_package("japanese"); として styles/japanese.perl を先に読み込んでおく必要があります。 JIS にするには $charset = "iso-2022-jp"; $TOHTML = "| nkf -j"; EUC-JP にするには $charset = "EUC-JP"; $TOHTML = "| nkf -e"; Shift_JIS にするには $charset = "Shift_JIS"; $TOHTML = "| nkf -s"; UTF-8 にするには $charset = "UTF-8"; $TOHTML = "| nkf -w"; としてください。nkf はパスが通ってなければフルパスで指定して下さ い。なお、$charset の指定は、現在は上記以外のもの (大文字と小文字 が違っても) ではうまく動作しないので間違えないようにして下さい。 UTF-8 出力 (-w) をサポートしていない nkf を使っている場合は、別な UTF-8 出力のできる漢字フィルタを指定して下さい。例えば tcs なら $charset = "UTF-8"; $TOHTML = "| tcs -f ujis t utf"; といった具合です。 出力コード指定を行なうと HTML ファイルの META タグに charset が書 かれますが、これをつけたくない場合は $charset を $charset = ""; と設定してください。 jp1.10beta2 の場合は、新設のコマンドラインオプション -lang= で切 り替えます。指定できる値は jis (==> ISO-2022-JP), euc (==> EUC-JP), sjis (==> Shift_JIS), jutf (==> UTF-8), en (==> english), no (==> オリジナルの latex2html の状態) です。または、~/.latex2html-init 内で変数 $REQUIRE_LANGUAGE にこ れのデフォルト値を $REQUIRE_LANGUAGE = "jis"; のように設定すれば、-lang=jis と設定した状態になります。 また、jp1.10beta では、JIS の LaTeX ファイルなどを受け付けるよう にするために texexpand で nkf を通すようにしたので (jp1.10beta1 では常に変換、jp1.10beta2 では -lang で日本語が指定された場合に変 換)、8bit で非日本語の LaTeX ファイルに関しては思わぬ不具合が起こ る可能性があります。 なお、UTF-8 出力のオプションは、元々 latex2html が持っている utf オプション (versions/unicode.pl, versions/utf8.pl) との関係付けは してありませんので、まだ不十分です。unicode オプションや utf8 オ プション (-html_version=4.0,unicode, -html_version=4.0,unicode, utf8 など) と同時に使用した場合どのような問題が起こるかについては 詳しくは確認していませんが、少なくとも versions/utf8.perl と同時 に使用した場合は問題が起こり、正しくは変換されません。 [36] amsmath パッケージを取り込んだ場合、equation 環境内に % で始 まるコメントを書くと、画像がうまく変換されない、という問題がある ようです。jp1.9, jp2.1 以降ではそのバグは修正してあります。 [37] 現在、Red Hat Linux や Fedora Core Linux で使用する rpm パッ ケージにはデフォルトで日本語用の TeX 環境も含まれていて、その中に latex2html も以下のものに含まれています。 ・tetex-2.0.2-*.src.rpm (source パッケージ) ・tetex-latex-2.0.2-*.i386.rpm (binary パッケージ) そして、このパッケージに含まれる latex2html はいずれも日本語化パ ッチが当たっていますが、デフォルトで日本語化機能が有効になってい るものがあることがわかりました。 ・2.0.2-10 以前 (例えば Red Hat 9 用, Fedora Core 1 用): jp1.4 のパッチが当たっていて、デフォルトは英語 ・2.0.2-11 から 2.0.2-15 (例えば Fedora Core 2 用): jp2.0 のパッチが当たっていて、デフォルトは日本語 ・2.0.2-16 以降: jp2.0 のパッチが当たっていて、デフォルトは英語 これは、非日本語圏のユーザには多少迷惑で、特に Fedora Core 2 用の パッケージはデフォルトで日本語化機能も有効になっているので、英語 のページなのに日付が和暦になったり、最後のページが「この文書につ いて」となったりしてしまいます。日本語化機能が無効になっていても 若干迷惑な部分もあり、日本語化パッチの当たったものは 2.0.2-26 以 降の rpm では jlatex2html という別名のコマンドになりました。 Fedora Core 4 ではそのようになっている予定です (Thanks 松浦さん)。 なお、日本語圏のユーザに取っても、実は中途半端な状態で入っている ようなので、本当に日本語を使えるようにするには色々と設定する必要 があるようです。詳しくは http://takeno.iee.niit.ac.jp/~shige/TeX/latex2html/ の「注意、その他 (11/03 2004)」の記事をごらん下さい。 [39] オリジナルの latex2html に 2 つアクセントに関する問題があり ます。 ・\t{oo} がうまく画像化されない (バグ) アクセントの中で \t だけは 2 つの文字を引数としますが、 これは HTML の entity がなく、 よって latex2html は画像化しようとします (-accent_image がついている時) が、そこにバグがあり、\t{o} として 画像化してしまいます。多少は jp1.10beta, jp2.1beta パッチで対処し ましたが、\t{} の中に \i や \j が入る場合はうまくいきません (そう いう場合もありうるそうです)。 ・\i,\j にアクセントをつける場合の画像化の問題 (回避策あり) i,j の上にアクセントをつける場合、LaTeX では通常 \i, \j を使って 上の点を取った物にアクセントをつけます。latex2html でも、HTML entity がある場合は問題なく働くのですが、HTML entity がない場合に 問題が発生します。 具体的には、\H{\i}, \H{\j} などで問題が起こるのですが、このように 書くと latex2html は \H{i} や \H{j} で、つまり上の点を取らずに画 像化してしまいます。 これもバグだとは思うのですが、\H{\i} の代わりに \H\i (後ろにアル ファベットが続く場合は \H\i{} とする) と書くと回避されます。とり あえずはそのように書いて下さい。 i の上にアクセントをつける場合は、\H{i} であろうと \H{\i} であろ うと常に上の点を取る、という仕様にするなら対処もできるのですが、 今の所簡単な修正を行なう方法は見つかっていませんので、上の方法で 回避して下さい。 [40] 例えば Tgif で書いた EPS 画像などに「白での塗りつぶし」を使 った場合、latex2html がその画像を GIF 化する場合その部分の透明化 に失敗することがあるようです。これは以下のようなことで起こってい るようです。 1) EPS を GIF に変換する場合、images.tex で LaTeX ファイルと同じ 様式で \includegraphics で取り込んで dvi ==> PS ==> PPM ==> GIF という変換をする 2) その際、画像の切り出しのために、images.tex で背景を灰色 (#B2B2B2 位の色) に設定する 3) その背景は、EPS ファイルの背景にも及ぶが、Tgif で白での塗りつ ぶしを行なった部分や図形内等の白い色にはそれが及ばない 4) PPM ==> GIF への変換で ppmtogif の -transparent オプションを使 って透明化を行なうが、その透明色の指定は images.tex 内に書かれ た灰色ではなく、白 (#FFFFFF) になっている 5) (少なくとも最近の) ppmtogif は、transparent として指定された色 にもっとも近い色を透明色として選ぶので、画像内に白があるとそち らが透明化の対象になってしまう PNG の場合は透明色として灰色が選ばれていますが、やはり図形によっ ては同様のことが起こり得るのではないかと思います (確認はしていま せん)。 回避策としては、[26] のようにしたりコマンドラインオプションで "-white -notransparent" として透過画像にしない、という手もありま すが、おかしくなる画像だけ手動で GIF 画像にしてやる、という手もあ ります。詳しくは、 http://takeno.iee.niit.ac.jp/~shige/TeX/latex2html/ の「注意、その他 (12/14 2004; no.3)」の記事をごらん下さい。 [41] (j)report スタイルで chapter の下に section を作った場合、そ れを latex2html にかけると chapter は

で表示されるが、その下 のレベルであるはずの section も

で表示される、という話が latex2html-ML に出ました。 これは latex2html 内に %standard_section_headings = ('part' , 'H1' , 'chapter' , 'H1', 'section', 'H1', 'subsection', 'H2' , 'subsubsection', 'H3', 'paragraph', 'H4', 'subparagraph', 'H5' ,%standard_section_headings ); と定義されているからで、これを解消するには、 ~/.latex2html-init に例えば次のようなものを書くか、またはそれだけを書いた別なファイ ルを作って、それを "-init_file" オプションで指定すればできるよう です。 %standard_section_headings = ('part' , 'H1' , 'chapter' , 'H1', 'section', 'H2', 'subsection', 'H3', 'subsubsection', 'H4', 'paragraph', 'H5', 'subparagraph', 'H6' ); [42] Linux では日本語対応の dvips が pdvips になっているので、普 通に latex2html をインストールするとそれが使われずに日本語が文字 化けすることがあるらしいです (Thanks 山本昌志さん)。よって、 jp1.10beta, jp2.1beta ではデフォルトで pdvips があればそれを使う ように修正しました。 それでもうまくいかない場合は、prefs.pm の $pref{'DVIPS'} のところ を適切なものに修正してからインストールし直すか、インストールした 後ならば lib/latex2html/l2hconf.pm の $DVIPS の設定を適切なものに 修正してください。 [43] 奥村@三重大 さんの「TeX Q&A 掲示板」 http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/ の 35834 番の記事で、MS-Windows 版の latex2html の変換者名 (ユー ザ名) に日本語が入っているとそこが文字化けする、という問題とその 対処法が報告されました。perl 5.8.X 用の対処ですが、L2hos/Win32.pm の user(), fullname() を修正することで対処できるようです。 ユーザ名のカスタマイズに関しては、README.tech.jp の「4. 日付と変 換者について」も参考にしてください。 [44] netpbm-10.19 辺りから ppmquant は perl script に変わっていま す (pnmquant への wrapper になっていて、pnmquant 自体も pnmcolormap と pnmremap の wrapper である perl script です)。それ が原因なのか、pstoimg のデフォルトで設定されている ppmquant の -floyd オプションを使うと pnmcolormap: making histogram... pnmcolormap: 16 colors found pnmcolormap: Image already has few enough colors (<=256). Keeping same colors. pnmremap: 16 colors found in colormap pnmremap: Out of memory allocating Floyd-Steinberg structures pnmremap failed, rc=256 のように言われて正常に出力されないことがあるようです。対処法は、 pstoimg に書かれている -floyd オプション (2 箇所) の部分 $reduce_color = "$PPMQUANT -floyd 256"; を、-floyd オプションを取って $reduce_color = "$PPMQUANT 256"; のように変更するといいようです。jp1.10beta, jp2.1beta では対処済 みです。 [45] 奥村@三重大 さんの「TeX Q&A 掲示版」 http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/ の 37109 番の記事で、latex2html での変換で数式内の日本語の最後が 切れてしまう、という問題が報告されました (by 本田さん)。 これはどうやら最近の日本語版の dvips(k) の問題のようで、角藤さん により、対処法 (dvips(k) の texk/dvipsk/bbox.c を 1 行修正して再 コンパイルする) が報告されました (37114 番の記事)。これで確かに直 るようです。例えば dvips(k) 5.95a p1.7 などがこれに該当します。 [46] 奥村@三重大 さんの「TeX Q&A 掲示版」 http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/ の 37148 番の記事あたりで気がつきましたが、日本語化されていない gs (Ghostscript) でも、dvips で日本語をビットマップに展開すること ができるならば、それで一応数式部分に日本語が入っている場合も latex2html が使えます。W32TeX の dvipsv は、dvipsk に VFlib 対応 機能を追加したものだそうで、それがこれに相当します。 逆に、数式部分の日本語が出ない、という問題が、 W32TeX で dvipsk ではうまくいかないのに dvipsv でうまくいく、という場合は、多分 gs が日本語化されていない (または設定がうまくいってない) のだろうと 思います。 [47] 奥村@三重大 さんの「TeX Q&A 掲示版」 http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/ の 37151 番の記事で報告されましたが (by 栗山さん)、Vine 版の latex2html では、バージョンによってどうも wrapper スクリプトの l2h と、それ用の l2hconf*.pm が合っていないことがあるようで、l2h は jp1.6 以降用、l2hconf*.pm は j1.6 より前の形のものになっていて l2h がうまく動かないようになっている場合があったようです。 対処法も上の記事に書かれています (以前のやり方にする方法) ので、 そちらをご覧ください。 [48] \usepackage{amsmath} を使っていると、数式の部分の画像の作ら れ方がかなり違います。例えば、display 数式環境内の \mbox{文字} の ような部分も、画像化されずにそのまま文字として出力されます。 これはバグではなく latex2html の仕様で、amsmath や amstex を使っ ている場合はこんな風になるようです。「LaTeX Web コンパニオン」の 3.3 節にも書かれていますが、いわゆるプロフェッショナルモードでの 数式モードなんだそうです (私にはよくわかりません <(_ _)>)。AMS パ ッケージを使うということは、たくさん色んな数式が出てくるだろうと いうことを見越した仕様のようです。 [49] ナビゲーションアイコンボタンの配列を "[Next][Up][Previous]" から "[Previous][Up][Next]" に変えたい、という話が、奥村@三重大 さんの「TeX Q&A 掲示版」 http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/ にでました (37183 番の記事) が、これは初期化ファイルの sub top_navigation_panel{} にある "$NEXT $UP $PREVIOUS $CONTENTS $INDEX $CUSTOM_BUTTONS" . "$PREVIOUS $UP $NEXT $CONTENTS $INDEX $CUSTOM_BUTTONS" . に変えればすみます。もちろん、整合性を取るために、その下の $NEXT_TITLE と $PREVIOUS_TITLE の入れ換えとか、 sub_bot_navigation_panel{} も直した方がいいでしょう。 [50] 奥村@三重大さんの「TeX Q&A 掲示版」 http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/ の 37165,37183 番あたりで、MS-Windows 版の latex2html での初期化 ファイル (.latex2html-init) の置き場所がわからない、という話があ りました (by duke さん)。Win32 版では、環境変数 HOME を見ているよ うなので、適当なディレクトリを環境変数 HOME を設定して、そこに .latex2html-init という名前で置けばいいようです。HOME が設定され ていない場合はカレントディレクトリを探すようですから、latex2html を実行するディレクトリを固定するならそのディレクトリに置いておく という手もあります。 latex2html に dot.latex2html-init というファイルが付属しているの で、それを名前を変更して使います。jp1.10beta, jp2.1beta にはその 日本語訳を行なって補足を追加したものも付属しています (ただし漢字 コードは EUC-JP)。 [51] Netpbm の 10.30 や 10.31 に含まれる pnmtopng にはバグがあり、 その版の netpbm を使っている場合は latex2html では画像が生成され ないことがあります。その場合、-debug オプションをつけて latex2html を実行すると以下のように表示されるでしょう。 ppmquant -floyd 256 img577.png pnmcolormap: making histogram... pnmcolormap: Scanning image 0 pnmcolormap: 14 colors so far pnmcolormap: 14 colors found pnmcolormap: Image already has few enough colors (<=256). Keeping same colors. pnmremap: 14 colors found in colormap pnmremap failed, rc=13 Segmentation fault 10.32 以降か 10.26 以前あたりの Netpbm を使用してください。 [52] 奥村@三重大さんの「TeX Q&A 掲示版」 http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/ の 42043 番あたりで、"C:\Documents and Settings\hoge\..." のよう に MS-Windows のパスに空白が含まれるディレクトリで実行したらうま く動作しないという報告がありました (by takashina さん)。 Unix 由来のソフトの場合は、パスに空白や日本語が含まれていたりする と問題が起こりがちですが、latex2html も同様のようです。 [53] latex2html 用の makeimage 環境 (latex2html で HTML 化すると きは、その環境全体を画像化する) で、LaTeX のコメント行として $ が 含まれているとエラーが起きます。例えば以下でも起きます。 \documentclass{jarticle} \usepackage{html} \begin{document} \begin{makeimage} % $ こんなんどや。 \end{makeimage} \end{document} これを latex2html にかけると *** Error: unclosed math or extra `$', before: のように言われます。latex2html の、makeimage 環境内でのコメント行 の処理に多分問題があるのだと思いますが、とりあえずはそのようなコ メント行を makeimage 環境内には入れないようにしてください。 [54] latex2html は pnmtopng などで透明化する場合、色名 'gray85' のようなものを使う場合がありますが、MS-Windows 上の cygwin 版の Netpbm を使っている場合、その色名を参照できずに pnmtopng が失敗す ることがあるようです (latex2html-ML より)。その場合、以下のような 行が表示されるようです。 Converting image #2 pstoimg.bat: Error: "pnmtopng.exe -interlace -trans gray85 < c:\Temp\l2h1368\p3692.pnm > img1.png" failed: Bad file descriptor Error while converting image 手動で pnmtopng を実行すると、/usr/lib/X11/rgb.txt 等がない、とい う表示がでるそうですが、latex2html の配布物に rgb.txt が含まれて いますから、それを適当なディレクトリ (/usr/lib/X11 等) にコピーす る、あるいは pstoimg (pstoimg.bat) に書かれている 'gray85' を RGB 形式の表現 '#d9d9d9' に変えればいいようです。 [55] latex2html でよくある問題として、変換する数式に黒い下線がつ いてしまう問題がありますが、その事例の一つとして、その画像部分に \smash (plain TeX のコマンド) が使われている場合、というものもあ るようです。 \smash は画像の高さを 0 にするコマンドですが、これにより、画像切 り出しの目印である黒線よりも画像が下にはみだしてしまうことによっ て、画像の切り出しに失敗して黒線が残ってしまうわけです。 回避策としては、少なくとも latex2html にかけるときは \smash を使 わないように \latexhtml コマンドを使って \latexhtml{ % LaTeX はこっちを使う % \smash を使って書いてもいい }{ % latex2html はこっちを使う % \smash を使わないで書く } のように書き分ける、という手があります。 [56] 奥村@三重大さんの「TeX Q&A 掲示版」 http://oku.edu.mie-u.ac.jp/~okumura/texfaq/qa/ の 43063 番あたりで、HTML ファイルの上の方に JavaScript の のような行をつけたいんだけどうまくいかない、という報告がありまし た (by Ken さん)。確かにそのような行を .latex2html-init の top_navigation_panel の中に "" . のように入れても消されてしまいます。実は latex2html は、内容のな いタグ (らしきもの) を削除して出力しています。これを行っているの は text_cleanup() というサブルーチンで、 実際にその中の以下のよう な部分 (正確にはその最後の行) によって消しているようです。 ### DANGEROUS ?? ### # remove redundant (not

) empty tags, incl. with attributes s/\n?<([^PD >][^>]*)>\s*<\/\1>//g; s/\n?<([^PD >][^>]*)>\s*<\/\1>//g; # remove redundant empty tags (not

or or ) s/<\/(TT|[^PTH][A-Z]+)><\1>//g; s/<([^PD ]+)(\s[^>]*)?>\n*<\/\1>//g; よって、これをコメントアウトすれば消されなくなるのですが、副作用 が起こることもありうるので、むしろこのパターンにマッチしないよう にすればいいので、例えば "" . のようにスペースを一つ入れるとか、 "" . のようにコメント記号を入れてしまえば消えなくなります。なお、 "" . のようなタグ (こんなタグは実在しませんが) の場合は、上の 1 番目と 2 番目の行で消されてしまうので、この場合はスペースを入れて " " . としてもその行にマッチしてしまって消されてしまうので、この場合は "" . のようにコメント記号のようなものを入れる必要があります。 [57] latex2html は tabbing 環境の処理は苦手で、場合によっては tabular 環境に変えてくれ、というメッセージが表示されることがあり ます。それに対する例を上げます。 \begin{tabbing} 1st \= 2nd \= 3rd \= 4th \= 5th \= 6th \kill \> (1) 1 行入力する (暗黙の getline)\\ \> (2) 現在行が「ア」の行かチェック\\ \> \> (3) 「ア」ならば、その行を保存して\\ \> \> (4) その行が「イ」であるかチェック\\ \> \> \> (5) 「イ」ならば、次の行を取得し ... \end{tabbing} のように tabbing 環境で字下げを実現している場合、latex2html にか ける場合は以下のように修正するといいでしょう。 \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} つまり、LaTeX にかけるとき (latexonly 環境内) はそのまま、 latexh2html にかけるとき (htmlonly 環境内) は、枠線のない tabular 環境と multicolumn の組み合わせで実現させる、のようにします。これ を latex2html は以下のように展開してくれるようです。
(1) 1 行入力する (暗黙の getline)
(2) 現在行が「ア」の行かチェック
  (3) 「ア」ならば、その行を保存して
  (4) その行が「イ」であるかチェック
    (5) 「イ」ならば、次の行を取得し ...
つまり、table タグの colspan を使って、 丁度 table 環境 + multicolumn に対応することをやってくれています (何もないところは   でスペースを入れてくれています)。 [58] cygwin や Mac OS X などの Shift_JIS 環境の LaTeX の元で jp2.X パッチを使おうとすると問題があります。 一応、styles/japanese.perl のコードを直して、$charset='Shift_JIS' にするとそれなりに動くのですが、Shift_JIS の 2Byte 目が '\' (0x5c) であるような漢字が地の文に含まれると、そこで文字化けが起こ ったりします。 よって、Shift_JIS 環境では jp1.X パッチを利用してください。この場 合も perl での内部処理は EUC-JP でやらせるために、 $TONATIVE => "|$nkf -s" $FROMNATIVE => "$nkf -e" (config/config.pl か prefs.pm) と設定するといいでしょう。これによ り、画像変換用の LaTeX ファイル (images.tex) は Shift_JIS で出力 され、perl による内部処理は EUC-JP で行われます。なお、この場合は 初期化ファイル ~/.latex2html-init も EUC-JP の漢字コードにしてお く必要がありますし、styles/japanese.perl の漢字コードは EUC-JP の まま変換せずに使用します。 jp2.1beta 1.11 からは、Shift_JIS 環境への対応コードは削除して、代 わりに UTF-8 環境への対応を行いました。インストール時に configure のオプションで --with-kanji=utf8 を指定することで UTF-8 対応にな ります。しかし、これはまだ試験的なもので、[35] の最後に書いたよう に latex2html に含まれる unicode 用のコードとの対応は行っていませ んので副作用が出る可能性があります。 その他の細かい情報、最新の情報などに関しては http://takeno.iee.niit.ac.jp/~shige/TeX/latex2html/ の「注意、その他」をご覧下さい。 +=================================================+ 竹野茂治 〒945-1195 新潟工科大学 情報電子工学科 shige@iee.niit.ac.jp TEL(&FAX): 0257-22-8161 +=================================================+