いくつか注意を述べます。上の方が新しい情報です。 latex2html-2002 以降の情報が主なので、 かなり古いものもありますが、一応残しておきます。
また、日本語化パッチ version 1.4 以前の情報、 および latex2tml-2K.1beta 以前の情報に関しては、 古い LaTeX2HTML に関する注意 をご覧下さい。
ページが長いので「しおり」の仕組みを用意してみました。
「しおり用」と書かれた所をクリックしてからブックマークに入れると、
それはページの先頭ではなく、その箇所へのブックマークになります。
(03/03 2006)
また、各情報の最後に「(cf. ...」とついているリンクは、 その情報に関する追加、訂正等の情報を指す、 より新しい情報へのリンクになっています。 そちらも参照してください。
2014 08/20 以降、このページをしばらく更新していませんでしたが、
その後に LaTeX2HTML に関する注意などを記録したメモから、
今後そのメモ書きした日にさかのぼって記録を追加していきたいと思います。
(03/15 2018)
先日、久しぶりに gnuplot の faq.tex の日本語訳 を公開したのですが、その際に l2h での変換もやり、 そのときいくつか問題がでましたので、ここに記録しておきます。
元々の faq.tex では、verb での囲み記号に & を使用して 「\verb&\U+221E&」などと書いている箇所があるのですが、 それが 2021.2 以降の latex2html では問題が起きるようになったようで、
Unmatched [ in regex; marked by <-- HERE in
m/(<verb[^\d>]*23>\;SPMamp\;)([ <-- HERE ^]*?)(\;SPMamp\;
|<tex2html_comment_mark>(\d+)\n?)/
at /hoge/hoge/bin/latex2html line 1674.
などと表示され処理が止まってしまいます。
一見、l2h のバグのようですが (実際そうとも言えるんですが)、
これは & での囲みをやめて | などで囲むようにすると回避できます。
画像生成の途中で gs がこけてしまいました。
Error: /typecheck in --div--
Operand stack: 1 0 0.0 -0.000942511 a 65781.8
Execution stack: %interp_exit .runexec2 ...
これは、hyperref を使用しているためのようで、
hyperref の部分をカットして、
\usepackage{html} で代用したら回避できました。
アクセント文字の問題が起きました。 このファイルの内部では、3 箇所のテキストアクセント指定 「\"u」(uuml)、「\^n」(ncirc)、「\'{\i}」(iacute) が含まれています。 とりあえず、「注意、その他 (01/25 2023)」 に書いたように、
%EUC_JP_character_map = (
'uuml' , 'ü',
'iacute' , 'í'
);
と書いて、-entities を指定して実行すれば、
uuml と iacute の問題は解決され、
HTML では「ü」「í」となります。
なお -entities をつけないと EUC-JP 3 バイトエンコードされてしまうので、
テキストレベルではほぼ読めませんが、
一応ブラウザで見ると正しく表示されているようです。
ところが問題は ncirc です。実は、LaTeX では「\^n」で表現できてしまう n の上に山型記号がついた ncirc ですが、 これはどの言語でも使われていないもののようで、 Unicode にも見当たりませんし、補助漢字 (JIS X 0212)、 第 3・第 4 水準漢字 (JIS X 0213) にも見当たりません。 ということは、EUC-JP 3 バイトエンコードもできないし、 「&ncirc;」で名前参照することもできません (ブラウザでは表示されない)。 つまり、uuml や iacute とは違い、 単純に %EUC_JP_character_map に入れる方法では解決できません。
では Web で表示させる方法はないかと言えば、 Unicode にはアクセント記号を合字させる仕組みがあり、 それ用の Unicode 番号が用意されていて、U+0300 ~ U+036F の 「Combining Diacritical Marks」がそれです。 通常の文字の後ろにこの Unicode を置くと、 対応しているブラウザでは合字されて正しく表示される、 という仕組みになっています。 circ (Combining Circumflex Accent) は U+0302 (=̂) なので、 HTML では「n̂」と書くと「n̂」と合字されて表示されます (が、この部分が正しく表示されるのは対応しているブラウザのみです)。
すなわち、latex2html に、「\^n」を「n̂」のように 変換されることができればよいのですが、 残念ながら今の latex2html では標準的な手法でそれを行うことはできません。 特別なアクセント処理として、japanese.perl をいじれば可能かもしれませんが、 日本語ファイルでそれほど使う処理とは思えませんので その目的のために japanese.perl をいじるのは正しい方法とは思えません。 一時的に特別なファイルに対してのみ行う処理は、 個人の初期化ファイルやオプションレベルで行うべきですが、 %EUC_JP_character_map を利用する方法では「&ncirc;」になるだけで、 うまくいきませんでした。
ということで、最後の手段ですが、 latex2html の処理の最後に変換ルーチンを追加して対応しました。 latex2html では、post_post_process というサブルーチンが定義されている場合 (デフォルトでは未定義)、 latex2html が処理した内容を HTML ファイルとして書き出す前に そのサブルーチンを実行してくれます。 そこで、初期化ファイルに以下のものを追加しました。
%EUC_JP_character_map = (
'uuml' => 'ü',
'iacute' => 'í',
'ncirc' => 'n̂' );
sub main'post_post_process {
s/&ncirc;/n̂/go;
$_;
}
こうすると、EUC_JP_character_map の方の ncirc は、
実際にはその値の方には変換してくれませんが、
-entities をつけて実行すると「\^n」を「&ncirc;」に変換してくれます。
そして、post_post_process で、
全体の HTML ファイルに含まれる「&ncirc;」を強制的に
「n̂」に変換してくれるようになります。
これで、HTML には「\^n」が「n̂」に変換されて
書き込まれるようになりました (実行時に -entities が必要)。
現在 latex2html では、-entities による「名前参照」(ü のような形式) はサポートしているのですが、「数値参照」(&252; のような形式) の出力はサポートしていません。 今後、数値参照形式での出力もサポートするような改良を 検討したいと考えています。
現在の latex2html (2023 等) では -image_type svg
オプションで SVG 画像が作成できますが、
「SVG 画像出力で、かつ eqnarray* 環境で、
かつ一行目の数式がかなり長いために lefteqn を使っていて、
かつその次が短かい場合」という限定された場合ですが、
SVG 画像出力だとその場合に画像が右側に寄ってしまって
その 1 行目の数式の右が切れてしまう、という現象が発生しました。
PNG 出力だと起きません。
現在調査中ですが、多分 lefteqn を使用している行は横幅が認識されず、 それ以下の行の横幅でセンタリングされていることが 原因ではないかと思います。 PNG と SVG で結果が違うのは、 PNG の方は数式の左右にマージンを作らずに数式を切り出し、 それをセンタリングして貼り付けているのに対し、 SVG の方はどうも数式の左側に空白のマージンを作って 切り出して貼り付けているようなのですが、 そこはまだ調査中です。
一つの回避策としては、 PNG 出力を使うことですが、 その場合初期設定ファイルの $MATH_SCALE_FACTOR, $FIGURE_SCALE_FACTOR の値も多分変更が必要でしょう。
他には、documentclass オプションで、 fleqn と紙のサイズ指定 (a4j) を与える、という回避策もあります。 以下に例を示します。
\documetclass[11pt,fleqn,a4j]{jarticle}
の場合 (問題ない):
test2-11pt-fleqn-a4j/index.html
\documetclass[11pt,fleqn]{jarticle}
の場合
(右に少し寄って右端が少し切れる):
test2-11pt-fleqn/index.html
\documetclass[11pt,a4j]{jarticle}
の場合
(右にかなり寄って右端がかなり切れる):
test2-11pt-a4j/index.html
\documetclass[11pt]{jarticle}
の場合
(右にかなり寄って右端がかなり切れる):
test2-11pt/index.html
ポイント指定 (11pt) はあってもなくてもあまり変わりません。
もう少し真っ当な回避策 (SVG を使いつつ、
他に影響を与える fleqn の追加ではない方法) としては、
lefteqn を使用していない行に、右に空白を入れて長くしてしまう、
という手があります。
例えば html パッケージを使用して、
「\latexhtml{}{\hspace{5cm}}
」のようなものを
lefteqn を使用しない次の行の数式の最後に入れる、という方法です。
実際の長さは、全体がセンタリングされるよう適宜調整してください。
以下がサンプルです。
\latexhtml{}{\hspace{8.5cm}}
を入れた場合:
「注意、その他 (01/25 2023)」 に書いた 英語のアクセント文字対応については、 まだ安定動作できていませんので、 日本語化にはまだ取り入れていません (案外厄介なことがわかってきました)。 なお、前回書いた方法よりも、
%EUC_JP_character_map = (
%iso_10646_character_map,
);
%EUC_JP_character_map_inv = (
%iso_10646_character_map_inv,
);
$USE_ENTITY_NAMES = 1;
とする方が多分楽です。
「$USE_ENTITY_NAMES = 1;
」を入れないと、
EUC-JP 以外の出力では多分うまくいかず、
文字化けなどを起こしてしまいます。
その辺りが直せたら日本語版自体に導入したいと考えています。
いまさらですが、日本語ファイルを処理する場合、 英語のアクセント文字が正しく処理されていないことに気がつきました。 これについても現在対応策を考えています。 回避策としては、EUC-JP のファイル処理をする場合は、 初期設定ファイル .latex2html-init に、
%EUC_JP_character_map = (
'ouml' , 'ö',
'ocirc' , 'ô',
'eacute' , 'é',
'aacute' , 'á',
...
);
のようなものを必要な分だけ入れればいいです。
Shift_JIS の場合は名前を %Shift_JIS_charcter_map にします。
ただし、デフォルトでは 3Byte の URL エンコードが行われてしまうので、
-entities オプションを合わせて使う方が無難です。
(cf. 「注意、その他 (09/05 2024)」)
「注意、その他 (11/16 2021)」 で説明した framebox の問題は、 最新版の latex2html-2022 では解消されています。
また、latex2html-2022 では、 eqnarray* の画像が出ない問題があるようですが、 latex2html-2022 の次の版では修正される予定ですし、 latex2html-2022 用の日本語化バージョン jp3.2beta1.35 では 既に修正されています。
\framebox の処理に関する問題を一つ見つけました。
\framebox は通常は、\framebox[w][pos]{text}
の形で用いられ、text の回りを枠で囲み、
こちらは問題なく処理されます (通常は画像化されます)。
一方、もう一つの使われ方もあり、picture 環境内で、
\framebox(w,h)[pos]{text}
の使い方もあります。
問題があるのはこちら側です。
現在の latex2html の処理は、前者の方しか対応しておらず、 よって、後者の \framebox の後ろにある (w,h) が正しく処理されず、 引数がおかしいと認識されて、画像化されるときに (images.tex) 変な処理がなされて送られてしまい、それで画像化に失敗します。
真っ当な解決法はよくわかりませんので、 l2h-ML に投げているところです。 何かわかったらまた報告しますが、 もしそれで問題が起きる場合は、 とりあえずは picture 環境内では \framebox を使わずに、 \makebox と \line などで代用してみてください。
なお、この問題はかなり古くからあるもののようで、 少なくとも 2004 あたりからある問題のようです。
現在公開している日本語化パッチは、 latex2html-2020 用のものが最後になっていますが、 オリジナルのものは既に latex2html-2020.2, latex2html-2021 がリリースされています。 現在、latex2html-2020.2 用の日本語化パッチの作業をしているところですので、 しばらくお待ちください。
なお、98.1 以降の latex2html では、 figure 環境内で \includegraphics で EPS 画像を取り込んでいる場合、 それを latex2html で処理させたものに対して $FIGURE_SCALE_FACTOR の設定が効かないという問題がありますが、 それを有効にするには、その figure 環境内に \htmlimage コマンド (html パッケージ) を入れればいいようです。 ただし、最近の latex2html で導入された SVG 画像を生成させる場合は それでもうまくいかないと思いますが (それは latex2html のバグ)、 それは次期日本語化パッチで対応する予定です。
「注意、その他 (03/05 2020)」 に書いた図の番号が出ない問題は、やはり .aux の日本語コードの問題でした。
以前、「MS-Windows への LaTeX2HTML のインストール」 の 「注意等 (03/14 2018)」 にも書いていましたが、 現在の platex は、オプションをつけずに LaTeX ファイルを変換すると、 日本語コードを自動判別して処理しますが、その場合 .aux ファイルは、 入力ファイルの日本語コードではなく、デフォルトの日本語コード (例えば MS-Windows では昔は Shift_JIS, 最近は UTF-8、 Unix だと多分 locale の設定値か UTF-8) で出力してしまいます。
一方、日本語化された LaTeX2HTML では、.aux の日本語コードは、 入力ファイルの日本語コードと同じであると仮定して処理しますので、 .aux ファイルの日本語コードが入力と違っていると、 その中の日本語部分が文字化けしてしまって、正しく処理されなくなります。 それが原因で、対応する図番号が見つからないために起きた問題でした。
これを避けるには、.aux ファイルも LaTeX ファイルと同じ日本語コードになるよう、
platex でのコンパイル時に明示的に -kanji=[code]
オプションを指定してください。[code]
には latex2html の -ienc
オプションと同様、
euc, sjis, utf8
などを指定します。
先日、latex2html-2020 版の日本語化パッチ jp3.2beta1.30 を公開しました。 そのサンプルを紹介します。 なお、サンプルで使用したのは、
latex2html に付属するテストファイル l2test.tex、 およびそれが読み込むものを日本語化したもの + 日本語 EPS ファイルの EUC-JP 版 (*-ja-e.tex) 、Shift_JIS 版 (*-ja-s.tex)、 UTF-8 版 (*-ja-u.tex) です。 なお、formula*.tex が latex2html-2020 で少し更新されています。 それら以下に置きます。
まず、latex2html のサンプルは、以下の 3 種類の環境で作成しました。
そして、texlive, w32tex では、それぞれ Shift_JIS と UTF-8 の日本語コードの LaTeX ファイルに対するもの、 unix では EUC-JP, Shift_JIS, UTF-8 の日本語コードの LaTeX ファイルに対するものを処理させましたが、 出力の HTML ファイルもそれぞれ入力と同じコードのものを生成しています。
また、数式と EPS から生成する画像の形式は、 いずれも SVG と PNG の 2 種類を生成しています。 なお、latex2html-2020 では、 以前は生成する数式用の SVG 画像のサイズがおかしかった問題が 解消されていますので、日本語化パッチでも SVG をデフォルトに戻してあります (オリジナルと同じ挙動)。
以下がそのサンプルです。
-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
-image_type svg -ienc euc -oenc euc
):
l2htest-ja-e-unix-svg
-image_type png -ienc euc -oenc euc
):
l2htest-ja-e-unix-png
-image_type svg -ienc sjis -oenc sjis
):
l2htest-ja-s-unix-svg
-image_type png -ienc sjis -oenc sjis
):
l2htest-ja-s-unix-png
-image_type svg -ienc utf8 -oenc utf8
):
l2htest-ja-u-unix-svg
-image_type png -ienc utf8 -oenc utf8
):
l2htest-ja-u-unix-png
見てわかることなどをいくつかあげておきます。
上にも書きましたが、latex2html-2018 から数式画像として SVG 形式の画像が出せるようになっていたのですが、 latex2html-2019.2 までは その画像サイズのバランスがややおかしくなっていましたし、 日本語の LaTeX 環境では SVG の生成が オリジナルのものでは作れないようになっていました。
そのため日本語化パッチでは、 2019.2 までは SVG をデフォルトの画像形式にはしていませんでした (オリジナルは SVG がデフォルト) が、 latex2html-2020 からようやく SVG 画像のサイズのバランスがそれなりになってきましたし、 ps2pdf を経由した SVG 生成方式が正式にオリジナルにも導入されたので、 現在は SVG をデフォルトに戻しました。
逆に、オリジナルのものは (-nouse_dvipng の場合は) PNG 画像サイズが変に小さく作られてしまうようになってしまいましたので ($MATH_SCALE_FACTOR = 1)、 日本語化パッチではそれをほぼ従来の様式に戻しています ($MATH_SCALE_FACTOR = 1.6)。
見比べるとわかりますが、SVG 画像形式の方が数式画像は少し大きくなっていて ($MATH_SCALE_FACTOR = 2 位に相当)、 逆に EPS 画像は SVG 形式の方が小さくなっています。
また、SVG 画像形式の方は $MATH_SCALE_FACTOR の設定が効かず ($EXTRA_IMAGE_SCALE も効かない)、 よって全体の画像サイズを変更する方法が今のところわかりません。 このように、SVG, PNG のサイズの問題については、 まだ不安定なところがありますので、 今後も修正などを検討していきたいと思います。
最後の EPS 画像に関する参照番号が、texlive, w32tex の場合は UTF-8, unix では EUC-JP の場合は正常に出ていますが、 それ以外の場合は出力されていません。
実際、latex2html の実行時の最後に 「No number for "日本語の含まれる画像"」 などと表示されてしまいます。 多分 .aux ファイルの読み込み時の日本語コードの変換などで 失敗しているのだと思いますが、 次期日本語化パッチで修正できるよう調べたいと思います。
現在の latex2html では、pstoimg を経由せず dvipng を使って PNG 画像を生成することもでき、 その方が圧倒的に画像生成処理が早くなります (特に大量の画像がある場合)。
ただし、残念ながら日本語には対応していないので、
latex2html-2019.2 までは、日本語を処理する場合は、
初期化ファイルに「$USE_DVIPNG = 0;
」と書くか
実行時オプション「-nouse_dvipng
」
を使うことを推奨していましたが、
latex2html-2020 用の日本語化パッチからは、
日本語処理を行う場合はそれも自動的に設定することにしました。
よって、日本語化パッチのあたった latex2html で、
英語の LaTeX ファイルに対して dvipng を使いたい場合は、
必ず「-ienc noja
」を指定しなければいけなくなります。
取りこんでいる EPS 画像について、 Windows 環境では違いは大きさくらいしかありませんが、 unix 環境ではその中の欧文フォントに、 SVG の場合と PNG の場合で違いがあることがわかると思います。
これは、「注意、その他 (01/08 2020)」 にも書いた通り、画像生成の途中の経路の違いのためで、 SVG の場合はその EPS 画像を一旦 LaTeX ファイル (images.tex) に取り込んで、latex → dvips → ps2pdf → pdftocairo という経路で SVG 画像にしているのですが、PNG 画像の場合は同じく一旦 LaTeX ファイルに取り込んだあと、 latex → dvips → pstoimg という経路で PNG 画像にしています。 pstoimg の中では、gs で pnm ファイルにして、 それを netpbm のツールでフィルタ処理してから pnmtopng で PNG 画像に しています。
よって欧文フォントの画像化処理 (ラスタライズ) は、 SVG の場合は pdftocairo が行い、PNG の場合は gs が行います。 pdftocairo は gs を使わず、 cairo というライブラリを使用して処理をしているようですが、 それが (多分 fontconfig 経由で) gs とは別のフォントを使用する ためだろうと思います。 Windows の場合にフォントの違いがないのは、 それがたまたまなのか必然なのかわかりませんが、 とりあえず共通なフォントを参照した、ということなのでしょう。
(cf. 「注意、その他 (03/06 2020)」)
先日公開した latex2html-2018.3 用の日本語化パッチ jp3.2beta1.25 ですが、生成画像を gif にした場合 -transparent (default) がうまく効かない場合があります。 対応としては、インストール先の pstoimg の 1280 行目付近 (インストール前の場合は pstoimg.pin の 1515 行目付近) の以下の行を削除してください。
# 2019-03-05 shige: 2-39)
$trans_color = $TRANSPARENT_COLOR||'#d9d9d9'; # don't lookup rgb.txt
#$trans_color = $TRANSPARENT_COLOR||'gray85';
なお、png 画像の場合は特に問題ないようです。
2019 年末に、latex2html-2018.3 用の日本語化パッチ jp3.2beta1.25 を公開しました。 「注意、その他 (10/31 2019)」 でもサンプルをいくつかあげましたが、 今回は、-image_type による違いと、 英語文書と日本語文書での違いに関するサンプルを紹介します。
なお、jp3.2beta では、初期設定ファイルで $TEXENCODE と $HTMLENCODE を設定するか、 またはコマンドラインオプションで -ienc と -oenc を設定するかしないと、 日本語 LaTeX ファイルの変換では文字化けしますので注意してください。
上記の違いは、日本語と英語の違いはありますが、 オプションは -image_type と -use_dvipng の違いだけなので、 数式画像、および includegraphics による EPS 画像の変換以外には、 ほぼ違いは出ません。
ただし、日本語化パッチを当てた latex2html でも、 英語の LaTeX ファイルを変換する場合は、 日本語が混じらないものが出力されることがわかると思います。 jarticle などの日本語スタイルファイルを使わず、 かつコマンドラインで -ienc=noja -oenc=noja を指定していれば (または初期設定ファイルに $TEXENCODE, $HTMLENCODE がなければ)、 この英語版の挙動になります。
画像ファイルの違いについて見てみると、 PNG と GIF では途中の変換作業では違いはなく、 最後に PNG にするか GIF にするかが違っているだけなので、 日本語の場合も英語の場合もほとんど違いはありません。 しかし PNG と SVG では、色々違いがあることがわかります。
SVG はベクトル画像なので、拡大、縮小には強いのですが、 latex2html-2018.3 ではやや従来の挙動とは違っていて、 バランスもややおかしいようです。 そのあとにでた 2019, 2019.2, または現在の開発版でそれらは改善しているかもしれませんが、 もしまだ改善されていないようであれば、 現在の開発者に報告してみようと思います。
なお、これらはすべて手元にある firefox 71 の画面で確認したことなので、 他のブラウザでは違って見えるかもしれません。
latex2html 内部での上記の画像ファイルへの変換は、 今回のオプション指定では、それぞれ以下のように行われています。
ちなみに dvipng は、上では全く使われていません。 日本語文書では、dvipng を無効にしていますし、 英語文書では、pdflatex も lualatex も使えない場合 (-nouse_pdftex -nouse_luatex) にのみ、 dvilualatex か latex を使用して DVI 経由で画像変換を行い、 その際に dvipng を使うようになっているのですが、 pdflatex が使える場合は実際には dvipng は使わないので、 本来は use_dvipng かそうでないかで挙動が変わってしまうのはおかしいのですが、 現在の latex2html-2018.3 では、 use_dvipng かそうでないかで実際の途中の経路が上のように変わってしまい、 出力結果も変わる (PNG/GIF の場合) ことになっています。
上の経路を見れば、前の挙動の理由がなんとなくわかるものもあると思います。 例えば、SVG の場合に EPS 画像の英文フォントが変わってしまうのは、 pdftocairo を通っているせいのようで、 それが参照する Helvetica フォントと、 gs が参照する Helvetica フォントが違うために起こる現象だろうと思います。
(cf. 「注意、その他 (03/05 2020)」)
今回、latex2html-2018.3 用の日本語化パッチを公開しましたが (jp3.2beta1.24)、 2018.3 は本体に色々な改変が行われています。
例えば、png 出力では dvipng を使うのがデフォルトになっていますが、
これだと日本語が通らないなど色々問題がありますので、
初期設定ファイルで「$USE_DVIPNG = 0;
」と
無効にしておくといいでしょう
(必要ならオプション -use_dvipng
で有効にできます)
また、CSS 部分にも大幅な改変が入りました。少しサンプルで紹介します。 まず、デフォルトで出力される CSS ファイルに横幅の制限が入ったため、 デフォルトの見た目が従来とだいぶ変わりました。
従来の l2h の出力は、ブラウザの横幅一杯に表示されますが、 上を見てわかるように、2018.3 は横幅に制限が入っていますので、 横幅を長く表示させている場合は、左右に余白が入ります。 これは、デフォルトの CSS ファイル (上の場合は l2htest-ja-e.css) の BODY の設定を削除すれば、 ほぼ元の状態に戻ります:
ただし、これと 2018.2 の出力と見比べるとわかりますが、 横幅以外にもフォントやキャプションの位置など、 色々な点で 2018.3 の出力は変更が行われています。
次に、SVG 画像出力について紹介します。 従来数式や EPS 画像は、PNG か GIF に変換して出力されていましたが、 latex2html-2018.3 では、それ以外に SVG 画像への変換もサポートされています。 それには、画像用の LaTeX ファイル (images.tex) を pdflatex か lualatex で一旦 PDF ファイルにし、 その後 pdftocairo (poppler に含まれるもの) を使って SVG 画像化しています。
しかし、pdflatex も lualatex も通常は日本語 LaTeX ファイルが通らないので、 日本語化パッチではその代わりに platex で処理して dvi ファイルを作った後で、 dvipdf (dvips + ps2pdf を使うスクリプト) か、 それがなければ dvips + ps2pdf で PDF を作成し、 それを pdftocairo にかけるようにしてみました。 ほぼこれで svg 画像化もうまくいったのですが、 残念ながら数式の大きさのバランスがやや変なようです (firefox など、SVG が正しく表示できるブラウザが必要)。
-image_type svg
の出力:
l2htest-ja-e.tex 等
の変換結果
上の 2018.3 のデフォルト出力と、 数式のページ (node5.html) と比較すると、 後者はやや数式のバランスがおかしいことがわかると思います。
SVG 出力では、実はオリジナルの latex2html でも
少しいくつか問題があるようで、今回も修正をいくつか入れているのですが、
現在も色々修正されているようですので、
変更点などを確認しながら修正していきたいと思います。
なお、そのような不安定性のため、
日本語化パッチでは SVG 画像出力をデフォルトにはせず、
優先順位を下げています (オリジナルは SVG がデフォルト)。
SVG 変換を使用したければ、
コマンドラインオプションで -image_type svg
と指定してください。
「注意、その他 (08/08 2019)」, 「注意、その他 (09/05 2019)」, 「注意、その他 (09/13 2019)」 で報告した、今の firefox で インライン画像の垂直方向のアラインメントで問題が起きる件ですが、 firefox-70 が最近出て、それで確認したらちゃんとずれが解消されました。
なお、比較的新しめの latex2html (2018.3 以降 ?) が生成する HTML は、 その辺りを少し違う方法で位置合わせしているためその問題は起きないようです。
「注意、その他 (08/08 2019)」, 「注意、その他 (09/05 2019)」 で報告した、今の firefox で インライン画像の垂直方向のアラインメントで問題が起きる件ですが、 firefox の bugzilla に報告したところ、 現在の firefox 69.X でも問題が入ったままだが、70 では直る、 という話でした。
どうやら少し前に問題が報告され、それが一旦直されていたようですが、 69 には間違えて入ってしまっているようです。
とりあえず firefox 70 が出るまで待ちましょう。
(cf. 「注意、その他 (10/25 2019)」)「注意、その他 (08/08 2019)」 で報告した、インライン画像の垂直方向のアラインメント (位置合わせ) の件ですが、多少状況がわかってきました。 以下に、この問題に関するテストページを置きました。
元々、img タグの align による垂直合わせは以下のようになっています。
text-va.html の結果を見ると、 waterfox と opera では、bottom, middle は上の通りなのですが、 top は「テキストの一番上」ではなく、 「その行の一番上」になってしまいます。 つまり、その行に大きな画像があって上の位置が上に拡張されると、 その一番高いところに画像の一番上が揃うように上げられます。
一方、firefox の text-va.html の結果は、middle はいいのですが、 bottom と top が「テキストの一番下」「テキストの一番上」ではなく、 「その行の一番下」「その行の一番上」になっています。 latex2html のインライン画像は、bottom と middle を使っていて top は基本的に使っていませんので、 それで waterfox や opera では正常で、 firefox では異常な出力になってしまっているようです。
では、なぜ firefox がこのようになっているかと言えば、 垂直方向の位置合わせは、現在は img タグの align は非推奨で、 CSS の vertical-align でやることになっていて、 その vertical-align の指定は以下のようになっているのですが、 それが新しい firefox では img の align にも (ある意味間違って) 適用されてしまっているのではないかと思います。
つまり、以前の img タグの align の bottom, top は、 CSS の vertical-align では bottom, top ではなく、 text-bottom, text-top に対応します。 実際、そのように書き換えた text-va2.html の方は、 今の firefox でも waterfox でも opera でもいずれも正しく表示されます。
となれば、現実的な解決策は、 latex2html で現在 img タグの align を使っているインライン画像の 垂直方向の位置合わせ (bottom, middle) を、 align でなく CSS に変えて text-bottom, middle とする、 ということになりそうです。 ただし、img の「align="middle"」と CSS の 「vertical-align : middle」では、 テキストの半分の高さ分だけ違いもあるので、 その分の修正も必要かもしれません。
latex2html-2018.3 以降は、CSS の vertical-align を使ったコードが導入されているので、 もしかしたらこの問題は 2018.3 以降は解消されているのかもしれません (が、まだ試していません)。
私はブラウザは普段 Unix 上の Firefox を利用していますが、 最近その Firefox で latex2html の出力がおかしくなることに気がつきました。 具体的には、一部の地の文中の数式 ($ で囲むもの) を画像化したものが、 極端に下に表われたりする、という現象です。 例えば以下のページを最近の Firefox や、Edge で表示させると 問題が起きます。 Firefox だと「x」や「C2」などがかなり下がり、 Edge だと逆に「(0,H)」や「(L,0)」などがかなり上がると思います。
以前のバージョンの Firefox では起きていなかったような気がしますが、 どのバージョンから起きるようになったのかはわかりません。 手近にあるブラウザで確認してみると、以下のような感じです。
現象は違いますが、最近の Firefox と Edge で問題が起きるようです。 なお、Waterfox で正常に出るところを見ると、 多分あるところまでの Firefox では起きなかった問題だと思います。
これは、テキストが含まれる表示行の 1 行の中に複数の画像があり、 その IMG タグでの align が異なるものが含まれると起きるようで、 Firefox で下に出る画像は bottom の align、 正常に出るものは middle の align になっているようです。
本来は、align の異なる複数の画像の IMG が 1 行にあっても、 それぞれとテキスト文との関係が保持されたまま表示される (つまり latex2html の出力が正常表示される) のが正しいはずなのですが、 最近の Firefox はその場合 bottom のアラインメントを、 テキストのベースラインではなく、 他の画像も含めた行幅の一番低いところに合わせてしまっているようです。 多分その解釈の方が間違っているのではないか (バグ) と思いますが、 新しい Firefox でそのように変わっていること、 および最近は IMG タグの align 要素の使用は非推奨となっていることからすると、 今後 Firefox の挙動が元の形に戻るかどうかは微妙なところです。
一方 Edge は、垂直方向のアラインメントは全部無視のようで、 すべて bottom と同等になっています。 align が middle になっている画像は、 それ用に画像の下に 4 割程の空白をつけた形式になっているのですが、 Edge だとそのような画像がその分持ち上がって表示されるわけです。 IE だと正常に表示できるのに、 Edge がそうなっていないことについてはなんともわかりません。
Firefox の場合は、bottom を使わず全部 middle を使うようにすれば解決するでしょうし (画像の作り方から変えないといけないので、 HTML だけ変えれば済むわけではない)、 Edge の方は逆に全部 bottom にすればある程度解決するでしょう (ただし、g や y のように ベースラインの下に少し伸びるべき画像はやや上に上がってしまうので 完全な解決にはならない)。 Firefox と Edge で正常表示されない というのはかなり痛いような気がしますが、 Firefox の挙動が今後どうなるか、しばらくは様子見でしょうか。 もしかしたら新しい latex2html (2019 とか) では上のような改善がなされているのかもしませんが、 まだ把握していません。
(cf. 「注意、その他 (09/05 2019)」, 「注意、その他 (09/13 2019)」, 「注意、その他 (10/25 2019)」)
UTF コードや CID 番号で日本語の特殊な漢字や記号などを指定できる otf パッケージというものがありますが、 それ用の perl ファイルを作成してみました。 次期パッチからは日本語化パッチ内に含める予定です。
とりあえず、otf パッケージを使用する LaTeX ファイルと同じ場所に置いて、 latex2html にかけるだけです。 もちろん、他のスタイルファイル用の perl ファイルの置き場所にコピーしても構いません。
HTML への変換では、\UTF 命令の方は、
そのまま「&#[num];
」の形式の番号参照で
Unicode 文字を出すようにし、
\CID 命令の方は、Unicode 文字を探すことは原理的に無理なので、
画像化しています。
なお、初期設定ファイル (~/.latex2html-init) 内で、
「$OTFUTFTOIMG = 1;
」が書かれている場合は、
\UTF 命令の方も強制的に画像化します。
なお、画像化の際は、(少なくとも現在は) platex と dvips と gs で画像化していますので、 それらが otf パッケージの漢字出力に対応している必要があります。 具体的には、元の LaTeX ソースファイルを platex にかけて、 dvips で Postscript ファイルにしたものが gs で正しく表示される必要があります。 そうでないと、latex2html の変換時にエラーとなるか、 または本来画像化される漢字部分は何も表示されない HTML ファイルが生成されます。
また、\UTF 命令、\CID 命令のそれぞれの出力箇所を SPAN タグでくくって、 それぞれ otf-utf, otf-cid というクラス名を入れていますので、 その部分に対する CSS 制御も行えます。
以下にサンプルを置きますが、特に文字を大きく拡大する場合などは、
「注意、その他 (08/08 2017)」
に書いた -dresolution
オプションを使うといいでしょう。
なお、サンプルに使用した LaTeX ファイルは、奥村本にある例のものです。
$OTFUTFTOIMG = 1
の場合:
otf/testotf1-utftoimg/
$OTFUTFTOIMG
はなしで
-dresolution 288
の場合:
otf/testotf1-dres288/
$OTFUTFTOIMG = 1
で
-dresolution 288
の場合:
otf/testotf1-utftoimg-dres288/
なお、うちの環境では、otf パッケージ用の漢字は、 「原ノ味フォント」(HaranoAji フォント) を使用しています。
「注意、その他 (04/06 2007)」, 「注意、その他 (06/08 2004)」, 「注意、その他 (12/14 2004; no.3)」, 「注意、その他 (01/07 2005)」 で書いてきた、 「Tgif で書いた EPS 画像などの『白での塗りつぶし』の透明化に失敗する問題」 の第 5 段です。 第 4 段の 「注意、その他 (04/06 2007)」 の TRANSPALENT_COLOR を変更するだけではうまくいかない例がありましたので、 報告します。
前のうまくいかなかった場合と 今回のうまくいかなかった場合で、 使用している netpbm や TeX, gs などのバージョンが 大きく変わってしまったので、 前の問題と今回の問題の起きる原因が違っているかもしれません。
問題は、結局 tgif で白で塗り潰した部分 (背景として見せるために) がある EPS 画像を TeX に貼り込んだ場合の問題なのですが、
\pagecolor[gray]{.7}
)
を埋め込んで、その色を transparent 色とする
となっているようなのですが、 PNG 画像の場合は、この後者の色の決め方が、
となっています。 そのため、EPS ファイルに存在する白などの色は背景色と見なされず、 当然透明化されません。
この場合は、EPS 内の白を透明化するために、初期設定ファイルで
「$LATEX_COLOR="\\pagecolor{white}";
」
のように定義して、
環境変数 TRANSPALENT_COLOR に「#ffffff
」
を設定すれば済みます。
なお、GIF 画像の場合は少し状況が違い、ppmtogif に渡される透明化色は、
となっています。
今考えると、実は、以前私のところで起きていた問題は、
私が GIF 画像を使用していたためでもあり、
pagecolor の設定と TRANSPALENT_COLOR が
GIF 環境ではずれていることが大きな原因でした。
この場合もむしろ TRANSPALENT_COLOR を設定するより、
「$LATEX_COLOR="\\pagecolor{white}";
」
とする方が良さそうです。
ただし、この $LATEX_COLOR は常に white にすると、 背景ではない白まで透明化する可能性がありますので、 必要な場合に一時的に使用するのが良いようです。
pstoimg スクリプトの TRANSPALENT_COLOR の処理、 特に GIF と PNG の違いについては、 次期パッチで多少修正を入れようと思っています。
「注意、その他 (02/07 2018)」
に書いた
「%begin{latexonly}
, %end{latexonly}
」
の話ですが、
よく見たら「LaTeX Web コンパニオン」に書いてありました。
ということは、それ以前にも私は既に見ていたはずですし、
それほど目新しい話ではありませんでした。
失礼しました。
最近、eqnarray 環境内に書いたコメント行付近で、 latex2html がその数式を画像化したところに「tex2html_comment_mark」 (c, m は下付き文字になる) が残る現象が見受けられました (latex2html-2017.2 の jp1.10beta1.19, jp2.1beta2.19)。
これは、かなり古いバグとして認識していたのですが、 perl-5.16 による latex2html で問題が起きない LaTeX のソースであっても、 perl-5.20 以降の perl で latex2html を実行すると起きます。 色々調べてようやくわかりましたが、 やはり新しい perl の正規表現に関する 仕様・挙動の変更に伴なう問題のようです。
具体的には、1420 行付近にある
s/([ \t]*(^|\G|[^\\]))(%.*(\n[ \t]*|$))/print "%";
の文の正規表現の「\G
」に原因があるようです。
「\G
」の動作は多少問題があるようで、
perl のバージョンの更新に伴い挙動の変更が行われています。
そのため、以前の perl ではこの部分により、
LaTeX 文書のコメント行が一旦すべてデータファイル (TMP/verbatim)
にタグ番号付きで書き出されるのですが、
新しい perl (5.20 以降) だと、
一部のコメント行が正しく書き出されません。
そのために latex2html がコメント行の処理に一部失敗して、
「tex2html_comment_mark」が残る、ということが起きてしまいます。
latex2html-2018 でも既にそれに対応が取られていて、 \G の部分が消されて
s/([ \t]*(^|[^\\]))(%.*(\n[ \t]*|$))/print "%";
となっています。
次期日本語化パッチ (jp1.10b2.20, jp2.1b1.20 以降) でも
その修正を導入する予定ですが、
必要ならその部分を手動で直すことも可能です。
新しい perl 用に直さなければいけない部分が既にかなり見つかっていますが、 この分だとまだかなりそういうコード (特に正規表現) が残っていそうです。 何か問題があれば、報告して頂ければと思いますし、 なるべく新しい版を使うようにして頂きたいと思います。
最近、eqnarray 環境内に \ref を使用する LaTeX ファイルを latex2html にかけたら、その数式の一部が切れ、 さらにその先の数式がずれてしまい、 最後の数式が生成されなくなってしまう、 という問題にあたりました。
images.tex にその原因がありましたが、\ref を含んだ部分に、
(空行)
% latex2html id marker NNNN $displaystyle ...(変換すべき数式部分)
という行が生成されています。
本来は、NNNN (番号) の後ろで改行されなければいけないのですが、
それが改行されていないため images.tex ではコメント行とみなされ、
その数式画像がうまく生成されない、という問題を起こしていました。
実は、これは古いバグに対する日本語化パッチの対応 (2010 年 10 月)
が原因で、
display 数式環境で空行があるとエラーになってしまう、
という古い LaTeX の仕様に合わせた修正によるものでした。
元々の latex2html では
「% latex2html id marker NNNN
」
の前後両方に改行が入るようになっていたのですが、
以前のバグでは後ろの方に空行ができてしまうので、それを避けるために
後ろの改行を一つ取っていました。
今回は、上に書いたように実は逆の状況になっていて、 後ろの改行が必要で、前の改行が不要になっています。
よって、どちらに改行が必要かを正しく判断して 空行を作らないようにするようなパッチを次期日本語化パッチ (jp1.10b2.20, jp2.1b1.20 以降) では導入する予定ですが、 実は「display 数式環境で空行があるとエラーになってしまう」 ということ自体が古い LaTeX の仕様で、 現在の LaTeX ではこれもどうやら起きないようなので、 この修正自体を外して元々の latex2html の状態に戻すのもいいかもしれません。
手動で修正するならば、latex2html 本体の 3500 行目あたりにある、
$contents = "\n% latex2html id marker $id $contents" if
を、その上にある元々の latex2html の行 (コメントアウトされている)
$contents = "\n% latex2html id marker $id\n$contents" if
のように、$id の後ろに \n を入れればいいだけです。
最近、latex2html の動作確認のため 複数の perl のバージョンで動作させることを行ったのですが、 その場合、以下の方法があります。
/usr/local/perl-5.26.0/bin/perl /usr/local/bin/latex2html file.tex
#!
の後ろに書かれている perl
の絶対パスを書き換えて使用する
1. の方法では、コマンドラインが少し長くなるのが難点ですが、 何回も行わないのであれば特に問題もありませんし、 なんだったらスクリプト化してしまえば何度でも使い回しがききます。
2. の方法は、時と場合に応じて複数のものを使い分けたり、 必要なら latex2html の中身を変更・修正したい場合には便利な手法です。
なお、いずれの方法でも、厳密にはこれだけでは十分ではなく、
l2hconf.pm で定義される $PERL
の値も書き換える必要があります。
これは、latex2html の内部から外部ツールである pstoimg, texexpand という
perl スクリプトを呼び出すときに使用する perl の絶対パスです。
それは、l2hconf.pm を直接書き換える必要はなく、
初期設定ファイルの中で $PERL
変数を再定義すればいいだけです。
2. ならば、少し強引ですが、そのコピーした latex2html スクリプト内に
その再定義値を書くという手もありますが、
タイミングを間違えないようにしないといけません。
よって、頻繁に perl のバージョンを切り替えて使いたいならば、
1. か 2. の方法と初期設定ファイルをセットで切り替えるような
スクリプトを作る必要があるでしょう。
(08/03 2018 更新)
先日、メールで、新しい perl (5.26) を使うと latex2html で「Unescaped left brace in regex」 に関する警告メッセージがでる、という報告がありました (Thanks 中林歩さん)。
perl 5.22 以降、正規表現内の { } は、\{, \} にしないといけないことになり (perl 5.26 以降は場合によってはエラー終了する)、 古い perl 用に書かれた latex2html には { } のまま残っている部分がかなり残っているため、 新しい perl ではこの警告がかなり出ます。 特に、最近 Ubuntu (18.04) の perl がデフォルトでこれになったようで、 中林さんと 「注意、その他 (07/13 2018)」 の latex2html-ml の報告者が丁度まさにその環境でした。
なお、この正規表現の他にも、perl 5.26 からは @INC 変数の . (カレントディレクトリ) が削除されたようで、 そのため、latex2html の make 時に「cfgcache.pm が読めない」 というエラーが出るようになりました (それ自体に実害はないようです)。
本家の latex2html-2017.2 あたりからも多少新しい
perl に関する対応が入っているのですが、まだ抜けがあります。
次期日本語化パッチ (jp1.10b2.19, jp2.1b1.19 以降)
では、上記正規表現、および cfgcache.pm の問題を
修正したコードを導入する予定です。
(08/02 2018 更新)
先日 latex2html-ml に、 enumerate package を使用すると 「Unescaped left brace in regex is illegal」 というメッセージが出てエラー終了する、 という報告がありました。
これは、enumerate パッケージのオプションに対するコードが 不十分だったようで、これに関していくつかバグが見つかりました。 次期日本語化パッチ (jp1.10b2.19, jp2.1b1.19 以降) では修正したコードを導入する予定です。
なお、このエラーは、 特に新しい perl (perl-5.26 以降) を使う場合に起きるようで、 それより古い perl の場合は、修正しなくてもエラーにはならないのですが、 正しく変換はされません。
先日 latex2html-ml に、
latex2html が作る HTML ファイルのフッタ部分を
固定したものにしたい、という質問がありました。
それは、初期設定ファイルで
「$BOTTOM_NAVIGATION = 1;
」として、
かつその中で
「sub bot_navigation_panel
」を定義すればいいでしょう。
(08/02 2018 更新)
「注意、その他 (08/08 2017)」 に書いた -dresolution オプションですが、 サンプルは以下にありますので、そちらを参照してください。
LaTeX 文書の日本語コードは、環境やユーザによって EUC-JP, Shift_JIS, UTF-8 などのものが使われていると思いますが、 最近の platex は、オプションで強制的にコードを指定することもできますが、 作業環境のロケールを見てくれますので、 そのロケールと文書の日本語コードが同じであれば 日本語コードオプション (-kanji=) をつけなくても 問題なくコンパイルができます。
ところが逆にそれが曲者で、 数式の画像化などで latex2html 内部から platex の呼び出す場合、 ユーザのロケールを見てくれず、 デフォルトの UTF-8 での動作などとなってしまうことがあります。 元の LaTeX 文書がそれと同じコードならいいのですが、 そうでないと数式内の日本語文字などが文字化けしてしまうことになります。
その場合、latex2html のシステム設定ファイルである l2hconf.pm の
$LATEX 変数にある platex コマンド名の最後に '-kanji=euc'
を追加してもいいのですが、むしろユーザ毎の設定として、
初期設定ファイル (~/.latex2html-init) に
$LATEX = "$LATEX -kanji=euc";
のような行を入れる方が楽だと思います。
(cf. LaTeX2HTML に関する Q and A 「Q 2.5. 数式内の日本語が文字化けする/出ない」)
新しい latex2html-2017.2 では、 デフォルトで各ページの下についていた 変換日付と変換者名がつかなくなりました (初期設定ファイルでつけるようにすることは可能)。 それとともに、最後の「About this document」のページのついていた 変換者と日付も、変換者の部分が取り除かれ変換日付だけが つくようになりました。
日本語化パッチの「この文書について」は、
従来のままとすることも可能ですが、
一応本体の変更を尊重して、
デフォルトでは日付だけがつくように変更したいと思いますが、
初期設定ファイルで $USESIGNEDINFOPAGE
の変数に値を設定することで、
従来の形式にすることも選べるようにしたいと考えています。
(08/01 2018 更新)
latex2html には texexpand のオンラインマニュアル
texexpand.1 (nroff 形式) が付属していますが、
今回それを訳しながら (まだ終わっていません)
読んでみて初めて知りましたが、
latex2html 用に「%begin{latexonly}
,
%end{latexonly}
」などという環境 (らしきもの)
がサポートされています。
「\usepackage{html}
」の元で
「\begin{latexonly}
,
\end{latexonly}
」という環境
(LaTeX でのみ処理され、latex2html は無視する)
が使えるのは知っていました。
ただ、これもマニュアルを見て初めて知りましたが、
この begin 行と end 行は別の行にないといけないらしいです。
%begin{latexonly}
,
%end{latexonly}
」は、
LaTeX から見ればコメントなので、環境とみなされるわけではなく、
その間にある部分も環境内とは思われずに普通にコンパイルされますが、
latex2html はその間の部分の処理は
「\begin{latexonly}
,
\end{latexonly}
」
と同様に無視します。
「\begin{latexonly}
,
\end{latexonly}
」との違いは、
LaTeX 側でその環境と認識されるか、そうでないかの違いだけです。
私は、LaTeX と latex2html で処理を変える場合は、
むしろ html パッケージで用意されている
「\latexhtml{}{}
」という マクロを多用していましたが、
LaTeX だけで処理させたいもの、
特にプリアンブルでのサイズ命令やフォントに関する命令などは、
むしろ「%begin{latexonly}
,
%end{latexonly}
」を使うといいのかもしれません。
時間のあるときに試してみたいと思います。
(08/01 2018 更新)
(cf. 「注意、その他 (08/06 2018)」)
このページの更新をだいぶさぼっていました。どうもすみません。 いくつか latex2html に関して書こうと思っていた情報がたまっています。 さかのぼってそれらを上げていきます。
トップページの 「更新情報 (05/25 2017; no.2)」, 「更新情報 (02/02 2018)」 にも書きましたが、CTAN サイトの latex2html の置き場所:
には、既に latex2html-2016 以降の latex2html-2017-1.zip, latex2html-2017.2.tar.gz, latex2html-2018.tar.gz が置かれています。 現在日本語化パッチは、 latex2html-2017.2 用のものをリリースしていますが、 latex2html-2018 用のものはしばらくリリースを見送る予定です。
これらでは、各ページの下に出る変換者や日付などの表示が変更されました
(デフォルトでは出なくなりました) が、
新しい perl (perl-5.22 以降) 用の修正なども色々入っています。
特に、新しい perl では、従来問題なかった latex2html
がエラーとなってしまう事例もいくつか見受けられます。
必要なものは、latex2html-2017.2 用の日本語化パッチにも
バックポートする予定ですので、
なるべく新しいものをお使いください。
(08/01 2018 更新)
latex2html の配布物には古いマニュアルの LaTeX ファイルが付属している (docs/ 以下) のですが、 その内容は、2000 より前のものからほとんど更新されていません。
その古いマニュアルの日本語訳も以前はあった (Yasufumi Haga さん) のですが、 最近その Web ページにはつながらなくなっています。
よって、その LaTeX ファイルのマニュアルではなく、 Unix オンラインマニュアル (latex2html.1) と、 Perl スクリプトに含まれるマニュアル (pod) の日本語訳を行い、 ついでに古いオプションに対する注意や、 新しいオプションの説明の追加などを入れてみました。 一応、Yasufumi Haga さんのマニュアルの日本語訳は使わずに一から訳しました。 pstoimg や texexpand の pod 形式のマニュアルも日本語訳してみました。
特に MS-Windows 上では pod 形式のマニュアルの参照がうまくできないようなので、 pod 形式のマニュアルは分離したファイルで参照するのがよさそうですので、 それなりに役立つかもしれません。
ある程度参照できる形式に変換したもの (HTML かテキスト) を、
そのうちに公開したいと思いますが、
その前に多少確認もしたいと思いますので、
しばらくお待ちください。
(03/30 2018 更新)
先日 latex2html-ml に、以下のような質問が来ていました。
内容は、enumrate パッケージとそのオプションを使うと、 タグ部分と内容の部分が OL ではなく、DD, DT のタグで表現されるので、 そこが改行されて表示されてしまう、 改行させないようにするにはどうしたらいいか、という質問でした。
それは、生成された .CSS ファイルに、
DT { float: left }
を入れれば済みます。
この CSS の内容は、html パッケージを使えば
LaTeX ファイル中に書くことも可能ですし、
-style オプションで事前に用意したスタイルシートを使うことも可能です。
なお、latex2html では、CSS (styleseet) ファイルに関する変数が 3 つほど定義されています (それ以外にもスタイルシートに関係するであろう 良くわからない内部変数が 4 つ位あります)。
$STYLESHEET
= latex2html が作成する HTML ファイル用のスタイルシートファイルの名前。
LINK タグの HREF の値にこの名前を使用する。
デフォルトは $FILE.css ($FILE はターゲット LaTeX ファイル名)。
-style オプションは、この値を上書きする。
$EXTERNAL_STYLESEET
= $FILE.css に書き込むデフォルトの内容を書いたスタイルシートファイル名。
デフォルトでは、latex2html 内部に埋め込まれているものを書き出すが、
この値のファイル名があればそちらの内容を使用し、
デフォルトのものは書き出されない。
なお、\htmlsetstyle, \htmladdtostyle などが使用されれば、
その内容も $FILE.css には追加される。
$STYLESHEET_CASCADE
= LINK タグの前の行に書き出す HTML コード。
実は、後の 2 つはマニュアルにも書かれていない undocument な仕様です
($EXTERNAL_STYLESHEET
は
docs/l2hfiles.dat には少し書いてある)。
1. は通常 $FILE.css になりますが、-style=hoge.css のように指定すると、
$STYLESHEET
が hoge.css になります。
その場合でも latex2html は相変わらずデフォルトの
$FILE.css を作成しますが、
HTML ヘッダの LINK タグには「HREF="hoge.css"
」
と書かれますので、
hoge.css を latex2html が作るディレクトリの中にコピーすればいいわけです。
2., 3. は、オプションでは指定できませんので、 必要ならば初期設定ファイル内で定義します。 なお、3. は単にその値を LINK タグの前の行に書き出すだけなので、 スタイルシートと関係ない値を定義して使用することも可能です。
なお、-style でファイルを指定した場合の 1. と 2. の違いは 以下のようになっています。
画像化した数式が、他のサイトで公開されている latex2html の変換結果に比べて、 うちの環境で latex2html を使ったものはだいぶ汚ないことにふと気がつきました。
どうやらアンチエイリアスがうまく効いていないようなのですが、 色々試したところ、Ghostscript のバージョンによるらしいことがわかりました。 うちでは、日本語の縦書きに関して有利な gs-7.07 をデフォルトにしていますが、 最近の gs-8.X, gs-9.X に変えてみるとアンチエイリアスされ綺麗なものになります。
なお、latex2html が数式を画像化するのには、 付属の pstoimg というスクリプトを使っていますが、 これには -antialias 以外にも解像度に関わるオプションがいくつかあります。 例えばそれらを使って、少し大きめの画像を作っておいて、 それを HTML の IMG タグの WIDTH 指定で丁度良い大きさに縮小すれば、 見た目の解像度は上がるのでは (オーバーサンプリング)、 と考えて調べてみました。
実はヘルプ (pod) を見ると -shoreup がそれらしいオプションのようだったのですが、
残念ながらうまくいきませんでした。
-density オプションが解像度 (DPI) 指定で、
しかも latex2html では使っていないようなので、
これを使って見た目の解像度を上げる -dresolution オプションを
作成してみました。次期パッチには試験的に導入してみる予定です
(jp1.10b2.18, jp2.1b1.18 以降)。
(03/30 2018 更新)
(cf. 「注意、その他 (03/28 2018)」)
以前、MS-Windows への latex2html のインストールについては、 阿部@北教大 さんの Web ページがよく知られていましたが、 最近その Web ページにつながらなくなっています。 元々オリジナルの latex2html 自体、 MS-Windows へのインストールもサポートしているので、 こちらでも情報を作ってみることにしました。
色々苦労はしましたが、 とりあえず日本語化パッチを当てたものが動くようになりましたので、 その作業手順や必要なファイルなどを公開します。 詳しくは、以下のページをご覧ください。
\usepackage{graphicx} している LaTeX ファイルに対して
latex2html の処理をすると、
最後に「No implementation found for style `graphicx`」などと表示されますが
(cf. 「注意、その他 (01/21 2004)」)、
それが出ないようなパッチを作りました。
次期日本語化パッチに導入する予定です (jp1.10b2.16, jp2.1b1.16 以降に適用)。
(03/30 2018 更新)
以前 「注意、その他 (12/25 2008)」、 「注意、その他 (12/26 2008)」 あたりで CSS に関する注意を書きましたが、 スタイルシートに関しては現在の latex2html は、html 4.0 の元で LaTeX の代表的な環境等を以下のように処理しています。
見てわかるように、 数式以外の環境にはデフォルトではほぼクラスの定義はしていませんし、 数式部分のクラスも、やや統一されていません。
もちろん html パッケージを使えば、
自前で好きなクラスをある程度
LaTeX ファイルに埋め込むことはできるのですが、
個人的にはデフォルトで各環境に対応するクラス名が
定義されていてもいいのかなと思います。
そのあたりの改良も考えてみたいと思います。
(03/28 2018 更新)
先日 latex2html-ml に以下のような質問が流れていました。
まず前者は、以下のようなソースで問題が起きる、という話でした。
\documentclass{article}
\usepackage{amsmath}
\usepackage{html}
\begin{document}
\begin{align}
v_j &=
\begin{cases}
1 & \text{if this happens} \\
0 & \text{otherwise}
\end{cases}
\end{align}
\end{document}
もちろん LaTeX 的には問題ありませんが、
latex2html にかけると、数式を画像化しようとする際に images.tex
のコンパイルが終わらなくなっています。
images.tex を見ると、 なぜか cases 環境がバラバラにされてしまっているようでした。 調べた結果、versions/math.pl のバグのようです。 align 環境に対しては、\text コマンドの前後でアラインメントを取るために latex2html が分解するのですが、 その前後で環境が分断されたり、 \left と \right が分断されたりすると 分解をやめて残り全体を画像化しようとします。 その部分に一箇所バグがあり、環境の分断のチェックがうまく行われておらず、 それで cases 環境が分断されてしまっていました。
これは以下のパッチで改善します。次期日本語化パッチには入れようと思います。
また、マニュアルのコンパイルですが、 latex コマンドで docs 内で「latex manual.tex」とすると以下のエラーがでます。
! Undefined control sequence.これは、直接には manual.tex のプリアンブルにある
\pdfmark@ ...e \space pdfmark}\else \Hy@colorlink
{\@ifundefined {@\pdf@link...
l.22 ...www-texdev.ics.mq.edu.au/l2h/docs/manual/}
\urldef\onlinedoc\url{http://www-texdev.ics.mq.edu.au/l2h/docs/manual/}
のような行が引き起こしているのですが、
結局はこの \urldef (後で \onlinedoc としてその後ろの \url{...}
を利用するための定義を行うもの) が、
その段階で \url を展開しようとして起きている問題のようでした。
しかも、これは latex でなく platex で実行すると起きません。
エラーメッセージにあるように、実はこれは pdf とも関係していて、 現在の latex コマンドが pdftex ベースであるため、 html パッケージが取り込んでしまう hyperref 関係のマクロが PDF 出力用の設定やマクロ展開をするために起きてしまっているようです。 platex で起きないのも、(少なくとも私が現在使用している) platex が pdftex ベースではないためです。
これを避けるには、manual.tex の先頭にある「\usepackage{html,...」 の前に「\let\pdfoutput\undefined」を入れるといいようで、 それにより hyperref を取り込まなくなり上の問題が解消します。
なお、manual.tex ではそれ以外にも、 「\address が未定義」というエラーも出ます。 それは \address の中身を \author の中にでも入れてやれば解消します。
ただ、実際には latex2html の付属マニュアルは、 latex2html の本体 (これ自体かなり更新されていませんが) よりも全然更新されていないため、 latex2html の現在の版とは合わない部分がかなりあります。 よってコンパイルだけ通っても、 それを参考にするとそれはそれで問題なんだけど、とも思います。
nkf を使用する jp1.10beta パッチの利用に関して、 付属ドキュメント README.patch-jp-pre に誤りがありました。
「2.4. make」の節に以下のように書かれています:
jp1.10beta の場合は、利用している LaTeX (pLaTeX) が EUC-JP 環境でしかし、これは私の間違いでした。 このままコメント記号を外してはいけません。
はなく Shift_JIS 環境 (デフォルトで Shift_JIS を受け付ける) であ
る場合は、prefs.pm に書かれている (コメントアウトされている)
# $prefs{'TONATIVE'} = "|$nkf -s";
# $prefs{'FROMNATIVE'} = "$nkf -e";
を
$prefs{'TONATIVE'} = "|$nkf -s";
$prefs{'FROMNATIVE'} = "$nkf -e";
に直して下さい (コメント記号を外す)。
正しくは、以下のようにしてください:
jp1.10beta の場合は、利用している LaTeX (pLaTeX) が EUC-JP 環境で基本的な違いは「nkf の前の $ を取ること」です。 config/config.pl 内で「$nkf -e」のように書いていたのをそのまま prefs.pm に持ってきたために起きた間違いです。 $ をつけたままだと日本語のコード変換が正しく実行できない latex2html がインストールされてしまいます。
はなく Shift_JIS 環境 (デフォルトで Shift_JIS を受け付ける) であ
る場合は、prefs.pm に書かれている (コメントアウトされている)
# $prefs{'TONATIVE'} = "|$nkf -s";
# $prefs{'FROMNATIVE'} = "$nkf -e";
を
$prefs{'TONATIVE'} = "| nkf -s";
$prefs{'FROMNATIVE'} = " nkf -e";
に直してください (コメント記号を外し、nkf の前の $ を取る)。
もし、nkf にパスが通っていなければ、nkf の実行ファイルのパスを
/usr/local/bin/nkf のようにフルパスで書いてください。なお、
「FROMNATIVE」の方は nkf の前に | がないことにも注意してください。
なお、UTF-8 環境の場合は、「| nkf -s」を「| nkf -w」とします。
また、jp1.10beta の場合、 出力される HTML の日本語コードを指定するよう以下のいずれかを行ってください (そうしないと文字化けするようです)。
これらは JIS (ISO-2022-JP) の HTML を出力する場合の例ですが、 シフト JIS (Shift_JIS) にしたければ上の「jis」を「sjis」に、 日本語 EUC (EUC-JP) にしたければ「jis」を「euc」に、 UTF-8 にしたければ「jis」を「jutf」にしてください。 ちなみに、これらは LaTeX ファイルの日本語コードとは関係ありません。
さらに、jp1.10beta の場合、.latex2html-init に 「&do_require_package("japanese");」のような行を 入れないでください。 これが .latex2html-init にあると、上の出力指定が効かなくなってしまい、 文字化けの原因となります。
なるべく早く、ドキュメント等の修正を行いたいと思います。
この件に関しては、若松久仁光さん (harmos2@yahoo.co.jp) から、 Mac OS X (10.6) 上の UTF-8 環境で 1.10beta 系パッチを使用した場合の 文字化けの情報と、2.1beta 系パッチでの動作報告を頂きました。 どうもありがとうございました。
先日 latex2html-ml に以下のような質問が流れていました。
\documentclass[12pt]{article} で、 equation 環境内で 「\int\limits _{-\infty}^{+\infty}」を書いて、 -html_version 3.2,math オプションで latex2html にかけると、 画像に黒い下線が残る
LaTeX2HTML で黒い下線が残る理由はいくつかあるのですが、 これは少し今までのとは少し違うように思ったので調べてみました。 すると、以下のことがわかりました。
これは、画像を良く見るとわかるのですが、 下に残る黒い下線よりもインテグラルの上の無限大記号 (∞) が右にはみ出していることが原因です。 実際、無限大が画像の右端まで伸びてしまっていることがわかるでしょう。 まず、このような黒い下線等が付き、消される経緯を、 説明のためのイメージつきで簡単に説明します。 なおサンプルイメージの外の枠の内部が、 実際に作成される画像全体だと思ってください。
黒い線をつけずに単純に pnmcrop してしまうと、 以下のように余白が全くない画像になってしまい、 HTML 上で配置すると上下などがそろわなくなってしまいます。 それを避けるために LaTeX2HTML はこのような細工をしています。
だから、すべての「LaTeX2HTML の黒線問題」は、 黒線が「正常」に一度つけられていて、 それが何らかの理由で消すことができていないことで起きています。 その消すことができない理由を探せばいいわけです。
上の作業の 2 番目で「本来ならば」と書きましたが、今回の問題では、 実際には下の黒線よりも数式部分がやや右にはみだしたため、 2 番目の作業を行った際に、下の黒線の右にわずか (1 ドット幅) なスペースが残ってしまったために起きた問題でした。 つまり下の黒線が右端まで伸びていないのです (よくみると、ごくわずかに右端が白くなっているのがわかります)。 そのために、3 番目の pnmcrop による削除の際に、 下の線がどうしても取れなくなってしまい、 それが残ったというわけです。
\int の後ろに \limits を置いたせいで 上端の無限大記号が大きくなってしまい、 それを LaTeX2HTML がちゃんと計算できずに起きた問題です。 このようにソースに少し手を加えてしまうと、 これと似たようなことは起こり得ます。
とりあえずの回避策 (そしてそれなりにまっとうな回避策) は、 下の下線をもう少し右にのばして、 数式の右に適切な余白を残すようにすることでしょう。 例えば今回の問題の場合は、 「\int\limits _{-\infty\hspace{2mm}}^{+\infty}」 のようにして、数式がもう少し右に幅を持っていることを LaTeX2HTML に認識させるようにすれば解消します。
なお、「-html_version 3.2,math」の場合にこの問題が起きたのは、 math モジュールを使用すると、 equation 環境であってもこの環境全体を画像化しようとはせず、 HTML で記述できる式 (部分式) はなるべく HTML で記述しようとするからです。 math モジュールなしでは、 このインテグラルの入る環境全体を画像化しようとして、 横に長い画像を作ります。 math モードの場合はこのインテグラル (と上端下端を合わせたもの) の部品だけを画像化しようとして、それだけを取り出して画像化するのです。 それで右端が欠けるようなことが起きるわけです。
先日 latex2html-ml に以下のような質問が流れていました。
tabular 環境は HTML の TABLE に置き換えられるんだけど、 \hline を入れたり取ったりしたものが反映されないのはどうしたらいいか例えば、として上げてあった例は以下のようなものです:
% 1 行目と 2 行目の間の水平線がない
\begin{tabular}{|c|c|}\hline
a & b \\
c & d \\ \hline
\end{tabular}
これは LaTeX では、1 列目と 2 列目の間には縦線が入りますが、
1 行目と 2 行目の間の横線はありません。
しかし、LaTeX2HTML の出力では確かに普通の全部の罫線の入った表になります。
実は、LaTeX \hline, \cline の機能は、 HTML の罫線の制御に比べて高機能なので、 そもそも原理的に無理な話で、 LaTeX の tabular で HTML では正しく再現されないものは沢山あります。
例えば、上の tabular ならば、実は以下のような、 TABLE タグの RULES 属性を利用する解決策があります (ただし、RULES はサポートしていないブラウザもあるようです):
<TABLE BORDER="1" RULES="rows">
<TR>
<TD>a</TD>
<TD>b</TD>
</TR>
<TR>
<TD>c</TD>
<TD>d</TD>
</TR>
</TABLE>
もちろんこれはどのような tabular にも使える手ではなく、
例えば以下のような tabular にはうまくいかず、
HTML でこれを表現する簡単な手段がありません:
% 1 行目と 2 行目の間の水平線はないが
% 2 行目と 3 行目の間にはある
\begin{tabular}{|c|c|}\hline
a & b \\
c & d \\ \hline
e & f \\ \hline
\end{tabular}
実際、LaTeX2HTML は \multicolumn, \multirow を COLSPAN, ROWSPAN に直すような仕組みは持っているようですが、 \hline, \cline は単純に無視しています (全体として 1 つでもあるか位しか見ていません)。
この解決策としては、一つは画像化してしまうことです:
\usepackage{html}
...
% html パッケージの makeimage 環境で囲む
\begin{makeimage}
\begin{tabular}{|c|c|}\hline
a & b \\
c & d \\ \hline
\end{tabular}
\end{makeimage}
これなら LaTeX の結果と同じものが得られます。
もう一つの解決策は、多分背景色を利用する方法でしょう。 内部の全部の罫線を削除し、罫線の代わりに背景色でグループを示す、 という方法です。例えば、上の 3 行の例ならば、 以下のような HTML と CSS を使えばいいわけです:
<TABLE BORDER="1" RULES="none"
FRAME="border">
<TR>
<TD CLASS="celgrp1">a</TD>
<TD CLASS="celgrp2">b</TD>
</TR>
<TR>
<TD CLASS="celgrp1">c</TD>
<TD CLASS="celgrp2">d</TD>
</TR>
<TR>
<TD CLASS="celgrp3">e</TD>
<TD CLASS="celgrp4">f</TD>
</TR>
</TABLE>
TD.celgrp1 { background-color : #ffccff }
TD.celgrp2 { background-color : #ffffcc }
TD.celgrp3 { background-color : #ccffff }
TD.celgrp4 { background-color : #ffffff }
RULES で none とすると内部の罫線がなくなり、 FRAME を border にすることで外枠は書かれます。 その上でグループ化するセルを同じクラスに指定して、 CSS でクラス毎に背景色を変えればいいわけです。
ただ、LaTeX2HTML では TD や TH のオプションを 与えるような仕組みがないので、これだけではうまくいきません。 それをやるには、versions/html3_2.pl, versions/html4_0.pl 等を修正する必要があります。
具体的には、それらの先頭に「$TDADDOPT = $THADDOPT = '';」 という行を入れておいて、tabular 環境を処理する process_tabular というサブルーチンの中の
if ($headcell) {
$colspec =~ s/<TD/<$headcell/g;
$colspec =~ s/<\/TD/<\/$headcell/g;
}
の後ろに
$colspec =~ s/<TD/<TD $TDADDOPT/g if $TDADDOPT;
$colspec =~ s/<TH/<TH $THADDOPT/g if $THADDOPT;
を入れます。こうすると、TDADDOPT という変数を設定すれば、
それが TD のオプションになります。
実際に入れるには、\HTMLset を、
CSS ソースを掃き出すには \htmlsetstyle を使えばいいので、
以下のような LaTeX ソースで上が実現できるようになります:
\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}
ただ、tabular 内が面倒になることは確かです。
本来ならば LaTeX2HTML が \hline, \cline を見て
こういうことをしてくれればいいのでしょうが、
それはかなり難しそうです (逆に卒研ネタなんかにはなるかも)。
なお、上記の versions/html*.pl (*=3_2,4_0,4_01,4_1) に $TDADDOPT, $THADDOPT を追加する件は、 他の場面でも有用な気がしますので、 新しいパッチでは追加したいと思います。
(cf. 「更新情報 (07/08 2011)」
TeX QandA 掲示板 に、ascmac パッケージの元で使用できる screen 環境の LaTeX2HTML による変換結果について、 2 点質問がありましたので上げておきます (55492 番の記事)。
ascmac パッケージ用の perl スクリプトは、 日本語化パッチのみに含まれるもので、児玉さん作のものです。 そこでは、screen 環境用の処理は以下のように書かれています:
sub do_env_screen {
if ($HTML_VERSION < 4.0) {
join('',
"<TABLE BORDER=\"1\"><TR><TD>",
"@_","</TD></TR></TABLE>");
} else {
join('',"<DIV STYLE=\"border:
inset blue; background-color: white\">",
"@_","</DIV>")
}
}
これを見ればわかりますが、
$HTML_VERSION が 3.2 の場合はおっしゃる通り
table 環境で最小の枠を書くだけになっています。
ただ、$HTML_VERSION が 4.0 以上の場合 (-html_version 4.0) は、
スタイルシートを使って白背景でくぼんだ見た目 (inset)
の枠を使って書いてくれます。
% platex sample.tex |
この挙動を変更するには、次のような手があります。
1 つ目の方法ならば好きなようにできるでしょうし、 2 つ目の方法ならば一応 LaTeX の場合と挙動が合います。 HTML と perl がわかるならば 3 つ目の方法もいい方法だと思います。
なお、55493 番の記事には「スタイルシートを設定すれば」 という回答がありましたが、 上のことから質問者は $HTML_VERSION は 4.0 未満で利用しているようですし、 また $HTML_VERSION = 4.0 (-html_version 4.0) としても、 上の do_env_screen ではこの screen 環境用のクラスを定義しておらず、 直接 STYLE 属性が書かれているので、 スタイルシートファイルをいじっても多分うまくいきません。
元記事の方は手動で HTML ファイルを修正、ということで解決したようですが、 その他の方法について述べておきます。
2 番目の「screen 環境全体を強制的に画像化する」には、 \usepackage{html} の元で screen 環境全体を \begin{makeimage} と \end{makeimage} で囲むだけです。 ただし、verbatim 環境のようなものが screen 環境内に入っている場合は、 残念ながらこれではうまくいかないようです (verbatim 環境は別の形で処理されてしまう)。 ところが、上の例で書いたようにこの screen 環境は まさに verbatim 環境のようなものを囲むのによく利用されるようですから、 この方法はあまりうまくないかもしれません。
3 番目の「style/ascmac.perl の挙動を変更するように perl ファイルを作る/編集する」について説明します。 これも、いくつか方法があります。
[a] はてっとりばやいですし、自分しかそのファイルを使わない (個人用 PC 等) ならばそれもありでしょう。
[b] もてっとりばやいですが、 オリジナルは残しているので [a] よりは多少柔軟性が上でしょうか。 LaTeX ファイルと同じ場所に ascmac.perl があると、 LaTeX2HTML はシステムにインストールしたものに代わって 手元の ascmac.perl の方を読み込んでくれるので、 これでも変更ができます。 ただし、ascmac.perl を使う LaTeX ファイルが複数ある場合には、 そこに修正した ascmac.perl を全部配る必要があります。
[c] は style/ascmac.perl の do_env_screen サブルーチン部分だけを上書きする方法で、 これも 2 通り考えられます。
# screen 環境の処理の再定義
sub do_env_screen {
join('',"<TABLE BORDER=\"1\"
WIDTH=\"90%\"><TR><TD>",
"@_","</TD></TR></TABLE>");
}
1;
\usepackage{html}
\begin{htmlonly} # LaTeX2HTML の場合のみ意味がある部分
\usepackage{myscreen} # 仮のパッケージ
\end{htmlonly}
これで LaTeX2HTML にかけるときには ascmac.perl の後に myscreen.perl が読み込まれるので screen 環境の処理が 上書きされることになります。 ただ実際には myscreen パッケージは存在しないので、 myscreen パッケージに関する警告がでるかもしれません。
# 新たな環境名を定義 (myscreen 環境)
sub do_env_myscreen {
join('',"<TABLE BORDER=\"1\"
WIDTH=\"90%\"><TR><TD>",
"@_","</TD></TR></TABLE>");
}
1;
\usepackage{html}
\latexhtml{\newenvironment{myscreen}{\begin{screen}}{\end{screen}}}{}
こちらは screen 環境の名前自体を変更していますが、 パッケージファイルに対応する perl スクリプトファイルは -init_file の後に読み込まれるので、 -init_file で単に do_env_screen の再定義をしようとしても 逆にそちらが後から ascmac.perl で上書きされてしまいます。 よってこのような別名定義を使う必要があります。
[c-1],[c-2] 共に [a],[b] に比べるとやや面倒ですが、 一部分の上書きという手法としては他の状況でも使えるだろうと思います。
ところで、上の修正例ではいずれも table 環境の枠幅を広げる方の修正 (table 環境に WIDTH="90%" を追加) しか行っていませんが、 奥村さんによれば CSS3 では角の丸い枠 (border-radius) が取り入れられているそうです (55509 番の記事) から、 上の修正をそれに合わせて変更してもいいでしょう ただ、今のところはまだ日本語化パッチで CSS3 を採用する予定はありませんので、 個別にお願いいたします。
ディスプレイ数式環境 (\[ \]) 内で \ref を使った式を書くと LaTeX2HTML の変換結果がおかしくなることに気がつきました。 例えば
\[
\mbox{(\ref{eq1})}' = \frac{1}{3}
\]
のようなものを latex2html に変換させると後ろの分数がおかしくなります。
画像変換するための LaTeX ファイル (images.tex) には 通常の数式ならそのまま書きだされるのですが、 \ref が含まれている場合は「% latex2html id marker ...」 というコメント行がついて書きだされています。 そのコメント行の下に空行が一行入ってしまうのが原因のようです。 LaTeX ではディスプレイ数式環境 (\[ \]) 内では空行は許されていませんので、 そのコンパイルに失敗して変な画像ができるわけです。
この問題を解決するには、とりあえず latex2html を編集して 3400 ~ 3500 行付近にある
$contents = "\n% latex2html id marker $id\n$contents" ifという行を
$contents = "\n% latex2html id marker $id $contents" ifに直せばいいと思います (後ろの \n をスペースに変える)。 次期パッチではそのように修正する予定です。
(cf. 「更新情報 (07/08 2011)」
MS-Windows 版の latex2html ( 阿部@北教大 さん のもの) を使用していて、 画像化された環境の中の日本語が表示されない、 という報告がありました (Thanks 佐野香さん)。
以前にも数式内の日本語が出ないという話はあり、QandA にも 「Q.13. 数式内の日本語が文字化けする/出ない」 にも、dvips や latex コマンドが日本語対応していないものを使っているのでは、 という話を上げていたのですが、どうやらそれとは異なる問題のようで、 ログを見せてもらったところ、 gs (MS-Windows 版の gswin32c) のオプションに -dWINKANJI をつける必要がある、 という問題のようでした。 これは新しい情報なので、QandA の方にも上げておきたいと思います。
修正のてっとりばやい方法は、pstoimg の「my $GS = 」の行の gswin32c.exe の後ろ (もちろん ' ' の中) に -dWINKANJI オプションを 追加することだと思います。
「注意、その他 (09/13 2010)」 に書いた ギリシャ文字をコード参照に書き直す件ですが、 \usepackage{html} を必要としない別解を紹介します。
latex2html の初期設定ファイルに以下のようなものを書きます (日本語化パッチの当たっている LaTeX2HTML で日本語の LaTeX ファイルを処理する場合):
%iso_2022_jp_character_map =
%EUC_JP_character_map =
%Shift_JIS_character_map = (
'alpha' => 'α',
'beta' => 'β',
'gamma' => 'γ'
);
%iso_2022_jp_character_map_inv =
%EUC_JP_character_map_inv =
%Shift_JIS_character_map_inv = (
'α' => '\\alpha ',
'β' => '\\beta',
'γ' => '\\gamma '
);
ギリシャ文字のユニコード番号を調べるのが面倒な場合は、
versions/unicode.pl にある
%iso_10646_character_map, %iso_10646_character_map_inv の定義を
参考にするといいでしょう
(内容をまるまるコピーして使っても多分大丈夫だと思います)。
こうした上で、-html_version 4.0,math として変換すると
ギリシャ文字が「&#[num];」の形になると思います。
versions/unicode.pl に書かれている他のものも使えば、
ギリシャ文字以外の数式記号もコード参照されることになります。
これは、上にある通り versions/unicode.pl の方法をまねたもので、 本来なら「-html_versions 4.0,math,unicode」でできるようにすべきもの (日本語でない LaTeX ファイルを日本語を使用しない形で変換するなら もちろんこれで問題ない) なのでしょうが、 versions/unicode.pl は全角文字なども Unicode に変換しようとして、 現在の日本語化パッチとはぶつかってしまいますので、 それはうまくいかず文字化けしてしまいます。
また、どうせ日本語を使うならば、日本語全角文字のギリシャ文字を使う、 という解もあるでしょう。これは \usepackage{html} の元、 \latexhtml を使えば簡単に場合分けで書けそうですね。 この方法だと、ユニコード参照をちゃんと表示できないようなブラウザ (私が普段使用している Netscape-3 とか w3m とか (^^;)) でも見れることになります。
TeX QandA 掲示板 で LaTeX2HTML の話題が 2 点出ましたので、 上げておきます。
地の文の簡単な数式 (上付き、下付き) 位は画像変換でなく、 HTML タグで表現させられないか、という話がありました (55231 番の記事)。
これは、-html_version で math モジュールを指定するとできます。
latex2html -html_version 4.0,math file.tex
-html_version では最初に HTML のバージョンを指定しないといけないので、
math の前に 4.0 (デフォルト) を指定します。
こうすると実際には、versions/html4_0.pl, versions/math.pl
の両者がロードされます。以下にサンプルを上げておきます。
\documentclass{jarticle}
\begin{document}
ここは地の文で、 $A_b$, $x^y$ のような数式は画像化しないようにもできます。
下はディスプレイ数式ですが、これも一部は画像化しないようにできます。
\[
\int_a^b f(x) dx = \left[F(x)\right]_{x=a}^{x=b} = F(b)-F(a)
\]
ここも地の文ですが、$A_\alpha$, $\beta^y$ のような
ギリシャ文字の画像化は、日本語化パッチの元では簡単には避けられません。
見てわかる通り、デフォルトでは地の文も画像化されるのですが、 -html_version 4.0,math の方は、地の文の多く、 およびディスプレイ数式の一部が画像化されずに HTML タグの I, SUB, SUP などで表現されています。
しかしギリシャ文字は、HTML 上では全角文字を使うか、 Unicode のコード参照 (α とか) を使わないと表現できないので、 画像化をまぬがれるのは簡単ではありません。 日本語が含まれる文書中では、全角のアルファベットで代用する (\usepackage{html} の元 \latexhtml で書き分ける) のが簡単だと思いますが、 掲示版では面白い解が紹介されていて、 それは以下のものをプリアンブルに追加する、というものでした (55243,55246 番の記事)。
\usepackage{html}これは、LaTeX の仕組みをうまく利用していて、エレガントな解だと思います。 LaTeX2HTML では \symbol はそのままコード参照形式の &#[num]; に展開してくれるのでこれでうまくいきます。
\begin{htmlonly}
\renewcommand{\alpha}{{\symbol{945}}}
\renewcommand{\beta}{{\symbol{946}}}
\end{htmlonly}
ただ、元記事の方は上付き、下付き文字がイタリックになっていないのはおかしい、 バグではないかと書いていましたが、これは LaTeX2HTML の作る CSS ファイルを修正すれば済みます。そこに含まれる
.MATH I { font-family: "Century Schoolbook", serif; font-style: italic }をまねて、
.MATH SUB { font-family: "Century Schoolbook", serif; font-style: italic }を追加すればいいでしょう。
.MATH SUP { font-family: "Century Schoolbook", serif; font-style: italic }
なお、この \symbol の展開は、現在の LaTeX2HTML では 10 進は 3 桁、 8 進指定は 3 桁までしかサポートしていないようで、 しかも 16 進指定 (2 桁) の場合にはバグがあるようです。 この辺りの制限やバグについては、次期パッチで修正する予定です。
eqnarray 環境の数式番号を \@eqnnum を再定義して (1) から 【数 1】のようにしたい、 という話がありました (55237 番の記事)。
これは、LaTeX ではうまくいきますが、 LaTeX2HTML は \@eqnnum の定義なんて見ていないので、 LaTeX2HTML ではもちろんうまくいきません。 しかし、LaTeX2HTML でも数式番号のカスタマイズは可能です。
LaTeX2HTML の数式番号は、$EQNO_START (デフォルトでは '(') と $EQNO_END (デフォルトでは ')') で囲まれることになっていますから、 これを変更すればいいわけです。 そのためには \usepackage{html} の元、 以下のようなものを入れればとりあえずよさそうに見えます。
\HTMLsetenv{EQNO_START}{【数 }
\HTMLsetenv{EQNO_END}{】}
ところが実際にやってみると、式番号が「【数 1】」とは表示されず、 その表示が縦にくずれてしまってうまくいきません。 それは、eqnarray 環境等は table 環境で実現されているのですが、 その数式番号部分が <TD WIDTH=10 ...> のように書かれていて 10 ピクセルに制限されているため、 それを越えるような「【数 1】」だと表示が崩れるわけです。
とりあえずは、できた HTML ファイルの式番号のところの WIDTH の値 を「WIDTH="10%"」等に手動で (あるいはスクリプトで) 修正するのが簡単だと思います。 あらかじめ、直接 versions/html4_0.pl の WIDTH=10 を少し大きな数字に書き換えてしまう、という手もありますが、 詳しくは上記掲示版の 55242 番の記事 を参照してください。
多分この数字はユーザがカスタマイズできるようにした方がいいと思いますので、 次期日本語化パッチではこの 10 を $EQNO_WIDTH と書き換えて、 そのデフォルトの値を 10 とし、
\HTMLsetenv{EQNO_WIDTH}{10\%}のようにしてカスタマイズできるようにしたいと思います。
MS-Windows 上の LaTeX2HTML で、
'which' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていません。のようなメッセージが出る、という報告がありました (Thanks 佐野香さん)。 これは、\usepackage{graphicx} を使用している LaTeX ファイルで出るようです。
調べてみると、\usepackage{graphicx} を使用している場合は、 LaTeX2HTML は styles/graphics-support.pl を読み込むのですが、 その内部で必要となる netpbm 系の外部コマンドがあるかどうかチェックしていて、 そのチェックのために「Unix のコマンドである」which を使っているために、 MS-Windows ではそのようなメッセージが出る、ということになっているようです。 実際、styles/graphics-support.pl のその箇所 (check_graphics_util() というサブルーチン) には
# WARNING: platform dependent!! (soln: set these vars first)などと書かれているのですが、 現在の LaTeX2HTML はいくつかの OS (MS-DOS, Mac, OS2, MS-Windows, Unix) に対応していることになっているので、あまり良くないコードだと思います。
check_graphics_util() は、既に定義済みである外部コマンドは which を使って探すようなことはしないので、 対処としては styles/graphics-support.pl が探す外部コマンドを すべて定義しておけばいいのですが、 ppmquant 以外はすべて l2hconf.pm で既に定義されています。 よって、これを l2hconf.pm に登録すれば 上のようなエラーは起きないことになります。 具体的には以下のようにすればいいでしょう。
本来は、styles/graphics-support.pl を which なしで書き直すのが筋だと思いますが、 ちょっとそれは面倒なので、 時間があったら考えてみたいと思います。 日本語化パッチも修正しておく予定です。
(cf. 「更新情報 (07/08 2011)」)
TeX QandA 掲示板 で、 画像の下のスペースがなんとかならないか、 という話題が短い間に続けて 2 件ありました。 ( 55181 番の記事 と 55193 番の記事)。
地の文に数式を書いた場合、LaTeX2HTML は $a$ や $x$ のような数式の場合は下にスペースはつけずに画像化して、 それを align 属性で align="bottom" のようにベースラインに合わせて表示させますが、 $y$ や下付き文字を持つ数式のように、 地の文のベースラインの下にはみでて表示されるのが自然な数式に対しては、 LaTeX2HTML は数式に適当なスペースを下に加えて画像化し、 それを align="middle" のようにして縦方向にセンタリングすることで、 数式のベースラインと地の文のベースラインが合うようにしています。
そのスペースを取りたい理由は、以下のようなもののようでした。
前者は、多分 MS-Word 2008 が align="middle" という属性を理解していないために 起こるものだと考えられますので、MS-Word 2008 にそれを理解させるようなオプションがなければ完全な解決とはなりません。 LaTeX2HTML には、画像の下のスペースをつけないようにするような 設定はなかったと思いますが、画像の下のスペースを取ることは、 LaTeX2HTML が利用している Netpbm に含まれる pnmcrop (と pnmtopng, pngtopnm) を使えばできなくはありません。 しかし、そうすると今度は 下付き文字の一番下が地の文のベースラインになるので、 やはり若干上に飛び出してみえることになってしまいます。
後者も同様ですが、そこだけ行間が空いてしまうのがいやであれば、 CSS ファイルを編集して全体の行間を空けて同じ行間になるように調節する、 という手もあると思います。
ちなみに、pnmcrop で数式の下のスペースを取り、その上で align="middle" を align="bottom" に書きかえるとどうなるか、というサンプルを下に置きます。 テスト 1 の方は変わっていませんが、 テスト 2 の方に両者に違いが見られます。
$y$ 位だとさほど見栄えは悪くはないかもしれませんが、 下付き文字や少し大きめの数式などは かなり上に飛びでて見えてしまうことがわかると思います。
ちなみに、この画像のスペースを取る作業ですが、perl に詳しければ、 LaTeX2HTML ファイルの出力する HTML ファイルを読み込んで、 align="middle" の行を探してそこを書き換え、 そこの画像の下のスペースを取り除く作業を行うような perl のスクリプトを書くことも可能です。 そうすれば、その手の作業は一応手軽に行うこともできます (上のサンプルも実はその手のスクリプトで半自動的に作ったものです)。
TeX QandA 掲示板 で、 LaTeX2HTML では \multiply, \divide が使えない、 calc.sty を使ってみたがだめだった、という話がありました ( 55139 番の記事)。
LaTeX2HTML は calc パッケージをサポートしていませんし、 LaTeX の命令ではないような \multiply, \divide などもサポートしていませんので、 そのままでは確かに LaTeX2HTML ではうまくいきません。
これらはカウンタの値の四則演算を命令のようですので、 新たな LaTeX2HTML 用のスタイルファイルとマクロ、 およびそれに対応する perl ファイルを書けば、 それに相当することを行うことは可能です。
元記事の人は、以下のようなことがやりたいようでした。
\documentclass{jarticle}
\usepackage{calc}
\newcounter{imogA}
\newcounter{imogB}
\newcounter{imogC}
\newcounter{tkage}
\newcounter{imfirst}
\newcommand{\wakawaka}{%
\setcounter{imogC}{\value{tkage}}%
\setcounter{imogA}{\value{imogC}}%
\setcounter{imogB}{\value{imogA}}%
\setcounter{imogC}{\value{imogA}/10}%
\setcounter{imfirst}{\value{imogB}-10*\value{imogC}}%
[\theimfirst]%
\addtocounter{tkage}{1}%
}
\begin{document}
\setcounter{tkage}{14}
\wakawaka
\end{document}
この imogC と imfirst の中でカウンタの値の割り算、引き算、
かけ算を行っています。カウンタの計算は、
tkage = 14;をやっていることになります。
imogC = tkage = 14;
imogA = imogC = 14;
imogB = imogA = 14;
imogC = imogA/10 = 1;
imfirst = imogB-10*imogC = 14-10*1 = 4;
LaTeX2HTML は perl で処理していますので、この手の計算位はもちろんできます。 ただし、マクロ内の数式の処理を直接行うことはできず、 マクロを分解して得た値についてその計算を行うことができる、 ということになりますので、 別に計算用のマクロを用意して、それを処理する perl script が必要になります。 全体として以下のような手順になります。
\usepackage{html} の元、
\latexhtml{\usepackage{calc}}{\usepackage{mycalc}}のようにして、LaTeX 側では通常のコードを、 LaTeX2HTML 側では別なスタイルファイル mycalc.sty を読むようにする
mycalc.sty では各計算は、 以下のように 2 つの引数を取るマクロで実行する:
実際には、以下の通り:
%% mycalc.sty
%% これは LaTeX 側では無視されるので定義はダミーでよい
\newcommand{\Mul}[2]{}
\newcommand{\Div}[2]{}
\newcommand{\Add}[2]{}
\newcommand{\Sub}[2]{}
LaTeX ファイルの計算部分も \latexhtml を使って以下のように場合分けする:
\latexhtml{%% こちらは latex 側の処理
\setcounter{imogC}{\value{imogA}/10}%
\setcounter{imfirst}{\value{imogB}-10*\value{imogC}}%
}{%% こちらは latex2html 側の処理
\setcounter{imogC}{\Div{\value{imogA}}{10}}%
\setcounter{imfirst}{%
\Sub{\value{imogB}}{\Mul{10}{\value{imogC}}}}%
}
mycalc.sty に対応する perl スクリプト mycalc.perl (LaTeX2HTML に \Mul 等のマクロをどう処理させるかを知らせるもの) を作る:
package main;
sub do_cmd_Div{
local($_) = @_;
local($x,$y);
s/$next_pair_pr_rx//e; $x=$2;
s/$next_pair_pr_rx//e; $y=$2;
int($x/$y);
}
# do_cmd_Mul, do_cmd_Add, do_cmd_Sub も同様で、
# 最後の int($x/$y) を $x*$y, $x+$y, $x-$y に変えればよい
....
1;
なお、元記事の人は、\latexhtml を使って場合分けして書くところを
\latexhtml{%% こちらは latex 側の処理
\setcounter{imogC}{\value{imogA}/10}%
\setcounter{imfirst}{\value{imogB}-10*\value{imogC}}%
}%
{%% こちらは latex2html 側の処理
\setcounter{imogC}{\Div{\value{imogA}}{10}}%
\setcounter{imfirst}{%
\Sub{\value{imogB}}{\Mul{10}{\value{imogC}}}}%
}
のようにしたために最初はうまくいかなかったようですが、
\latexhtml の第一引数と第二引数の { }
同士の間にこのように改行を入れてしまうとうまくいかないようです。
Julius O. Smith III という人が、latex2html-2002-2-1 (2003 03/08 版) をベースに、独自にバグの修正や機能の拡張などを行って配布している、 latex2html-2006-1.tar.gz、latex2html-2009-1.tar.gz なるものがあるのを見つけました (本家の配布しているものは、latex2html-2002-2-1 の次のものは latex2html-2008 だけです)。 詳しくは、以下のサイトをご覧ください。
ベースとしているオリジナルの latex2html-2002-2-1 はだいぶ古いのですが、 彼の提示している問題は、本家の最新版ではほとんどは対応されていないようです。
日本語化パッチでも多分 -Ppdf の問題以外は対応していません。 時間があるときにそれらを調べてみて、 有用なものは日本語化パッチでも取り入れていきたいと思います。
なお今のところ、日本語化パッチは本家の配布している latex2html-2002-2-1, latex2html-2008 用に作成していく方針で、 彼の作成しているものにはパッチは当たりませんのでご注意ください。
また、彼の latex2html.pin の revision は、 latex2html-2006-1 も latex2html-2009-1 も 1.71 になっているのですが、 それは、彼がベースとした latex2html.pin の revision が 1.70 で、 その revision 番号を独自に更新して 1.71 としているのですが、 厄介なことに本家の latex2html-2002-2-1 の方も 2004 01/08 版から latex2html.pin が修正され (もちろん彼とは別の部分が)、 その revision が 1.71 になっています。 よって、実体の大きく異なる 1.71 版が 2 つあることになってしまっています。
(cf. 「更新情報 (05/14 2010)」)
-title で明示的にタイトルをつける場合、 そこに「sinnx」のような上付き文字、 下付き文字を入れることができるようになっているようです。
直接 <SUP>, </SUP> のようなコードを書いて
latex2html -title 'sin<SUP>n</SUP>x'のように指定すればいいだけです。 下付き文字の場合は <SUB>, </SUB> で囲みます。 これによってタイトル、各ページのリンク先等にもこれが反映されます。
ただし、HTML 的には本来タグ名は小文字 (sin<sup>n</sup>x) でも構わないのですが、 latex2html の -title の指定の場合はタグ名を小文字で書くと そのタグは消されてしまいます。 実際には、latex2html の purify というサブルーチンで title 文字列の HTML タグの削除を行っているのですが、 そこで SUB, SUP のタグだけを残すようにしています。
逆に SUB, SUP 以外のタグを使用してもそれらは消されてしまいます。 それ以外のタグを残したい場合は、 latex2html の purify を修正すれば可能かもしれません (が、副作用が出るかもしれません)。
鷹合@金沢工大 さん (takago@neptune.kanazawa-it.ac.jp) から、 MS-IE だと、title タグが meta タグでの charset 指定の前にあると 真っ白なページが表示される場合がある (firefox は問題なし)、 という問題とその解決法を教えて頂きました。
具体的には、以下のパッチを latex2html.pin に (インストール済みの場合には latex2html 自体に) 当てればいいようです。
次期パッチでは採用させて頂きたいと思います。 どうもありがとうございました。
「注意、その他 (01/20 2010)」 に書いた Tgif の斜線パターンが latex2html で変換すると斑点状になってしまう問題ですが、 TeX QandA 掲示板 で達さんから丁寧に教えて頂きました ( TeX QandA 掲示板 54402 番の記事)。
それによると Tgif の斜線の塗り潰しは、実際には斜線を書いているのではなく、 小さい正方形を並べて書いていて、 そのため pstoimg で拡大縮小するときにそのようなことが起こってしまうようです。
Tgif 自体を改良して、EPS 出力が拡大縮小されても斜線が崩れないようにする、 という方法もあるでしょうが、少なくとも私には無理です。 よって、「注意、その他 (01/20 2010)」 に書いたような色での塗り潰しにするのがとりあえずは良さそうです。
また、手動で自前でその画像だけ変換するという手もあります。 例えば netpbm の pstopnm で手動で PNM にしてから gif 等に変換すればよいのですが、 その際 pstopnm を使うときに -xsize などに大きな数値を指定して かなり拡大して出力させると斜線等のパターンが崩れずに出力されます。 その後で netpbm の pnmscale 等で必要な大きさに縮小すれば 斜線パターンは正常なまま出力されるようです。
ただし、「注意、その他 (01/20 2010)」 にも書いたように HTML にするのなら、 むしろ色塗りにした方が見やすく、 無理にパターンでの塗り潰しにこだわる必要もないだろうと思います。
Tgif などで図形の一部を斜線などのパターンで埋めたものを EPS にして includegraphics で取り込んだ場合、 latex2html にかけるとその出力には問題がある場合があります。 一つは、「注意、その他 (04/06 2007)」 等でも紹介した背景色や透明化などの問題ですが、 もう一つ、そのパターンが斑点状になってしまうことがあります。 サンプルを以下に示します。
GIF 画像の方はなぜか斜線パターンが全体に塗り潰されておらず、 斑点のようになっていることがわかると思います。 EPS 画像の方は、一応全体にパターンが入っていますが、 調べてみると、これは pstoimg の内部で gs を使って EPS から PNM ファイルへの変換を行っている部分で起きていることがわかりました。
gs のパラメータを色々変えて試してみたのですが、 多少は変化するものの完全に解決するには至っていません。 TeX QandA 掲示板 で聞いてもみたのですが、 どうもこれという解決法はなさそうです。
ということで、LaTeX では最終出力として白黒印刷を意識するので斜線の図とし、 latex2html にかけるときは HTML だからカラーでの塗り潰しにすることにして、 そのような 2 つの図を用意して \latexhtml で場合分けすることにしました。 Tgif では、パターンの塗り潰しを色での塗り潰しに変更することは 簡単にできますので、そのようなファイルを用意することは面倒ではありません。 実際そのようなものを用意することで、 上の代わりに以下のような GIF ファイルが作られました。
むしろ、この方がその中に書いた文字も見やすいので、 まあいいかなと思っています。
(cf. 「注意、その他 (01/22 2010)」)
latex2html の隠しコマンドのようなものですが、 初期設定ファイル .latex2html-init に
$target = "contents";
のような行を入れておくと、HTML version 指定が 4.0 以上のときは、
html ファイルへのリンク (目次、ヘッダやフッタのナビゲーション) の部分が
<A NAME="tex2html1"
HREF="node2.html">...</A>
から、
<A NAME="tex2html1" target="contents"
HREF="node2.html">...</A>
のように変わります。
この a タグの target 指定は指定した名前のフレームに
表示させることを意味しますので、目次のページを残したまま、
もう一つのページに各セクションのページ内容を
表示させることができるようになります。
なぜか latex2html のオプションにもなっていなくて、 latex2html のソースを読まないとこういう仕組みがあることがわからないのですが (隠しオプション ?)、 それなりに便利な機能だと思います。
私は LaTeX で書いた文書を公開する際、 latex2html による HTML 形式のデータと PDF ファイル (昔は PS ファイルでした)、 および印刷形式での各ページを画像化したもの (dvips + Netpbm で) を 合わせて公開することが多いです (例えば 「数学に関する書き物の一覧」 のリンク先参照)。
ところが、その latex2html で変換した HTML ページに 検索エンジン等によって飛んで来た場合、 その HTML ページからは私のページなどへのリンクを貼ってなかったため、 例えばその HTML ページに対応する PDF ファイルへたどりつくことは できませんでした (少なくとも難しいようでした)。
よって、latex2html の初期設定ファイルなどを利用して、 その各 HTML ページに、それに対応する PDF ファイルへのリンクを 貼ってみることにしました。
既に公開している HTML ページに関しては、 awk を使って HTML の先頭部分を書き換えてリンクを追加します。 デフォルトでは、top_navigation_panel の設定の最後が
<BR> <P>となっています (私は多少カスタマイズしているものもあります) ので、 それを目印にして、
(<it>PDF ファイル:</it> <a href="../data/file.pdf">file.pdf</a>)のように書き換えました (awk + シェルスクリプト)。
<BR> <P>
新規に作成する HTML ファイルに対しては、.latex2html-init の top_navigation_panel の定義部分を取り出して、 最後の方に上のような PDF ファイルのリンク部分を追加した 以下のようなファイル l2h-init.tmp を作成します (実際に使用しているのは多少カスタマイズしています):
sub top_navigation_panel {
"$NEXT $UP $PREVIOUS $CONTENTS $INDEX $CUSTOM_BUTTONS"
.
"<BR>\n" .
($NEXT_TITLE ? "<B> Next:</B>
$NEXT_TITLE\n" : undef) .
($UP_TITLE ? "<B>Up:</B> $UP_TITLE\n"
: undef) .
($PREVIOUS_TITLE ? "<B> Previous:</B>
$PREVIOUS_TITLE\n" : undef) .
" (<it>PDF ファイル:</it>
<a href=\"@DATADIR@@PDFname@\">@PDFname@</a>)\n"
.
"<BR> <P>\n"
}
1;
そしてこれを実際に使用するときに
@DATADIR@ を PDF ファイルを置くディレクトリ (../data/ 等)、
@PDFname@ を PDF ファイル名 (file.pdf 等) に変換したファイル
l2h-init を sed 等で作成し、
それを late2html の -init オプションに与えて実行します
(実際には latex2html には他のオプションも与えています):
sed -e "s#@DATADIR@#../data/#g" -e "s#@PDFname@#file.pdf#g" l2h-init.tmp > l2h-init面倒なようですが、実際にはこれもシェルスクリプトでやっていますので、 それほど手間ではありません。
latex2html -init l2h-init file.tex
最近少し CSS 関連について調べているのですが、 現在の latex2html (2002-2-1 (rev.1.71), 2008) での問題点を見つけました。
\TeX, \LaTeX および html パッケージ使用時での \latextohtml コマンドなどは、 latex2html にかけると次のように変換されるようです (スペースが入ってる箇所もありますが、実際にはスペースは入りません)。
そして、CSS ファイルの方には、次のようなエントリがそれぞれ作られます。
見て分かる通り、これらにはおかしな点がいくつかあります。 例えば \LaTeX の場合で言えば以下の点があげられます。
本来は多分、クラスの方は「LaTeX と logo-LaTeX」か、 あるいは「LaTeX と logo」を想定していたのではないかと思うのですが、 いずれも中途半端におかしくなっていて、そのどちらにもなっていないわけです。 よって、例えば以下のような改良が必要なのではないかと思います。
この改良案は、上の「LaTeX と logo-LaTeX」と「LaTeX と logo」 の両方を含む形にしてありますが、 実際には後者のみサポートすれば、多分前者は不要だろうとは思います。 また、この修正自体は全然難しくはなく、latex2html 自体 (インストール前なら latex2html.pin) の do_cmd_LaTeX、 およびその付近にある TeX のロゴ関連のコマンドを 以下のように修正するだけです。
$env_style{'LaTeX'} = ' ' unless ($env_style{'LaTeX'});のように の変数名を env_style から txt_style に 変更し、必要なクラスの分だけそれを書く:
$env_style{'logo-LaTeX'} = ' ' unless ($env_style{'logo-LaTeX'});
$txt_style{'logo'} = ' ' unless ($txt_style{'logo'});
$txt_style{'LaTeX'} = ' ' unless ($txt_style{'LaTeX'});
$txt_style{'logo-LaTeX'} = ' ' unless ($txt_style{'logo-LaTeX'});
join('',"<SPAN CLASS=\"logo,LaTeX\">",$Laname, $TeXname,"</SPAN>",$_);の、CLASS の部分のカンマ (,) を取り、必要なクラス名を並べる
必要なら latex2html-ML で、どれを想定しているものなのかを聞いてみて、 次期版のパッチではこの修正を行ったものにしたいと思います。
latex2html はデフォルトの .css も作りますが、 html パッケージを使用すると、 \htmlsetstyle, \htmladdtostyle コマンドでその .css ファイル中の要素も latex 側で設定できます。
例えば
\htmlsetstyle[DIV]{displaymath}{color:red}とすると、.css には
DIV.displaymath { color : red }が書き出されます。なお、value 部分は '=' を ':' に変換してくれますので、
\htmlsetstyle[DIV]{displaymath}{color=#ff00ff}のような書き方も可能ですし、複数行定義することもできるようです。
ただ、例えばセクションタイトル部分の背景色を設定するために
H1 { background-color : #ffccff }とする場合は、単に class 部分を省略して
\htmlsetstyle[H1]{}{background-color=#ff00ff}とすると、tag 部分が DIV となって
DIV.H1 { background-color : #ffccff }となってしまいます。このような場合は
\htmlsetstyle[H1.]{}{background-color=#ff00ff}とする必要がありますので注意してください (この点で、「LaTeX Web コンパニオン」の 3.3.4 節の最後のサンプルは 現在の latex2html の版とは異なる記述になっています)。
環境単位で .css の記述を適用させるためにクラスを設定するには、 「LaTeX Web コンパニオン」の 3.3.4 節にあるように、 環境の \begin 部分にオプション引数を与えますが、 もう少し小さい単位で適用させたい場合は、 \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-init 内に $BODYTEXT を定義することでも行えますが、 html パッケージを使用すると、 \bodytext コマンドでページの背景色を変更できます。 これを使うと、例えば以下のようにして ページ毎に背景色を変えることもできます:
\begin{document}しかし、この方法では、latex2html が自動的に最後に付加する 「この文書について」のセクション (section* として扱われる) の色を指定することはできず、 最後のセクションの色がそのまま引き継がれます。
\section{赤いセクション}
\bodytext{bgcolor="#ffcccc"}
「赤い」という形容詞はある。
\section{青いセクション}
\bodytext{bgcolor="#ccccff"}
「青い」という形容詞もある。
\section{緑のセクション}
\bodytext{bgcolor="#ccffcc"}
「緑い」という形容詞はない。
\end{document}
何か方法はないものかと調べてみたのですが、 残念ながら latex2html か japanese.perl を改造するしかなさそうです。 japanese.perl の改造は、例えば以下のようにすればいいでしょう。
&infopagehook if defined &infopagehook;
sub infopagehook {
$BODYTEXT = 'bgcolor="#ffffff"';
}
この改造自体は害にはなりませんし、 $BODYTEXT 以外にも infopage (「この文書について」のページ) になんらかの設定をできる余地を作ることにもなりますので、 current 版の次期版では導入も検討してみようかと思います。
netpbm コマンドをパスの通っていないところに置いていて、 latex2html のインストール時に一時的にパスを通してインストールした場合、 一部のコマンドが起動できない、という問題が起こる事例があります。
そのようにインストールした場合、確かに pstoimg には ほとんどの netpbm コマンドは絶対パスで登録されるので うまく起動できるのですが、 最近の netpbm では例えば ppmquant はラッパースクリプト (perl スクリプト) になっていて、 その内部で pnmquant を「パスをつけずに」呼びだしています。 そのために、実際の latex2html の実行時に netpbm コマンドのある ディレクトリにパスが通っていないと ppmquant が失敗する、 ということになってしまいます。
回避するには、netpbm コマンドのあるディレクトリに パスを通す (環境変数 PATH にそのディレクトリを追加する) のが 一番楽なのですが、もしそれをしたくなければ以下のような手が考えられます。
ただし、この後者には注意が必要で、実は ppmquant が内部で呼びだす pnmquant もラッパースクリプト (perl スクリプト) になっていて、 さらに内部で pnmcolormap, pnmremap を呼び出していますから、 そこも修正する必要があります。 簡単に調べてみると、netpbm 内部には バイナリではないスクリプトコマンドが 15~20 位はあるようです。 それらがそれぞれ内部で「パスをつけずに」netpbm コマンドを呼んでいる 可能性がありますので、それらを全部修正しないといけないかもしれません。 それなら、多分素直にパスを通した方が楽でしょうね。
「注意、その他 (09/24 2008)」 で報告した latex2html-2008 のリリースに伴う日本語化パッチですが、 とりあえず開発版の方の日本語化パッチを更新しました。 しばらくはそちらのみ対応させる予定ですので、 必要ならばそちらを取得してください。 なお、「注意、その他 (09/24 2008)」 でも書いたように、実質的な変更はありませんので、 従来の latex2html-2002-2-1 用の日本語化パッチでも そのまま当たると思いますし、そのまま使えると思います。
latex2html-2008 がリリースされました。以下参照。
latex2html-2002-2-1 に対する更新部分は以下の通りのようです。
ということで、実質的なコードの変更はありませんので、 今までの latex2html-2002-2-1 用の日本語化パッチは そのまま利用できると思いますが、 上記の変更に合わせた修正を行った日本語化パッチを新たに作るかどうか 考えてみたいと思います。
(cf. 「注意、その他 (10/03 2008)」)
最近一つ書いた文書を latex2html で変換したのですが、 その際、図番号がつかない問題が発生しました。 基本的には、latex2html の QandA に書いた、 「Q.30. figure 環境の図番号が出ないものがあります」 に書いたように、 \caption 内に書いたコマンドが .aux で展開されるのを防ぐように、 適宜コマンドに \protect をつけていけばいいのですが、 今回は少しはまってしまったので報告します。
今回は、\boldmath を使う以下のようなマクロを一つ使っていました:
\newcommand{\Vecb}[1]{\mbox{\boldmath $#1$}}このまま latex2html にかけると全然だめで、 .aux ファイルを見ると、\bar, \boldmath, \mbox が展開されているようでした。 よって、以下のいずれの対処でもうまくいきます。
...
\caption{$\Vecb{\bar{e}_y}$ 軸}
それぞれ以下のようにするわけです。
\newcommand{\Vecb}[1]{\mbox{\boldmath $#1$}}
...
\caption{\protect\Vecb{\protect\bar{e}_y} 軸}
\newcommand{\Vecb}[1]{\protect\mbox{\protect\boldmath $#1$}}
...
\caption{\Vecb{\protect\bar{e}_y} 軸}
こういう作業は、.aux ファイルをチェックしながら、 修正と LaTeX のコンパイルを繰り返すといいでしょう。
ところで、最初のだめなソースでは \Vecb{...} 自体を $$ で囲んであります。 \mbox{} で全体が囲まれているので、 本来これを $$ で囲む必要はないのですが、 一応数式なので、気分的に $$ で囲むことが多く、 \caption 内でもそうしていたのですが (LaTeX ではどちらも問題ない)、 実はこれが latex2html では問題があるようで、 この $$ を外さないとだめなようです。
となると、さらに複雑なマクロを書いてしまうと、 もっと面倒なことになる可能性がありそうです。 よって、latex2html にかける場合、 それも考慮してマクロの組み方も考える必要があるかもしれません。
プログラムのソースコードのようなものは、 以前は verbatim 環境で書いていて、 その場合はインデントも含めてうまく latex2html で変換できていたのですが、 今回 quote 環境内に \tt を置いて書いてみました。
問題はインデントなのですが、インデントは最初は 全角スペース 2 つをタブインデントとして並べて書いていました。 確かにそれならば latex2html でもそれがそのまま使われるので、 WWW ページでもそれなりにインデントに見えるのですが、 その WWW ページをマウスでコピー & ペーストして貼り付けて そのままプログラムソースとして使おうとすると、 一見インデントスペースに見えるところに全角スペースが入っているので、 そのまま使うことはできません (むしろ厄介なバグの元になってしまいます)。
それで、全角スペースの代わりに「\ \ \ \ 」あるいは「\mbox{\ \ \ \ }」 のようなものに変えてみたのですが、 これは latex ではインデントに見えるのですが、 latex2html ではこのスペースが無視されてしまいます (原因は後で調べてみます) ので、インデントになりません。
これは、\usepackage{html} の元、 以下のようにすればとりあえずは回避できるようです。
\latexhtml{\ \ \ \ }{%\latexhtml は、latex にかけるときは最初の {} 内を有効にし、 latex2html にかけるときは後ろの {} 内を有効にするマクロで、 また rawhtml 環境は、HTML の命令を直接記述するための環境です。 これで、HTML でも「\ \ \ \ 」と同等のスペース 4 つに展開されました。
\begin{rawhtml} \end{rawhtml}}
数式モード以外で ">>" や "<<" を使うと、 latex2html ではこれは、"&187;" や "&171;" と変換されます。
最近のブラウザでは問題なく表示されるかもしれませんが、 古いブラウザではこの部分が表示されないなどの問題がでますので、 その場合は、\usepackage{html} の元、
\latexhtml{>>}{{>}{>}}のような書き換えをすればいいようで、 これで ">>" にしてくれます。
春休みを利用して、少し長い LaTeX ファイルを書いて、 それを latex2html にかけたところ色々問題が出ました。 そのうち、いくつかをここに上げます。
\renewcommand でコマンドを再定義したのですが、 それによる障害が起きましたので、 なるべく使わない方がいいようです。
例えば、カウンタを定義すると、 自動的にその名前に \the のついた命令が定義されるのですが、 それを \renewcommand で再定義したら問題が起きました。 \def\the... のようにしたら問題はありませんでした。
Appendix 内のサブセクションの番号付けが変になります。
通常のセクションは 1, 2, 3, ..., \appendix 命令以降のセクションは A, B, C, ... のような セクション名になるのですが、 元々 Appendix 以降のセクションには、 サブセクションは入れないことになっているのか、 latex2html では、正確には通常は「1」「2」、 \appendix 以降は「A.」「B.」のように、'.' がついています。 そのため、A. のサブセクションのセクション名が 「A..1」のようになってしまいます。
これは、latex2html 内で、&do_cmd_the_appendix() の定義が、
sub do_cmd_the_appendix { local($val,$level) = (0,$_[0]); if ($level == 3) { $val=$global{'section'} } elsif ($level == 2) { $val=$global{'chapter'} } join('', &fAlph($val), '.', $_[1]); }となっているためで、この最後の join の行を
join('', &fAlph($val), $_[1]);
のようにすれば解決します。
しかし latex2html を自体を修正するのもなんなので、
それに対処する perl ファイルを作って読み込ませることで
回避しました。
上のように修正した &do_cmd_the_appendix() の定義を書いて、 最後に
1;
と書いた perl ファイル (例えば test1.perl) と、
それに対応する空の package ファイル (test1.sty) を用意して、
それを usepackage (\usepackage{test1}) で読み込んでいます。
latex2html は、package ファイルに対応する .perl という
名前の perl スクリプトを読み込みますので、
それで上の新たな定義が適用されます。
塗り潰しを使った画像の背景が灰色になっていました (cf. 「注意、その他 (04/06 2007)」)。
psfrag を使ったのですが、 それによる置き換え文字が latex2html によって画像化されると 切れる問題が起きました (古い latex2html に関するページ の 「注意、その他 (09/23 2001)」 参照)。 かなりたくさん (32 個) あったので、手動でない方法での対処を考えました。
まず、これが起こる原因は、dvips の挙動にあります。 dvips -E で EPS ファイルを作る際、dvips が作成する BoundingBox は その変換後の文字列の幅を考慮しておらず、 その BoundingBox で EPS 画像から画像を切りだすと、 画像部分は収まるのですが、はみでた文字が切れてしまいます。
切れるのは右端の文字だけのようなので、 pstoimg の中の gs の呼び出しに細工をして、 BoundingBox による横幅よりも広い横幅で切り出すようにして、 その右端の余分な余白を pnmcrop -r で切り捨てる、 としてみました。以下にそのパッチを置きます。 pstoimg に -psfrag というオプションをつけて実行すると そのような挙動になります (ただし、正しく動作する保証はありません)。
対象となる psfrag を使った画像 (img*.gif) だけを latex2html の作ったディレクトリから一旦削除して、 latex2html に -debug をかけて再実行します。 その出力から pstoimg の実行部分を grep と sed でとりだして、 その pstoimg に -psfrag オプションをつけて、 そのコマンド列を実行する、という処理をスクリプトにして実行しました。
本当は、\htmlimage{} でそういう指定を行えるようにすると いいのかなと思いましたので、今後少し考えてみたいと思います。
ある画像は、画像自体は同じで、その中の文字列だけが違うものだったので、 LaTeX ファイルでは同じ EPS ファイルを includegraphics して、 文字だけ別の文字を psfrag で置き換えをして使っていたのですが、 latex2html は、EPS ファイル名が同じだと同じ画像だと思ってしまうので、 同じ GIF ファイルを貼り付けてしまいます。 よって、そのような場合もあえて別の EPS ファイル名にして (シンボリックリンクでよい)、includegraphics しないといけませんでした。
log 型コマンドを一つ、
\makeatletter
\newcommand{\supp}{\mathop{\operator@font supp}\nolimits}
\makeatother
のように定義していたのですが、psfrag を利用したら、
LaTeX ではいいのですが、latex2html では置き換え文字列が
"@font supp" のようになってしまいました。
よって、この定義を
\newcommand{\supp}{\mathop{\mathrm{supp}}\nolimits}
のように変えました。
「注意、その他 (06/08 2004)」, 「注意、その他 (12/14 2004; no.3)」, 「注意、その他 (01/07 2005)」 と書いてきた、 「Tgif で書いた EPS 画像などの『白での塗りつぶし』の透明化に失敗する問題」 の第 4 段です。 今回新たな問題が起きたことに関して、2 つの解決策を見つけましたので、 報告します。
「注意、その他 (12/14 2004; no.3)」 に書いた 原因によって起こる問題は、そこに書いたように手動で latex2html (pstoimg) と同じようにして GIF (または PNG) 画像を作ってやるという手もあるのですが、 psfrag を使っている場合はそれではだめです。 一度画像を LaTeX と dvips にかけないと画像内の文字が正しく変更されません。 今回、この問題に対して以下のような 2 つの方法を考えてみました。
順に説明します。 まず、1. の方ですが、latex2html は画像を生成する場合、 その中間画像ファイルを /tmp/l2hXXXX のような名前のディレクトリに作成して、 作業が終わったらそのディレクトリを削除するのですが、 -debug オプションをつけるとそのディレクトリは削除せずに終了します。 よって、そこに残った画像ファイルを利用するわけです。
今、例えば file.tex 内の hoge1.eps というファイルを latex2html が画像化した file/img9.gif というファイルに問題があるとします。 このとき、まず問題になっている画像を file/ から取り除きます:
% mv file/img9.gif .
-debug つきで latex2html を起動します。
その実行時に表示される画面も残しておきます。
% latex2html -image_type gif -debug file.tex > log
このログ log には、以下のようなものが記録されていると思います:
...
Running "/usr/local/bin/pnmcrop -verbose < /tmp/l2h1465/p1495.pnm
| /usr/local/bin/ppmquant 256
| /usr/local/bin/ppmtogif -interlace -trans '#ffffff' > img9.gif"
pstoimg: Written img9.gif
...
この例では、/tmp/l2h1234 が中間画像のあるディレクトリで、
その p1495.pnm という画像を変換して GIF ファイルを作っていることがわかります。
その transparent オプションを変えて、
手動で以下のようにして正しい gif ファイルを作ればいいわけです。
% pnmcrop /tmp/l2h1465/p1495.pnm | ppmquant 256 \
| ppmtogif -interlace -trans '#b2b2b2' > file/img9.gif
次は 2. の方ですが、実はこの transparent の色指定を変えるだけならば、 pstoimg が内部で参照する環境変数 TRANSPARENT_COLOR を利用する、 という手があります。こちらの方は、以下のようにして、 その画像を作り直すだけです:
% mv file/img9.gif .
% setenv TRANSPARENT_COLOR "#b2b2b2"
% latex2html -image_type gif file.tex
(setenv は csh 系のシェルの場合。bash などの sh 系のシェルの場合は
「TRANSPARENT_COLOR="#b2b2b2"; export TRANSPARENT_COLOR」)
画像自体に #b2b2b2 に近い色が含まれていない場合で、 白の塗り潰しなどがあるために画像の色がおかしくなる場合は、 psfrag でない場合でも多分この 2. の対処が一番楽なのではないかと思います。
l2h-ML に、 gnuplot の吐き出したカラー EPS ファイルを pstoimg で PNG 画像に変換しようとしているんだけどうまくいかない、 という質問が来ました。 白黒画像だとうまくいくんだけど、ということでした。
pstoimg は latex2html に付属する Perl スクリプトで、 数式や includegraphics で張り込んだ EPS 画像を PNG や GIF 画像に 変換して HTML に貼り付けるために latex2html 内部から呼びだされる latex2html の付属ツールです。
実際、-debug オプション付で、 gnuplot のカラー EPS ファイルを変換しようとすると次のようになって うまくいきません:
% pstoimg test1.eps
pstoimg V2002-2-1 (Revision 1.19, Perl 5.008008)
pstoimg: Processing test1.eps
pstoimg: Error: "/usr/local/bin/netpbm/ppmquant 256
< /tmp/p29317.pnm | /usr/local/bin/netpbm/pnmtopng
> test1.png" failed: Illegal seek
-debug オプションをつけて詳しく見ると、次のようになります:
% pstoimg -debug test1.eps
pstoimg V2002-2-1 (Revision 1.19, Perl 5.008008)
pstoimg: Temporary directory is /tmp
pstoimg: Processing test1.eps
pstoimg: EPSF dimensions are 360x252
pstoimg: Running /usr/local/bin/gs -sDEVICE=pnmraw -g360x252
-sOutputFile=/tmp/p29558.pnm
GS>-50 -50 translate
GS>(test1.eps) run
GS>showpage
GS>quit
GNU Ghostscript 7.07 (2003-05-17)
Copyright (C) 2003 artofcode LLC, Benicia, CA. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>GS>Loading StandardSymL font from
/usr/local/share/ghostscript/fonts/s050000l.pfb...
1980440 623432 1783296 480146 1 done.
Loading NimbusSanL-Regu font from
/usr/local/share/ghostscript/fonts/n019003l.pfb...
2020632 672552 1783296 485810 1 done.
>>showpage, press <return> to continue<<
GS>>>showpage, press <return> to continue<<
GS>Image "/tmp/p29558.pnm" is PPM, 360x252
Running "/usr/local/bin/netpbm/ppmquant 256 < /tmp/p29558.pnm
| /usr/local/bin/netpbm/pnmtopng > test1.png"
pnmcolormap: making histogram...
pnmcolormap: Scanning image 0
pnmcolormap: 3 colors so far
pnmcolormap: Scanning image 1
pnmcolormap: Image 1 depth (1) is not the same as Image 0 (3)
pnmcolormap failed, rc=256
pnmtopng: Error reading magic number from Netpbm image stream.
Most often, this means your input file is empty.
pstoimg: Error: "/usr/local/bin/netpbm/ppmquant 256
< /tmp/p29558.pnm | /usr/local/bin/netpbm/pnmtopng
> test1.png" failed: Illegal seek
pnmcolormap (現在はスクリプトである ppmquant の内部で呼び出されるコマンド)
の出力で、"image 0", "image 1" と出ていて、
それらの depth が違うので失敗、となっていることがわかります。
実は、pstoimg の内部で呼び出される gs が、 1 つの PNM ファイル内に 2 つのイメージを書き出していて、 それでそのようなことが起きてしまっています。 実際に、gs の作る PNM ファイル (上の例の場合 /tmp/p29558.pnm) には、 "P6" から始まるバイナリ PPM 画像の最後に、 なぜか "P4" から始まるバイナリ PBM 画像 (全く空白) がついています。
gv でその EPS ファイルを確認すると、 1 ページ目はグラフが出るのですが、 スペースキーで次のページへ行こうとすると 確かに空白のページが表示されるので、 この EPS ファイルのそのような構造のせいでそのようなことが 起きているのかもしれません。
回避策としては、pstoimg に '-antialias' や '-antialias -depth 1' のようなオプションを使ってみる、という手があります。 こうすると、少くともうちの環境では (Solaris 9, gs 7.07, netpbm 10.31.0, pstoimg 1.19) なぜか image 0, image 1 の色数が同じになって、 上記のエラーは発生しませんでした。 ただし、元記事の人はそれではうまくいかなかったようです。
もう一つの回避策としては、pstoimg の '-multipage' オプションを使う という手があります。 これは、複数ページからなる PS ファイルに対して使うオプションで、 これを使用すると正しい画像ファイル (上の例のように test1.eps を変換する場合は test11.png というファイル名になる) と、 空白の画像ファイル (test12.png) ができます。
もちろん、pstoimg は、元々は汎用のツールではなく、 latex2html が内部で呼びだしたときに正しく動作すればいいので、 本来は dvips の出力する EPS ファイルさえ処理できればいいわけで、 gnuplot の EPS を直接変換できなくてもバグでも問題でもありません。 実際、gnuplot のカラー EPS ファイルを 「LaTeX ファイルの内部に includegraphics で取り込んで、 それを latex2html にかけた」場合は、 pstoimg によって何の問題もなく正しい画像ファイルが生成されます。
だから、汎用目的で使う場合に、多少 PS ファイルによって うまくいかないことがあってもおかしくはないでしょうし、 上に書いたように、gnuplot の作成する EPS にも多少問題があるのでは、 とも思います。 ただし、ここに書いたように、 必ずしも汎用目的で個別のツールとして使えないわけではありませんから、 その場合は上記のような点に注意するといいでしょう。
「注意、その他 (01/30 2007) の続きのもう 1 件の質問は、
「LaTeX2HTML で変換された HTML ファイルから、 逆に LaTeX のソースを作る、あるいは PDF にできるか」というものでした。
残念ながら、LaTeX2HTML 自体にはそのような機能はありません。 なんとかするとすれば、以下のような感じでしょうか。
検索するとこのようなツールはいくつかみつかります。 ただ、私は一つも使ったことがありませんので、 使いやすさ等についてはわかりません。
さらに、以下にそのようなソフトの詳しいリストがあります。
HTML 化したものを公開してくれるやさしい人ですから、 そうしてもらえる可能性もあるかもしれません。 実際、HTML と同時に PDF を公開している人も多いですね。
これは、「この文書について」の最後に、コマンド行が書かれていますが、 そこに LaTeX ファイルへのリンクがついている場合があります。 そしてそのファイルが実際にそのリンクから取得できる場合があります。
ただし、そうでないことの方が多いので (HTML に変換したもののみを WWW サーバに移動することが多い)、 これで取得できることの方がまれかもしれません。
私だったら、まず wget で全体を取得して、 画像がなければ w3m などでテキスト化して印刷するか、 画像があれば、HTML ファイルをなんとか 1 file につなげて、 ブラウザで PS に直して印刷する、といった感じでしょうかね。
珍しく 2 件も質問が来ました。分けて書きます。
1 件目は、
「LaTeX で \newpage を入れても latex2html では無視されてしまうが、 そこで HTML を分割するには」という質問でした。 LaTeX2HTML では、各 HTML ページに節番号をつけて 前後のページへのリンクを貼るような形式を取りますので、 \newpage では HTML ページの分割は起こりません。
逆に言うと、LaTeX2HTML のスタイルから考えて \newpage で 別 HTML に分けるとすると、 その 2 つの HTML ファイルは同じセクションに属しているわけですから、 次のページへのナビゲーションパネルにどう書いたらいいかわからなくなります。 同じセクションの同じ名前、にするわけにもいきませんから、 LaTeX2HTML の原理から言って \newpage で別 HTML にはできません。
よって、HTML ファイルを分割したければ、 そこに subsection を入れるなどして どうしてもセクションを分ける必要があります。
もし、LaTeX の方では subsection を入れたくなくて、 HTML だけそうしたいなら、\usepackage{html} の元、
\latexhtml{\newpage}{\subsection{2 ページ目}}のようにすれば、LaTeX にかけるときは \newpage、 latex2html にかけるときは \subsection{2 ページ目}、 がそれぞれ解釈されるようになります。
後は、もし必要ならば、こうやって作った HTML ファイルを 手で編集するとかでしょうか。
そもそも、HTML には物理ページサイズはありませんから、 \newpage でページ分割するのは、物理ページサイズが固定されている 印刷形式にのみ意味があるものだろうと思います。 よって、個人的には HTML では \newpage の場所に <hr> でも入れる、つまり
\latexhtml{\newpage}{\htmlrule}位でどうかなと思います。
latex2html のページ の質問の投稿フォームに、
「l2h-2002-2-1+jp2.0 で、init file で $charset="UTF-8"; として、init file や styles/japanese.perl などを UTF-8 に変換したら UTF-8 に変換できたんだけど、 ページに charset=UTF-8 を定義する META タグがつかない」という質問が来ました。
まず、最初に注意しておきますが、 jp2.0 パッチは UTF-8 出力は想定外です。 利用している TeX の環境がどうなのか、 それと UTF-8 の関係はどうなっているのかわかりませんが、 色々な日本語の文字化けなどが起こる可能性はありますし、 こちらでの動作確認等もできません。 よって、回答も適当な回答しかできません。 UTF-8 の HTML 出力をしたければ、 jp1.X 系列 (例えば jp1.9) を使用するのが一応本来の使用法です。
jp2.0 で UTF-8 用の META タグをつけたい場合は、上記の他に 多分パッチを当てた latex2html 本体を修正する必要があって、
/(EUC[-_]JP|Shift[-_]JIS)/とか書いてあるところ (3 箇所位) を
/(UTF[-_]8|EUC[-_]JP|Shift[-_]JIS)/とかしてみるとうまくいくかもしれません。 ただし、こちらでは未確認ですし、 上に書いたように問題が起こる場合もあります。
なお、この質問者には書かれていたメールアドレスへ メールで返答したのですが、 そのメールアドレスは有効ではない、とエラーメールが戻ってきました。 メールアドレスは、本人の了解なしに公開することはしませんから、 到達可能なメールアドレスを書いていただきたいと思います。
「注意、その他 (05/11 2006)」 に書いた、 netpbm が rgb.txt を参照できなくて 画像ファイルが生成されないことがある件ですが、 最近、Debian GNU/Linux 上でのそのような事例を 2 つほど目にしました。
いずれも、Netpbm が rgb.txt を探そうとする検索パスと、 実際の rgb.txt のパスが合っていないことによるもののようです。
これ自身は、latex2html の問題というよりは Netpbm の問題なので、 コンパイル前の設定を正しく修正して (pm_config.h の RGB_DB*) Netpbm を再インストールするか、 環境変数 RGBDEF を設定するかで回避できますが、 「注意、その他 (05/11 2006)」 に書いたように pstoimg を修正することでも回避できます。
開発版の日本語化パッチを更新しました (jp1.10beta2.7, jp2.1beta1.7)。
「注意、その他 (10/20 2006)」 に書いた fleqn のテストをしていて、一つ (既知の) バグを見つけました。
latex2html に "-html_version 3.2,math" のように math モジュールを使って数式の変換をやると、 "mathend000#" のような文字列が HTML ファイルに残る場合があります。 これは、l2h-ml に既に報告されているバグのようです。
そこにパッチもありますが、インストール後の latex2html (インストール前なら latex2html.pin) にパッチを当てれば解消されます。 以下にもパッチを置きますが、 2 箇所だけなのでパッチファイルを見て手で修正してもいいでしょう。 次期日本語化パッチでも採用する予定です。
私は普段 documentclass に fleqn オプションを使って LaTeX の文書を書くことが多いのですが、 それを latex2html で変換した数式の位置が変だなあと ぼんやりと思ってはいましたがちゃんと調べてはいませんでした。 それを今回少し調べて考えてみましたので ここに書いておきます。
まず、fleqn を使う場合、 オリジナルの latex2html と日本語化パッチの当った latex2html では 挙動が少し違います。それは、 古い latex2html に関するページ の 「注意、その他 (08/09 2001; no.2)」 に書いた対処によります。以下に、
これらのブラウザでの表示、およびその HTML ソースを見ると、 以下のことがわかります。
これらの取り扱いは、いずれも versions/html*.pl (*=3_2, 4_0 等) で定義されていて、 よって latex2html のオプションによって多少挙動は変わりますが、 少なくともデフォルトでは以上のようになります。 これらの挙動は、できれば以下のように改善したいように思います。
displaymath 環境のセンタリング、センタリングなしは、 div タグの align オプションで実現されているのですが、 fleqn の場合はその代わりに blockquote タグを使えば [a] は解決できそうに思います。
なお、本来はそのような処理は css を使って、 div タグに displaymath クラスを定義しておいて、 その場合のインデント処理を css ファイルで定義するのがいいのかもしれません。 実際 latex2html の生成するデフォルトの css ファイルには "DIV.displaymath" という項目が見られます。 しかし、デフォルトでは HTML ファイルには class の定義はなされず (よって "DIV.displaymath" は有効に働いてはいない)、 それに修正に css の知識が必要、というのでは一般ユーザには 敷居が高いようにも思います。
[b] も [a] と同じようにすれば実現できそうです。 あとの残りは [c] なのですが、実は [c] については、 今のやり方を残しつつ改善するのはやや難しいように見えます。
一応 [a],[b] に上記のような対処 (blockquote を使用) をしたもので変換すると、 上のサンプルは以下のようになります (fleqn の場合のみ)。
blockquote を使用した場合は画像の上下のスペースをカットした方がいいかなど、 まだ検討すべき点もありますし、 多くの場合に問題ないかという点も確認はしていませんが、 一応それなりの表示にはなるように思います。
今後これを日本語化パッチに含めるか、 あるいは別パッチとして単独に公開するか、 日本語化パッチに含めたとしてこの挙動を選択できるようにするか、 等に関しても色々検討してみたいと思います。
(cf. 「注意、その他 (10/25 2006)」)
「注意、その他 (08/09 2006)」 に書いた Shift_JIS 環境での latex2html に関する追加情報ですが、 jp1.9 でそこに書いたような処置をした場合、 初期設定ファイル ~/.latex2html-init の漢字コードも EUC-JP にしておく 必要があります。 もちろん、l2hconf.pm 内に漢字を書いた場合は、 それも EUC-JP にしておかないといけません。
例えば ~/.latex2html-init 内で変換者の名前を漢字で定義している場合は、 それを EUC-JP にしておかないと (Shift_JIS のままだと) その名前だけが文字化けしてしまいますので注意してください。
Mac OS や Cygwin 上でのことのようですが、最近 WWW 上で、 「Shift_JIS 環境で latex2html のインストールがうまくいかない」 というものを複数目にしましたので、気になって少し試してみました。 すると、やはり多少修正が必要なことに気がつきましたので 報告します。
なお、以下の話は (Cygwin ではない) MS-Windows 版 (阿部@北教大 さんのもの) の場合は当てはまらないと思いますので 注意してください。
付属ドキュメント (README.patch-2002jp) に書いてある作業の代わりに 以下の作業を行なって下さい:
「config/config.pl に書かれている付属ドキュメントと違う部分は、$newcfg{'TONATIVE'} = "|$nkf -e";を
$newcfg{'TOHTML'} = "|$nkf -j";
$newcfg{'FROMNATIVE'} = "$nkf -e";
$newcfg{'TONATIVE'} = "|$nkf -s";に直してください。 styles/japanese.perl の漢字コードは変換しないでください。」
$newcfg{'TOHTML'} = "|$nkf -j";
$newcfg{'FROMNATIVE'} = "$nkf -e";
上記の修正により、LaTeX ファイルを EUC-JP に変換して読み込んで (latex2html の内部処理は EUC-JP で行ない)、 LaTeX ファイルを吐き出して画像化する際は Shift_JIS で出力し、 HTML ファイルは 7bit JIS (iso-2022-jp) で出力する、 ということになります。 これは、阿部@北教大さんの MS-Windows 版のやり方と ほぼ同じやり方だと思います。
Shift_JIS のまま内部処理を行うと色々問題があるようです (perl-5.8.X の機能などを利用しない限り。jp2.0 版の方を参照)。
この場合は、現在のところ、完全には修正できませんが、 ある程度なら修正できます。
付属ドキュメント (README.patch-2002jp) に書いてある作業の代わりに 以下の作業を行なって下さい。
しかし、jp2.0 の場合はこの修正は十分ではなく、 「表」などの Shift_JIS コードで 2Byte 目が '\' (0x5c) に等しい漢字が 地の文に含まれると、そこが文字化けするようです。 jp2.0 は nkf を使わないわけですから、 となるとこちらの場合根本的な解決は、 perl-5.8.X の機能を積極的に利用した形に 書き直しを行うしかないかもしれません。
今までは、実際に Shift_JIS 環境の pLaTeX を使っていませんでしたので、 良くわかりませんでしたが、今後、付属ドキュメントを修正したいと思います。
(cf. 「注意、その他 (08/10 2006)」)
latex2html は、tabbing 環境の処理は苦手で、 場合によっては tabular 環境に変えてくれ、 というメッセージがでることがあります。 今回、tabbing 環境を使ったサンプルを書いたので、一つ紹介します。
最初、tabbing 環境で以下のようなものを書きました。
\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 は、以下のように展開してくれるようです。
<TABLE CELLPADDING=3> <TR><TD ALIGN="LEFT" COLSPAN=5>(1) 1 行入力する (暗黙の getline)</TD> </TR> <TR><TD ALIGN="LEFT" COLSPAN=5>(2) 現在行が「ア」の行かチェック</TD> </TR> <TR><TD ALIGN="LEFT"> </TD> <TD ALIGN="LEFT" COLSPAN=4>(3) 「ア」ならば、その行を保存して</TD> </TR> <TR><TD ALIGN="LEFT"> </TD> <TD ALIGN="LEFT" COLSPAN=4>(4) その行が「イ」であるかチェック</TD> </TR> <TR><TD ALIGN="LEFT"> </TD> <TD ALIGN="LEFT"> </TD> <TD ALIGN="LEFT" COLSPAN=3>(5) 「イ」ならば、次の行を取得し ... </TABLE>
つまり、table タグの colspan を使って、 丁度 table 環境 + multicolumn に対応することをやってくれています (何もないところは でスペースを入れてくれています)。 よって、tabbing 環境を使いたときは、 上のような手が使えるようです。
なお、上記のサンプルは以下から取ったものです。
「TeX Q&A 掲示版」 の 43063 番の記事で、Ken さんから、 HTML ファイルの上の方に JavaScript の
<script language="javascript"
src="hoge"></script>
のような行をつけたいんだけど、うまくいかない、という報告がありました。
確かに、そのような行を .latex2html-init の top_navigation_panel の中に
"<script language=\"javascript\"
src=\"hoge\">" .
"</script>" .
のように入れても、消されてしまいます。
実は、latex2html は、内容のないタグ (らしきもの) を削除して出力しています。 これを行っているのは text_cleanup() というサブルーチンで、 実際に、その中の以下のような部分 (正確にはその最後の行) によって消されているようです。
### DANGEROUS ?? ###
# remove redundant (not <P></P>) empty tags, incl.
with attributes
s/\n?<([^PD >][^>]*)>\s*<\/\1>//g;
s/\n?<([^PD >][^>]*)>\s*<\/\1>//g;
# remove redundant empty tags (not </P><P>
or <TD> or <TH>)
s/<\/(TT|[^PTH][A-Z]+)><\1>//g;
s/<([^PD ]+)(\s[^>]*)?>\n*<\/\1>//g;
よって、これをコメントアウトすれば消されなくなるのですが、
副作用が起こることもありうるので、
むしろこのパターンにマッチしないようにすればいいので、
例えば
"<script language=\"javascript\"
src=\"hoge\">" .
" </script>" .
のようにスペースを一つ入れるとか、
"<script language=\"javascript\"
src=\"hoge\">" .
"<!-- --></script>" .
のようにコメント記号を入れてしまえば消えなくなります。
なお、
"<takeno></takeno>" .
のようなタグ (これは自身は実在しませんが) の場合は、
上の 1 番目と 2 番目の行で消されてしまうので、
この場合はスペースを入れて
"<takeno> </takeno>" .
としてもその行にマッチしてしまって消されてしまうので、この場合は、
"<takeno><!-- --></takeno>" .
のようにコメント記号のようなものを入れる必要があります。
l2h-ML でのやりとりで気がつきましたが、 latex2html が変換する数式に下線がついてしまう事例として、 その画像の部分を \smash (plain TeX のコマンド) のコマンドで 高さを 0 にしてしまうとそういうことが起きます。
latex2html は画像を作る際に、 画像の高さを計算して表示の深さを調整するために、 元々画像の左と下に「L 字型」の黒線をつけて画像を作ります。 latex2html に -debug オプションをつけてつくられる、 XXX/images.dvi (XXX は変換する TeX のファイル名) を見てみればわかります。
そして、それを画像化した後、 Netpbm の pnmcrop というツールで、 この L 字型の黒線を外枠の基準として画像を切りだして、 その黒線自体も切りとるのですが、 pnmcrop は、
しかし、その画像に \smash が使われていると 画像の高さが 0 になってしまうので、 下端であるはずの黒線よりも下にその画像がはみでることがあります。 そうなると、「上下左右の空白を切り捨てる」というときには、 そのはみ出た部分までしか切りとられないので、 次の「下端の黒線を切り捨てる」ことができなくなってしまい、 黒線が残ってしまう、といったことになってしまいます。
その場合の回避策としては、とりあえず \smash を 使わないようにするしかありませんが、 dvi ファイルを作るときには \smash を使いたい、 というのであれば、latex2html にかけるときだけ \smash を使わないように、 \latexhtml コマンドを使って、
\latexhtml{ % ここは LaTeX が使う % \smash を使って書く }{ % ここは latex2html が使う % \smash を使わないで書く }のように書けばいいでしょう (\usepackage{html} が必要)。
latex2html が使用する Netpbm に関して l2h-ML に質問が流れ、 2 つの問題点があることがわかりました。
一つ目は、Netpbm のバージョン番号の問題です。 新しい Netpbm のバージョン番号は、 通常は 9.24 とか 10.25 といったバージョン番号で、 これをそのまま小数と見てバージョン番号の比較が行えるのですが、 中に 10.18.4, 10.26.13 といったバージョン番号のものがあるようです。 このような Netpbm を使っている場合、 latex2html のインストールの最中 (configure 時) に、
Argument "10.18.4" isn't numeric in numeric gt (>)
at config\config.pl line 1246
のような行が出力されてしまうようです。
もちろん、本来はちゃんとそれに対処する必要がありますが、 実際にはこのような行が出力されるものの本質的な実害はない (正しく条件分岐はされる) ようなので、 とりあえずは無視してもいいようです。 新しい日本語パッチでは対処したいと思います。
もう一つの問題は、rgb.txt の問題です。 latex2html は、pnmtopng などを使って透明化する場合、 色名 'gray85' を使って透明化を行う場合があります。 しかしその場合、特に MS-Windows 環境の場合、 色名を参照できずに pnmtopng が失敗する場合があるようです。 その場合、以下のような行が表示されることがあります。
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
ML での報告者は、Cygwin 版の Netpbm を使っていて、
それが configure 時 (config.bat の実行時) に認識されてしまっていて、
それが rgb.txt というファイルを参照できなくてそのようになっていたようでした。
手動で pnmtopng をやった結果は以下のようになったそうです。
C:\tmp>pnmtopng.exe -interlace -trans gray85 <
c:\Temp\l2h3832\p660.pnm > img2.png
c:\Program1\GnuWin32\bin\pnmtopng.exe: can't open color names dictionary
file named /usr/lib/X11/rgb.txt, /usr/openwin/lib/rgb.txt, or
/usr/X11R6/lib/X11/rgb.txt and Environment variable RGBDEF not set.
Set RGBDEF to the pathname of your rgb.txt file or don't use color names.
この場合、ここに表示されているように、
RGBDEF という環境変数を rgb.txt があるディレクトリに
設定すればいいようですが、
そもそも rgb.txt がない場合は、
latex2html の配布物に rgb.txt が含まれています (styles/ の中) から、
それを利用すればいいでしょう。
/usr/lib/X11 というディレクトリを作って、
そこにこれをコピーすればうまくいくかもしれません。
または、latex2html が色名 'gray85' を使用しなければいいので、 pstoimg (MS-Windows の場合は pstoimg.bat) に書かれている 'gray85' という文字列 (latex2html-2002-2-1 の場合は 1510 行目付近) を RGB 形式の表現 '#d9d9d9' に変えればいいのではないかと思います。
(cf. 「注意、その他 (11/24 2006)」)
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 環境内に 入れないようにするといいでしょう。
Yasufumi Haga さんが公開しておられる LaTeX2HTML のマニュアルの日本語訳が 更新されたようです (1.1 Beta)。
「TeX Q&A 掲示版」 の 42043 番の記事で、takashina さんから、 MS-Windows 版の latex2html がうまく動かない (対象ディレクトリの下に TMP なるディレクトリができるだけ、という情報がありました。 実行時には以下のようなエラーメッセージが出るそうです。
texexpand: Error: More than one input file specified.結局、"C:\Documents and Settings\hoge\..." のように、 パスに空白が含まれているディレクトリ上で実行したのが原因らしく、 "c:\work\" のような上で実行したらうまくいったそうです。
texexpand failed: No such file or directory
Unix 由来のソフトの場合、パスに空白や日本語が含まれていたりすると 問題が起こることがありがちですが、 latex2html も同様のようです。
LaTeX2HTML では内部で Netpbm を使用していますが、 Netpbm の version 10.30, 10.31 辺りの pnmtopng にはバグがあり、 そのため画像が生成されないことがあります。この場合、 (-debug オプションをつけると) 以下のように表示されるでしょう。
ppmquant -floyd 256 </tmp/l2h16891/p17166.pnm | pnmtopng -interlace > 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(cf. l2h-ml に流れた情報: [l2h] Image conversion)
次の Netpbm 10.32 位からは修正されるようですが、 Netpbm を 10.26 辺りにバージョンダウンするか、 Netpbm 10.31 用の以下のパッチを使ってみるといいかもしれません。
開発版の日本語化パッチ jp1.10beta, jp2.1beta を公開します (ようやく)。
今まで ~/.latex2html-init を使っていたので気がつきませんでしたが、 初期設定ファイルを使っていない場合、ナビゲーションパネルの "Next:", "Up:", "Previous:" (Next, Up, Previous などの画像の下の行に出る、 各リンクの前につくはずのもの) が出ないことに気がつきました。 これは share/lib/latex2html/styles/japanese.perl の japanese_titles 内で、本来定義すべきである変数 $next_name, $up_name, $previous_name 等が 定義されていないことが原因です。
~/.latex2html-init を使っている場合、その中で定義されている {top,bottom}_navigation_panel() 内で直接 Next: などと書かれているため、 $next_name の設定とは無関係にこれが使われます (よって逆に自分用にカスタマイズしたければ、 初期設定ファイルを直接修正すれば可能です)。 とりあえずはそれで対処できます。
他の各国語用の perl ファイルを見ると、以下のような 3 通り (2 通りとも言える) の対応があるようです。
となると、あながち現在の japanese.perl の対応は間違いではないのですが、 このままというのも何なので、 次期パッチでは一旦 english_titles を読み込んだ後で、 その設定を japanse_titles の設定を行う、 というやり方に変えてみようかと思います (他の perl ファイルでは行われていない手法なんで何ですが)。
いっそ、
$next_name="次へ", $up_name="上へ", $prev_name="前へ"のように日本語の設定してもいいのですが (実際そのようにカスタマイズされている方もおられるようですが)、 その上に貼られるナビゲーションボタンが "Next" 等になっているので、まあとりあえずは "Next:" のままにして、 カスタマイズしたい人が ~/.latex2html-init などでカスタマイズする という方向でいいのではないかと思います。 もちろん、「注意、その他 (12/08 2003)」 で述べたように、 ここを日本語にして、かつナビゲーションボタンも日本語にする、 という手もあるでしょう。
多分最もカスタマイズの要望が強くて、 なおかつうまくいかない事例が多いと思われる、 ユーザ名と日付のカスタマイズについて、 現在の日本語化パッチの状況とその方法について説明しておきます。 設定ファイル、およびそれらの優先順位に関する記述 (「注意、その他 (08/10 2005)」) も合わせてご覧ください。
まず、各ページの下に出力される名前と日付の部分は、 latex2html では $ADDRESS という変数を書き出しています。 これは、 「注意、その他 (08/10 2005)」 でいうと、
で 3 度定義されていますが、 それらはいずれも初期設定ファイルで上書き可能ですし、 コマンドラインオプションの -address でも変更可能です。 例えば、.latex2html-init で
$ADDRESS = "これがページの一番下 (竹の)\n";のように書けば、署名も日付もなく、上に書いたものに置き変わります。 なお、styles/japanese.perl、latex2html 本体では、 $ADDRESS は以下のように定義されています:
@address_data = &address_data('ISO');ユーザ名は、ページ下の署名と、 最後の「この文書について」の変換者として使用されますが、 それは styles/japanese.perl 内の japanese_infopage() 内で $address_data[0] が使われていますので、 これは .latex2html-init で
$ADDRESS = "$address_data[0]\n$address_data[1]";
$address_data[0] = "竹のでんねん";と書いておけば、 これが変換者としても使われますので、 ユーザ名の問題はこれで解決します。
$ADDRESS = "これがページの一番下 (竹の)\n";
問題は日付の方です。日付を絶対的な日付とするなら、 上と同様に、.latex2html-init で
$address_data[1] = "2005年 吉日";と書いておけば、ページ下の日付も、最終ページの日付も これで指定したものになります。 しかし、\today コマンドの出力はこれとは無関係ですし、 通常は絶対的な日付にしたいのではなく、 その書式 (西暦か元号かとか) を変更したい場合が ほとんどだと思いますので、それについて説明します。 通常、以下の 3 つが自動的に日付が計算されて展開されています:
$ADDRESS = "$address_data[0]\n$address_data[1]";
\today は latex2html では do_cmd_today() という関数で生成されているのですが、 これは "japanese_today()" という関数があればそれを使い (default ではなし)、 なければ get_date() という関数を使ってそれを default_today() という関数内で加工したものをデフォルトの日付とします。 このデフォルトの日付は "月名 日, 年号" となりますが、 月名には @Month という配列の値が使われています。
実はここからが厄介なのですが、現在の日本語化パッチでは styles/japanese.perl 内で、 本来は日本用の日付生成関数として japanese_today() を作るべきが、 それより低いレベルの関数である get_date() を日本用に再定義していて、それが呼びだされています。 月名用の配列 @Month もここで日本用のものが定義されてしまっています。
各ページ下の日付は、上に書いたように address_data('ISO') が生成する配列の 2 つ目の成分 $address_data[1] を使うのですが、 それも実は get_date() の出力なので、 やはり style/japanese.perl で再定義されたものが使われています。
最終ページの変換日は、$address_data[1] が使われていますので、 これはデフォルトでは address_data('ISO') の 2 つ目の成分で、 これも上と同じものになります。
だから、自動的に日付を計算させて、かつ \today の出力も、 ページの下の日付や変換日の日付も同じ日付の書式にしようとする場合は、 get_date(), japanese_today() を .latex2html-init で 定義 (再々定義) する必要があるのです。
例えば、.latex2html-init に以下のようなものを入れます:
########### 日付のカスタマイズ (ここから) ########## $MySeireki=1; # 元号にするにはここを 0 にする sub get_date { local($format,$order) = @_; local(@lt) = localtime; local($d,$m,$y) = @lt[3,4,5]; sprintf("%d/%d/%d", $m+1, $d, 1900+$y); } sub japanese_today { local($today) = &get_date(); local(@Month) = ('', '睦月', '如月', '弥生', '卯月', '皐月', '水無月', '文月', '葉月', '長月', '神無月', '霜月', '師走'); local($y); if ( $MySeireki ) { $today =~ s|(\d+)/0?(\d+)/(\d+)|$3年 $Month[$1] $2日|; } else { $today =~ /(\d+)\/0?(\d+)\/(\d+)/; $y = $3 -1988; $today = "平成 $y年 $Month[$1] $2日"; } # $today; # 09/14 2005 修正 join('',$today,$_[0]); } $address_data[0]="たけのでんねん"; $address_data[1]=&japanese_today(); # $mygd=&get_date(); # $ADDRESS = "こんなんでっせ ($mygd)"; # get_date() の確認用 $ADDRESS = "$address_data[0]\n$address_data[1]"; ########### 日付のカスタマイズ (ここまで) ##########こんな風にすると、\today もページ下の日付も、変換日も "2005年 葉月 10日" のようになります。 月名を "1月 2月 ..." のようにしたいならば、 既に styles/japanese.perl 内でそのように定義されていますので、 上の @Month 局所変数を消せばうまくいくでしょう (多分)。
ただ、上のような状況はやはりあまりよろしくないので、 新しいパッチでは、styles/japanese.perl 内の get_date() の再定義はやめ、japanese_today() を作る予定です (上のものの拡張版です)。
現在の latex2html の日本語化パッチの設定ファイルの 優先順位について説明しておきます。 これは次期パッチで変更されますので、 付属のドキュメントで説明する予定です。
latex2html には l2hconf.pm、.latex2html-init のような 設定ファイルの他に、 日本語化用のファイル styles/japanese.perl、 コマンドラインオプション、latex2html 本体内の設定、 -init_file で指定したファイルでの設定などがあり、 その設定の読み込まれる順番は以下のようになっています:
後で読み込まれるものの設定が、前に読み込んだ設定を上書きしますので、 原則、この下にあるものの方が優先順位は上ということになります。 ただし、色々な理由で、設定がうまくいかない場合もかなりあります。
例えば、生成される META タグにつけられる charset の設定 (変数 $charset) は、 styles/japanese.perl で設定されているのみなので、 .latex2html-init で変更できるのですが、 それが META タグに使用される前に 実は latex2html 本体内でクリアされてしまっています。
よって、jp1.9, jp2.0 の日本語化パッチでは、 $charset が日本語の locale の場合は それをクリアしないような仕組みがしてあります (jp2.0 の場合はコード変換をしないので EUC-JP と Shift_JIS のみ有効)。
「TeX Q&A 掲示版」 の 37246 番の記事で、T.WATANABE さんから MS-Windows 版の latex2html では、l2hconf.pm, .latex2html-init, latex2html.bat のどれが正しい設定ファイルなのか、 という質問がありました。 MS-Windows 版だと確かにそのように思うこともあるかもしれませんね。 最後の latex2html.bat は、 MS-Windows 版では latex2html 本体をこのような名前にしているそうです。 だからもちろん設定ファイルではありません。
37248 番の記事にも書きましたが、本来は
ただ、l2hconf.pm を個人設定ファイルとして使う場合、
なお、元記事の方は、 日付とユーザ名のカスタマイズがしたかったそうですが、 これは現在作成中 (^^;) の新しい日本語化パッチで対処と 説明書きを加えるつもりのものですが、 今の日本語化パッチでは少し厄介な問題です。 その方も、.latex2html-init や l2hconf.pm でもうまくいかず、 結局 latex2html.bat (latex2html 本体) を修正して対処されたそうです。 新しいパッチの公表の前に、 現在のパッチの場合の状況と対処法を一度何かにまとめて 報告しておいた方がいいかもしれませんね。 そうすれば、新しいドキュメント書きにも役立つかもしれませんし (そう、これが全く進んでいないのです <(_ _)>)。
「TeX Q&A 掲示版」 の 37165,37183 番あたりで、 duke さんから MS-Windows 版の latex2html での 初期設定ファイル (.latex2html-init) の置き場所がわからない、 という話がありました。 Win32 版では、環境変数 HOME を見ているようなので、 適当なディレクトリを環境変数 HOME を設定して、 そこに .latex2html-init という名前で置けばいいようです。 HOME が設定されていない場合はカレントディレクトリを探すようですから、 latex2html を実行するディレクトリを固定するなら そのディレクトリに置いておく、という手もあると思います。
latex2html に dot.latex2html-init というファイルが 付属していると思いますが、 その名前を変更して使えばいいでしょう。 「注意、その他 (05/26 2005)」 にそのファイルの日本語訳 (と補足の追加) も置いてあります (ただし漢字コードは EUC-JP)。
なお、latex2html は Unix 由来のプログラムなので、 パス名にはスペースが入らないようにした方が無難だと思います (そのような問題も、37235 番の記事で報告されました)。
また、37183 番の記事は元々はナビゲーションアイコンボタンの配列を "[Next][Up][Previous]" から "[Previous][Up][Next]" に変えたい、というものだったのですが、 これは初期設定ファイルの 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{} もついでに直しておくといいでしょう。
「TeX Q&A 掲示版」 の 37151 番の記事で 栗山さんから報告がありましたが、 \usepackage{amsmath} を使っていると、 数式の部分の画像の作られ方がかなり違います。 例えば、display 数式環境内の \mbox{文字} のような部分も、 画像化されずにそのまま文字として出力されます。
これは仕様で、amsmath や amstex を使っている場合は こんな風になるようです。 「LaTeX Web コンパニオン」 の 3.3 節にも書かれていますが、 いわゆるプロフェッショナルモードでの数式モードなんだそうです (私にはよくわかりません <(_ _)>)。 AMS パッケージを使うということは、 たくさん色んな数式が出てくるだろうということを見越した仕様のようです。
最近たて続けに 「TeX Q&A 掲示版」 で latex2html の話題が取り上げられました。 ここでひっくるめてまとめておこうと思いましたが、 検索の都合も考えて、今まで同様、 一つの話題毎に区切って書いておきます。
「LaTeX2HTML に関するページ」の 「latex2html に関する QandA」Q.1. や 「注意、その他 (08/26 2002)」 に書いた、 dvips のオプションに '-Ppdf' がついていると数式の下に 黒線が残ることがある問題ですが、 「TeX Q&A 掲示版」 の 37151,37161 番以降のたくさんの記事で 栗山さん、角藤さんに色々教えてもらって、 その状況や問題点などが明らかになってきました。 私の理解した範囲でまとめておきます。
ということで、やはり -Ppdf は使わない方がいい、 ということがわかりました。 新しい日本語化パッチでも、 -Ppdf は使わないようにしておきたいと思います。 栗山さん、角藤さん、どうも色々ありがとうございました。
「TeX Q&A 掲示版」 の 37151 番の記事で報告されましたが (by 栗山さん)、Vine 版の latex2html では、 どうも wrapper スクリプトの l2h と、 それ用の l2hconf*.pm が合っていないようで、 l2h は jp1.6 以降用、l2hconf*.pm は j1.6 より前の形のものに なっていて、 l2h がうまく動かないようになっているようです。
対処法も上の記事に書かれています (以前のやり方にする方法) ので、そちらをご覧ください。
「TeX Q&A 掲示版」 の 37149 番の記事や 「注意、その他 (02/26 2004)」 でも報告していますが、 数式に 'y' のようにベースラインよりも下につきぬける文字が 入る場合、latex2html は、その画像に適当に下にスペースを追加し、 その画像を align="middle" (通常はそのようなスペースは追加せずに align="bottom") として、うまくベースラインが合うようにします。 日本語が入っている場合もこのようになるようです。
ただ、その計算は、ブラウザによってはあまりうまくは表示されないようで、 実際に Netscape や MS-IE6 ではそれなりに見えますが、 FireFox では少し浮いた形で表示されてしまうようです。 これは各ブラウザの癖のようなもので、 例えばもっと大きな画像では むしろ Netscape と FireFox が似たような表示になって MS-IE6 では違ったように見えてしまいますので、 よって完璧にこれを合わせる、というのは、 見る側が使うブラウザを仮定しない限り無理なんだと思います。
「TeX Q&A 掲示版」 の 37148 番の記事あたりで気がつきましたが、 日本語化されていない gs (Ghostscript) でも、 dvips で日本語をビットマップに展開することができるなら それで一応数式部分に日本語が入っている場合も latex2html が使えます。 W32TeX の dvipsv は、dvipsk に VFlib 対応機能を追加したものだそうで、 それがこれに相当します。
逆に、数式部分の日本語が出ない、という問題が、 W32TeX で dvipsk ではうまくいかないのに dvipsv でうまくいく、 という場合は、多分 gs が日本語化されていない (または設定がうまくいってない) のだろうと思います。
「TeX Q&A 掲示版」 (の 37109 番の記事) で、 数式内の日本語の最後が切れてしまう、という問題が報告されました (by 本田さん)。
これはどうやら最近の日本語版の dvips(k) の問題のようで、 角藤さんにより、対処法 (dvips(k) の texk/dvipsk/bbox.c を 1 行修正して再コンパイルする) が報告されました (37114 番の記事)。 これで確かに直るようです。 例えば dvips(k) 5.95a p1.7 などがこれに該当します。
MS-Windows 版の W32TeX では、 dvipsk の代わりに dvipsv を使う、という解もあるようです (37113 番の記事)。
うちでも最近 TeX を入れ換えたので、 ついでに netpbm のバージョンを上げて latex2html のインストールのし直しをしたのですが、 make test でこけてしまいました。 原因は netpbm-10.2X の ppmquant のようです。
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";のように変更するといいようです。以下にパッチを置きます。
なお、ppmquant 自体が obsolete で pnmquant を使え、 と manual にも書かれていますし、 pnmquant にしても perl script になっていて そこでオーバーヘッドが生じますから、 netpbm-10.19 以降では $PPMQUANT を pnmcolormap と pnmremap の組合せにした方がよさそうですが、 それについてはまた調べてみたいと思います。
「注意、その他 (04/03 2005)」 でもお話しした新しい日本語化パッチですが、 dot.latex2html-init の訳と補足等の追加を行ったものを、 これだけでも多少は役に立つかも知れないと思いますので、 先行して公開します。 なお、新しい日本語化パッチに含まれる (予定の) 新機能に対する記述は まだ行われていません。
なお、このヘッダにも書いてありますが、 単なる訳ではなく改変部分も含まれていますので オリジナルのものも参照してください。 ライセンスは、オリジナルの latex2html に従うものとします。 また、そこに書かれていることに関しては、オリジナルの作者ではなく、 私 (shige) に連絡して下さい。
「TeX Q&A 掲示版」 (の 35834 番の記事) で、 MS-Windows 版の latex2html の変換者名 (ユーザ名) に日本語が入っていると そこが文字化けする、という問題とその対処法が報告されました。 perl 5.8.X 用の対処ですが、L2hos/Win32.pm の user(), fullname() 修正することで対処できるようです。
どうも、阿部@北教大さんの MS-Windows 版は、 一旦入力を EUC-JP に変換してから latex2html の (perl の) 処理を行って、 LaTeX の処理や HTML 出力では Shift_JIS に変換する、 ということになっているようです。 詳しくは分かりませんが、Shift_JIS のまま perl にかけると、 例えば 2byte 目のバックスラッシュの問題とかがあって perl とはあまり相性がよくないのかも知れません。
perl 5.8.X を使うなら、nkf を使わないようにして、 perl 5.8.X 自身の機能で日本語コードを処理するという手もあるのでしょうが、 それはそれで面倒そうなので、 今後もしばらくは nkf (MS-Windows では ack32) の力を借り続けることになるでしょう。
「注意、その他 (12/03 2004)」, 「注意、その他 (12/09 2004)」, 「注意、その他 (12/14 2004)」 辺りでちらっと報告していた日本語化パッチの新版ですが、 春休み中にリリースする予定だったのですが (最初の計画では冬休み中)、 結局春休み中の公開はできませんでした。
進んでいないのは主に付属ドキュメントの更新なのですが、 現在、
等の作業を行って/予定しています。 気長にお待ち頂けるとありがたいですが、 パッチ自体はほぼできているので、 暫定的にパッチと最小のドキュメント (今までのとは色々挙動が変わりますので最小限のものは必要だと思います) のみを公開することも考えています。
(cf. 「注意、その他 (05/26 2005)」)
最近、阿部@北教大さんの、MS-Windows 用の latex2html に関する WWW ページ 「LaTeX2HTML for Win32」 が更新され、latex2html-2002-2-1 対応 (jp1.9) になったようです。
Linux でインストールした latex2html で 数式部分の日本語が文字化けするが、 それはデフォルトのインストールでは日本語化されていない dvips が 使われる設定になってしまうからだ、という情報を頂きました (Thanks 山本昌志さん)。
Linux では、日本語化された dvips が "pdvips" という名前に なっている (ことがある ?) ようですが、その場合は、
(j)report スタイルで chapter の下に section を作った場合、 それを latex2html にかけると chapter は <h1> で表示されるが、 その下のレベルであるはずの section も <h1> で表示される、 という話が出ました。
これは latex2html 内に%standard_section_headings =と定義されているからで、これを解消するには、 ~/.latex2html-init に例えば次のようなものを書くか、 またはそれだけを書いた別なファイルを作って、 それを "-init_file" オプションで指定すればできるようです。
('part' , 'H1' , 'chapter' , 'H1', 'section', 'H1',
'subsection', 'H2' , 'subsubsection', 'H3',
'paragraph', 'H4', 'subparagraph', 'H5'
,%standard_section_headings );
%standard_section_headings =
('part' , 'H1' , 'chapter' , 'H1', 'section', 'H2',
'subsection', 'H3', 'subsubsection', 'H4',
'paragraph', 'H5', 'subparagraph', 'H6' );
「注意、その他 (12/14 2004; no.3)」 に書いた、Tgif で書いた EPS 画像などの「白での塗りつぶし」 の透明化に失敗する問題にも少し関係する話です。 例えばその場合の解消法の一つとして、latex2html のオプション "-white -notransparent" を使って画像背景を白にしてしまう、 という手があります。 ところがそれにも問題があるようで、 別な意味で背景が灰色になってしまう問題とそのパッチが latex2html-ML に流れました。
元々は Fedora Core package の bug の報告に現れた問題のようです。うちの環境でもこの問題は再現しました。
現在開発/テスト中の次期日本語化パッチは これも取り入れたものにする予定です。(cf. 「注意、その他 (04/06 2007)」)
「注意、その他 (06/08 2004)」 に書いた、Tgif で書いた EPS 画像などに「白での塗りつぶし」を 使った場合、その部分の透明化に失敗する問題ですが、 以下のようなことで起こっているようです (GIF 化の場合)。
対処法としては、images.tex で背景を灰色にするのをやめる、 というのが良さそうですが、 何らかの意味があってそうしているのだとすると どこかで不具合が起きかねません。
他の回避策としては、おかしくなる画像だけ手動で GIF 画像にしてやる、 というものがあります。 「注意、その他 (01/21 2004)」 でも紹介したように、 latex2html 上では includegraphics で GIF 画像を取り込むことができ、 その場合は単純にその画像が link されます。 よって、LaTeX ファイルの
\includegraphics[...]{hoge.eps}
を、
\usepackage{html}
....
\latexhtml{%
\includegraphics[...]{hoge.eps}}{%
\includegraphics{hoge.gif}}
のように書き換え、hoge.gif は
pstopnm -stdout -portrait hoge.eps | pnmcrop | pnmscale -xsize 450 \
| ppmquant 256 | ppmtogif -transparent='#FFFFFF' > hoge.gif
のように作っておけばいいわけです。なお、pnmscale の -xsize の値は、
latex2html が作った (失敗している) 画像サイズの大きさを
調べて、その xsize に合わせれば良いでしょう。
latex2html に -debug オプションをつけて、
pstoimg のオプション (-geometry) を調べることでも
ほぼ大体の数値はわかります。
そのようにして、 「注意、その他 (06/08 2004)」 で上げた失敗例を直してみたのが以下のサンプルです。 「注意、その他 (06/08 2004)」 のものと見比べてみて下さい。
このメモ内で別の日に書いたものを参照している部分があったのですが、 逆にたどれるようにもしてみました。
次期日本語化パッチのテストを行なっていて、 latex2html 本体のアクセントに関するバグと問題点を見つけましたので 報告します。
アクセントの中で \t だけは 2 つの文字を引数としますが、 これは HTML の entity がなく、 よって latex2html は画像化しようとします (-accent_image がついている時) が、そこにバグがあり、\t{o} として画像化してしまいます。
この問題は次期パッチで対処する予定です。
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} であろうと 常に上の点を取る、という仕様にするなら対処もできるのですが、 今の所簡単な修正を行なう方法は見つかっていませんので、 上の方法で回避して下さい。(cf. 「注意、その他 (04/03 2005)」)
多分あまり使われてはいないと思いますが、 現在の日本語化パッチに取り入れられている UNUSEACCENT の機能は、 不具合があることが分りましたので、 新しいパッチからは取り除くことにしました。 今後、もし UNUSEACCENT の改良ができてそれを公開するとしても、 それを日本語化パッチ本体には取り入れず、 それとは分離した形にする予定です。 もし何かご要望等があれば、ご連絡下さい。
(cf. 「注意、その他 (04/03 2005)」)
「注意、その他 (11/04 2004)」 で報告した、 Linux で日本語化パッチが有効になっている latex2html が入っている件ですが、 松浦さんが作業をされて、jlatex2html という別名のコマンドになり、 開発板の RPM (tetex-latex-2.0.2-26; SRPM は tetex-2.0.2-26.src.rpm) に取り込まれ、Fedora Core 4 では対応されることになったそうです (Thanks 松浦さん)。
日本語化パッチ jp1.X 系列の新しいものとして、 現在次のような 2 つを候補として試作してみたのですが、 どちらを採用するかを少し迷っています。
後者の場合 (jarticle 等で自動判別) は、
個人的には後者の方が自然かなと思うのですが、 そちらは今までの日本語化のものと挙動が変わるため 色んな問題が出てくるだろうと思いますし、 charset に関する部分が前者に比べてかなり不利です。 ただ、いずれの方法を取るにせよ、 多少今までのような不自然な形式からは脱却できるので、 そのいずれか (あるいは両者をインストール時に切り替えられるようにするか) の方向に jp1.X は切り替えて行きたいと思っています。 何か意見、要望等ありましたらご連絡下さい。
(cf. 「注意、その他 (04/03 2005)」)
「注意、その他 (09/25 2004)」 で書いたように、jp1.X 系列は jp1.8 からは wrapper script のオプション -jis/sjis/euc で出力コードを指定したり、 ~/.latex2html-init に出力コードと nkf の設定を書くように できるようになりましたが、 ついでに、UTF-8 の出力もできるようにしてみました (jp1.9)。 変更点については、「更新履歴」 を参照して下さい。 「注意、その他 (09/28 2004)」, 「注意、その他 (10/01 2004)」 で報告した more_amsmath.perl の bug に対するパッチも取り込んであります (jp2.X 系列のパッチにはまだ取り込んでいません)。
ただし、UTF-8 出力に関しては、注意が必要です。
-html_version=4.0,unicodeのようなものを持っています (versions/unicode.pl, versions/utf8.pl)。 しかし、現在のところ、このパッチによる UTF-8 化と これらのオプションとの関連づけはなされていませんので、 UTF-8 対応としてはかなり不十分です。 実際にこれらのオプションと同時に使用すると どのような問題が起こるかについては詳しくは確認していませんが、 少なくとも versions/utf8.pl と同時に使用した場合は問題が起こり、 正しくは変換されません。
-html_version=4.0,unicode,utf8
「注意、その他 (11/03 2004)」 で報告した、 Linux で日本語化パッチが有効になっている latex2html が入っている件ですが、 色々問題があるようなので多少修正しておきました。 修正したのは、
なお、 「TeX Q&A 掲示版」 (の 32338 番の記事) で松浦さんが報告しておられるように、 今後は日本語化パッチが当たったものは、 jlatex2html という別名のコマンドになるように作業されているようです (Thanks 松浦さん)。
(cf. 「注意、その他 (12/07 2004)」)
「注意、その他 (11/02 2004; no.2)」 で報告した、 Linux で日本語化パッチが有効になっている latex2html が入っている件に 補足しておきますと、 今回の問題は日本語圏のユーザには問題はありませんが、 だからといって、すぐに日本語化された latex2html が利用できるわけでは ありません。
(cf. 「注意、その他 (11/04 2004)」)
「注意、その他 (11/02 2004)」 で報告した、 非日本語圏のユーザが日本語化パッチの当たった latex2html を 使っている件ですが、 迫田誠治さん (sakoda@cc.nda.ac.jp) からメールで、また 「TeX Q&A 掲示版」 で松浦さんに情報をいただきました。 それで調べてみたところ、
===== ChangeLog より ===== * Fri Jul 02 2004 Tim Waugh <twaugh@redhat.com> 2.0.2-16 - Rebuilt. * Thu Jul 01 2004 Ed Hill <ed@eh3.com> - english (not japanese) default lang for latex2html ==========================よって、2.0.2-11 から 2.0.2-15 にその問題が発生する
日本語化パッチは、多少本体のバグを fix しているパッチも含んでいるのですが、 非日本語圏のユーザに取っては迷惑な部分もありますので、 本来は、 日本語化された xdvi や dvips が pxdvi や pdvips 等として入っているように、 日本語化パッチの当たった latex2html も jlatex2html のように 別名で入れてもらった方がいいように思います。 もちろん、本体の latex2html に日本語化作業をマージしてもらうのが 一番なんですが、まだ色々問題が解決してませんのでそれはまた先の話です。
(cf. 「注意、その他 (11/03 2004)」)
「注意、その他 (10/13 2004)」 で報告した、 非日本語圏のユーザが日本語化パッチの当たった latex2html を 使っている件ですが、 どうやら Fedora Core 2 Linux のようです。 latex2html-ML に以下のようなメールが流れました。
「注意、その他 (01/08 2004)」 で報告した、 最新版の latex2html-2002-2-1.tar.gz ですが、 久しぶりにまた新しいものがでました (ファイル名はそのまま)。
LaTeX2HTML の日本語マニュアルを公開されておられる Yasufumi Haga さんのページの URL が変わったようですので、 リンク等を張り直しました。 以下をご覧下さい。
最近少し妙なことに気がつきました。 明らかに日本語 LaTeX ユーザ以外の方で、 日本語パッチが当たった状態の latex2html を使っている例が 見受けられます。 これは間違った使われ方で、 「この文書について」、日付などが日本語化されてしまいます。 例えば以下の物などがそれです。
これらは、
なんらかの Linux ディストリビューション (日本用でないもの) に、 latex2html を簡単にインストールできるパッケージが 日本語化パッチが当たってかつ有効な状態で出てしまっている、 あるいはそのディストリビューションに最初から入ってしまっているといったことが起きてしまっているのではないかと思われます。 もちろん、たまたま多くの人が目にする情報として 取り上げられてしまった、という可能性もあるとは思いますが、 それよりは上にあげたような可能性の方が高いのでは、と思っています。
これは非日本語圏のユーザに取っても、latex2html 自身に取っても 不幸なことだと思います。 もし、事情をご存知の方がおられたら連絡して下さい。 対処が取れるようなら取りたいと思っています。
なお、このバージョンの日本語パッチは、 現在 FreeBSD の ports package に採用されていますので、 FreeBSD ユーザである可能性はあります。 しかし、FreeBSD では日本語化パッチの方は "japanese/" に分類されていて、 オリジナルの latex2html-2002-2-1 もちゃんと "textproc/" に登録されていますので、 なんとなく FreeBSD の package ではないような気がしています (確認はしていません)。
(cf. 「注意、その他 (11/02 2004)」)
「注意、その他 (09/28 2004)」 に書いたスタイルシートのファイル名の問題ですが、
-style [ディレクトリ]/[ファイル].css
でちゃんと
<LINK REL="STYLESHEET" HREF="[ディレクトリ]/[ファイル].css">
なるものがヘッダに付くようになるようです。
うまく働いていない、というのは勘違いでした。どうもすみません。
もちろん、この指定には http: で始まる URL を書くこともできます。
「注意、その他 (09/28 2004)」 で紹介した styles/more_amsmath.perl に対するパッチですが、 少し改良しました。 ただ、多分前のものでも問題はないと思います。 これから当てる場合はこちらの方が良いかも知れません。
次期バージョンの日本語化パッチにはこのパッチも入れたいと思いますが、 単に 1 行の修正だけですので手で修正してもらっても結構です。(cf. 「注意、その他 (11/05 2004)」)
またインターネット上で LaTeX2HTML に関する問題を見つけました (cf. http://akita-nct.jp/~yamamoto/comp/latex/latex2html/latex2html.html)。
前者は、-style オプションで対処できるような気もしますが、 うまく働いてないようなので少し調べてみます。
後者ですが、どうも amsmath パッケージを取り込んだ場合の equation 環境で起こるようです。 少し調べてみたのですが、なんとなくバグのような気がします。 多分以下のパッチ (styles/more_amsmath.perl) で対処できると思いますので 何でしたらご利用下さい。
次期バージョンの日本語化パッチにはこのパッチも入れたいと思いますが、 手で修正してもらっても結構です。 一応本家にも報告しておきたいと思います。(cf. 「注意、その他 (11/05 2004)」, 「注意、その他 (10/01 2004; no.2)」, 「注意、その他 (10/01 2004)」)
「注意、その他 (09/23 2004)」 に書いた日本語コードの問題ですが、 jp1.X では nkf によるコード変換を行なっているので、 日本語化パッチを更新して (jp1.8)、
(cf. 「注意、その他 (11/05 2004)」)
「注意、その他 (09/21 2004)」 に書いた「数式内の日本語が文字化けする」という件ですが、 原因としては
2 つ目のものですが、通常 Unix では EUC-JP 環境が多いと思いますが、 pLaTeX が Shift_JIS 環境である場合に latex2html (jp2.0) を EUC-JP のままインストールしたり、 pLaTeX が EUC-JP 環境である場合に latex2html (jp2.0) を Shift_JIS にしてインストールしたりすると 起きるような気がしますが、確認は取っていません。
また、3 つ目のものですが、これは少しテストしてみましたが、 問題が起こるときは数式内の日本語だけでなく本文から化けるようで、 「数式内の日本語の文字化け」という問題に関しては 最初の 2 つの方が可能性としては高いように思います。
なお、そのテストで気がつきましたが (うちは EUC-JP の pLaTeX 環境)、
JIS の LaTeX ファイルを使用している場合は、 latex2html ではうまく処理されないようですので EUC-JP (Shift_JIS 環境では Shift_JIS) に直してから latex2html にかけて下さい。
(cf. 「注意、その他 (09/25 2004)」)
少しインターネットで LaTeX2HTML について検索してみたのですが、 最近は新しい版 (2000 以降) の LaTeX2HTML の利用が 広まってきているようで、少し安心しました。 有益な情報を持つ WWW ページもありましたので、 またリンクを追加しておきたいと思います。 ただ、まだ不具合が起こる、こういうことがしたいんだけどうまくいかない、 といった話題も見られます。 それらもできれば QandA などに取り上げていきたいと思います。 今回気がついたのは、
数式内の日本語が文字化けする、というのは どういう状況かを確認できませんので正確なコメントはできませんが、 多分そう難しい話ではないと思います。 そういう現象が発生する、という方はこちらにご連絡下さい。
「数式を単に画像にしたい」というのは、 CGI で利用して掲示版に数式を書けるようにするとか、 手軽に WWW ページに数式を書くとか、 そういった話のようです。 確かに LaTeX2HTML を経由すればそれで数式を画像化できますが、 数式を画像化するだけなら、 LaTeX2HTML の手法を真似てなんらかのスクリプトを書けば良いでしょう。 少し以下で説明します。 なお、LaTeX2HTML は内部で pstoimg というスクリプトを使用していますが、 これを利用する、というのはあまりお薦めではありません (オプションが多いし、出来上がる画像は LaTeX2HTML 用に少し手が入っている)。
LaTeX2HTML は images.tex という LaTeX ファイルに 一ページ一つの数式を書き出し、 それを dvips, netpbm を経由して画像化していますが、 基本的に以下のような手順を取ればいいわけです。
pstopnm -xsize=[横幅× 2 位] -stdout file.001 | pnmcrop | pnmmargin 5
| ppmtogif > file1.gif
とすれば数式の GIF 画像ができる
上の手順の中の BoundingBox から横幅の 2 倍を計算するのは、Unix なら
grep %%BoundingBox file.001 | awk '{printf "%d\n",($4-$2)*2}'
のようにしてできますから、
これを `` でシェル変数にでもしてしまえばいいわけです。
(cf. 「注意、その他 (09/23 2004)」)
数式のラベルに関して多少わかったことがありますので、 まとめて報告します (Thanks Koji Harada さん)。
下 (03/04 2003) で紹介した \label コマンドの位置の問題に関する問題は、 正確にはそこで述べたように「\label だけの行を作るから」ではなく、 「\label だけの行を作って、かつその先頭にスペースが入った場合」 であることがわかりました。 実際に行頭からスペースを入れずに \label が始まる行を書くと 問題は出ないようです。
このことからわかりましたが、以下のパッチを latex2html.pin に当てると その問題は解消されるようです。
次期バージョンの日本語化パッチにはこのパッチも入れたいと思いますが、 単に 1 行の修正だけですので手で修正してもらっても結構です。latex2html-ML でも過去に報告されていますが (cf. [l2h] Equation numbering bug in LaTeX2HTML)、 数式を \fbox{} で囲んだ場合、式番号がそこで変になってしまいます。 これは、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 表示の数式番号は
x2+y2=z2 (1)のようになり、かつ最後の ref の部分は
x3+y3=z3 (1)
x4+y4=z4 (2)
x5+y5=z5 (2)
(4)(3)(2)(1)のように表示されてしまいます。
このような場合、\refstepcounter や \addcounter などを使って 無理矢理 equation カウンタを手動で操作する (かつ \fbox{} 内の数式へのリンクは、 画像化された \fbox{} 部分の先頭辺りに貼る) という手もありますが、 html パッケージの \htmlborder コマンドを使って、 \fbox の代わりに minipage 環境部分に (HTML の table タグの border を利用して) 外枠を書く、 という手があります。 こうすれば \fbox{} 部分がまるごと画像化されることはなくなり、 数式番号やリンクも正常になります。上の例でいえば、
\usepackage{html}
を追加して、\fbox{} 部分を以下のように書き直します。
\latexhtml{% \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{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} のようにします。
下 (11/16 2003) で紹介した、 JPEG 画像の場合の背景色の調整ですが、 普通の GIF/PNG 等への変換の場合にも必要なことがあるようです。
例えば Tgif で作成した EPS 画像の中に「白での塗りつぶし」 などで線を消した場合、 その部分を含んだ背景の透明化に失敗してしまうようです (サンプル)。
ちゃんとした対処法については少し調べてみたいと思いますが、
とりあえずは下 (11/16 2003) で紹介した、
$LATEX_COLOR
の指定によって解消できます
(サンプル)。
latex2html-ML で流れたいくつかの情報について書いておきます。
latex2html は epic,eepic には対応していないようです。 よって、epic,eepic 等で書いた図を latex2html で使用する場合、
私も今回初めて知りましたが、latex2html は、 地の文の数式 ('$' で囲んだもの) を画像にする際、 地の文と baseline が合うように、下に少し空白を付加した画像を作り それを、<img align"middle"> を使って張りつけることも あるし、空白を取って <img align"bottom"> で 張りつけることもあるようです (align="middle" は画像の中央とテキストの baseline が合うようになる)。
ところがその align="middle" は Mozilla (1.5) は bug があってうまく baseline が合うようには表示されないようです。 Netscape 4.8 では正しく表示される、との報告がありました。
「注意、その他 (01/21 2004)」 で報告した、いくつかの問題について少し報告します。
奥村@松阪大学 さん (注: 2004 年 4 月から三重大へ移られたようです) の pLaTeX2e 新ドキュメントクラスのページ の FAQ の所に取り上げて頂きました。 うまくいくと奥村さんの方で対処して頂けるかもしれません (cf. TeX QandA 25091, TeX QandA 25100)。
原因はわかりましたが、それを仕様とするためにそうしたのか、 それとも単なるバグなのか、 詳細な修正情報やマニュアルの更新がなされていないために よくは分からないのですが、 latex2html 98.1 から、
-images_only は、images.tex から画像を生成する際、 前回生成されたデータベースを利用して 画像ファイルを作成しようとするのですが、 そのデータベースが TMP ディレクトリに作られます。 そして、その TMP ディレクトリは -debug オプションをつけないと 残らない (実行後消される) ので、 次回の latex2html ではデータベースを参照できず画像が生成できない、 ということになっているようです。
ならば、
latex2html -debug file.texとすれば 2 回目の latex2html では画像だけが作られるか、 というと実はそれもだめで、それは、 せっかく保存されている TMP ディレクトリの中身が、 latex2html の 790 行目付近にある
(file/images.tex を編集) latex2html -debug -images_only file.tex
&cleanup(1);という行のために全部消されてしまうためです (TMP 内を全部消すのは 98.1 からの仕様)。 これを回避するには、この行を
&cleanup(0);とすればいいようなのですが、 なぜこのような (マニュアルに反する) 仕様になっているか、 は理解に苦しみます。 もしかしたらバグではないかとも思いますので l2h-ML に報告してみようと思います。
いくつかの問題などをまとめて報告します。
奥村@松阪大学 さん (注: 2004 年 4 月から三重大へ移られたようです) が作っておられる jsclasses ( pLaTeX2e 新ドキュメントクラスのページ 参照) を使っている場合に、 includegraphics で取り込んだ EPS 画像が切れる、 という情報を頂きました (Thanks 市橋卓司さん)。 この問題は、
\documentclass[12pt]{jsarticle}などのように、10pt でないサイズを指定して jsarticle クラスを使用している場合に起こりますが、 これは jsclasses のページ の 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}とした場合もこの問題が引っかかり、奥村さんのページでは、 LaTeX レベルでは、
\includegraphics[scale=0.83333]{file.eps}とせよ (12pt の場合) とあるのですが、 この場合は latex2html では上記のような回避策が取れません。 とりあえずは、常に width を指定する以外無いようです。
本来、日本語化パッチの jsarticle.perl でもう少し真っ当な対策を 取るべきですが、jsarticle の仕様からいって、 ちょっとどうしたらいいか悩んでいます。 もちろん、jsarticle を使わずに jarticle を使う、 という回避策もあります (むしろこちらの方が真っ当な回避策かも)。
LaTeX で使われる長さの単位は cm,mm,in,pt,pc,em,ex などがあります。 「The TeXbook」には、他に dd,cc,sp,bp も書かれています。 これらの単位で書かれた数字を latex2html も、 いくつかの部分で読み込んで使用しています。 そして、日本語 pTeX では zw,zh も新たに追加されているのですが、 今まで latex2html の日本語化パッチでは zw,zh のサポートを していませんでした (うかつでした <(_ _)>)。
日本語化パッチの次期バージョンでは対応したいと思いますが、 それまでは、何か問題があるようでしたら zw,zh は 使用しないようにするといいかもしれません。
latex2html もオプションの "-images_only" は、 本来 latex2html で生成する画像ファイルのみを生成するための オプションなのですが、 どうも現在は、画像ファイルの生成が行われないようです。
l2h-ML にも既に報告された問題のようですが (cf. [l2h] two problems in latex2html Version 2002-2-1 (1.70))、 最新版でも対処はなされていないようです。
マニュアルにも、images.tex を手で修正して、"-images_only" で画像のみ再生成する、といった記述がありますから、 以前の版ではできたのかも知れませんが、 少なくとも 99.1 以降はできないようです (97.1 ではできました)。 この問題も調査したいと思います。
EPS を取り込むために
\usepackage{graphicx}などを使っている LaTeX ファイルを latex2html にかけると、最後に
*********** WARNINGS ***********と出る、という報告がありました (Thanks 市橋卓司さん)。 確かにそうですし、graphicx.perl も用意されているのですが、 実際には現在のバージョンの latex2html では、 graphixx.perl と graphics-support.perl が読み込まれていて、 この警告文が出るのは正常動作です。
No implementation found for style `graphicx'
ただ、それはそれであまり良くないような気もしますので、 少し調べてみたいと思います。
上記の graphics-support.perl を見ると分かりますが、 latex2html は \includegraphics による画像ファイルの形式は EPS 以外にも以下の画像形式をサポートしています。
GIF,JPEG,PNG,TIFF,PICT,PCX,BMP,SGI,XBM,XWDGIF,PNG の場合は、そのファイルをそのまま利用して HTML に貼りつけるようですが、 他の画像形式の場合は JPEG に変換されてから貼りつけられるようです。
指定の仕方等は通常の EPS の場合と同じですが、 拡張子で画像形式を判断しますので、拡張子まで正しく指定して下さい。 なお、上記の形式それぞれでサポートされているの拡張子名は 以下の通りです。
.gif, .jpg (または .jpeg), .png, .tiff, .pict, .pcx, .bmp, .sgi, .xbm, .xwd
(cf. 「注意、その他 (01/23 2004)」, 「注意、その他 (12/14 2004; no.3)」, 「注意、その他 (08/23 2016)」)
「注意、その他 (01/04 2004)」 で報告した、 最新版の latex2html-2002-2-1.tar.gz ですが、 また新しいものがでました (ファイル名はそのまま)。 ファイルサイズは以下の通りです。
(cf. 「注意、その他 (10/26 2004)」)
「注意、その他 (01/01 2004)」 で報告した、 最新版の latex2html-2002-2-1.tar.gz ですが、 また新しいものがでました (ファイル名はそのまま)。 ファイルサイズは以下の通りです。
(cf. 「注意、その他 (01/08 2004)」)
「注意、その他 (10/16 2003)」 で報告した、 最新版の latex2html-2002-2-1.tar.gz ですが、 また新しいものがでました (ファイル名はそのまま)。 ファイルサイズは以下の通りです。
l2h-ML で最近報告された bug [l2h] Translation bug report への対処 (cf. [l2h] Re: Translation bug report) はなされませんでしたので、 多分また近々更新される可能性があります。
しかし、まだ "2002" という名前なんですかね (^^;
(cf. 「注意、その他 (01/04 2004)」)
Yasufumi Haga さんから、 「latex2html に関する Q and A」 の Q6 に関して、 28 文字以上の名前を付けられない、 ということに関する情報を頂きました (Thanks Yasufumi Haga さん) ので、 Q6 に追加しておきました。
下 (12/08 2003) で オリジナルアイコンのサンプルを紹介しましたが、 もう 2 つ程 pixmap で作ったものを紹介します。
latex2html のナビゲーションパネルのアイコンですが、 通常は latex2html に付属の "Next" や "Previous" 等と書かれたものが使われますが、 これを自分で作ったアイコンに置き換える方法を紹介します。 latex2html のマニュアルにも書かれていますので (5.4 節)、 そちらも参考にするといいでしょう。
なお、マニュアルの 3.4.1 節には、 かなりけったいなアイコンのサンプルが示されています。
まず、アイコン画像ファイルを用意します。 必要なのは以下のアイコンですが、 contents 以下は、それらを使わなければ不要です。
"_g" のついているものは、 かすれた文字で表示される (アクティブでなくリンクがつかない) 方のアイコンです。
これらを適当なディレクトリに保存し、足りない物は標準の物を借ります。 例えば、~/icons に保存して、latex2html のアイコンが /usr/local/share/lib/latex2html/icons/ にインストールされている場合、
cp *.gif ~/icons
cd ~/icons
cp /usr/local/share/lib/latex2html/icons/*ball.gif .
cp /usr/local/share/lib/latex2html/icons/footnote.gif .
cp /usr/local/share/lib/latex2html/icons/crossref.gif .
cp /usr/local/share/lib/latex2html/icons/ch_beg*.gif .
cp /usr/local/share/lib/latex2html/icons/ch_end*.gif .
のようにします。もちろん、足りない物は、コピーでなく symbolic link
を貼っても構いません。
~/.latex2html-init に以下のようなものを書きます。
$LOCAL_ICONS = 1;
$ALTERNATIVE_ICONS = "/usr/home/hoge/icons"
%iconsizes = (
'up' ,'WIDTH="26" HEIGHT="24"',
'next','WIDTH="37" HEIGHT="24"',
'previous','WIDTH="63"
HEIGHT="24"',
'next_group' ,'WIDTH="81"
HEIGHT="24"',
'next_inactive' ,'WIDTH="81"
HEIGHT="24"',
'previous_group','WIDTH="107"
HEIGHT="24"',
'change_begin','WIDTH="104"
HEIGHT="24"',
'change_begin_right','WIDTH="104"
HEIGHT="24" ALIGN="RIGHT"',
'change_end','WIDTH="104"
HEIGHT="24"',
'change_end_right','WIDTH="104"
HEIGHT="24" ALIGN="RIGHT"',
'change_delete','WIDTH="109"
HEIGHT="24"',
'change_delete_right','WIDTH="109"
HEIGHT="24" ALIGN="RIGHT"',
'contents','WIDTH="65"
HEIGHT="24"',
'index','WIDTH="43" HEIGHT="24"',
'image','WIDTH="48" HEIGHT="24"'
);
"$ALTERNATIVE_ICONS" には、アイコンファイルのある
ディレクトリの絶対パスを指定します。
"WIDTH","HEIGHT" にはそれぞれの画像サイズを 設定します。面倒なら設定せずに '' (空文字列) としてもいいかもしれません。 大体どの項目がどのアイコンファイルに対応するか見当がつくと思いますが、 "_g" は "_inactive" に対応します。
オリジナルの画像を使う場合はそこは変更しなくて結構です。 なお、上にあげたのはオリジナルの画像サイズです (lib/l2hconf.pm に書かれている)。
また、"$LOCAL_ICONS = 1;" は多分この場合必須でしょう。
サンプルを 2 つ程紹介します。
けど、多分 Apache などに付属するアイコン (up,forward,back などがある) を使う、っていうのが一番シンプルな解かなとも思います。
下 (11/14 2003) にあげた JPEG パッチに対するサンプル (そのサンプルへのリンク) ですが、make test したものをそのままコピーして置いていたので、 icon ファイルがテスト時のみ存在するパスを指していて 参照できていませんでした。 現在は修正しておきましたので JPEG icon が参照できます。
下 (11/22 2003) に書いた RedHat Linux 9 に関する話ですが、 再び奥村さんの掲示板で seiji さんに nkf の正しいパスを 教えてもらいました ( 23732 の記事) (Thanks seiji さん) ので、 その部分を書き直しました。
いくつかまとめて報告します。
"slides:syntonly:sz:tabls:times:twoside:umlaut:umlaute" .
の "umlaute" の後ろに ':' を入れて
"slides:syntonly:sz:tabls:times:twoside:umlaut:umlaute:" .
とする必要があります。
日本語化パッチの方も後で修正します (多分日本語化パッチ部分を削除)。
WWW 上で latex2html マニュアルの日本語訳 (HTML) を公開しておられた Yasufumi Haga さんが、日本語訳の LaTeX ソースを公開されました。 以下をご覧下さい。
下 (11/14 2003) で紹介した JPEG パッチですが、 GIF/PNG と違って JPEG には透過 (transparent) 画像を作る機能が無いので、 その部分は実装していません。 よって、例えば ~/.latex2html-init 等で
$BODYTEXT = "bgcolor=\#e0ffff";
のようにして背景色を定義している場合は、
作成された JPEG 画像のデフォルトの背景色 (灰色)
と合わなくなってしまいます
(サンプル 参照)。
その場合は、画像のデフォルトの背景色 (l2hconf.pm の $LATEX_COLOR の設定値) も合わせて変更してやれば OK です。 例えば上の設定の場合は、~/.latex2html-init の設定を
$BODYTEXT = "bgcolor=\#e0ffff";
$LATEX_COLOR = "\\pagecolor[rgb]{0.875,1,1}";
のようにすればいいでしょう
(サンプル 参照)。
\pagecolor は color パッケージの命令で、0.875 = 224/256
(16 進 e0 = 10 進 224) です。
\pagecolor の設定法については color パッケージに関する説明
(例えば「LaTeX グラフィックスコンパニオン」など)
を参照して下さい。
GIF/PNG の画像にする場合は、デフォルトで透過画像にされますので $LATEX_COLOR の設定は必要ありません。
(cf. 「注意、その他 (06/08 2004)」)
下 (11/13 2003) に書いた、 JPEG 用パッチを公開します。
l2h-2K2-2-1-jpg.patch.gz (2937 Byte; 展開後 8176 Byte) (11/14 2003 更新)このパッチ自体はオリジナルの latex2html (latex2html-2002-2-1) への パッチですが、 これを当てた後で日本語化パッチ (l2h-2002-2-1+jp2.0.patch) を適用することもできます。
作業手順や注意について述べます。
gunzip -c latex2html-2002-2-1.tar.gz | tar xvf - cd latex2html-2002-2-1 cd icons foreach i ( *.gif ) giftopnm $i | pnmtojpeg > `basename $i .gif`.jpg end cd .. gunzip -c ../l2h-2K2-2-1-jpg.patch.gz | patch -p1 gunzip -c ../l2h-2002-2-1+jp2.0.patch.gz | patch -p1 cp prefs.pm prefs.pm.org sed "s/' -Ppdf'/' -E'/" prefs.pm.org > prefs.pm ./configure --prefix=$prefix make make check make install cd ..テストは、そのディレクトリで
make 'ARGS = -image_type jpg' test
とすればできます (tests/l2htest/ 以下が作成される)。
(そのサンプルへのリンク)
(cf. 「注意、その他 (12/08 2003)」, 「注意、その他 (11/27 2003)」, 「注意、その他 (11/16 2003)」)
オリジナルの latex2html は、画像形式は GIF か PNG しか選べませんが、 その選択肢に JPEG も選べるようなパッチを作ってみました。 これは、PNG はサポートしてないブラウザがある、 GIF はライセンスの問題でいや、という人にはいいかもしれません。
ただ、この場合、オリジナルの latex2html に付属する ナビゲーションアイコンも JPEG 画像の物が必要になるので、 インストール時に GIF アイコン等から JPEG アイコンも生成してもらうか、 または本家の latex2html に JPEG アイコンもつけてもらう (& そのパッチを採用してもらう) のいずれかとなると思います。 前者ならば、単なるパッチでは済まないので日本語化パッチに入れるよりも それとは独立なパッチにした方がいいのかなとも思いますし、 後者ならば、パッチは必要無くなりますし、 少しその辺を考えたいと思いますが、 そのうちに暫定的なパッチとしての公開を考えています。
(cf. 「注意、その他 (11/14 2003)」)
ひとつ上の WWW ページ (「TeX のページ」) で うちの大学の紀要のためのスタイルファイル (bniit.sty) を公開していますが、 そのスタイルファイルに対応した latex2html 用の perl スクリプト (bniit.perl) もサンプルとして公開しました。
LaTeX のファイル中に書いたマクロはいいのですが、 自分でスタイルファイルを書いて \usepackage などで取り込んでいる場合、 それを latex2html にかけるときは、 そのスタイルファイルに含まれるマクロに対応した perl スクリプトを作らないとそのマクロは無視されてしまいます。 そういう perl スクリプトを書く場合のサンプルとしてご利用下さい。
なお、それを使って latex2html にかけた結果が以下にあります:
単独保存則方程式の周期解の数値解析 II実際に bniit.perl の処理部分は、最初のページの扉部分だけです。 紀要の原稿 (PS ファイル, PDF ファイル) で、タイトル、著者、英文タイトル、英文概略、keyword などを定義していますが、それが HTML にも出力されるようにしています (必ずしも同じ形式ではありませんが)。
また、これには latex2html 2002-2-1 (1.70) + ja patch 2.0 を使っていますが、LaTeX の原稿を latex2html にかける際に 多少変更を行いました。 参考までに書きますと、その変更箇所は以下の通りです。
\newcommand{\II}{\mbox{I\hspace{-0.1em}I}}
のように定義して I と I の間を狭くしていたが、
latex2html にかけるとむしろ間が空いてしまうので、
\usepackage{html} を使って
\newcommand{\II}{\latexhtml{\mbox{I\hspace{-0.1em}I}}{II}}
のように latex2html では無効化した。
Red Hat Linux 9 に入っている latex2html は、 日本語化パッチが当ててある (2002 ja patch-1.4) ようだけれども、 結果が文字化けする、という報告が 奥村さん のところの TeX Q&A の掲示板の記事 23278 (Red Hat Linux 9 の latex2html は日本語化ずみ ?) で報告されました。 多分、英語環境にも合わせて、日本語化が有効になってない状態で 入っているのだと思います。 結局元の質問者は、最新版をインストールしたようです。 (cf. 23292, 23294)
ということで、QandA の 「Q.2. Linux の rpm や FreeBSD の package (や ports) はないですか」 も更新しておきます。
(cf. 「注意、その他 (11/22 2003)」)
「注意、その他 (05/23 2003)」 で報告した、 最新版の latex2html-2002-2-1.tar.gz ですが、 また新しいものがでました (ファイル名はそのまま)。 ファイルサイズは以下の通りです。
ところで、こうやって名前を変えずに新しい配付物を更新し続けている ことについてですが、マニュアルを良く読むとそれに関する記載が多少 あります。section 2.3 の本文の Yasufumi Haga さんの訳を少し引用します:
最後になりますが、LATEX2HTMLの開発者が使う、CVS リポジトリ (http://www.latex2html.org/user/) があります。 ここにあるファイルは、その時点で開発中の最新版です。 ですから、そのすべてが信頼できるわけではありません。 新しい機能は、まだ開発中かもしれませんし、 リリース用に充分なテストもまだされていないかもしれません。 日々更新される、圧縮された開発版のアーカイブを、 http://www.latex2html.org/current/ からダウンロードすることもできます。つまり「日々更新される」ものを、CVS リポジトリのまま公開するのではなく、 tar.gz (圧縮+アーカイブ) の形で置く、と言っていて、 その意味ではそこに書かれている通りのことをやっていることになります。 しかし、tar.gz の形でアーカイブされたものは、 そのままの形で利用や再配付されることが多く、 よってその名前を変えないことが迷惑を与える可能性があることは確か (cf. 「注意、その他 (09/28 2002)」) なので、 やはり更新毎にファイル名を変えるべきだろうと思います。
(cf. 「注意、その他 (01/01 2004)」)
Debian GNU/Linux に含まれていた latex2html のパッケージが、 ライセンスの問題で削除される、という話が現在 latex2html-ML で出ています。詳しくは "latex2html-ML (October 2003) Archive" を参照して下さい。 Debian だけでなく、他の Linux パッケージにも及ぶ、 という意見が出ています。
ただし、見たところ Debian に含まれる Package はいずれも多少古いものの ようです (2000-Beta ?) ので、 新しいものを手動でインストールする方がいいと思います。
(cf. 「注意、その他 (10/16 2003)」)
オリジナルの latex2html の置場所にある最新版の latex2html-2002-2-1.tar.gz が、またファイル名が変わらないまま 更新されました。これで都合 3 種類の latex2html-2002-2-1.tar.gz が存在することになります。
とりあえず日本語パッチには影響はないと思います。
(cf. 「注意、その他 (10/16 2003)」)
「注意 (03/27 2003)」 に書いた FreeBSD のパッケージの件ですが、 その ports を担当しておられる SUGIMOTO Sadahiro さんから、 新しい latex2html の日本語パッチ (jp2.0) を採用した FreeBSD の最新版 (4.8-RELEASE) がリリースされたとの報告がありました (Thanks SUGIMOTO Sadahiro (ixtl@utmc.or.jp) さん)。
「注意 (03/18 2003)」 と 「latex2html に関する QandA」Q.5. にもかきましたが、 現在 Yasufumi Haga さんの 「インストールと設定の備忘録」 のページに latex2html 付属のマニュアル全体の日本語訳がほぼ載っているようです。 困ったときには、今後はこちらも参考にするといいと思います。
「注意 (02/02 2003; no.2)」 と 「latex2html に関する Q and A」Q.2. に書いた FreeBSD のパッケージの件ですが、 どうやら新しい物 (jp2.0) が採用されたようです。 詳しくは FreeBSD ports (japanese): ja-latex2html-2002.2.1j2.0 をご覧下さい (Thanks SUGIMOTO Sadahiro (ixtl@utmc.or.jp) さん)。
(cf. 「注意、その他 (04/05 2003)」)
jp1.X 系列の日本語化パッチを latex2html-2002-2-1 用にしたもの jp1.7 を公開します。 変更点の詳細に関しては、 「更新履歴」、 または 付属のドキュメント を参照してください。大まかに言えば jp1.7 は、 jp1.6 に、jp2.0 で対応された不具合への対応 (CJK package への対応を除く) を行って、latex2html-2002-2-1 用に書き直したもの、といった感じです。
なお、「注意 (01/26 2003)」 でも書いたように、現在日本語化パッチは jp1.X と jp2.X の 2 系統になっていて
「latex2html に関する QandA」Q.5. にもかきましたが、 現在 「インストールと設定の備忘録」 の WWW ページの作者の方が、 latex2html のマニュアルの日本語訳を進めておられるようです。 section 3 (環境と特別な機能/Environment and Special Features) と section 4 (ハイパーテキスト拡張機能/Hypertext Extensions to LaTeX) の訳が公開されています。 ここには、他にもコマンドラインオプションの説明などの 色々な情報が含まれているのでとても参考になると思います。
オリジナルの latex2html の置場所の最新版の latex2html-2002-2-1.tar.gz の日付とサイズが更新されたので、 また同じ名前で中身が更新されてしまったかと思ったのですが、 中身は、ファイルの日付以外は何も変更されていないようです。
ただ、tar.gz のファイルサイズは更新されているので、checksum エラーなどを起こす可能性はありますので、 また package などで不具合が報告されるかも知れません。 なお、新しいもののファイルサイズは 1122001 Byte です。
(cf. 「注意、その他 (05/23 2003)」)
label コマンドの位置によっては不具合が出ることがわかりました。 例えば、以下のソースでは latex では同じ大きさの数式ができます:
\begin{equation} \label{test1} \int_0^1\sin x dx \end{equation} \begin{equation} \int_0^2\sin x dx \label{test2} \end{equation}しかし、latex2html では最初の方の式のインテグラルが 小さくなってしまいます。 しかも、このソースに
\documentclass[fleqn]{article}
のように fleqn オプションがついていると、
latex2html では 2 つ目の数式のイメージ化に失敗します
(1 つ目の数式も変なようですが)。
これは、画像の作成時に "\label{test1}" の行が 空行に置き換えられてしまって、 それを latex にかけることが原因のようです。
回避策は、label の位置を変えて、
\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 のみの行を作らないようにすればいいようです。
ただ、なんとなくこういう事例は多いような気がするので、 今まで本当に問題が起こっていなかったのだろうか、 と少し気になります。
(cf. 「注意、その他 (06/16 2004)」)
「latex2html に関する Q and A」Q.2. に書いた FreeBSD のパッケージの件ですが、 日本語版 latex2html のパッケージのメンテナの SUGIMOTO Sadahiro (ixtl@utmc.or.jp) さんから、 現在新しい物に更新作業中であるとの連絡を頂きました。 どうもありがとうございました。 実際に更新されたら、またここで報告したいと思います。
(cf. 「注意、その他 (03/27 2003)」)
LaTeX2HTML のページにある 「この WWW ページ等からの検索」 ですが、そこにはそれ以外も対象に書いてあるのに、 実際にはこのページと古い WWW ページしか検索対象に なっていなかったようでしたので修正しておきました。
新しい日本語化パッチ (jp2.0) ですが、ドキュメントには書きませんでしたが、 このパッチ自身は EUC-JP のファイルになっています。 よって、Shift_JIS 環境で使われる場合、 パッチファイル自身を Shift_JIS にして当てるか、 パッチ当て後に作られるファイルの内、
styles/ascmac.perl, styles/japanese.perlを Shift_JIS にコード変換して使ってください。
latex2html 2002-2-1 用の日本語化パッチ jp2.0 を公開します。 変更点の詳細に関しては、 「更新履歴」、 または 付属のドキュメント を参照してください。ここでは概要を述べます。
今後は、jp2.X のパッチは nkf を使わない形にして、
必要ならば、nkf を使用して 7bit JIS の HTML を生成するパッチ (jp1.X)
も更新していきたいと思います。
最終的には本家にマージされることを目指していこうと思います。
# まだ一つ大きな問題が解決していないのですが...
(cf. 「注意、その他 (03/23 2003)」)
latex2html は数式等を画像ファイルにする時に、 元々の数式を ALT 属性として使います。 ただし、長い数式の場合は
ALT = "数式の頭の部分 ... 数式の最後の部分"のように一部を切り出して使用します。 しかし、その数式に日本語が含まれていると、 日本語の 2 byte 文字の 1 byte 目と 2 byte 目を切り離してしまって その部分が文字化けしてしまう可能性があります。
今の所、適当にスペースを入れて防ぐしかないように思いますが、 しかし 2 つ続くスペースは意味がないので、 なかなかうまく防げないこともあるようです。 もし何か良さそうな解決法をご存知でしたら御連絡ください。
\documentclass{jarticle}
などのオプションとして、
a4paper ではなく a4j を使うと warning が出ますが、
多分実害は無いと思います。
styles/jarticle.perl などに a4j 等の対応を入れてないためなのですが、
次のパッチからは入れたいと思います。
(cf. 「注意、その他 (01/26 2003)」)
うちの研究室の学生の山岡薫さんとの共同作業で、 CJK package を使った日本語の latex ファイルに対して この日本語化パッチを当てた latex2html をかけると 問題が起こることがわかりました。 現在の日本語化パッチは CJK package には対応していません。 よって、CJK package を使う場合はオリジナルの英語版の latex2html を ご利用ください。
詳しく言いますと、
現在その不具合にも対応させることを検討していますが、
(cf. 「注意、その他 (01/26 2003)」)
09/28 2002 にリリースされた
latex2html-2002-2-1 ですが、
うちの環境にインストールしてみて初めて気がつきましたが (^^;
そこで version/{html2_2.pl,table.pl} に対して行われている変更が
Perl の新しい版のキーワードを使っているのか、うちの環境
(jperl5.005_02-981225) では make check で文句が出ました。
そのような物が出る場合は、以下のパッチをお試し下さい。
l2h-2K2-2-1-undefined.patch (1822 Byte) (11/23 2002 更新)
(cf. 「注意、その他 (01/26 2003)」)
08/23 2002 にリリースされた latex2html の 変更点に関する記述に関してメールでご指摘を頂きました (Thanks 鈴見咲君高さん)。
HTML 4.1 への対応 (versions/{html4_1.pl,html4_01.pl} の追加)と書いたのは間違いで、正しくは
HTML 4.01 への対応 (versions/{html4_1.pl,html4_01.pl} の追加)のようです。失礼致しました。
この versions/html4_1.pl というファイルは、実際は versions/html4_01.pl と同じファイルで、 latex2html のオプション -html_version では
-html_version 4.01
という指定が仕様上できないのでそれで用意されているもののようです。
よって HTML 4.01 のためには
-html_version 4.1
と指定して使うようです。
また、鈴見咲君高さんからは、他にも以下のような情報を教えて頂きました。
画像ファイル等を includegraphics を使って読み込んでいる場合、
\includegraphics{./file.eps}
\includegraphics{./subdir/file.eps}
のようにカレントディレクトリからの相対パスを "./"
を入れて指定すると、latex2html が内部で呼び出す dvips によって
画像を生成するところで失敗します。
それは、latex2html が作業ディレクトリ内 (カレントディレクトリの、 対象ファイルと同名のディレクトリ) で作業をしているからです。 latex2html は作業の際に texexpand で
setenv TEXINPUTS ..
と同等のことをしているので、ファイルのパス指定を
\includegraphics{file.eps}
\includegraphics{subdir/file.eps}
のように "./" を取ってあげればうまくいきます。
また同名の新しい latex2html-2002-2 (ともう一つ) がリリースされました。
そして、今度は latex2html-2002-2-1 なるものもリリースされました。
なお、まだ確認はしていませんが、日本語化パッチはそのまま latex2html-2002-2-1 にも当たると思います。
「latex2html に関する Q and A」Q.3. に '~' に関する話を取り上げたのですが、URL 用に '~' を使う場合、 細かく考えると実は結構面倒なことがわかりました。
latex2html に付属する html.sty には \htmladdtonormallink などの マクロが用意されていて、LaTeX の本文に URL などを書くための 環境が多少用意されています。 その URL で単に '~' と書いたり '\~{}' とすると、確かに 「latex2html に関する Q and A」Q.3. に書いたように、 HTML でも link 先でも DVI でも '~' に展開される、とはいかず、 \textasciitilde を使えばいずれの環境でも '~' に展開されます。
しかし、URL 文字列は普通に書くと LaTeX では行分割が行われない文字列で、 長い URL を LaTeX の本文に書くと DVI では横幅を越えてしまうことが しばしばあります。 そのため latex2html には url.sty というパッケージが付属していて、 そこにある \url{} というマクロを使うと、
しかし、実は \url{} 内の '~' には latex2html はちゃんとは対応しておらず、 link 先は良いのですが、HTML の表示では ' ' (空白) になってしまいます。 色々試したのですがどうもうまい逃げ道が見つからず、今の所
また同名の新しい latex2html-2002-2 がリリースされました。
こちらで新しいものを試してみたのですが、どうも画像ファイルに 下線が残るようになりました。 「latex2html に関する Q and A」Q.1. に書いたように 通常それは latex2html と netpbm のバージョンがうまく対応していない ときの典型的な症状なのですが、どうもそれ以外の問題もあるようです。
latex2html-2002-1 の latex2html.pin revision 1.67 より後の版で、 数式を一旦 LaTeX にかけてそれを dvips で Postscript ファイルに するときに '-Ppdf' というオプションを使っているようですが、 うちの環境ではそれを外したら下線が消えました。 もっとまともな対処法があるように思いますが、 とりあえず報告しておきます。
(cf. 「注意、その他 (08/05 2005)」)
latex2html-2002 用のパッチが当たらなくなり始めたので、 とりあえず latex2html-2002-2 (latex2html.pin rev.1.7) に当たる パッチを作り、多少修正もしました。修正点は
またこれに合わせて、latex2html-2002-2 (latex2html.pin rev.1.7) 本体も 「latex2html 本体」 に置きました。
また同名の新しい latex2html-2002-2 がリリースされ始めました (^^;
なお、現在の latex2html-2002-2 には日本語化パッチ当てに 失敗すると 下 (08/21 2002) に報告した件ですが、 とりあえずはそれを手で修正しても、多分そのままほうっておいても 欧文アクセント処理の問題以外はある程度は使えるようであるとの 報告を受けましたが (Thanks 山縣@ぶらっとホーム さん)、 日本語化パッチversion 1.4 で取り入れた 欧文アクセント処理 の機能は やはりどうもうまく働かないようで修正が必要なようです。 これに関してはしばらくお待ちください (ただし、 以前 報告したように、 必ずしも現在は必要ないのかもしれません)。
最後の版の latex2html-2002-1 (latex2html.pin rev.1.69) が latex2html-2002-2 となってリリースされました。 リリースアナウンスは
日本語化パッチ
は latex2html-2002-2 には
一箇所を除いて当たるようですが、その一箇所を見ると
やはり今回の charset に関する修正と日本語化パッチが
多少ぶつかっているように見えます。
よってそれを手で修正しても動作に不具合が起こる可能性があります。
時間が取れたら、大きな問題は先送りにして (^^;
とりあえず latex2html-2002-2 に対応するものを作成しようと思いますので
しばらくお待ちください。
(cf. 「注意、その他 (08/23 2002)」)
また最新の版の latex2html-2002-1
なお、今回の latex2html-2002-1 の改良は、 現在の 日本語化パッチ (l2h-2002+jp1.5.patch.gz) とぶつかっている可能性があります (特に accent 処理や graphicx に関する修正に関して) ので、 うまく動作しないかも知れません。 こちらでは動作の確認はしていません。 従来の latex2html-2002-1 revision 1.68 や、 latex2html-2002 ならば 一応動作すると思いますので、 安定して使いたい場合はそちらを使ってください。
また、毎回新しいリリースの変更点を多少上に書いたように紹介していますが、 実はよくわかっていません。 というのも、
(cf. 「注意、その他 (08/21 2002)」)
下 (07/10 2002) に書いた、latex2html-2002-1 のインストーラ (正確には configure 環境) と Netpbm 10.X の問題ですが、 また出た最新の版の latex2html-2002-1
(cf. 「注意、その他 (08/20 2002)」)
このページに Q and A と、いくつかのページからの検索を付けました (こればっかり)。
現在の latex2html-2002-1 のインストーラ (config/config.pl) は、 新しい version 10.X の Netpbm に対応していません。 latex2html-ML でその問題が報告されているため、 多分じきにそれに対応した latex2html の新しい物が出ると思います。 または、以下のパッチをお使いください。
config-netpbm.1.patch (749 Byte) (07/10 2002 更新)なお、Netpbm のバージョンは例えば
% pnmcrop -versionとすれば確認できます。
(cf. 「注意、その他 (07/20 2002)」)
また新たな latex2html-2002-1 が出ました (07/04 2002)。
各ページ上部のリンク先の文字列は section 名が使われますが、 この名前の文字数は、l2hconf.pm や ~/.latex2html-init で定義されている
$WORDS_IN_NAVIGATION_PANEL_TITLES (デフォルトでは 4)で決まりますが、これは単語数を数えているので 日本語のセクション名に対してはあまり意味がありません。 しかし以下のようなことに気がつきました。
この値はデフォルトでは 4 と定義されていますが、 セクション番号もカウントされるので、単語数は 3 で切られます。 例えば、数字と日本語の間を空けて
\section{0 の 0 乗ってなあに}
のようにしている場合は、見出し文字列が
1 0 の 0
とされてしまいます (1 はセクション番号)。
これを、セクション名全部を見出しになるように変更するには、
次のような方法があります。
\section{0~の~0~乗ってなあに}
とすると、これは単語数が 1 と数えられるので
全部が見出し文字列に使われることになります
('~' はちゃんとスペースに置き換わります)。
$WORDS_IN_NAVIGATION_PANEL_TITLES = 2; # section + one wordとしておいて、セクション名内のスペースは全部 '~' で置き換え、 見出しとして切り出したい部分のみ故意にスペースを入れて
\section{0~の~0~乗って なあに}
のようにすれば、見出しが
1 0 の 0 乗って
となることになります。
もちろん、いずれの場合も本文に書かれるセクション文字列には
影響がなく、故意に空けたスペースも本文ではちゃんと詰められます。
今見たらもう 2 種類増えてました (;_;)
ざっと調べてみましたところ、"latex2html-2002-1.tar.gz" なるアーカイブは現在少なくとも 3 種類あるようです。
まだ詳しくは調べていませんが、最初の物は、
なお、同じアーカイブ名で、多少手を入れたものを出して行くのは latex2html-2K.1beta の頃からのならわし (^^; のようなものですが、 できればやめて欲しいものだと思います (2002, 2002-1 と来たので、やや安心していたのですが)。
また、まだ 新しい latex2html-2002-1.tar.gz で 日本語化パッチがちゃんと使えるかどうかの動作確認はしていませんが、 latex2html.pin のコメント部分を除いてとりあえずパッチは当たるようですし、 ざっと見たところ今回の変更は日本語化パッチとはあまり関係はなさそうなので なんでしたらお試しください。
下 (05/12 2002)にも書きましたが、 ちゃんとした対応は少し大きな変更になりそうなので やや時間がかかりそうです。
詳しいことは後程報告致しますが、size が 1079552 Byte (latex2html.pin の revision 1.67 のもの) の latex2html-2002-1.tar.gz は不具合があるようです。 新しい latex2html-2002-1.tar.gz (1088875 Byte; revision 1.68) の方をお使いください。
今になって初めて知ったのですが、日本語と欧文アクセントの混在表示は MS Internet Explorer では 4.0 位から可能なようですね。 Netscape では 4.X はだめで、6.X、または Mozilla 1.X は 可能なようです。 ということで、日本語化パッチ version 1.4 で 取り入れた 「日本語環境では欧文アクセントを使わない」という仕様を、 次の版の日本語化パッチからは、欧文アクセントを使う形も取れる、 という形に変更したいと思います。
(cf. 「注意、その他 (11/09 2002; no.2)」, 「注意、その他 (08/24 2002)」, 「注意、その他 (08/23 2002)」)
考えてみると、 古い LaTeX2HTML に関する注意 にもこのような LaTeX2HTML の利用に関する 一般的な注意のような物が含まれています。 その辺りを分離して何処かにまとめておいた方が良さそうですね。
latex のマクロや newenvironment コマンドで環境を定義している場合、 行末の改行と次の行の行頭の空白を無視させるために、 行末に '%' をつけることがありますが、 latex2html は images.tex (= 画像化のために数式部分等を抜きだして一時的に作られる LaTeX ファイル) の生成時に、その部分を何故か '%%' + 空行に置き換えているようです。
原因と対処については現在調査中ですが、これは副作用を引き起こすことが ありますので注意して下さい。例えば
\newenvironment{hogehoge}{環境の始まり}%のような定義をしてしまうと、images.tex の中で
{環境の終り}
\newenvironment{hogehoge}{環境の始まり}%%のように展開されてしまうので、images.tex 内では hogehoge 環境の終り = 空白と見なされ、 "{環境の終り}" は地の文と見なされてしまいます。 そうなると画像のリンクが一つずつずれてしまったり、と変になります。
<== ここに空行が入る
{環境の終り}
このような場合、とりあえずは
\newenvironment{hogehoge}{環境の始まり}{環境の終り}(無理矢理 1 行で書く) とか
\newenvironment{hogehoge}{環境の始まり}{%や
環境の終り}
\newenvironment{hogehoge}{環境の始まり}{とかで多少ごまかすことは可能です。もしかしたら
環境の終り}
\newenvironment{hogehoge}{環境の始まり}でもいいかもしれません (詳しくは知りませんが、今の LaTeX2e ではこれも問題ないみたいですね)。
{環境の終り}
(cf. 「注意、その他 (08/23 2002)」)
現在、言語 (日本語/英語) の問題や日付の問題 (cf. latex2html-2K1b に関する注意: 07/17 2001) に関する修正を検討中で、 これができたら latex2html-2002-1 用のパッチとして公開しよう と思っていますが、やや問題が大きいのとやや忙しいのとで 少し時間がかかりそうです。 それができるまでは、申し訳ありませんが現在の latex2html-2002 用の 日本語化パッチ l2h-2002+jp1.5.patch をお使い下さい。
ただ、このパッチで不具合がある場合は、 上の問題の解決前に対処したいと思いますので ご連絡下さい。
(cf. 「注意、その他 (06/18 2002)」)
下 (04/28 2002)で紹介した latex2html-2002-1 ですが、 とりあえず latex2html-2002 用の日本語化パッチ l2h-2002+jp1.5.patch がそのまま当たりそうですのでしばらくはそれをお使い下さい。 latex2html.pin へのパッチ当てが一部失敗しますが、 .rej ファイルを見ると分かるように単なるコメント部分なので 気にせずにそのままお使い下さい。
ただし、下 (04/28 2002)でも多少触れましたが 幾つか機能や仕様に変更があり、 日本語化パッチ付属のドキュメントとずれている部分もあると思います (例えば GIF/PNG の扱いなど) が、その辺りは今後時間が取れた時に適宜修正していこうと思います。
GIF/PNG の話だけ書いておきますと、今まで (latex2html-2002 まで) は デフォルトの画像は PNG で、
latex2html -image_type gif hoge.tex
とすると、確かに数式等は GIF になるのですが
ナビゲーションアイコンが PNG のままでした。
そのため、従来はそれ用の l2hconf.pm を書いて切り替える、といった作業が
必要でしたが、latex2html-2002-1 からはその問題が解消され、
上のように実行するとナビゲーションアイコンも GIF に
変わるようになりました。
(cf. 「注意、その他 (08/24 2002)」)
latex2html-2002-1 がリリースされました。 日本語化パッチも時間が取れたら更新しますが、 そのまま今のパッチが当たるかどうかは確認していません。
新しい機能については、latex2html-ML に流れたアナウンス
[l2h] announce: release version: LaTeX2HTML 2002-1を見ると分かりますが、
(cf. 「注意、その他 (04/30 2002)」)