LaTeX2HTMLのカスタマイズ

大信田 丈志
作成: 2000-06-17 / 更新: 2000-10-22

Nikos Drakos が作り Ross Moore らが発展させた LaTeX2HTMLは、perlで書かれている。 さて、じつは筆者(おおしだ)はperlをほとんど全く知らないのだが、 sed+awk+shの類推でlatex2htmlのコードを読むことにより、 どうにかカスタマイズ用の起動時設定ファイルを でっちあげることに成功した(と信じたいが、内容について責任は負えない)。

追記 (2000-10-22):

じつは、上記の設定ファイルを見直したところ、 ひとつ重大な間違いがあることに気づきました。 「著者の名前」というところで
if( $WHOAMI = "ooshida" )
となっていたのは間違いで、正しくは
if( $WHOAMI eq "ooshida" )
としなければなりません(それはそうだ!)。

手元のperlの解説書によると、 通常の「=」に相当するものは次の3つを区別する必要があります:

私は === しか知らなかったので、 eq を使うべきだということには気づかなかったのでした。 どうもすみません。

以下のような内容で .latex2html-init という ドットファイル(起動時設定用の隠しファイル)を作成し、 ホームディレクトリの下に置く。 漢字コードはEUCにする。 これにより、次のようなことが実現できる:

なお、日本語化に関して言えば、全体の設定ファイルを変更して 日本語化を抜本的に行うほうが良いという考えもあるかもしれない。 もしコンピュータ自体が個人用なら、その方針でもたいして問題はないだろう。 そういう場合は、このページよりも LaTeX2HTML日本語化パッチ (武藤健志さん) を参考にするのが良いと思う。 ただし、大学のコンピュータなどの共用環境では、 勝手に全体の設定を変えると他人の迷惑になるから、 個人の設定ファイルでできる範囲のことにとどめておくべきだろう。

この設定ファイルと "LaTeX2HTML translator Version 99.2beta6 (1.42)" を用いて作った文書の 実例としては、以下の文書を参照されたい:


起動時用設定ファイル .latex2html-init の内容:

# -*- perl -*-
# -----------------------------------------------------------------------
# latex2html初期化ファイル (大信田 丈志)
#                                           作成: 2000-06-15
#                                           更新: 2000-10-22
# see also:
#   /etc/latex2html.config
#   /usr/share/latex2html/l2hconf.pm
#   /usr/share/latex2html/dot.latex2html-init
#
# -----------------------------------------------------------------------

# 変数の宣言
my $AUTHOR_KANJINAME; # 著者の名前 (漢字)
my $AUTHOR_HOMEPAGE;  # 著者のホームページ
my $AUTHOR_W3SERVER;  # 著者のホームページのあるウェブサーバ
my $AUTHOR_MAILADDR;  # 著者のメールアドレス
my $AUTHOR_MAILHOST;  # 著者のメールアドレスのあるメールホスト

# -----------------------------------------------------------------------

# 著者に関する情報の取得

# ログイン名 (`whoami`)
my $WHOAMI = L2hos->user();

# 著者の名前とHTML文書作成日
@address_data = &address_data('ISO');

# -----------------------------------------------------------------------

# 著者情報の設定 (ここは自分の状況に応じて設定する)

# 著者の名前
if( $WHOAMI eq "ooshida" ) {
    $AUTHOR_KANJINAME = "大信田 丈志";
} else {
    $AUTHOR_KANJINAME = address_data[0];
}

# 著者のメールアドレス
$AUTHOR_MAIIADDR  = "${WHOAMI}\@damp.tottori-u.ac.jp";

# 著者のホームページ
if( $WHOAMI =~ /^b\d\d\d\d$/ ) {
    $AUTHOR_W3SERVER = "svr01.damp.tottori-u.ac.jp";
} else {
    $AUTHOR_W3SERVER = "www.damp.tottori-u.ac.jp";
}  

$AUTHOR_HOMEPAGE  = "http://${AUTHOR_W3SERVER}/~${WHOAMI}/";

# -----------------------------------------------------------------------

# 上位文書としてホームページにリンク
$EXTERNAL_UP_LINK = $AUTHOR_HOMEPAGE;
$EXTERNAL_UP_TITLE = "ホームページ";

# 文書の著者情報の表示
$ADDRESS = "${AUTHOR_MAIIADDR}\n$address_data[1]";  # アドレス + 日付

sub custom_address {
    "\n<BR>\n" .
    "著者: <A HREF=\"${AUTHOR_HOMEPAGE}\">${AUTHOR_KANJINAME}</A>" .
    "<ADDRESS>\n${ADDRESS}\n</ADDRESS>";
}

# -----------------------------------------------------------------------

# 画像のタイプ
$IMAGE_TYPE  = $IMAGE_TYPES[1];    #  0 = png,  1 = gif

# BODYタグのオプション (ページの背景色など)
$BODYTEXT = 'BGCOLOR="#C0FF80"';

# アイコンを共用せず自分のところに確保
$LOCAL_ICONS = 1;

# -----------------------------------------------------------------------

# 作業用ディレクトリ
$TMP = "${HOME}/tmp";

# -----------------------------------------------------------------------

