Skip to content

Instantly share code, notes, and snippets.

@uchida
Created November 3, 2012 03:04
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uchida/4005663 to your computer and use it in GitHub Desktop.
Save uchida/4005663 to your computer and use it in GitHub Desktop.
Sphinx + MathJax で自作 TeX マクロを使う

Sphinx + MathJax で自作 TeX マクロを利用する

sphinx の mathjax 拡張に手を加えて簡単な TeX マクロを使えるようにしてみました。

使い方

  1. 改造した mathjax.py を conf.py のある場所に置く
  2. conf.py に以下を追加:

    sys.path.insert(0, os.path.abspath('.'))
    extensions = ['mathjax']
  3. 自分用のマクロを準備

    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 に載っています。

@numechef
Copy link

ありがとうございます。利用させてもらってます。
簡単なマクロなら、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がうるさくなるのが、ちょっと嫌ですね。

@uchida
Copy link
Author

uchida commented May 15, 2014

gist のコメントって通知されないから気づきませんでした。
なるほど、kpsewhich を使うという発想はなかったです。html の表示を抑制する方法は調べた気がしますが忘れてしまいました...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment