@@ -40,6 +40,7 @@ data WriterState =
4040 , stOrderedListLevel :: Int -- level of ordered list
4141 , stOptions :: WriterOptions -- writer options
4242 , stHasCslRefs :: Bool -- has CSL citations
43+ , stCslHangingIndent :: Bool -- CSL hanging indent
4344 }
4445
4546data Tabl = Xtb | Ntb deriving (Show, Eq)
@@ -54,6 +55,7 @@ writeConTeXt options document =
5455 , stOrderedListLevel = 0
5556 , stOptions = options
5657 , stHasCslRefs = False
58+ , stCslHangingIndent = False
5759 }
5860 in evalStateT (pandocToConTeXt options document) defaultWriterState
5961
@@ -93,6 +95,7 @@ pandocToConTeXt options (Pandoc meta blocks) = do
9395 $ defField "layout" layoutFromMargins
9496 $ defField "number-sections" (writerNumberSections options)
9597 $ defField "csl-refs" (stHasCslRefs st)
98+ $ defField "csl-hanging-indent" (stCslHangingIndent st)
9699 $ maybe id (\l ->
97100 defField "context-lang" (literal l :: Doc Text)) mblang
98101 $ (case T.unpack . render Nothing <$>
@@ -187,8 +190,9 @@ blockToConTeXt (CodeBlock _ str) =
187190blockToConTeXt b@(RawBlock f str)
188191 | f == Format "context" || f == Format "tex" = return $ literal str <> blankline
189192 | otherwise = empty <$ report (BlockNotRendered b)
190−blockToConTeXt (Div ("refs",_,_) bs) = do
191− modify $ \st -> st{ stHasCslRefs = True }
193+blockToConTeXt (Div ("refs",classes,_) bs) = do
194+ modify $ \st -> st{ stHasCslRefs = True
195+ , stCslHangingIndent = "hanging-indent" `elem` classes }
192196 inner <- blockListToConTeXt bs
193197 return $ "\\startcslreferences" $$ inner $$ "\\stopcslreferences"
194198blockToConTeXt (Div (ident,_,kvs) bs) = do