今までやっていなかったのでGitHub pagesを作ってみた。 このサイトはHakyllを使って生成している。
導入
Hakyllのチュートリアルに従ってインストール。
stack install hakyll
hakyll-init autotaker.github.io
cd autotaker.github.io
stack init
stack build
stack exec site build
デプロイ
Hakyllを使うと生成されたサイトは_site
以下にできる。 GitHub pagesではmaster
ブランチのルートディレクトリがWebRootとなるようなので、 Hakyllのコードはdevelop
ブランチに置き、生成したサイトのみをmaster
に置く。 これもチュートリアルにあるスクリプトを少し書き換えた。
set -xe
# Compile site generator
stack build
# Build my site
stack exec site build
# Checkout the deploy branch
git checkout deploy
# Copy all files in _site to the root
rsync -a --filter='P _site/' \
--filter='P _cache/' \
--filter='P .git/' \
--filter='P .gitignore' \
--filter='P .stack-work' \
--delete-excluded \
_site/ .
# Commit all generated files
git add -A
git commit -m 'Deploy commit' || true
# Push
git push origin deploy:master
# Go back to the master branch
git checkout develop
このスクリプトを実行するとサイトが更新される。
数式
数式を表示したいのでHakyllで使うPandocに適切なオプションを渡す。
import Text.Pandoc.Options(ReaderOptions(..), WriterOptions(..), HTMLMathMethod(..))
myPandocCompiler = pandocCompilerWith readerOptions writerOptions
where
readerOptions = defaultHakyllReaderOptions
writerOptions = defaultHakyllWriterOptions {
writerHTMLMathMethod = MathJax ""
}
そしてHTMLテンプレートの方でMathJaxを読み込む
<head>
...
<script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/MathJax.js?config=TeX-MML-AM_CHTML"></script>
</head>
これで数式が表示できるようになった。
例
\(e = m c^2\) \[ \mathrm{fib}(n) = \begin{cases} \mathrm{fizzbuzz} & \text{if $n \mod 15 \equiv 0$}\\ \mathrm{fizz} & \text{if $n \mod 3 \equiv 0 $}\\ \mathrm{buzz} & \text{if $n \mod 5 \equiv 0 $}\\ n & \text{otherwise} \end{cases} \]
コード
コードはデフォルトでシンタックスハイライトされているが、cssを設定しないと色がつかない。
とやると<style>
に対応したcssが手に入るので好きなのをdefault.css
にコピーして使う。 <style>
はHaskellを書くことが多そうなのでhaddoc
を使う.
さらにpre
タグがそれっぽくなるようcssで調整した。CSSわからない。
例
Disqus
コメント機能としてDisqusを使ってみる。
templates/post.html
に以下のsnippetを貼る。
<div id="disqus_thread"></div>
<script>
/**
* RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
* LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/
var disqus_config = function () {
this.page.url = "https://autotaker.github.io" + "$url$"; // Replace PAGE_URL with your page's canonical URL variable
this.page.identifier = "$url$"; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
};
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = 'https://autotaker.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>