git.iko.soy/typeable/pandoc
on master help sign in
LaTeX Reader: check for block-level newcommand aliases in blockCommand
commitf3e8274d0425b3bf7a2459a2d88af585b491507f authorNikolay Yakimov <root@livid.pp.ru> dateSat 21 Mar 2015, 22:39 (12 years ago) parent34c6ff1
3 files changed+37−4
src/Text/Pandoc/Readers/LaTeX.hs+13−3 tests/latex-reader.latex+19 tests/latex-reader.native+5−1
src/Text/Pandoc/Readers/LaTeX.hs+13−3
@@ -239,17 +239,28 @@ block = (mempty <$ comment)
239239blocks :: LP Blocks
240240blocks = mconcat <$> many block
241241
242+getRawCommand :: String -> LP String
243+getRawCommand name' = do
244+ rawargs <- withRaw (skipopts *> option "" dimenarg *> many braced)
245+ return $ '\\' : name' ++ snd rawargs
246+
242247blockCommand :: LP Blocks
243248blockCommand = try $ do
244249 name <- anyControlSeq
245250 guard $ name /= "begin" && name /= "end"
246251 star <- option "" (string "*" <* optional sp)
247252 let name' = name ++ star
253+ let raw = do
254+ rawcommand <- getRawCommand name'
255+ transformed <- applyMacros' rawcommand
256+ if transformed /= rawcommand
257+ then parseFromString blocks transformed
258+ else mzero
248259 case M.lookup name' blockCommands of
249260 Just p -> p
250261 Nothing -> case M.lookup name blockCommands of
251262 Just p -> p
252− Nothing -> mzero
263+ Nothing -> raw
253264
254265inBrackets :: Inlines -> Inlines
255266inBrackets x = (str "[") <> x <> (str "]")
@@ -385,8 +396,7 @@ inlineCommand = try $ do
385396 star <- option "" (string "*")
386397 let name' = name ++ star
387398 let raw = do
388− rawargs <- withRaw (skipopts *> option "" dimenarg *> many braced)
389− let rawcommand = '\\' : name ++ star ++ snd rawargs
399+ rawcommand <- getRawCommand name'
390400 transformed <- applyMacros' rawcommand
391401 if transformed /= rawcommand
392402 then parseFromString inlines transformed
tests/latex-reader.latex+19
@@ -845,4 +845,23 @@ indented.
845845
846846\$ \% \& \# \_ \{ \}
847847
848+\section{Block newcommands}
849+
850+See e.g. issues #1866, #1835
851+
852+\newcommand{\FIG}[3]{
853+ \begin{figure}[h!]
854+ \centering
855+ \includegraphics[width=#2\columnwidth,angle=0]{#1}
856+ \caption{#3}
857+ \label{fig:#1}
858+ \end{figure}
859+}
860+
861+\newcommand{\separator}{\vspace{4em}}
862+
863+\separator
864+
865+\FIG{lalune.jpg}{0.5}{Test caption}
866+
848867\end{document}
tests/latex-reader.native+5−1
@@ -372,4 +372,8 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "John",Spa
372372 [[Para [Str "And",Space,Str "in",Space,Str "list",Space,Str "items.",Note [Para [Str "In",Space,Str "list."]]]]]
373373,Para [Str "This",Space,Str "paragraph",Space,Str "should",Space,Str "not",Space,Str "be",Space,Str "part",Space,Str "of",Space,Str "the",Space,Str "note,",Space,Str "as",Space,Str "it",Space,Str "is",Space,Str "not",Space,Str "indented."]
374374,Header 1 ("escaped-characters",[],[]) [Str "Escaped",Space,Str "characters"]
375−,Para [Str "$",Space,Str "%",Space,Str "&",Space,Str "#",Space,Str "_",Space,Str "{",Space,Str "}"]]
375+,Para [Str "$",Space,Str "%",Space,Str "&",Space,Str "#",Space,Str "_",Space,Str "{",Space,Str "}"]
376+,Header 1 ("block-newcommands",[],[]) [Str "Block",Space,Str "newcommands"]
377+,Para [Str "See",Space,Str "e.g.",Space,Str "issues",Space,Str "#1866,",Space,Str "#1835"]
378+,RawBlock (Format "latex") "\\vspace{4em}"
379+,Para [RawInline (Format "latex") "\\centering",Image [Str "Test",Space,Str "caption",Span ("",[],[("data-label","fig:lalune.jpg")]) []] ("lalune.jpg","fig:")]]