diff options
| author | Chris Wells <chris@mathematicaster.org> | 2024-12-30 21:23:52 -0600 |
|---|---|---|
| committer | Chris Wells <chris@mathematicaster.org> | 2024-12-30 21:23:52 -0600 |
| commit | 42a2d42eecf551dd1990c97c1ae2586cd46674be (patch) | |
| tree | 873e80c07aca811167aa06caa19de7334c94048d /src/Hakyll/TeX/TikZ.hs | |
| download | main-42a2d42eecf551dd1990c97c1ae2586cd46674be.tar main-42a2d42eecf551dd1990c97c1ae2586cd46674be.tar.gz main-42a2d42eecf551dd1990c97c1ae2586cd46674be.tar.bz2 main-42a2d42eecf551dd1990c97c1ae2586cd46674be.tar.lz main-42a2d42eecf551dd1990c97c1ae2586cd46674be.tar.xz main-42a2d42eecf551dd1990c97c1ae2586cd46674be.tar.zst main-42a2d42eecf551dd1990c97c1ae2586cd46674be.zip | |
Started writing the main utilities for my webpage
Diffstat (limited to 'src/Hakyll/TeX/TikZ.hs')
| -rw-r--r-- | src/Hakyll/TeX/TikZ.hs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/Hakyll/TeX/TikZ.hs b/src/Hakyll/TeX/TikZ.hs new file mode 100644 index 0000000..9df98fd --- /dev/null +++ b/src/Hakyll/TeX/TikZ.hs @@ -0,0 +1,29 @@ +module Hakyll.TeX.TikZ + ( TikzTemplate + , tikzfilter + , tikzBlockFilter + ) where + +import Network.URI.Encode qualified as URI +import Text.Pandoc.Definition +import Text.Pandoc.Walk (walkM) + +import Hakyll + +import Prolog + +import Hakyll.TeX.LaTeX (rubberPipe) + +type TikzTemplate = Identifier + +tikzFilter :: TikzTemplate -> Pandoc -> Compiler Pandoc +tikzFilter = walkM tikzBlockFilter + +-- | Requires `rubber` and `poppler_utils` +tikzBlockFilter :: TikzTemplate -> Block -> Compiler Block +tikzBlockFilter tmpl (CodeBlock info@(_, "tikzpicture":_, _) contents) = do + let imageBlock fname = Para [ Image info [] (toSL fname, "") ] + makeItem (toSL contents) >>= loadAndApplyTemplate tmpl (bodyField "body") >>= + traverse (convSL $ rubberPipe [ "--pdf" ] >=> unixFilterLBS "pdftocairo" [ "-svg", "-", "-" ]) >>= + \(Item _ b) -> imageBlock $ ("data:image/svg+sml;utf8," <>) $ URI.encode $ filter (/= '\n') b +tikzBlockFilter _ x = pure x |
