From 826f487818e6b36ec1e6feeafaa2e9449ce47695 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Mon, 14 Jul 2025 11:52:22 -0700 Subject: Typst writer: set lang attribute in Divs. Closes #10965. --- src/Text/Pandoc/Writers/Typst.hs | 10 ++++++++- test/command/10965.md | 47 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 test/command/10965.md diff --git a/src/Text/Pandoc/Writers/Typst.hs b/src/Text/Pandoc/Writers/Typst.hs index 775522ff2..90409cbbf 100644 --- a/src/Text/Pandoc/Writers/Typst.hs +++ b/src/Text/Pandoc/Writers/Typst.hs @@ -342,9 +342,17 @@ blockToTypst block = Div (ident,_,kvs) blocks -> do let lab = toLabel FreestandingLabel ident let (typstAttrs,typstTextAttrs) = pickTypstAttrs kvs + -- Handle lang attribute for Div elements + let langAttrs = case lookup "lang" kvs of + Nothing -> [] + Just lang -> case parseLang lang of + Left _ -> [] + Right l -> [("lang", + tshow (langLanguage l))] + let allTypstTextAttrs = typstTextAttrs ++ langAttrs contents <- blocksToTypst blocks return $ "#block" <> toTypstPropsListParens typstAttrs <> "[" - $$ toTypstPoundSetText typstTextAttrs <> contents + $$ toTypstPoundSetText allTypstTextAttrs <> contents $$ ("]" <+> lab) defListItemToTypst :: PandocMonad m => ([Inline], [[Block]]) -> TW m (Doc Text) diff --git a/test/command/10965.md b/test/command/10965.md new file mode 100644 index 000000000..565723278 --- /dev/null +++ b/test/command/10965.md @@ -0,0 +1,47 @@ +``` +% pandoc -f markdown -t typst +::: {lang="en"} +This text should be in English. +::: +^D +#block[ +#set text(lang: "en"); This text should be in English. + +] +``` + +``` +% pandoc -f markdown -t typst +::: {lang="fr"} +Ce texte devrait être en français. +::: +^D +#block[ +#set text(lang: "fr"); Ce texte devrait être en français. + +] +``` + +``` +% pandoc -f markdown -t typst +::: {lang="de-DE"} +Dieser Text sollte auf Deutsch sein. +::: +^D +#block[ +#set text(lang: "de"); Dieser Text sollte auf Deutsch sein. + +] +``` + +``` +% pandoc -f markdown -t typst +::: {lang=""} +This should not have lang set. +::: +^D +#block[ +This should not have lang set. + +] +``` -- cgit v1.2.3