summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Writers/Typst.hs26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/Text/Pandoc/Writers/Typst.hs b/src/Text/Pandoc/Writers/Typst.hs
index daa286dbf..9fc58b368 100644
--- a/src/Text/Pandoc/Writers/Typst.hs
+++ b/src/Text/Pandoc/Writers/Typst.hs
@@ -275,15 +275,23 @@ inlineToTypst inline =
-- Note: this loses prefix
then mconcat <$> mapM toCite citations
else inlinesToTypst inlines
- Link _attrs inlines (src,_tit) -> do
- contents <- inlinesToTypst inlines
- let dest = case T.uncons src of
- Just ('#', ident) -> toLabel ArgumentLabel ident
- _ -> doubleQuoted src
- return $ "#link" <> parens dest <>
- (if inlines == [Str src]
- then mempty
- else nowrap $ brackets contents) <> endCode
+ Link (_,_,kvs) inlines (src,_tit) -> do
+ case lookup "reference-type" kvs of
+ Just "ref"
+ | Just ('#', ident) <- T.uncons src
+ -> if T.all isIdentChar ident
+ then pure $ literal $ "@" <> ident
+ else pure $ "#ref" <> parens (toLabel ArgumentLabel ident)
+ <> endCode
+ _ -> do
+ contents <- inlinesToTypst inlines
+ let dest = case T.uncons src of
+ Just ('#', ident) -> toLabel ArgumentLabel ident
+ _ -> doubleQuoted src
+ pure $ "#link" <> parens dest <>
+ (if inlines == [Str src]
+ then mempty
+ else nowrap $ brackets contents) <> endCode
Image (_,_,kvs) _inlines (src,_tit) -> do
opts <- gets stOptions
let mbHeight = lookup "height" kvs