From 135992dbd0ca01841194eaf207ce9c6340417d0b Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sun, 20 Sep 2026 18:13:06 +0000 Subject: [PATCH] LaTeX writer: don't unpack code string to choose lstinline delimiter. Scan the Text directly for each candidate delimiter (with early exit) instead of unpacking the whole string and using list difference. Co-Authored-By: Claude --- src/Text/Pandoc/Writers/LaTeX.hs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs index 4facd03d1..c302f70ac 100644 --- a/src/Text/Pandoc/Writers/LaTeX.hs +++ b/src/Text/Pandoc/Writers/LaTeX.hs @@ -33,7 +33,7 @@ import Control.Monad import Crypto.Hash (hashWith, MD5(MD5)) import Data.Containers.ListUtils (nubOrd) import Data.Char (isDigit, isAscii, isLetter) -import Data.List (intersperse, partition, (\\)) +import Data.List (find, intersperse, partition) import qualified Data.Set as Set import Data.Maybe (catMaybes, fromMaybe, isJust, listToMaybe, mapMaybe, isNothing) import Data.Monoid (Any (..)) @@ -990,9 +990,9 @@ inlineToLaTeX (Code (_,classes,kvs) str) = do listingsopts) <> "]" inNote <- gets stInNote when inNote $ modify $ \s -> s{ stVerbInNote = True } - let chr = case "!\"'()*,-./:;?@" \\ T.unpack str of - (c:_) -> c - [] -> '!' + let chr = fromMaybe '!' $ + find (\c -> not (T.any (== c) str)) + ("!\"'()*,-./:;?@" :: String) let isEscapable '\\' = True isEscapable '{' = True isEscapable '}' = True