LaTeX reader: handle includes without surrounding blanklines.

In addition, `\input` can now be used in an inline context,
e.g. to provide part of a paragraph, as it can in LaTeX.

Closes #4553.
This commit is contained in:
John MacFarlane 2018-06-01 09:24:26 -07:00
parent 0fc7d38544
commit d32e866449
4 changed files with 26 additions and 7 deletions

View file

@ -192,6 +192,7 @@ extra-source-files:
test/command/inkscape-cube.svg
test/command/sub-file-chapter-1.tex
test/command/sub-file-chapter-2.tex
test/command/bar.tex
test/command/3510-subdoc.org
test/command/3510-export.latex
test/command/3510-src.hs

View file

@ -1642,6 +1642,8 @@ inlineCommands = M.union inlineLanguageCommands $ M.fromList
, ("Rn", romanNumeralLower)
-- babel
, ("foreignlanguage", foreignlanguage)
-- include
, ("input", include "input")
]
makeUppercase :: Inlines -> Inlines
@ -1917,7 +1919,6 @@ end_ t = try (do
preamble :: PandocMonad m => LP m Blocks
preamble = mempty <$ many preambleBlock
where preambleBlock = spaces1
<|> void include
<|> void macroDef
<|> void blockCommand
<|> void braced
@ -1930,11 +1931,8 @@ paragraph = do
then return mempty
else return $ para x
include :: PandocMonad m => LP m Blocks
include = do
(Tok _ (CtrlSeq name) _) <-
controlSeq "include" <|> controlSeq "input" <|>
controlSeq "subfile" <|> controlSeq "usepackage"
include :: (PandocMonad m, Monoid a) => Text -> LP m a
include name = do
skipMany opt
fs <- (map (T.unpack . removeDoubleQuotes . T.strip) . T.splitOn "," .
untokenize) <$> braced
@ -2251,6 +2249,11 @@ blockCommands = M.fromList
-- LaTeX colors
, ("textcolor", coloredBlock "color")
, ("colorbox", coloredBlock "background-color")
-- include
, ("include", include "include")
, ("input", include "input")
, ("subfile", include "subfile")
, ("usepackage", include "usepackage")
]
@ -2689,7 +2692,6 @@ block :: PandocMonad m => LP m Blocks
block = do
res <- (mempty <$ spaces1)
<|> environment
<|> include
<|> macroDef
<|> blockCommand
<|> paragraph

15
test/command/4553.md Normal file
View file

@ -0,0 +1,15 @@
```
pandoc -f latex -t native
foo \include{command/bar}
^D
[Para [Str "foo"]
,Para [Emph [Str "hi",Space,Str "there"]]]
```
```
pandoc -f latex -t native
foo \input{command/bar}
^D
[Para [Str "foo",Space,Emph [Str "hi",Space,Str "there"]]]
```

1
test/command/bar.tex Normal file
View file

@ -0,0 +1 @@
\emph{hi there}