数式を簡単に表示する方法
おれおれマークダウンで
とりあえず、
$$
\newcommand{\combination}[2]{{}_{#1} \mathrm{C}_{#2}}
$$
$\combination{n}{r}$
で
しかし、普通のマークダウンだと、ファイルの先頭でマクロを定義して、その後のMathブロックでマクロを使えないんですよね。これが不便なので普通のマークダウンとの互換性は捨てることにしました。プログラムで変換してHTMLを吐き出す方法でやります。となると、別にMarkdownとの互換性を考慮する必要もないので独自フォーマットでよくなるんですよね。
独自フォーマットで良しとすると、一気に自由度が上がりました。自由すぎてなにをしていいのかわかりません。とりあえず、
```exec ruby
a = 100
p a + 50
```
で
150と表示できました。前に書いたPlantUMLを別プロセスで呼ぶコードをコピペしてRubyでevalしただけですけど。
もうちょっと意味のある式だと、
```exec ruby
class Combination
def initialize(n, r)
@n = n
@r = r
end
def print
printf "\\combination{#@n}{#@r}"
end
end
print "$$"
print "(a + b)^4 = "
(0..4).each do |r|
print " + " if r > 0
c = Combination.new(4, r)
c.print
printf "a^#{4 - r}b^#{r}"
end
print "$$"
```
こんな感じでRubyで書いてしまうか、DSLを作るか、全く別の言語を作るかですかね?別の言語ならRubyじゃなくてHaskellとかで書いてもいいし。とりあえずはRubyで限界を感じるか飽きるまではRubyで書いていきますかね?
そして、これを拡張していけば文芸的プログラミングができるんじゃないですかね?
コメント
コメントを投稿