Make sure \write18 is parsed as raw LaTeX.
The change is in the LaTeX reader's treatment of raw commands, but it also affects the Markdown reader.
This commit is contained in:
parent
41209ea676
commit
013fd1c6b6
5 changed files with 28 additions and 9 deletions
|
@ -1049,14 +1049,12 @@ inlineCommand' :: PandocMonad m => LP m Inlines
|
|||
inlineCommand' = try $ do
|
||||
Tok _ (CtrlSeq name) cmd <- anyControlSeq
|
||||
guard $ name /= "begin" && name /= "end"
|
||||
(star, rawstar) <- withRaw $ option "" ("*" <$ symbol '*' <* optional sp)
|
||||
star <- option "" ("*" <$ symbol '*' <* optional sp)
|
||||
let name' = name <> star
|
||||
let names = ordNub [name', name] -- check non-starred as fallback
|
||||
let raw = do
|
||||
guard $ isInlineCommand name || not (isBlockCommand name)
|
||||
(_, rawargs) <- withRaw
|
||||
(skipangles *> skipopts *> option "" dimenarg *> many braced)
|
||||
let rawcommand = T.unpack $ cmd <> untokenize (rawstar ++ rawargs)
|
||||
rawcommand <- getRawCommand (cmd <> star)
|
||||
(guardEnabled Ext_raw_tex >> return (rawInline "latex" rawcommand))
|
||||
<|> ignore rawcommand
|
||||
lookupListDefault raw names inlineCommands
|
||||
|
@ -1353,7 +1351,11 @@ rawInlineOr name' fallback = do
|
|||
getRawCommand :: PandocMonad m => Text -> LP m String
|
||||
getRawCommand txt = do
|
||||
(_, rawargs) <- withRaw
|
||||
(many (try (optional sp *> opt)) *>
|
||||
((if txt == "\\write"
|
||||
then () <$ satisfyTok isWordTok -- digits
|
||||
else return ()) *>
|
||||
skipangles *>
|
||||
skipopts *>
|
||||
option "" (try (optional sp *> dimenarg)) *>
|
||||
many braced)
|
||||
return $ T.unpack (txt <> untokenize rawargs)
|
||||
|
@ -1631,7 +1633,7 @@ blockCommand = try $ do
|
|||
let names = ordNub [name', name]
|
||||
let raw = do
|
||||
guard $ isBlockCommand name || not (isInlineCommand name)
|
||||
rawBlock "latex" <$> getRawCommand txt
|
||||
rawBlock "latex" <$> getRawCommand (txt <> star)
|
||||
lookupListDefault raw names blockCommands
|
||||
|
||||
closing :: PandocMonad m => LP m Blocks
|
||||
|
@ -2128,8 +2130,8 @@ block = (mempty <$ spaces1)
|
|||
<|> environment
|
||||
<|> include
|
||||
<|> macroDef
|
||||
<|> paragraph
|
||||
<|> blockCommand
|
||||
<|> paragraph
|
||||
<|> grouped block
|
||||
|
||||
blocks :: PandocMonad m => LP m Blocks
|
||||
|
|
|
@ -25,7 +25,8 @@
|
|||
<td style="text-align: left;">thank you</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td style="text-align: right;"><em>blah</em></td>
|
||||
<td style="text-align: right;">
|
||||
<p><em>blah</em></p></td>
|
||||
<td style="text-align: left;"><em>blah</em></td>
|
||||
<td style="text-align: left;"><em>blah</em></td>
|
||||
</tr>
|
||||
|
|
|
@ -15,9 +15,11 @@
|
|||
\caption{Subfigure with Subfloat}
|
||||
\end{figure}
|
||||
^D
|
||||
|
||||
<figure>
|
||||
<img src="img1.jpg" alt="Caption 1" /><figcaption>Caption 1</figcaption>
|
||||
</figure>
|
||||
|
||||
<figure>
|
||||
<img src="img2.jpg" alt="Caption 2" /><figcaption>Caption 2</figcaption>
|
||||
</figure>
|
||||
|
|
14
test/command/write18.md
Normal file
14
test/command/write18.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
Handle \write18{..} as raw tex:
|
||||
```
|
||||
% pandoc -t native
|
||||
\write18{git --version}
|
||||
^D
|
||||
[RawBlock (Format "latex") "\\write18{git --version}"]
|
||||
```
|
||||
|
||||
```
|
||||
% pandoc -f latex+raw_tex -t native
|
||||
\write18{git --version}
|
||||
^D
|
||||
[RawBlock (Format "latex") "\\write18{git --version}"]
|
||||
```
|
|
@ -261,7 +261,7 @@ Pandoc (Meta {unMeta = fromList [("author",MetaList [MetaInlines [Str "John",Spa
|
|||
,Header 1 ("latex",[],[]) [Str "LaTeX"]
|
||||
,BulletList
|
||||
[[Para [Cite [Citation {citationId = "smith.1899", citationPrefix = [], citationSuffix = [Str "22-23"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [RawInline (Format "latex") "\\cite[22-23]{smith.1899}"]]]
|
||||
,[Para [RawInline (Format "latex") "\\doublespacing"]]
|
||||
,[RawBlock (Format "latex") "\\doublespacing"]
|
||||
,[Para [Math InlineMath "2+2=4"]]
|
||||
,[Para [Math InlineMath "x \\in y"]]
|
||||
,[Para [Math InlineMath "\\alpha \\wedge \\omega"]]
|
||||
|
|
Loading…
Add table
Reference in a new issue