@@ -185,7 +185,9 @@ hrule = try (do
185185-- code blocks
186186--
187187
188−codeBlock = try (do
188+codeBlock = codeBlock1 <|> codeBlock2
189+
190+codeBlock1 = try (do
189191 string "\\begin{verbatim}" -- don't use begin function because it
190192 -- gobbles whitespace
191193 option "" blanklines -- we want to gobble blank lines, but not
@@ -194,6 +196,13 @@ codeBlock = try (do
194196 spaces
195197 return (CodeBlock (stripTrailingNewlines contents)))
196198
199+codeBlock2 = try (do
200+ string "\\begin{Verbatim}" -- used by fancyverb package
201+ option "" blanklines
202+ contents <- manyTill anyChar (try (string "\\end{Verbatim}"))
203+ spaces
204+ return (CodeBlock (stripTrailingNewlines contents)))
205+
197206--
198207-- block quotes
199208--
@@ -518,13 +527,25 @@ gt = try (do
518527 string "\\textgreater"
519528 return (Str ">"))
520529
521−code = try (do
530+code = code1 <|> code2
531+
532+code1 = try (do
522533 string "\\verb"
523534 marker <- anyChar
524535 result <- manyTill anyChar (char marker)
525536 let result' = removeLeadingTrailingSpace result
526537 return (Code result'))
527538
539+-- examplep package uses \Q{} with backslash-escaped symbols
540+code2 = try (do
541+ string "\\Q{"
542+ result <- manyTill (alphaNum <|>
543+ try (do{char '\\'; oneOf "XSVB"; return ' '}) <|>
544+ try (do{string "\\n"; return '\n'}) <|>
545+ try (do{char '\\'; anyChar})) (char '}')
546+ let result' = removeLeadingTrailingSpace result
547+ return (Code result'))
548+
528549emph = try (do
529550 oneOfStrings [ "\\emph{", "\\textit{" ]
530551 result <- manyTill inline (char '}')