latex2htmlで数式を書くと画像に落としてくれるが、pngファイルなのでけっこうギザギザになる。やはりlatexを使うなら綺麗に出力したい。
でもlatex2htmlはとても便利なので、乗り換えて別のものに移行するのは億劫。
そこでlatex2htmlを使いつつ、数式の部分はmathjaxを使って表記する方法を採ることにした。
ついでに文字化け対策のために utf-8であることも明示する。
本当はlatex2htmlでこれらを追加できたほうがきれいなんだろうけど、中身がわかっていないので断念した。
基本的な路線としては、latex2html でhtmlファイルを生成 →生成されたhtmlファイルのヘッダを書き換えるスクリプトを作成する。
はっきり言って泥臭いけど仕方ない。
やることは以下の二点。
まずmathjaxを使うためにはhtmlのヘッダに以下を追加する。
<script src=\"http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML\" type=\"text/javascript\">
</script>
さらに、エンコードがutf-8であることを示すために、htmlのヘッダに
<meta charset=UTF-8>
を追加する。これを一連の流れとして以下の様にスクリプトを組む。
#! /bin/bash
export FILE=$1 ## 入力ファイルするtexファイル
export DIR=$(echo $1 |sed s/\\.tex//) ## latex2htmlで作られるディレクトリ
latex2html -noreuse $FILE ## latex2htmlを実行する
cd $DIR ## htmlがあるディレクトリに移動
for i in *.html;do
mv $i $i.OLD
cat $i.OLD| sed s/\\<\\\\/HEAD\\>/\\<script\\ type=\"text\\/javascript\"\\ \\\\n\\ \\ src=\"http:\\\\/\\\\/cdn.mathjax.org\\/mathjax\\/latest\\/MathJax.js?config=TeX-AMS_HTML\"\\>\\\\n\\<\\\\/script\\>\\\\n\\<\\\\/HEAD\\>/ > $i
rm $i.OLD
## ファイルの</HEAD>の上側をmathjaxを使うために書き換え。
mv $i $i.OLD
cat $i.OLD| sed s/\\<HEAD\\>/\\<HEAD\\>\\\\n\\<meta\\ charset=\"UTF-8\"\\>/ > $i
rm $i.OLD
done
## ファイルの<HEAD>のすぐ下側にutf-8を使うようにmetaタグで宣言する。
cd ../ ##元の場所へ戻る
#END
utf-8じゃない場合は適宜書き換えれば良い。エンコードはnkf --guessで自動で書き込むようにしても良いかも。
後は適当な名前 (例えば LATEX2HTML.sh)とかで保存して、PASSが通っているところに置いて実行させればうまく行くはず。
LATEX2HTML.sh hoge.tex
実際に使用する際は、数式環境をlatex2htmlでhtmlを直接書き出すrawhtml環境内で使用する。(html.styを読み込んでおく必要がある)
行の中に書く場合には \(\)、別行仕立ての場合には\[\]を利用する。具体的には
\begin{rawhtml}
\( \int x^2 dx \)
\end{rawhtml}
とすると、x二乗の積分を書くことができる。それにしてもsedのエスケープシーケンスはやっているうちに訳が分からなくなる...。
もっと賢くできるようになりたい。
さて、ハーフマラソンもなんとか完走。今回は結構頑張った(ように思う)。
雨もあまり降らなかったので良かった。お酒の勢いでちょっとナンパっぽいこともしてしまった。
もしかすると人生初かもしれない。