Yamamoto's Laboratory
練習
latex2html

LaTeXlatex2htmllatex を html に変換

LaTeX のfファイルを HTML に変換する latex2html インストール方法と使いを説明します.また,使用時の注意についても,述べます.

目次


インストール

私の場合,次のようにして,日本語化された latex2html をインストールしました.ただし,私の環境は,Ubuntu で,漢字コードは EUC-JPです.そのほかの環境の人は,新潟工科大学の竹野さんのLaTeX2HTML 日本語化パッチ開発版のページ (Japanese)の「開発版パッチ全般のドキュメント (インストールガイドを含む) 」をよく読んでください.

  1. もし,apt-get を使って,latex2html をインストール済みであれば,それをアンインストールします.
    # apt-get remove latex2html
  2. 次に必要なファイルをダウンロードします.
  3. 日本語化パッチ本体のページの「開発版パッチ全般のドキュメント (インストールガイドを含む) 」の記述に従い,インストールします.以下は,漢字コードが EUC-JPの場合です.
    1. latex2html-2008.tar.gz を解凍します.
      $ tar zxvf latex2html-2008.tar.gz
    2. パッチを解凍します.
      $ tar zxvf l2h-2K8-jp20100514.tar.gz
    3. 解凍したディレクトリーに移動します.
      $ cd latex2html-2008
    4. パッチを当てます.
      $ patch -p1 < l2h-2K8-jp2.1b1.12.patch
    5. あとは,「configure」「make」と,rootになり「make install」です.
      $ ./configure --prefix=/usr/local
      $ make
      # make install

以上で,実行ファイル(/usr/local/bin/latex2html)がインストールされます.

コマンド

latex2htmlのコマンドについては、yasufumi.hagaさん??のLatex2htmlに関する情報に詳しく書かれています.

\htmladdnormallink{テキスト}{URL}
latex2html で処理すると、テキストにリンクが設定されます.LaTeXでは、単にテキストの部分が書かれるだけでほかに影響はありません.
\htmladdnormallinkfoot{テキスト}{URL}
latex2html で処理すると、テキストにリンクが設定されます.LaTeX でコンパイルすると、脚注にURLが書かれます.
\begin{rawhtml} html文書 \end{rawhtml}
latex2htmlでは、html 文がそのまま書かれます.LaTeXには影響はありません.
\begin{htmlonly} LaTeX文書 \end{htmlonly}
latex2htmlのみ反映され、LaTeXは無視します.
\begin{latexonly} LaTeX文書 \end{latexonly}
LaTeXのみ反映され、latex2htmlは無視します.

環境の開始コマンド(\begin{????})の行の後には,テキスト書くことはできません.終了コマンド(\end{????})は行頭に記述する必要があります.

設定ファイルの変更

デフォルトの設定でも問題はありませんが、自分の好みの HTML ファイルを作るも可能です.ファイル「/usr/local/share/lib/latex2html/dot.latex2html-init」を自分のホームディレクトリーにコピーし,それを編集すると設定を変更できます.その際、ホームディレクトリーでのファイル名は、「.latex2html-init」とします.

cssを使う

latex2htmlが作るスタイルシートのリンクは、「ファイル名.css」です.そのソースには,以下の記述があります.

<LINK REL="STYLESHEET" HREF="nonlinear_eq_prog.css">

このリンク先を変えれば、お望みのスタイルシートの反映が可能です.しかし,latex2html が吐き出した全ての CSSファイルをひとつずつ変換する退屈な作業が必要です.そこで,私はこの作業を自動化する物理のかぎしっぽ(崎間公久さん)のシェルスクリプトhtmltex-arrange を使っています.

プログラムソースリストの記述

LaTeX では,lgrind や listings を使いプログラムのソースリストを文書に載せることができます.これらを使うと,LaTeXが吐き出す dvi ファイルには大変美しいリストが書かれます.その一方で,LaTeX2HTML で処理する 場合には,以下に述べる手続きが必要になります.

lgrind

インストール

プログラムのソースリストの整形に lgrind を用いた場合, late2html を通すためには lgrind.perlが必要になります.インストールは以下の通り.

  1. 処理プログラム「lgrind.perl」が必要です.検索サイトで捜せばヒットするでしょう.それをダウンロードします.
  2. 次に、ダウンロードしたしたファイルを所定の場所に保管します.
    # mv lgrind.perl /usr/local/share/lib/latex2html/styles/
    

