aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn MacFarlane <[email protected]>2023-03-26 13:37:08 -0700
committerJohn MacFarlane <[email protected]>2023-03-26 21:32:31 -0700
commit4780b4760d26e39597ab6868b0ddca1e64b609f6 (patch)
tree40e2b1cafad0fb2d2e5c4b1f69459a52a3066fce /src
parentcd6b3bde622c93eea763e981692b4bc53dd5e5df (diff)
More Typst writer improvements.
+ Update manual with variables for Typst. + Split `lang` metadata into separate `lang` and `region` for Typst. + Fix label positioning in Divs. + Fix text customizations (lang, region, font, size) so they actually work. + Update tests and man page.
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Writers/Typst.hs14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/Text/Pandoc/Writers/Typst.hs b/src/Text/Pandoc/Writers/Typst.hs
index 12364ce37..2663a4a37 100644
--- a/src/Text/Pandoc/Writers/Typst.hs
+++ b/src/Text/Pandoc/Writers/Typst.hs
@@ -28,7 +28,7 @@ import Data.Text (Text)
import Data.List (intercalate, intersperse)
import qualified Data.Text as T
import Control.Monad.State ( StateT, evalStateT, gets, modify )
-import Text.Pandoc.Writers.Shared ( metaToContext, defField, setField,
+import Text.Pandoc.Writers.Shared ( metaToContext, defField, resetField,
toLegacyTable, lookupMetaString )
import Text.Pandoc.Shared (isTightList, orderedListMarkers)
import Text.Pandoc.Writers.Math (convertMath)
@@ -36,6 +36,7 @@ import qualified Text.TeXMath as TM
import Text.DocLayout
import Text.DocTemplates (renderTemplate)
import Text.Pandoc.Extensions (Extension(..))
+import Text.Collate.Lang (Lang(..), parseLang)
-- | Convert Pandoc to Typst.
writeTypst :: PandocMonad m => WriterOptions -> Pandoc -> m Text
@@ -73,7 +74,12 @@ pandocToTypst options (Pandoc meta blocks) = do
$ defField "toc" (writerTableOfContents options)
$ (case lookupMetaString "lang" meta of
"" -> id
- lang -> setField "lang" $ T.takeWhile (/='-') lang)
+ lang ->
+ case parseLang lang of
+ Left _ -> id
+ Right l ->
+ resetField "lang" (langLanguage l) .
+ maybe id (resetField "region") (langRegion l))
$ (if writerNumberSections options
then defField "numbering" ("1.1.1.1.1" :: Text)
else id)
@@ -184,11 +190,11 @@ blockToTypst block =
let lab = toLabel ident
return $ "#figure(" <> nest 2 (brackets contents <> "," <> cr <>
("caption: [" $$ nest 2 caption $$ "]"))
- <> cr <> ")" <> lab <> blankline
+ $$ ")" $$ lab $$ blankline
Div (ident,_,_) blocks -> do
let lab = toLabel ident
contents <- blocksToTypst blocks
- return $ lab <> contents
+ return $ lab $$ contents
defListItemToTypst :: PandocMonad m => ([Inline], [[Block]]) -> TW m (Doc Text)
defListItemToTypst (term, defns) = do