読者です 読者をやめる 読者になる 読者になる

【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

MS Officeの数式をTeXに変換

Microsoft Officeで数式を書くのに慣れてTeX形式で入力するのが苦痛になって来たので、変換プログラムを作りました。Windows専用です。

【注】自分の必要とする範囲しか実装していません。変換部は200行程度なので、不足があればその都度手直しして使うことを想定しています。

実行方法

以下の2つをインストールします。

F#スクリプトは直接実行できるため、Visual Studioやビルド作業は不要です。mml2tex.fsx をダブルクリックすると、どのアプリで開くか選択肢が出て来るので、以下にある fsi.exe を指定すれば起動します。

  • (64bit OS) C:\Program Files (x86)\Microsoft SDKs\F#\4.0\Framework\v4.0\fsi.exe
  • (32bit OS) C:\Program Files\Microsoft SDKs\F#\4.0\Framework\v4.0\fsi.exe

【注】ビルドすればEXEファイルにもできますが、その都度手直しして使うことを想定しているため、スクリプトのまま使うことをお勧めします。

使い方

Officeで数式部分だけを選択してコピーして、このプログラムの画面上部のボタンを押すと変換されます。動作イメージは以下のツイートを参照してください。

オプションとして、MimeTeXによるプレビュー機能を使用するにはMimeTeX.dllが必要です。以下から入手してください。

サンプル

サンプルのWordファイルです。

これをTeXに変換して [tex:...] の中に記述したものを示します。デフォルトではMimeTeX向けのコードを出力しますが、はてなブログMathJaxを使っているため、変換時に右上のMathJaxにチェックを入れてください。(積分などの大型記号で挙動が異なるため)

\frac{1}{2}

\frac{d}{dt}\left(\frac{\partial L}{\partial \dot{q}}\right)-\frac{\partial L}{\partial q}=0

\left\{\begin{matrix}\dot{p}=-\frac{\partial H}{\partial q}\\\dot{q}=\frac{\partial H}{\partial p}\end{matrix}\right.

H\left(f\right)={\nabla}^2f=\left[\begin{matrix}\frac{{\partial}^2f}{\partial x_1^2}&\frac{{\partial}^2f}{\partial x_1\partial x_2}&\cdots &\frac{{\partial}^2f}{\partial x_1\partial x_n}\\\frac{{\partial}^2f}{\partial x_2\partial x_1}&\frac{{\partial}^2f}{\partial x_2^2}&\cdots &\frac{{\partial}^2f}{\partial x_2\partial x_n}\\\vdots &\vdots &\ddots &\vdots \\\frac{{\partial}^2f}{\partial x_n\partial x_1}&\frac{{\partial}^2f}{\partial x_n\partial x_2}&\cdots &\frac{{\partial}^2f}{\partial x_n^2}\end{matrix}\right]

\delta S=\underbrace{{\left[\frac{\partial L}{\partial \dot{q}}\delta q\right]}_{t_1}^{t_2}}_{{=0}}+{\int}_{t_1}^{t_2}\left(\frac{\partial L}{\partial q}-\frac{d}{dt}\frac{\partial L}{\partial \dot{q}}\right)\delta qdt

【注】Markdown記法で数式が崩れるのを防ぐため <pre> タグの中に記述しています。詳細は以下の記事を参照してください。

経緯

開発着手時のツイートです。

開発中はMimeTeXで動作確認していましたが、MathJaxとは癖が違うため細かい部分で苦労しました。