@@ -462,16 +462,19 @@ verseLine = do
462 rest <- manyTill (choice inlineList) newline
462 rest <- manyTill (choice inlineList) newline
463 return $ trimInlinesF $ mconcat (pure indent : rest)
463 return $ trimInlinesF $ mconcat (pure indent : rest)
465−verseLines :: PandocMonad m => MuseParser m (F Blocks)
467− lns <- many verseLine
468− return $ B.lineBlock <$> sequence lns
470-- | Parse @\<verse>@ tag.
465-- | Parse @\<verse>@ tag.
471verseTag :: PandocMonad m => MuseParser m (F Blocks)
466verseTag :: PandocMonad m => MuseParser m (F Blocks)
472−verseTag = do
467+verseTag = try $ do
473− (_, content) <- htmlBlock "verse"
468+ many spaceChar
474− parseFromString verseLines (intercalate "\n" $ dropSpacePrefix $ splitOn "\n" $ lchop content)
469+ pos <- getPosition
470+ (TagOpen _ _, _) <- htmlTag (~== TagOpen "verse" [])
471+ manyTill spaceChar eol
472+ let indent = count (sourceColumn pos - 1) spaceChar
473+ content <- sequence <$> manyTill (indent >> verseLine) (try $ indent >> endtag)
474+ manyTill spaceChar eol
475+ return $ B.lineBlock <$> content
477+ endtag = void $ htmlTag (~== TagClose "verse")
476-- | Parse @\<comment>@ tag.
479-- | Parse @\<comment>@ tag.
477commentTag :: PandocMonad m => MuseParser m (F Blocks)
480commentTag :: PandocMonad m => MuseParser m (F Blocks)