結論
やめておきましょう。footnote使いましょう。
…だけではアレなので、供養を兼ねて一応使い方を書いておきます。
CSLファイルを取得する
HakyllでHTMLへの変換に使用しているpandocでは、Citation Style Language(CSL)を使って引用文献の表示をカスタマイズできます。 citation-style-language/stylesにしこたまあるので、適当な物をコピーするなり、cloneするなり、submoduleにするなりしましょう。
ルールを追加する
templateCompilerと同じように適当にルールを追加します。
1 2 3 | |
コンパイラを書き換える
pandocCompilerのソースを参考に、readPandocBiblioを使って適当にコンパイラを書き換えましょう。
4 5 6 7 8 9 10 11 | |
完成!….ではなく
これでよいならまだ「やめておきましょう」とまでは言わないのですが、このままだとReferenceを再読込する時にread関数でコケます12。
これはBiblioのBinaryインスタンスがReferenceのshow/readを使用して実装されており1、Referenceのread/showが逆関数になっていないためです3。
そこで、取り敢えずshow/readではなくAesonインスタンスを使ってこれを回避します。
回避
Bib.hs これをプロジェクトルートにでも置いてimport qualified Bibしましょう。 趣味でMonoidインスタンスも足してますが、本筋はAesonを使うようにした以外は変わりません。
で、Biblioの部分と、
3 | |
compileの部分を書き換えましょう。
10 | |
完成!
これだけ汚く回避してもハイパーリンク張れないのが(私にとっては)致命的なのでfootnote使った方が幸せでは、って感じます。
以下に引用のサンプルを付けておきます。
参考
1.hackage et al. src/Hakyll/Web/Pandoc/Biblio.hs. at <http://hackage.haskell.org/package/hakyll-4.4.3.2/docs/src/Hakyll-Web-Pandoc-Biblio.html#line-66>