333びぼーろく; latex2htmlでmathjaxを使う

(2016/12/12追記:こちらに書き直しました)

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のエスケープシーケンスはやっているうちに訳が分からなくなる...。
もっと賢くできるようになりたい。


さて、ハーフマラソンもなんとか完走。今回は結構頑張った(ように思う)。
雨もあまり降らなかったので良かった。お酒の勢いでちょっとナンパっぽいこともしてしまった。
もしかすると人生初かもしれない。

コメント

このブログの人気の投稿

471びぼーろく; ffmpegの音・映像ずれ修正

329びぼーろく; latexでヤング図を書く

531びぼーろく; python上でのヤコビ楕円関数