LaTeX-parser: restrict \endinput to current file
This commit is contained in:
parent
d05460d00d
commit
591cdca38b
5 changed files with 27 additions and 1 deletions
|
@ -242,6 +242,7 @@ extra-source-files:
|
|||
test/command/sub-file-chapter-1.tex
|
||||
test/command/sub-file-chapter-2.tex
|
||||
test/command/bar.tex
|
||||
test/command/bar-endinput.tex
|
||||
test/command/yaml-metadata.yaml
|
||||
test/command/3510-subdoc.org
|
||||
test/command/3510-export.latex
|
||||
|
|
|
@ -890,7 +890,7 @@ blockCommands = M.fromList
|
|||
addMeta "bibliography" . splitBibs . untokenize))
|
||||
, ("addbibresource", mempty <$ (skipopts *> braced >>=
|
||||
addMeta "bibliography" . splitBibs . untokenize))
|
||||
, ("endinput", mempty <$ skipMany anyTok)
|
||||
, ("endinput", mempty <$ skipSameFileToks)
|
||||
-- includes
|
||||
, ("lstinputlisting", inputListing)
|
||||
, ("inputminted", inputMinted)
|
||||
|
@ -921,6 +921,10 @@ blockCommands = M.fromList
|
|||
, ("epigraph", epigraph)
|
||||
]
|
||||
|
||||
skipSameFileToks :: PandocMonad m => LP m ()
|
||||
skipSameFileToks = do
|
||||
pos <- getPosition
|
||||
skipMany $ infile (sourceName pos)
|
||||
|
||||
environments :: PandocMonad m => M.Map Text (LP m Blocks)
|
||||
environments = M.union (tableEnvironments blocks inline) $
|
||||
|
|
|
@ -45,6 +45,7 @@ module Text.Pandoc.Readers.LaTeX.Parsing
|
|||
, isNewlineTok
|
||||
, isWordTok
|
||||
, isArgTok
|
||||
, infile
|
||||
, spaces
|
||||
, spaces1
|
||||
, tokTypeIn
|
||||
|
@ -646,6 +647,9 @@ isArgTok :: Tok -> Bool
|
|||
isArgTok (Tok _ (Arg _) _) = True
|
||||
isArgTok _ = False
|
||||
|
||||
infile :: PandocMonad m => SourceName -> LP m Tok
|
||||
infile reference = satisfyTok (\(Tok source _ _) -> (sourceName source) == reference)
|
||||
|
||||
spaces :: PandocMonad m => LP m ()
|
||||
spaces = skipMany (satisfyTok (tokTypeIn [Comment, Spaces, Newline]))
|
||||
|
||||
|
|
3
test/command/bar-endinput.tex
Normal file
3
test/command/bar-endinput.tex
Normal file
|
@ -0,0 +1,3 @@
|
|||
\emph{hi there}
|
||||
\endinput
|
||||
\emph{invisible}
|
14
test/command/input-with-endinput.md
Normal file
14
test/command/input-with-endinput.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
```
|
||||
% pandoc --from=latex -t native
|
||||
\begin{document}
|
||||
Visible
|
||||
|
||||
\include{command/bar-endinput}
|
||||
|
||||
Visible
|
||||
\end{document}
|
||||
^D
|
||||
[Para [Str "Visible"]
|
||||
,Para [Emph [Str "hi",Space,Str "there"]]
|
||||
,Para [Str "Visible"]]
|
||||
```
|
Loading…
Reference in a new issue