ようこそ
このページは
Franklin.jl を使った Web page のサンプルです.
Web 生成に使われたコードは全て こちら にて管理さてれています.
導入
(Franklin.jl について)
Franklin.jl は Julia で記述された 静的サイトの生成を行うパッケージである.コーディング,数学などの技術ブログの作成をサポートする. 公式ドキュメントは https://franklinjl.org/ を参照せよ. なお,公式ドキュメントも Franklin.jl で作成されており, https://github.com/tlienart/franklindocs にてソースが公開されている.
Franklin.jl は Julia で記述された 静的サイトの生成を行うパッケージである.コーディング,数学などの技術ブログの作成をサポートする. 公式ドキュメントは https://franklinjl.org/ を参照せよ. なお,公式ドキュメントも Franklin.jl で作成されており, https://github.com/tlienart/franklindocs にてソースが公開されている.
(特徴)
Franklin.jl では次の機能を持っている
Franklin.jl では次の機能を持っている
マークダウンで記述することができる.
数式のレンダリングは KaTeX を用いている.
$
マークで挟むことで数式を表現できる.記述した Julia のコードを記述し, 対応する出力を自動で表示することができる.
グラフ描画結果を表示することができ, 数学の概念を可視化することができる.
HTML, CSS, JavaScript の知識があれば,ページの表示を変更することができる.
$
マークで挟むことで数式を表現できる.
記述した Julia のコードを記述し, 対応する出力を自動で表示することができる.
グラフ描画結果を表示することができ, 数学の概念を可視化することができる.
HTML, CSS, JavaScript の知識があれば,ページの表示を変更することができる.
}
(事後分布の定義)
真の分布 に従う 個の確率変数の組 , パラメータ を持つ確率モデル , パラメータの事前分布 から定まる逆温度 付きの の事後分布 を次で定義する:
真の分布 に従う 個の確率変数の組 , パラメータ を持つ確率モデル , パラメータの事前分布 から定まる逆温度 付きの の事後分布 を次で定義する:
ここで は の事後分布の正規化定数であり具体的には下記のように定義する:
次のようにJuliaのコードを記述することができる:
x = 3.141592
y = sin(x)
@show y
このとき, y
の値は評価され次の出力を得ることができる: y = 6.535897930762419e-7
x = 3.141592
y = sin(x)
@show y
このとき, y
の値は評価され次の出力を得ることができる: \output{simplecode} }
通し番号について
通し番号は Franklin ではデフォルトでサポートしていない. CSS でカウンタを定義しておく必要がある.
通し番号は Franklin ではデフォルトでサポートしていない. CSS でカウンタを定義しておく必要がある.
newcommand
によるタイピングの簡略化
newcommand
によるタイピングの簡略化}
config.md
は文章を記述する上での設定を記述するために用いる. の \newcommand
と同様に数式を記述するコマンドを簡略化できる.
( の例)
config.md
に次を追加しておく: \newcommand{\R}{\mathbb R}
これで \R
で を表記できる.config.md
に次を追加しておく: \newcommand{\R}{\mathbb R}
これで \R
で $\R$ を表記できる. }
グラフの描画
PyPlot
, gr,pyplot
をバックエンドとする Plots.jl
, PlotlyJS.jl
を用いた場合で確認している.
using PyPlot
figure(figsize=(8, 6))
x = range(-2, 2, length=500)
for α in 1:5
plot(x, sinc.(α .* x))
end
using Plots
Plots.plot([1,2,3])
pyplot()
Plots.plot(sin)
PlotlyJS
による例はサイドメニューのページを参照
Python のコードの実行結果の表示
config.md
のコマンドを定義しておく.
\newcommand{\pycode}[2]{
```julia:!#1
#hideall
using PyCall
lines = replace("""!#2""", r"(^|\n)([^\n]+)\n?$" => s"\1res = \2")
py"""
$$lines
"""
println(py"res")
```
```python
#2
```
\codeoutput{!#1}
}
そして該当する Markdown ファイルに例えば下記のように \pycode
コマンドと組み合わせたものを記述しておく.
(ソースコードの表示)
Pythonのコードの実行結果を貼り付けることができる.
Pythonのコードの実行結果を貼り付けることができる.
\pycode{py1}{
import numpy as np
np.random.seed(2)
x = np.random.randn(5)
r = np.linalg.norm(x) / len(x)
np.round(r, 2)
}
と記述することで下記のようになる:
import numpy as np
np.random.seed(2)
x = np.random.randn(5)
r = np.linalg.norm(x) / len(x)
np.round(r, 2)
0.65
C のコードの実行結果を表示
config.md
に次を記述しておく
\newcommand{\Ccode}[2]{
```julia:!#1
#hideall
using Markdown
mdC_code = Markdown.htmlesc(raw"""!#2""")
mdfile=joinpath(dirname(@OUTPUT), "!#1.md")
open(mdfile,"w") do f
print(f, mdC_code)
end
C_code=raw"""
!#2
"""
exefile = tempname()
#=
This trick is taken from
https://discourse.julialang.org/t/how-to-make-a-c-function-compiled-by-myself-available-to-ccall/7972/26
=#
open(`gcc -Wall -O2 -march=native -xc -o $exefile -`, "w") do f
print(f, C_code)
end
run(`$exefile`)
```
\input{c}{!#1.md}
\codeoutput{!#1}
}
(ソースコードの表示)
つぎのように C のコードを貼り付けることができる.
つぎのように C のコードを貼り付けることができる.
次のコードをタイプすることで望むべき結果が得られる.
```c
\Ccode{how2embeddC}{
#include
int main(){
printf("Hello Pika\n");
return 0;
}
}
```
```c
\Ccode{how2embeddC}{
#include
int main(){
printf("Hello Pika\n");
return 0;
}
}
```
}
#include <stdio.h>
int main(){
printf("Hello Pikachu\n");
return 0;
}
(Cのコードのハイライト)
Getting hightlight.js から ハイライトしたい言語を選択した後
Getting hightlight.js から ハイライトしたい言語を選択した後
highlight.pack.js
を _lib/hightlight
にコピーする. もともと _lib/highlight/highlight.pack.js
が配置されているが、Julia,Python,R、Markdownのみをハイライトするようになっている。
© SatoshiTerasaki. Last modified: April 06, 2020. Website built with Franklin.jl.