aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Text/Pandoc/Readers/LaTeX.hs15
-rw-r--r--test/command/4624.md30
2 files changed, 44 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs
index 8a8b7dfb6..17d1c4bc9 100644
--- a/src/Text/Pandoc/Readers/LaTeX.hs
+++ b/src/Text/Pandoc/Readers/LaTeX.hs
@@ -2145,7 +2145,20 @@ verbEnv name = withVerbatimMode $ do
skipopts
optional blankline
res <- manyTill anyTok (end_ name)
- return $ stripTrailingNewlines $ toksToString res
+ return $ T.unpack
+ $ stripTrailingNewline
+ $ untokenize
+ $ res
+
+-- Strip single final newline and any spaces following it.
+-- Input is unchanged if it doesn't end with newline +
+-- optional spaces.
+stripTrailingNewline :: Text -> Text
+stripTrailingNewline t =
+ let (b, e) = T.breakOnEnd "\n" t
+ in if T.all (== ' ') e
+ then T.dropEnd 1 b
+ else t
fancyverbEnv :: PandocMonad m => Text -> LP m Blocks
fancyverbEnv name = do
diff --git a/test/command/4624.md b/test/command/4624.md
new file mode 100644
index 000000000..f9aa45596
--- /dev/null
+++ b/test/command/4624.md
@@ -0,0 +1,30 @@
+```
+% pandoc -f latex -t native
+\begin{Verbatim}[key1=value1]
+code1
+
+\end{Verbatim}
+
+
+\begin{lstlisting}[key2=value2]
+code2
+
+\end{lstlisting}
+
+\begin{verbatim}
+code3
+\end{verbatim}
+
+\begin{verbatim}
+code4
+ \end{verbatim}
+
+\begin{verbatim}
+code5\end{verbatim}
+^D
+[CodeBlock ("",[],[("key1","value1")]) "code1\n"
+,CodeBlock ("",[],[("key2","value2")]) "code2\n "
+,CodeBlock ("",[],[]) "code3"
+,CodeBlock ("",[],[]) "code4"
+,CodeBlock ("",[],[]) "code5"]
+```