aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Readers/Vimwiki.hs
diff options
context:
space:
mode:
authorYuchen Pei <ycpei@users.noreply.github.com>2017-07-12 11:19:49 -0400
committerJohn MacFarlane <jgm@berkeley.edu>2017-07-12 17:19:49 +0200
commit8b502dd50ff842bdbbf346a67a607d1a7905bda3 (patch)
treef4fc0988f68c028ac9afa08956e333b14f3cce45 /src/Text/Pandoc/Readers/Vimwiki.hs
parentde117fbd9e32e890663eb831b47fd91fcd6419a0 (diff)
downloadpandoc-8b502dd50ff842bdbbf346a67a607d1a7905bda3.tar.gz
Fixed #3760. (#3784)
Using the same solution as in the LaTeX reader: equation -> displaymath align -> displaymath \begin{aligned} ... \end{aligned} etc..
Diffstat (limited to 'src/Text/Pandoc/Readers/Vimwiki.hs')
-rw-r--r--src/Text/Pandoc/Readers/Vimwiki.hs32
1 files changed, 26 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Readers/Vimwiki.hs b/src/Text/Pandoc/Readers/Vimwiki.hs
index 11faedb24..52bf37d35 100644
--- a/src/Text/Pandoc/Readers/Vimwiki.hs
+++ b/src/Text/Pandoc/Readers/Vimwiki.hs
@@ -75,7 +75,8 @@ import qualified Text.Pandoc.Builder
as B (headerWith, str, space, strong, emph, strikeout, code, link, image,
spanWith, para, horizontalRule, blockQuote, bulletList, plain,
orderedList, simpleTable, softbreak, codeBlockWith, imageWith, divWith,
- setMeta, definitionList, superscript, subscript)
+ setMeta, definitionList, superscript, subscript, displayMath,
+ math)
import Text.Pandoc.Class (PandocMonad(..))
import Text.Pandoc.Definition (Pandoc(..), Inline(Space),
Block(BulletList, OrderedList), Attr, nullMeta, Meta, ListNumberStyle(..),
@@ -265,13 +266,32 @@ displayMath :: PandocMonad m => VwParser m Blocks
displayMath = try $ do
many spaceChar >> string "{{$"
mathTag <- option "" mathTagParser
+ many space
contents <- manyTill anyChar (try (char '\n' >> many spaceChar >> string "}}$"
>> many spaceChar >> newline))
let contentsWithTags
- | mathTag == "" = "\\[" ++ contents ++ "\n\\]"
- | otherwise = "\\begin{" ++ mathTag ++ "}" ++ contents
+ | mathTag == "" = contents
+ | otherwise = "\\begin{" ++ mathTag ++ "}\n" ++ contents
++ "\n\\end{" ++ mathTag ++ "}"
- return $ B.plain $ B.str contentsWithTags
+ return $ B.para $ B.displayMath contentsWithTags
+
+
+mathTagLaTeX :: String -> String
+mathTagLaTeX s = case s of
+ "equation" -> ""
+ "equation*" -> ""
+ "gather" -> "gathered"
+ "gather*" -> "gathered"
+ "multline" -> "gathered"
+ "multline*" -> "gathered"
+ "eqnarray" -> "aligned"
+ "eqnarray*" -> "aligned"
+ "align" -> "aligned"
+ "align*" -> "aligned"
+ "alignat" -> "aligned"
+ "alignat*" -> "aligned"
+ _ -> s
+
mixedList :: PandocMonad m => VwParser m Blocks
mixedList = try $ do
@@ -598,7 +618,7 @@ inlineMath :: PandocMonad m => VwParser m Inlines
inlineMath = try $ do
char '$'
contents <- many1Till (noneOf "\n") (char '$')
- return $ B.str $ "\\(" ++ contents ++ "\\)"
+ return $ B.math contents
tag :: PandocMonad m => VwParser m Inlines
tag = try $ do
@@ -650,4 +670,4 @@ mathTagParser = do
s <- try $ lookAhead (char '%' >> (manyTill (noneOf spaceChars)
(try $ char '%' >> many (noneOf $ '%':spaceChars) >> space)))
char '%' >> string s >> char '%'
- return s
+ return $ mathTagLaTeX s