aboutsummaryrefslogtreecommitdiff
path: root/src/Text
diff options
context:
space:
mode:
authorAlbert Krewinkel <albert@zeitkraut.de>2016-06-26 20:19:18 +0200
committerAlbert Krewinkel <albert@zeitkraut.de>2016-06-26 20:42:22 +0200
commit0f3f5ce1a1569d02dcb858b45dca55cb5d488358 (patch)
tree3f39a2dce21a5a3b6ae86eb6adf2607c6d9cd03d /src/Text
parent7f4ee830c985b94cafe594c8cdfe02cf418f95eb (diff)
downloadpandoc-0f3f5ce1a1569d02dcb858b45dca55cb5d488358.tar.gz
Org reader: support figure labels
Figure labels given as `#+LABEL: thelabel` are used as the ID of the respective image. This allows e.g. the LaTeX to add proper `\label` markup. This fixes half of #2496 and #2999.
Diffstat (limited to 'src/Text')
-rw-r--r--src/Text/Pandoc/Readers/Org/Blocks.hs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Org/Blocks.hs b/src/Text/Pandoc/Readers/Org/Blocks.hs
index f8ff3f928..32deb1fc8 100644
--- a/src/Text/Pandoc/Readers/Org/Blocks.hs
+++ b/src/Text/Pandoc/Readers/Org/Blocks.hs
@@ -98,6 +98,7 @@ block = choice [ mempty <$ blanklines
-- | Attributes that may be added to figures (like a name or caption).
data BlockAttributes = BlockAttributes
{ blockAttrName :: Maybe String
+ , blockAttrLabel :: Maybe String
, blockAttrCaption :: Maybe (F Inlines)
, blockAttrKeyValues :: [(String, String)]
}
@@ -117,12 +118,14 @@ blockAttributes = try $ do
let caption = foldl' (appendValues "CAPTION") Nothing kv
let kvAttrs = foldl' (appendValues "ATTR_HTML") Nothing kv
let name = lookup "NAME" kv
+ let label = lookup "LABEL" kv
caption' <- maybe (return Nothing)
(fmap Just . parseFromString inlines)
caption
kvAttrs' <- parseFromString keyValues . (++ "\n") $ fromMaybe mempty kvAttrs
return $ BlockAttributes
{ blockAttrName = name
+ , blockAttrLabel = label
, blockAttrCaption = caption'
, blockAttrKeyValues = kvAttrs'
}
@@ -131,6 +134,7 @@ blockAttributes = try $ do
attrCheck attr =
case attr of
"NAME" -> True
+ "LABEL" -> True
"CAPTION" -> True
"ATTR_HTML" -> True
_ -> False
@@ -415,9 +419,10 @@ figure = try $ do
guard . not . isNothing . blockAttrCaption $ figAttrs
guard (isImageFilename src)
let figName = fromMaybe mempty $ blockAttrName figAttrs
+ let figLabel = fromMaybe mempty $ blockAttrLabel figAttrs
let figCaption = fromMaybe mempty $ blockAttrCaption figAttrs
let figKeyVals = blockAttrKeyValues figAttrs
- let attr = (mempty, mempty, figKeyVals)
+ let attr = (figLabel, mempty, figKeyVals)
return $ (B.para . B.imageWith attr src (withFigPrefix figName) <$> figCaption)
where
withFigPrefix :: String -> String