@@ -218,6 +218,7 @@ block = choice [ mempty <$ blanklines
218 , return <$> hline
218 , return <$> hline
221 , noteBlock
222 , noteBlock
222 , paraOrPlain
223 , paraOrPlain
223 ] <?> "block"
224 ] <?> "block"
@@ -544,6 +545,41 @@ setAligns :: [Alignment]
544 -> F OrgTable
545 -> F OrgTable
545setAligns aligns t = return $ t{ orgTableAlignments = aligns }
546setAligns aligns t = return $ t{ orgTableAlignments = aligns }
552+latexFragment :: OrgParser (F Blocks)
553+latexFragment = try $ do
554+ envName <- latexEnvStart
555+ content <- mconcat <$> manyTill anyLineNewline (latexEnd envName)
556+ return . return $ B.rawBlock "latex" (content `inLatexEnv` envName)
558+ c `inLatexEnv` e = mconcat [ "\\begin{", e, "}\n"
560+ , "\\end{", e, "}\n"
563+latexEnvStart :: OrgParser String
564+latexEnvStart = try $ do
565+ skipSpaces *> string "\\begin{"
570+latexEnd :: String -> OrgParser ()
571+latexEnd envName = try $
573+ <* string ("\\end{" ++ envName ++ "}")
576+-- | Parses a LaTeX environment name.
577+latexEnvName :: OrgParser String
578+latexEnvName = try $ do
579+ mappend <$> many1 alphaNum
580+ <*> option "" (string "*")
548-- Footnote defintions
584-- Footnote defintions
@@ -683,7 +719,9 @@ str :: OrgParser (F Inlines)
683str = return . B.str <$> many1 (noneOf $ specialChars ++ "\n\r ")
719str = return . B.str <$> many1 (noneOf $ specialChars ++ "\n\r ")
684 <* updateLastStrPos
720 <* updateLastStrPos
686−-- an endline character that can be treated as a space, not a structural break
722+-- | An endline character that can be treated as a space, not a structural
723+-- break. This should reflect the values of the Emacs variable
724+-- @org-element-pagaraph-separate@.
687endline :: OrgParser (F Inlines)
725endline :: OrgParser (F Inlines)
688endline = try $ do
726endline = try $ do
@@ -695,6 +733,7 @@ endline = try $ do
695 notFollowedBy' drawerStart
733 notFollowedBy' drawerStart
696 notFollowedBy' headerStart
734 notFollowedBy' headerStart
697 notFollowedBy' metaLineStart
735 notFollowedBy' metaLineStart
736+ notFollowedBy' latexEnvStart
698 notFollowedBy' commentLineStart
737 notFollowedBy' commentLineStart
699 notFollowedBy' bulletListStart
738 notFollowedBy' bulletListStart
700 notFollowedBy' orderedListStart
739 notFollowedBy' orderedListStart