Merge pull request #2042 from lierdakil/issue1866
LaTeX Reader: check for block-level newcommand aliases in blockCommand
This commit is contained in:
commit
9a79538ac9
3 changed files with 50 additions and 4 deletions
|
@ -239,17 +239,28 @@ block = (mempty <$ comment)
|
|||
blocks :: LP Blocks
|
||||
blocks = mconcat <$> many block
|
||||
|
||||
getRawCommand :: String -> LP String
|
||||
getRawCommand name' = do
|
||||
rawargs <- withRaw (skipopts *> option "" dimenarg *> many braced)
|
||||
return $ '\\' : name' ++ snd rawargs
|
||||
|
||||
blockCommand :: LP Blocks
|
||||
blockCommand = try $ do
|
||||
name <- anyControlSeq
|
||||
guard $ name /= "begin" && name /= "end"
|
||||
star <- option "" (string "*" <* optional sp)
|
||||
let name' = name ++ star
|
||||
let raw = do
|
||||
rawcommand <- getRawCommand name'
|
||||
transformed <- applyMacros' rawcommand
|
||||
guard $ transformed /= rawcommand
|
||||
notFollowedBy $ parseFromString inlines transformed
|
||||
parseFromString blocks transformed
|
||||
case M.lookup name' blockCommands of
|
||||
Just p -> p
|
||||
Nothing -> case M.lookup name blockCommands of
|
||||
Just p -> p
|
||||
Nothing -> mzero
|
||||
Nothing -> raw
|
||||
|
||||
inBrackets :: Inlines -> Inlines
|
||||
inBrackets x = (str "[") <> x <> (str "]")
|
||||
|
@ -385,8 +396,7 @@ inlineCommand = try $ do
|
|||
star <- option "" (string "*")
|
||||
let name' = name ++ star
|
||||
let raw = do
|
||||
rawargs <- withRaw (skipopts *> option "" dimenarg *> many braced)
|
||||
let rawcommand = '\\' : name ++ star ++ snd rawargs
|
||||
rawcommand <- getRawCommand name'
|
||||
transformed <- applyMacros' rawcommand
|
||||
if transformed /= rawcommand
|
||||
then parseFromString inlines transformed
|
||||
|
|
|
@ -845,4 +845,31 @@ indented.
|
|||
|
||||
\$ \% \& \# \_ \{ \}
|
||||
|
||||
\section{Block newcommands}
|
||||
|
||||
See e.g. issues #1866, #1835
|
||||
|
||||
\newcommand{\FIG}[3]{
|
||||
\begin{figure}[h!]
|
||||
\centering
|
||||
\includegraphics[width=#2\columnwidth,angle=0]{#1}
|
||||
\caption{#3}
|
||||
\label{fig:#1}
|
||||
\end{figure}
|
||||
}
|
||||
|
||||
\newcommand{\separator}{\vspace{4em}}
|
||||
|
||||
\separator
|
||||
|
||||
\FIG{lalune.jpg}{0.5}{Test caption}
|
||||
|
||||
\newcommand{\wbal}{The Wikibook about \LaTeX}
|
||||
|
||||
\wbal is a good resource for learning \LaTeX.
|
||||
|
||||
\separator with trailing inlines
|
||||
|
||||
\FIG{lalune.jpg}{0.5}{Test caption} with trailing inlines
|
||||
|
||||
\end{document}
|
||||
|
|
|
@ -372,4 +372,13 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "John",Spa
|
|||
[[Para [Str "And",Space,Str "in",Space,Str "list",Space,Str "items.",Note [Para [Str "In",Space,Str "list."]]]]]
|
||||
,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."]
|
||||
,Header 1 ("escaped-characters",[],[]) [Str "Escaped",Space,Str "characters"]
|
||||
,Para [Str "$",Space,Str "%",Space,Str "&",Space,Str "#",Space,Str "_",Space,Str "{",Space,Str "}"]]
|
||||
,Para [Str "$",Space,Str "%",Space,Str "&",Space,Str "#",Space,Str "_",Space,Str "{",Space,Str "}"]
|
||||
,Header 1 ("block-newcommands",[],[]) [Str "Block",Space,Str "newcommands"]
|
||||
,Para [Str "See",Space,Str "e.g.",Space,Str "issues",Space,Str "#1866,",Space,Str "#1835"]
|
||||
,RawBlock (Format "latex") "\\vspace{4em}"
|
||||
,Para [RawInline (Format "latex") "\\centering",Image [Str "Test",Space,Str "caption",Span ("",[],[("data-label","fig:lalune.jpg")]) []] ("lalune.jpg","fig:")]
|
||||
,Para [Span ("",[],[]) [Str "The",Space,Str "Wikibook",Space,Str "about",Space,Str "LaTeX"],Str "is",Space,Str "a",Space,Str "good",Space,Str "resource",Space,Str "for",Space,Str "learning",Space,Str "LaTeX."]
|
||||
,RawBlock (Format "latex") "\\vspace{4em}"
|
||||
,Para [Str "with",Space,Str "trailing",Space,Str "inlines"]
|
||||
,Para [RawInline (Format "latex") "\\centering",Image [Str "Test",Space,Str "caption",Span ("",[],[("data-label","fig:lalune.jpg")]) []] ("lalune.jpg","fig:")]
|
||||
,Para [Str "with",Space,Str "trailing",Space,Str "inlines"]]
|
||||
|
|
Loading…
Add table
Reference in a new issue