aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2019-03-29 10:04:22 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2019-03-29 10:04:22 -0700
commit93ee73e1dc0405ddf71417d907656c2a8726f133 (patch)
treef3fe6f16220dbbc4c7ca45e650af2e83ce771d4c
parent5fa4ea8eb1e712f95a1c273e36dd4bbef19d6bc9 (diff)
downloadpandoc-93ee73e1dc0405ddf71417d907656c2a8726f133.tar.gz
LaTeX writer: Avoid inadvertently creating ?` or !` ligatures.
These are upside down ? and !, resp. Closes #5407.
-rw-r--r--src/Text/Pandoc/Writers/LaTeX.hs8
-rw-r--r--test/command/5407.md14
2 files changed, 22 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs
index 0ef04db3f..d0c08815c 100644
--- a/src/Text/Pandoc/Writers/LaTeX.hs
+++ b/src/Text/Pandoc/Writers/LaTeX.hs
@@ -340,6 +340,14 @@ stringToLaTeX context zs = do
-> cs <> xs
_ -> cs <> "{}" <> xs
in case x of
+ '?' | ligatures -> -- avoid ?` ligature
+ case xs of
+ '`':_ -> emits "?{}"
+ _ -> emitc x
+ '!' | ligatures -> -- avoid !` ligature
+ case xs of
+ '`':_ -> emits "!{}"
+ _ -> emitc x
'{' -> emits "\\{"
'}' -> emits "\\}"
'`' | ctx == CodeString -> emitcseq "\\textasciigrave"
diff --git a/test/command/5407.md b/test/command/5407.md
new file mode 100644
index 000000000..ac9bed29d
--- /dev/null
+++ b/test/command/5407.md
@@ -0,0 +1,14 @@
+```
+% pandoc -t latex --wrap=preserve
+hi there?“
+hi there!“
+hi there?‘
+hi there!‘
+hi there!
+^D
+hi there?{}``
+hi there!{}``
+hi there?{}`
+hi there!{}`
+hi there!
+```