@@ -22,6 +22,7 @@ module Text.Pandoc.Writers.LaTeX.Util (
24import Control.Applicative ((<|>))
24import Control.Applicative ((<|>))
25+import Control.Monad (when)
25import Text.Pandoc.Class (PandocMonad, toLang)
26import Text.Pandoc.Class (PandocMonad, toLang)
26import Text.Pandoc.Options (WriterOptions(..), isEnabled)
27import Text.Pandoc.Options (WriterOptions(..), isEnabled)
27import Text.Pandoc.Writers.LaTeX.Types (LW, WriterState(..))
28import Text.Pandoc.Writers.LaTeX.Types (LW, WriterState(..))
@@ -30,7 +31,7 @@ import Text.Pandoc.Highlighting (toListingsLanguage)
30import Text.DocLayout
31import Text.DocLayout
31import Text.Pandoc.Definition
32import Text.Pandoc.Definition
32import Text.Pandoc.ImageSize (showFl)
33import Text.Pandoc.ImageSize (showFl)
33−import Control.Monad.State.Strict (gets)
34+import Control.Monad.State.Strict (gets, modify)
34import Data.Text (Text)
35import Data.Text (Text)
35import qualified Data.Text as T
36import qualified Data.Text as T
36import Text.Pandoc.Extensions (Extension(Ext_smart))
37import Text.Pandoc.Extensions (Extension(Ext_smart))
@@ -49,6 +50,8 @@ data StringContext = TextString
49stringToLaTeX :: PandocMonad m => StringContext -> Text -> LW m Text
50stringToLaTeX :: PandocMonad m => StringContext -> Text -> LW m Text
50stringToLaTeX context zs = do
51stringToLaTeX context zs = do
51 opts <- gets stOptions
52 opts <- gets stOptions
53+ when ('\x200c' `elemText` zs) $
54+ modify (\s -> s { stZwnj = True })
52 return $ T.pack $
55 return $ T.pack $
53 foldr (go opts context) mempty $ T.unpack $
56 foldr (go opts context) mempty $ T.unpack $
54 if writerPreferAscii opts
57 if writerPreferAscii opts
@@ -270,5 +273,3 @@ mbBraced :: Text -> Text
270mbBraced x = if not (T.all isAlphaNum x)
273mbBraced x = if not (T.all isAlphaNum x)
271 then "{" <> x <> "}"
274 then "{" <> x <> "}"