LaTeX reader: allow hspace and vspace to count as raw block or inline.
Previously we would refuse to parse anything as raw inline if it was in the blockCommands list. Now we allow exceptions if they're listed under ignoreInlines in inlineCommands. This should make it easier e.g. to include an \hspace between two side-by-side raw LaTeX tables.
This commit is contained in:
parent
f1cf8273d5
commit
7d0082aa0b
2 changed files with 61 additions and 3 deletions
|
@ -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
|
||||
|
|
56
test/command/hspace.md
Normal file
56
test/command/hspace.md
Normal file
|
@ -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"]]
|
||||
```
|
Loading…
Add table
Reference in a new issue