結論
やめておきましょう。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>