sphinx の mathjax 拡張に手を加えて簡単な TeX マクロを使えるようにしてみました。
- 改造した mathjax.py を conf.py のある場所に置く
conf.py に以下を追加:
sys.path.insert(0, os.path.abspath('.')) extensions = ['mathjax']
自分用のマクロを準備
TeX のマクロを書く (ただし、利用できるのは MathJax が解釈できるもの限定なので sty ファイルの読み込み等は不可)
例:conf.py に以下のように書く:
mathjax_preamble = r""" \newcommand\dif[2]{\frac{d{#1}}{d{#2}}} \newcommand\pdif[2]{\frac{\partial{#1}}{\partial{#2}}} \newcommand\bra[1]{\langle{#1}|} \newcommand\ket[1]{|{#1}\rangle} \newcommand\braket[1]{\langle{#1}\rangle} \newcommand\ketbra[2]{\ket{#1}\bra{#2}} """
各 html ページに MathJax が解釈できる TeX マクロを挿入することで実現しています。 具体的な変更点は diff uchida/sphinx/source/sphinx/ext/mathjax.py 参照。
MathJax が利用できる TeX コマンドについては Supported LaTeX commands に載っています。
ありがとうございます。利用させてもらってます。
簡単なマクロなら、kpsewhichで取り込めますよ。以下のように、
def importsty(sty):
if sty.endswith(".sty") != True : sty += ".sty"
from commands import getoutput
f = open( getoutput("kpsewhich "+sty), 'rU' )
tmp = f.read()
f.close()
return tmp
mathjax_preamble += importsty("mymacro")
ただ、各htmlがうるさくなるのが、ちょっと嫌ですね。