@@ -34,7 +34,6 @@ import Text.Pandoc.Definition
3434import Text.Pandoc.Shared
3535import Text.Printf ( printf )
3636import Data.List ( (\\), isInfixOf )
37−import Data.Char ( isAlphaNum )
3837import qualified Data.Set as S
3938import Control.Monad.State
4039
@@ -187,7 +186,7 @@ tableRowToLaTeX cols =
187186listItemToLaTeX lst = blockListToLaTeX lst >>= (return . ("\\item "++))
188187
189188defListItemToLaTeX (term, def) = do
190− term' <- inlineListToLaTeX term
189+ term' <- inlineListToLaTeX $ deVerb term
191190 def' <- blockListToLaTeX def
192191 return $ "\\item[" ++ term' ++ "] " ++ def'
193192
@@ -206,28 +205,31 @@ isQuoted _ = False
206205inlineToLaTeX :: Inline -- ^ Inline to convert
207206 -> State WriterState String
208207inlineToLaTeX (Emph lst) = do
209− contents <- inlineListToLaTeX lst
208+ contents <- inlineListToLaTeX $ deVerb lst
210209 return $ "\\emph{" ++ contents ++ "}"
211210inlineToLaTeX (Strong lst) = do
212− contents <- inlineListToLaTeX lst
211+ contents <- inlineListToLaTeX $ deVerb lst
213212 return $ "\\textbf{" ++ contents ++ "}"
214213inlineToLaTeX (Strikeout lst) = do
215− contents <- inlineListToLaTeX lst
214+ contents <- inlineListToLaTeX $ deVerb lst
216215 addToHeader "\\usepackage[normalem]{ulem}"
217216 return $ "\\sout{" ++ contents ++ "}"
218217inlineToLaTeX (Superscript lst) = do
219− contents <- inlineListToLaTeX lst
218+ contents <- inlineListToLaTeX $ deVerb lst
220219 return $ "\\textsuperscript{" ++ contents ++ "}"
221220inlineToLaTeX (Subscript lst) = do
222− contents <- inlineListToLaTeX lst
221+ contents <- inlineListToLaTeX $ deVerb lst
223222 -- oddly, latex includes \textsuperscript but not \textsubscript
224223 -- so we have to define it:
225224 addToHeader "\\newcommand{\\textsubscript}[1]{\\ensuremath{_{\\scriptsize\\textrm{#1}}}}"
226225 return $ "\\textsubscript{" ++ contents ++ "}"
227−inlineToLaTeX (Code str) = return $ "\\Q{" ++ stuffing ++ "}"
228− where stuffing = concatMap (\c -> if isAlphaNum c
229− then [c]
230− else ['\\',c]) str
226+inlineToLaTeX (Code str) = do
227+ st <- get
228+ if stInNote st
229+ then do addToHeader "\\usepackage{fancyvrb}"
230+ else return ()
231+ let chr = ((enumFromTo '!' '~') \\ str) !! 0
232+ return $ "\\verb" ++ [chr] ++ str ++ [chr]
231233inlineToLaTeX (Quoted SingleQuote lst) = do
232234 contents <- inlineListToLaTeX lst
233235 let s1 = if (not (null lst)) && (isQuoted (head lst)) then "\\," else ""
@@ -248,7 +250,7 @@ inlineToLaTeX (HtmlInline str) = return ""
248250inlineToLaTeX (LineBreak) = return "\\\\\n"
249251inlineToLaTeX Space = return " "
250252inlineToLaTeX (Link text (src, tit)) = do
251− contents <- inlineListToLaTeX text
253+ contents <- inlineListToLaTeX $ deVerb text
252254 addToHeader "\\usepackage[breaklinks=true]{hyperref}"
253255 return $ "\\href{" ++ src ++ "}{" ++ contents ++ "}"
254256inlineToLaTeX (Image alternate (source, tit)) = do