diff options
author | John MacFarlane <jgm@berkeley.edu> | 2020-01-10 08:26:33 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2020-01-10 08:26:33 -0800 |
commit | 42b915e65624df9f910769604889a3c1c9fc6845 (patch) | |
tree | 510ad0b6e5831844ada4f1cd044304a2ad3105f8 | |
parent | 6cf7a9cd8e7ca2788b7da52c331e23e4bb6eba5b (diff) | |
download | pandoc-42b915e65624df9f910769604889a3c1c9fc6845.tar.gz |
LaTeX reader: allow beamer overlays for all commands in all raw tex.
This affecs parsing of raw tex in LaTeX and in Markdown and
other formats.
Closes #6043.
-rw-r--r-- | src/Text/Pandoc/Readers/LaTeX.hs | 20 | ||||
-rw-r--r-- | test/command/6043.md | 8 |
2 files changed, 18 insertions, 10 deletions
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index bfade7284..c7c778193 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -773,7 +773,8 @@ inlineCommand' = try $ do Tok _ (CtrlSeq name) cmd <- anyControlSeq guard $ name /= "begin" && name /= "end" star <- option "" ("*" <$ symbol '*' <* optional sp) - let name' = name <> star + overlay <- option "" overlaySpecification + let name' = name <> star <> overlay let names = ordNub [name', name] -- check non-starred as fallback let raw = do guard $ isInlineCommand name || not (isBlockCommand name) @@ -802,19 +803,18 @@ rawopt = try $ do return $ "[" <> inner <> "]" skipopts :: PandocMonad m => LP m () -skipopts = skipMany (overlaySpecification <|> void rawopt) +skipopts = skipMany (void overlaySpecification <|> void rawopt) -- opts in angle brackets are used in beamer -overlaySpecification :: PandocMonad m => LP m () +overlaySpecification :: PandocMonad m => LP m Text overlaySpecification = try $ do symbol '<' - ts <- manyTill overlayTok (symbol '>') - guard $ case ts of - -- see issue #3368 - [Tok _ Word s] | T.all isLetter s -> s `elem` - ["beamer","presentation", "trans", - "handout","article", "second"] - _ -> True + t <- untokenize <$> manyTill overlayTok (symbol '>') + -- see issue #3368 + guard $ not (T.all isLetter t) || + t `elem` ["beamer","presentation", "trans", + "handout","article", "second"] + return $ "<" <> t <> ">" overlayTok :: PandocMonad m => LP m Tok overlayTok = diff --git a/test/command/6043.md b/test/command/6043.md new file mode 100644 index 000000000..a3f39a44b --- /dev/null +++ b/test/command/6043.md @@ -0,0 +1,8 @@ +``` +% pandoc -t beamer +\textbf<1>{Bold Text On Slide1} +^D +\begin{frame} +\textbf<1>{Bold Text On Slide1} +\end{frame} +``` |