使い方

LaTeX ソースのプリアンブルに、

\usepackage{lgrind}

と記述します、すると,通常の LaTeX2HTML で処理ができ,プログラムのリストが表示されます.

問題点

lgrind の最大の問題は,行番号が表示されないことです.そのため、今はもっぱら listings を使っています.

listings

listings.perl が無いので、listings を使った LaTeX 文書を HTML にするときには工夫が必要になります.以下、2通りの方法を示しますが、verbatimfiles を使うのが私のおすすめです.

verbatimfiles を使う方法

lstinputlisting で外部からソースファイルを取り込んみ処理している場合に使える方法です.verbatimfiles を使い、プログラムのソースファイルを verbtim 環境で出力します.まずは、プリアンブルに

\usepackage{html, listings, jlisting}

と書きます.次に、行番号付きで出力したければ、

\begin{htmlonly}
 \usepackage{verbatimfiles}
 \providecommand{\lstinputlisting}[2][]{\verbatimlisting{#2}}
\end{htmlonly}

と書きます.行番号が不要であれば、

\begin{htmlonly}
 \usepackage{verbatimfiles}
 \providecommand{\lstinputlisting}[2][]{\verbatiminput{#2}}
\end{htmlonly}

と書きます.その後は、通常の LaTeX2HTML と同じです.これで,プログラムのソースリストが表示できます.

図として出力する方法

アメリカのサイトで lstlisting 環境の部分を、図として出力する方法が紹介されています.以下を .latex2html-init に追加すれば、 その部分が図として出力される.

sub do_env_lstlisting {
   local ($_) = @_;
   my $env_id = ++$global{'max_id'};
   $_ =~ s/\\par/\n\n/g;
   &process_undefined_environment('lstlisting', $env_id, $_);
}

ただし、私の環境では、複数のリストを処理すると変換に失敗することがある.結構それを直すのが面倒くさいので、先に示した verbatimfiles を使っている.

図を表示するときの注意

画像ファイル等を includegraphics を使って読み込んでいる場合、新潟工科大学の竹野さんのREADMEに書かれているように、

\includegraphics[keepaspectratio, scale=0.7]{./figure/newton.eps}

としてはならない.相対パス指定の'./'があるとうまく動作しない.これを

\includegraphics[keepaspectratio, scale=0.7]{figure/newton.eps}

とすると問題は解決する.

数式を書くときの注意

数式中のコメント文

この問題は解決しました.対処の方法については、ここ(問題解決)を見てください.

LaTeXでは、数式中にコメントを入れても、問題なく処理できるが、latex2htmlでは、だめな場合がある.たとえば、次の数式

\begin{equation}
  \begin{aligned}
    \nabla\cdot\vm{D}&=\rho \\
    % -------- int dv --
    \int\nabla\cdot\vm{D}d\vm{V}&=\int\rho d\vm{V}
  \end{aligned}
\end{equation}

を、latex2htmlにかけると

commnet in equation

となる.わけの分からない、<tex2htmlcommentmark>が書かれてしまう.これを防ぐためには、数式中にコメントを取り除けばよい.

\begin{equation}
  \begin{aligned}
    \nabla\cdot\vm{D}&=\rho \\
    \int\nabla\cdot\vm{D}d\vm{V}&=\int\rho d\vm{V}
  \end{aligned}
\end{equation}

すると、

commnet in equation

となる.これで、問題は無くなるが、数式中にコメントが書けなくなり、大変不便である.良い解決方法は無いのだろうか?

問題解決

この問題に関しては、 竹野 さんが、早急に対策を施し、パッチを公開されています.パッチは竹野さんのLaTeX2HTML (Japanese) の中のamsmath-bug.patchです.これをダウンロードして、more_amsmath.perlのあるディレクトリーで、

# patch -p1 < $(patchのあるディレクトリー)/amsmath-bug.patch

とすれば、パッチをあてることができます.これで、数式中にコメントがあっても、処理できます.竹野さん、ありがとうございました.

式などが表示(変換)できないとき

ここで述べる数式中の日本語の問題は解決しました.対処の方法については、ここ(問題可決) を見てください.

latex2htmlがどうしても、図に変換できない場合の苦肉の策を紹介します.ここで示す方法は、latexで書かれたものはどんなものでも図に変換できるので、他にも応用できます.ただ、latex2htmlでこのような方法を使うのは、邪道のように思えますが、仕方なしに使っています.私のlatex2html環境の設定に問題があるのかもしれません.

equation環境の中にもう一つ環境があって、その中に日本語が書かれている場合、理由は分かりませんが、図に変換できません.たとえば、次の様な場合です.

\begin{equation*}
 \begin{array}{rrcccccc@{\hspace{5pt}}l}
  \ldelim\{{2}{59pt}[行の交換不可]&
   \ldelim({7}{5pt}[]  
     &1 &0 & \ast & \ast & \ast & \ast &
   \rdelim){7}{5pt}[] \\
   & & 0 &1 & \ast & \ast & \ast & \ast & \\
  \ldelim\{{5}{50pt}[行の交換可]
   & & 0 &0 & \ast & \ast & \ast & \ast & \\
   & & 0 &0 & \ast & \ast & \ast & \ast & \\
   & & 0 &0 & \ast & \ast & \ast & \ast & \\
   & & 0 &0 & \ast & \ast & \ast & \ast & \\
   & &0 &0 & \ast & \ast & \ast & \ast & \\
 \end{array}
\end{equation*}

私は、latexのdviファイルをpdfに変換して、そこから式の部分を切り出して、図に変換しました.そして、それをhtmlのソースに記述しました.実際の手順は以下の通りです.

  1. latexのソースからdviファイルを作成する.
    $ platex hogehoge.tex
    
  2. dviファイルからpdfの作成.ここで、96dpiでつくりました.
    $ dvipdfmx -r 96 hogehoge.dvi
    
  3. 次に、Adobe Readerなどで、必要な部分を切り出します.切り出した部分は、クリップボードに保存されます.Adobe Readerでファイを見るときには、133%=96dpi/72dpiとしました.これが、意味が有るかはよく分かりません.
    commnet in equation
  4. IrfanViewを立ち上げ、クリップボードの図を[ctrl]+vで貼り付けます.そして、図をはっきりさせるために,メニューからシャープを選択します.
  5. 次に透過GIFで保存します.IrfanViewでの透過GIFの作り方は、ワニchan「透過GIFを作りたい」が参考になります.
  6. 次に表示(変換)できない latex のファイルの問題の部分をコメントアウトして、latex2htmlでhtmlファイルを作成します.
  7. 出来上がった html ファイルを編集し、先ほどの透過GIFファイルを適当な場所で表示するようにします.たとえば、htmlファイルを次のようにします.
    </br>
    <IMG SRC="../for_html/eq2.gif" 
    STYLE="position:relative; left:150px; padding:20px">
    </br>
    
  8. これで、うまく出来上がっているはずですので、ブラウザで確認します.
    commnet in equation

問題解決

数式中の日本語の問題に関しては、 竹野 さんが解決方法を示しています.詳しくは、竹野さんのページのLaTeX2HTML (Japanese) 注意、その他 の(01/11 2005)に書かれています.私が使っているLinuxでは、dvipsがpdvipsになっているため、それを反映させる必要があるようです.竹野さんが示された具体的な対処方法は、

  • インストール前なら、 prefs.pm の $pref{'DVIPS'} のところの dvips を pdvips に修正
  • インストール後なら、 lib/latex2html/l2hconf.pm の $DVIPS のところの dvips を pdvips に修正

です.竹野さん、ありがとうございました.

\cfracの問題

\cfracを使うと、以下のように数式が化けることがあります.

bad cfrag

webで調べると、アメリカのサイトに解決方法が書かれていました.amsmath.perlを書き直せば問題は解決するようです.以下のように、cfracの行をコメントアウトし、新たにcfracを書き、genfracを追加します.

#cfrac # <<\\endcfrac>>
cfrac # [] # {} # {}
genfrac # {} # {} # {} # {} # {} # {}

そうすると、以下のようにちゃんと数式が書かれます.

bad cfrag

ページ作成情報

参考資料

  1. latex2htmlのパッチの作成し公開されている新潟工科大学の竹野さんのLaTeX2HTML 日本語化パッチ開発版のページ (Japanese)にあるパッチを使わせてもらいました.

更新履歴

2004年頃 ページの新規作成


no counter