From d68283dc00a5a7285432a528339d1cb26c1a2d91 Mon Sep 17 00:00:00 2001 From: Alex R Date: Fri, 13 Feb 2015 09:28:20 -0500 Subject: [PATCH 1/2] Add special case to rendering for TeXCommS. Update `render` in Render.hs so that rendering TeXSeq inserts spaces after TeXCommS when necessary. --- Text/LaTeX/Base/Render.hs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Text/LaTeX/Base/Render.hs b/Text/LaTeX/Base/Render.hs index e3fae51..2c42ca3 100644 --- a/Text/LaTeX/Base/Render.hs +++ b/Text/LaTeX/Base/Render.hs @@ -22,10 +22,11 @@ module Text.LaTeX.Base.Render , showFloat ) where -import Data.Text (Text,lines,unlines) +import Data.Text (Text,lines,unlines,uncons) import Text.LaTeX.Base.Syntax import Text.LaTeX.Base.Class import Data.String +import Data.Char (isAlpha) import Data.Text.Encoding import Data.List (intersperse) import qualified Data.ByteString as B @@ -136,6 +137,11 @@ instance Render LaTeX where in if null xs then "%\n" else Data.Text.unlines $ fmap ("%" <>) xs + render (TeXSeq l1@(TeXCommS _) l2) = let r2 = render l2 in + render l1 <> (case uncons r2 of + Just (c,_) | isIdentChar c -> " " + _ -> "") <> r2 + where isIdentChar = isAlpha render (TeXSeq l1 l2) = render l1 <> render l2 render TeXEmpty = mempty From dcbf50e9f88eaff82330f78551be23d283c6d365 Mon Sep 17 00:00:00 2001 From: Alex Rozenshteyn Date: Fri, 13 Feb 2015 10:21:01 -0500 Subject: [PATCH 2/2] Tweak failing test. The "render . parse = id" property no longer holds. Well, it never held (see #48). Rendering a document that was TeXRaw may produce a string with spacing that will change after one "render . parse" cycle. --- test/Main.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Main.hs b/test/Main.hs index 1938922..ea7d6f9 100644 --- a/test/Main.hs +++ b/test/Main.hs @@ -19,7 +19,7 @@ main = defaultMain $ testGroup "HaTeX" ] , testGroup "Parser" [ QC.testProperty "render . parse = id" $ - \l -> let t = render (l :: LaTeX) + \l -> let t = render . parse . render (l :: LaTeX) in fmap render (parseLaTeX t) == Right t ] ]