From b106dca0693a26b8f134bb8550fe6ea5a83f3346 Mon Sep 17 00:00:00 2001 From: Emmanuel Ferdman Date: Tue, 4 Nov 2025 10:42:27 +0200 Subject: LaTeX reader: fix spurious paragraph breaks in math environments (#11265) Previously, a math environment with extra space before the `\end` would get rendered with a blank line, which LaTeX treats as a paragraph break. Signed-off-by: Emmanuel Ferdman --- src/Text/Pandoc/Readers/LaTeX/Math.hs | 4 ++-- test/command/latex-math-trailing-space.md | 38 +++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 test/command/latex-math-trailing-space.md diff --git a/src/Text/Pandoc/Readers/LaTeX/Math.hs b/src/Text/Pandoc/Readers/LaTeX/Math.hs index 1f4dc4f8c..f1491656e 100644 --- a/src/Text/Pandoc/Readers/LaTeX/Math.hs +++ b/src/Text/Pandoc/Readers/LaTeX/Math.hs @@ -21,7 +21,7 @@ import qualified Data.Sequence as Seq import Text.Pandoc.Readers.LaTeX.Parsing import Text.Pandoc.TeX import Text.Pandoc.Class -import Text.Pandoc.Shared (trimMath, stripTrailingNewlines) +import Text.Pandoc.Shared (trimMath, trimr) import Text.Pandoc.Parsing hiding (blankline, mathDisplay, mathInline, optional, space, spaces, withRaw, (<|>)) import Control.Applicative ((<|>), optional) @@ -82,7 +82,7 @@ mathEnv :: PandocMonad m => Text -> LP m Text mathEnv name = withMathMode $ do optional blankline res <- manyTill anyTok (end_ name) - return $ stripTrailingNewlines $ untokenize res + return $ trimr $ untokenize res inlineEnvironment :: PandocMonad m => LP m Inlines inlineEnvironment = try $ do diff --git a/test/command/latex-math-trailing-space.md b/test/command/latex-math-trailing-space.md new file mode 100644 index 000000000..6502b120a --- /dev/null +++ b/test/command/latex-math-trailing-space.md @@ -0,0 +1,38 @@ +Test that trailing spaces before \end{equation} don't create spurious paragraph breaks: + +``` +% pandoc -f latex -t latex +\begin{equation} + a + \end{equation} +^D +\begin{equation} + a +\end{equation} +``` + +Same for align environment: + +``` +% pandoc -f latex -t latex +\begin{align} + x &= y \\ + \end{align} +^D +\begin{align} + x &= y \\ +\end{align} +``` + +Test with multiple trailing spaces: + +``` +% pandoc -f latex -t latex +\begin{equation} + a + b + \end{equation} +^D +\begin{equation} + a + b +\end{equation} +``` -- cgit v1.2.3