LaTeX-parser: restrict \endinput to current file

This commit is contained in:
Simon Schuster
2021-08-21 18:08:27 -07:00
committed by John MacFarlane
parent d05460d00d
commit 591cdca38b
5 changed files with 27 additions and 1 deletions
+1
View File
@@ -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
+5 -1
View File
@@ -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) $
+4
View File
@@ -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
View File
@@ -0,0 +1,3 @@
\emph{hi there}
\endinput
\emph{invisible}
+14
View 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"]]
```