git.iko.soy/typeable/pandoc
on master help sign in
ConTeXt writer: set default layout based on margin-left, etc.
2973450John MacFarlane
src/Text/Pandoc/Writers/ConTeXt.hs+10
@@ -37,6 +37,7 @@ import Text.Pandoc.Walk (query)
37import Text.Printf ( printf )
37import Text.Printf ( printf )
38import Data.List ( intercalate, intersperse )
38import Data.List ( intercalate, intersperse )
39import Data.Char ( ord )
39import Data.Char ( ord )
40+import Data.Maybe ( catMaybes )
40import Control.Monad.State
41import Control.Monad.State
41import Text.Pandoc.Pretty
42import Text.Pandoc.Pretty
42import Text.Pandoc.ImageSize
43import Text.Pandoc.ImageSize
@@ -72,6 +73,14 @@ pandocToConTeXt options (Pandoc meta blocks) = do
72 meta
73 meta
73 body <- mapM (elementToConTeXt options) $ hierarchicalize blocks
74 body <- mapM (elementToConTeXt options) $ hierarchicalize blocks
74 let main = (render colwidth . vcat) body
75 let main = (render colwidth . vcat) body
76+ let layoutFromMargins = intercalate [','] $ catMaybes $
77+ map (\(x,y) ->
78+ ((x ++ "=") ++) <$> getField y metadata)
79+ [("leftmargin","margin-left")
80+ ,("rightmargin","margin-right")
81+ ,("top","margin-top")
82+ ,("bottom","margin-bottom")
83+ ]
75 let context = defField "toc" (writerTableOfContents options)
84 let context = defField "toc" (writerTableOfContents options)
76 $ defField "placelist" (intercalate ("," :: String) $
85 $ defField "placelist" (intercalate ("," :: String) $
77 take (writerTOCDepth options + if writerChapters options
86 take (writerTOCDepth options + if writerChapters options
@@ -80,6 +89,7 @@ pandocToConTeXt options (Pandoc meta blocks) = do
80 ["chapter","section","subsection","subsubsection",
89 ["chapter","section","subsection","subsubsection",
81 "subsubsubsection","subsubsubsubsection"])
90 "subsubsubsection","subsubsubsubsection"])
82 $ defField "body" main
91 $ defField "body" main
92+ $ defField "layout" layoutFromMargins
83 $ defField "number-sections" (writerNumberSections options)
93 $ defField "number-sections" (writerNumberSections options)
84 $ metadata
94 $ metadata
85 let context' = defField "context-lang" (maybe "" (fromBcp47 . splitBy (=='-')) $
95 let context' = defField "context-lang" (maybe "" (fromBcp47 . splitBy (=='-')) $