README.notice.jp: LaTeX2HTML に関する一般的な注意
Shigeharu TAKENO を使って張りつけることもあるし、
空白を取って
で張りつけることもあるようです
(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 も
) empty tags, incl. with attributes
s/\n?<([^PD >][^>]*)>\s*<\/\1>//g;
s/\n?<([^PD >][^>]*)>\s*<\/\1>//g;
# remove redundant empty tags (not で表示される、という話が
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
or
| (1) 1 行入力する (暗黙の getline) | ||||
| (2) 現在行が「ア」の行かチェック | ||||
| (3) 「ア」ならば、その行を保存して | ||||
| (4) その行が「イ」であるかチェック | ||||
| (5) 「イ」ならば、次の行を取得し ... | ||||