diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs index a13a0c54e..18c240e27 100644 --- a/src/Text/Pandoc/Readers/LaTeX.hs +++ b/src/Text/Pandoc/Readers/LaTeX.hs @@ -445,7 +445,6 @@ inlineCommand :: PandocMonad m => LP m Inlines inlineCommand = try $ do (name, raw') <- withRaw anyControlSeq guard $ name /= "begin" && name /= "end" - guard $ not $ isBlockCommand name exts <- getOption readerExtensions star <- option "" (string "*") let name' = name ++ star @@ -461,7 +460,7 @@ inlineCommand = try $ do else ignore rawcommand (lookupListDefault mzero [name',name] inlineCommands <* optional (try (string "{}"))) - <|> raw + <|> (guard (not (isBlockCommand name)) >> raw) unlessParseRaw :: PandocMonad m => LP m () unlessParseRaw = getOption readerExtensions >>= @@ -648,7 +647,10 @@ inlineCommands = M.fromList $ ] ++ map ignoreInlines -- these commands will be ignored unless --parse-raw is specified, -- in which case they will appear as raw latex blocks: - [ "index" ] + [ "index" + , "hspace" + , "vspace" + ] mkImage :: PandocMonad m => [(String, String)] -> String -> LP m Inlines mkImage options src = do diff --git a/test/command/hspace.md b/test/command/hspace.md new file mode 100644 index 000000000..5d5c7171b --- /dev/null +++ b/test/command/hspace.md @@ -0,0 +1,56 @@ +`\hspace` and `\vspace` should count as both block and inline. + +Here they need to be inline: +``` +% pandoc -f markdown+raw_tex -t native +\begin{figure} +\includegraphics{lalune.jpg} +\caption{lalune \hspace{2em} \vspace{1em} bloo} +\end{figure} +^D +[RawBlock (Format "latex") "\\begin{figure}\n\\includegraphics{lalune.jpg}\n\\caption{lalune \\hspace{2em} \\vspace{1em} bloo}\n\\end{figure}"] +``` + +Here block: +``` +% pandoc -f markdown+raw_tex -t native +\begin{tabular}[t]{cc|c} +\(P\) & \(Q\) & \(P\wedge Q\)\\ +\hline +T & T &\\ +T & F &\\ +F & T &\\ +F & F &\\ +\end{tabular} +\hspace{1em} +\begin{tabular}[t]{cc|c} +\(P\) & \(Q\) & \(P\vee Q\)\\ +\hline +T & T &\\ +T & F &\\ +F & T &\\ +F & F &\\ +\end{tabular} +^D +[RawBlock (Format "latex") "\\begin{tabular}[t]{cc|c}\n\\(P\\) & \\(Q\\) & \\(P\\wedge Q\\)\\\\\n\\hline\nT & T &\\\\\nT & F &\\\\\nF & T &\\\\\nF & F &\\\\\n\\end{tabular}\\hspace{1em}\\begin{tabular}[t]{cc|c}\n\\(P\\) & \\(Q\\) & \\(P\\vee Q\\)\\\\\n\\hline\nT & T &\\\\\nT & F &\\\\\nF & T &\\\\\nF & F &\\\\\n\\end{tabular}"] +``` + +``` +% pandoc -f markdown+raw_tex -t native +hi\hspace{1em}there +^D +[Para [Str "hi",RawInline (Format "tex") "\\hspace{1em}",Str "there"]] +``` + +``` +% pandoc -f markdown+raw_tex -t native +hi + +\hspace{1em} + +there +^D +[Para [Str "hi"] +,RawBlock (Format "latex") "\\hspace{1em}" +,Para [Str "there"]] +```