# 日本語化
$CHARSET = "ISO-2022-JP";

$TITLES_LANGUAGE = "japanese";

sub japanese_titles {
    $toc_title = "目次";      # "Contents"
    $lof_title = "図の一覧";  # "List of Figures"
    $lot_title = "表の一覧";  # "List of Tables"
    $idx_title = "索引";      # "Index"
    $ref_title = "参考資料";  # "References"
    $bib_title = "文献";      # "Bibliography"
    $abs_title = "要旨";      # "Abstract"
    $app_title = "補遺";      # "Appendix"
    $pre_title = "序文";      # "Preface"
    $foot_title = "脚注";     # "Footnotes"
    $thm_title = "定理";      # "Theorem"
    $fig_name  = "図";        # "Figure"
    $tab_name  = "表";        # "Table"
    $prf_name  = "ゲラ刷り";  # "Proof" (?)
    $date_name = "日付";      # "Date"
    $page_name = "ページ";    # "Page"
  # 文章の階層
    $part_name = "パート";
    $chapter_name = "Chapt.";
    $section_name = "§";
    $subsection_name = "SubSec.";
    $subsubsection_name = "SubSubSec.";
    $paragraph_name = "Paragraph";
  # その他
    $child_name = "この章の内容";      # "Subsections"
    $info_title = "この文書について";  # "About this document ..."
    $also_name  = "⇒";                # "see also"
    $see_name   = "⇒";                # "see"
  # Navigation Panel (操縦席) の表示
    $next_name = "<tt>[→]</tt>";
    $up_name   = "<tt>[△]</tt>";
    $prev_name = "<tt>[←]</tt>";
    $group_name = "グループ";
  # メール関係
    $encl_name = "encl";
    $headto_name = "To";
    $cc_name = "cc";

    @Month = ('', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                  'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');

  # -long_titles によるファイル名生成で除かれる単語
    $GENERIC_WORDS = "and|the|of|for|by|a|an|to";
}

sub japanese_infopage {

    local($LATEX2HTML_JP)
	= "http://www.damp.tottori-u.ac.jp/&#126;ooshida/unix/latex2html/";

    "<STRONG>$t_title</STRONG>" .
    "<P>\nこの文書は、LaTeXで書いた文書を<BR>\n" .
    "<A HREF=\"${LATEX2HTML_JP}\"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A>" .
    " translator Version ${TEX2HTMLVERSION}<BR>\n" .
    "を用いてHTMLに変換したものです。\n" .
    "<STRONG>LaTeX</STRONG>2<tt>HTML</tt>の著作権については\n" .
    "下の英語版の情報を見てください。\n</P>\n" .
    "<P ALIGN=\"right\">$address_data[1] ($address_data[0])</P>\n" .
    "\n<HR>\n" .
    &default_textohtmlinfopage ;
}

# LaTeXコンパイラのパス → pLaTeX にしておくと数式中の日本語が通る.
$LATEX = '/usr/bin/platex';

# -----------------------------------------------------------------------

# Navigation Panel (操縦席パネル) = 「進む」「戻る」など

my $label4top = "top";

sub top_navigation_panel {

    # ページの先頭
    "<a NAME=\"${label4top}\"><top_of_page></a>\n" .

    # ボタンを並べる. (間のスペースに注意)
    # "$NEXT $UP $PREVIOUS $CONTENTS $INDEX $CUSTOM_BUTTONS" .
    # "<BR>\n" .          # 改行する

    # もし``next''が存在するなら その題名を表示.
    ($NEXT_TITLE ? "[<B>次に進む:</B> $NEXT_TITLE]\n" : undef) .

    # 同様に``up''や``previous''の題名を表示.
    ($UP_TITLE ? "[<B>上に戻る:</B> $UP_TITLE]\n" : undef) .
    ($PREVIOUS_TITLE ? "[<B>前に戻る:</B> $PREVIOUS_TITLE]\n" : undef) .

    # 改行し, 横線を入れ, 新しい段落を開始
    "<BR> <HR> <P>\n"
}


sub bot_navigation_panel {

    # まずは横線.
    "<HR>" .

    # 必要ならボタンを並べる. (間のスペースに注意)
    # "$NEXT $UP $PREVIOUS $CONTENTS $INDEX $CUSTOM_BUTTONS" .

    "<BR>\n" .          # 改行する

    # もし``next''が存在するなら その題名を表示.
    ($NEXT_TITLE ? "[<B>次に進む:</B> $NEXT_TITLE]\n" : undef) .

    # 同様に``up''や``previous''の題名を表示.
    ($UP_TITLE ? "[<B>上に戻る:</B> $UP_TITLE]\n" : undef) .
    ($PREVIOUS_TITLE ? "[<B>前に戻る:</B> $PREVIOUS_TITLE]\n" : undef) .

    # ページの先頭に戻る
    "<br>\n" .
    "[<B><a HREF=\"#${label4top}\">ページの先頭に戻る</a></B>]\n" .

    # 最後に横線.
    "<HR>"
}

# -----------------------------------------------------------------------

1 ; # 最終行のおまじない


[LaTeX2HTMLのページに戻る] [「UNIXメモ」に戻る] [ホームページに戻る]