数式をツイートするWebアプリを試作してみました

なんとなく作りました

デザインとか突っ込みどころしかないですが,とりあえず使えます

というわけで何をするアプリなのか説明します

数式をツイートする

Twitterには数式をツイートする機能はありません
というかそもそもHTML自体数式の取り扱いはダメダメで,電子書籍の一形式であるHTMLベースのEPUBなんかも数式が表示できないから理科系で使われることはまずないと見られています
というわけで数式を普通にツイートするのは無理なのですが,数式をテキストで表現する場合はTeXというデファクトスタンダードがあります

といってもTeXの数式は読める人と読めない人がいる上に,読める人でも長いものは読むのもうんざりしてしまいます

ということでTeXの数式を画像にしてツイートできるサービスがあったら嬉しいなーと思って作ってみました
画像はいろいろ考えたのですが,Twitter本家が一番簡単だったのでTwitterにアップロードされます

最初は『TeXで処理して,それをdvipngかdvips→Ghostscript→ImageMagickとかで画像にして…』
とかって考えてたんですが,よくよく調べてみるとなんと

TeXの数式を送ると,画像を返してくれるAPI
を天下のGoogleが用意してくれてます
なんでもありますねーGoogleは

というわけで折角なんでこれを使いました
これの制約としては

  • 日本語が使えない
  • たまに表示が崩れる

けど概ねいい感じの画像を返してくれます

太字は無理みたいですが,\begin{array}〜\end{array}環境が使えたりとか,なかなか機能盛りだくさんみたいなのでいろいろ打ってみると面白いかと思います
ただあんまり長い数式はダメみたいです
太字に関してはもともとTeXのデフォルトのComupter Modernでは微妙な感じになるので(TX/PXFontには全ての文字の太字が含まれていた気がします)しょうがないかと思います

というわけで試しに使ってみます

使ってみよう

とりあえず人類の至宝

1
e^{i\theta}=\cos\theta+i\sin\theta

自然対数のeとか虚数のiはローマン体だろ!という方
どうやら\mathrmは使えるようですのでご安心を

1
\mathrm{e}^{\mathrm{i}\theta}=\cos\theta+\mathrm{i}\sin\theta

受験シーズンということで大学受験でおなじみの公式を

1
2
3
\displaystyle\sum_{k=1}^n k = \frac{1}{2}n(n+1)\\
\displaystyle\sum_{k=1}^n k^2 = \frac{1}{6}n(n+1)(2n+1)\\
\displaystyle\sum_{k=1}^n k^3 = \{\frac{1}{2}n(n+1)\}^2\\

ここで3つ注意をします

改行が使える

\\を書くと改行されます
フォームのサイズは(IEでなければ)調整できますので改行を使う場合は大きくした方がいいです
ただあんまり長い数式は画像を返してくれなくなりますのでプレビューを見ながら調整してください
まあTwitterなので本格的な数式は使わないですよね…

\displaystyleになる条件は謎

TeXは別行立て数式にすると自動的に\displaystyleが適用されますが,このAPIの場合は\displaystyleになったりならなかったりします
この条件はかなり謎なので常に\displaystyleを指定した方が良さげです

括弧のサイズは自動調整してくれるみたい

本来TeXは括弧のサイズの自動調整はしてくれないので

1
\displaystyle\sum_{k=1}^n k^3 = \left\{\frac{1}{2}n(n+1)\right\}^2\\

のように括弧の大きさを揃える場合は\left\rightを使います
しかしGoogle Chart APIは書かなくても自動でサイズを調整してくれるようです

では次は私の好きな運動方程式

1
m\ddot{x} = f

シンプルです
大好きです

物理というと私はよく分かりませんが,シュレディンガー方程式なんかも書けるみたいです

1
i\hbar\frac{\partial}{\partial t}|\psi(t)\rangle=\hat{H}|\psi(t)\rangle

こういうのも普通にかけますよーということで

マクスウェル方程式も書こうと思ったのですが,積分系は長すぎてダメみたいなので微分系で

1
2
3
4
\nabla \cdot B = 0\\
\nabla \times E + \frac{\partial B} {\partial t} = 0\\
\nabla \cdot D = \rho \\
\nabla \times H - \frac{\partial D}{\partial t} = j

ただ太字が使えないのでベクトルとかは表せないのは少し残念かもしれません

まとめ

Googleってすごいよね
というわけで数式をツイートしたくなったら使ってみてくださいw

追記:リニューアルしました
詳しくはここを見てみてください

今後ともよろしくお願いします

このエントリーをはてなブックマークに追加