Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Hakyll.Web.Pandoc.Biblio
Description
Wraps pandocs bibiliography handling
In order to add a bibliography, you will need a bibliography file (e.g.
.bib
) and a CSL file (.csl
). Both need to be compiled with their
respective compilers (biblioCompiler
and cslCompiler
). Then, you can
refer to these files when you use readPandocBiblio
. This function also
takes the reader options for completeness -- you can use
defaultHakyllReaderOptions
if you're unsure. If you already read the
source into a Pandoc
type and need to add processing for the bibliography,
you can use processPandocBiblio
instead.
pandocBiblioCompiler
is a convenience wrapper which works like pandocCompiler
,
but also takes paths to compiled bibliography and csl files;
pandocBibliosCompiler
is similar but instead takes a glob pattern for bib files.
Synopsis
- newtype CSL = CSL {
- unCSL :: ByteString
- cslCompiler :: Compiler (Item CSL)
- newtype Biblio = Biblio {}
- biblioCompiler :: Compiler (Item Biblio)
- readPandocBiblio :: ReaderOptions -> Item CSL -> Item Biblio -> Item String -> Compiler (Item Pandoc)
- readPandocBiblios :: ReaderOptions -> Item CSL -> [Item Biblio] -> Item String -> Compiler (Item Pandoc)
- processPandocBiblio :: Item CSL -> Item Biblio -> Item Pandoc -> Compiler (Item Pandoc)
- processPandocBiblios :: Item CSL -> [Item Biblio] -> Item Pandoc -> Compiler (Item Pandoc)
- pandocBiblioCompiler :: String -> String -> Compiler (Item String)
- pandocBibliosCompiler :: String -> String -> Compiler (Item String)
Documentation
Constructors
CSL | |
Fields
|
Constructors
Biblio | |
Fields |
readPandocBiblio :: ReaderOptions -> Item CSL -> Item Biblio -> Item String -> Compiler (Item Pandoc) Source #
readPandocBiblios :: ReaderOptions -> Item CSL -> [Item Biblio] -> Item String -> Compiler (Item Pandoc) Source #
processPandocBiblio :: Item CSL -> Item Biblio -> Item Pandoc -> Compiler (Item Pandoc) Source #
Process a bibliography file with the given style.
This function supports pandoc's
nocite
functionality when there is a nocite
metadata field present.
Example
In your main function, first compile the respective files:
main = hakyll $ do … match "style.csl" $ compile cslCompiler match "bib.bib" $ compile biblioCompiler
Then, create a function like the following:
processBib :: Item Pandoc -> Compiler (Item Pandoc) processBib pandoc = do csl <- load @CSL "bib/style.csl" bib <- load @Biblio "bib/bibliography.bib" processPandocBiblio csl bib pandoc
Now, feed this function to your pandoc compiler:
myCompiler :: Compiler (Item String) myCompiler = pandocItemCompilerWithTransformM myReader myWriter processBib
processPandocBiblios :: Item CSL -> [Item Biblio] -> Item Pandoc -> Compiler (Item Pandoc) Source #
Like processPandocBiblio
, which see, but support multiple bibliography
files.