@@ -1510,26 +1510,38 @@ rawBlockOr name fallback = do
1510 then rawBlock "latex" <$> getRawCommand name ("\\" <> name)
1510 then rawBlock "latex" <$> getRawCommand name ("\\" <> name)
1511 else fallback
1511 else fallback
1513+doSubfile :: PandocMonad m => LP m Blocks
1516+ f <- T.unpack . removeDoubleQuotes . T.strip . untokenize <$> braced
1517+ oldToks <- getInput
1519+ insertIncluded ".tex" f
1513include :: (PandocMonad m, Monoid a) => Text -> LP m a
1525include :: (PandocMonad m, Monoid a) => Text -> LP m a
1514include name = do
1526include name = do
1515 skipMany opt
1527 skipMany opt
1516 fs <- (map (T.unpack . removeDoubleQuotes . T.strip) . T.splitOn "," .
1528 fs <- (map (T.unpack . removeDoubleQuotes . T.strip) . T.splitOn "," .
1517 untokenize) <$> braced
1529 untokenize) <$> braced
1518− let addExt f = case takeExtension f of
1521− -- note, we can have cc_by_4.0 for example...
1522− _ | name == "usepackage" -> addExtension f ".sty"
1530+ let defaultExt | name == "usepackage" = ".sty"
1523− | otherwise -> addExtension f ".tex"
1531+ | otherwise = ".tex"
1524− dirs <- (map T.unpack . splitTextBy (==':') . fromMaybe ".") <$> lookupEnv "TEXINPUTS"
1525− mapM_ (insertIncluded dirs . addExt) fs
1532+ mapM_ (insertIncluded defaultExt) fs
1526 return mempty
1533 return mempty
1528insertIncluded :: PandocMonad m
1535insertIncluded :: PandocMonad m
1529− => [FilePath]
1536+ => FilePath
1530 -> FilePath
1537 -> FilePath
1531 -> LP m ()
1538 -> LP m ()
1532−insertIncluded dirs f = do
1539+insertIncluded defaultExtension f' = do
1540+ let f = case takeExtension f' of
1543+ _ -> addExtension f' defaultExtension
1544+ dirs <- (map T.unpack . splitTextBy (==':') . fromMaybe ".") <$> lookupEnv "TEXINPUTS"
1533 pos <- getPosition
1545 pos <- getPosition
1534 containers <- getIncludeFiles <$> getState
1546 containers <- getIncludeFiles <$> getState
1535 when (T.pack f `elem` containers) $
1547 when (T.pack f `elem` containers) $
@@ -1863,7 +1875,7 @@ blockCommands = M.fromList
1863 addMeta "bibliography" . splitBibs . untokenize))
1875 addMeta "bibliography" . splitBibs . untokenize))
1864 , ("addbibresource", mempty <$ (skipopts *> braced >>=
1876 , ("addbibresource", mempty <$ (skipopts *> braced >>=
1865 addMeta "bibliography" . splitBibs . untokenize))
1877 addMeta "bibliography" . splitBibs . untokenize))
1866− , ("endinput", mempty <$ skipMany tok)
1878+ , ("endinput", mempty <$ skipMany anyTok)
1867 -- includes
1879 -- includes
1868 , ("lstinputlisting", inputListing)
1880 , ("lstinputlisting", inputListing)
1869 , ("inputminted", inputMinted)
1881 , ("inputminted", inputMinted)
@@ -1886,7 +1898,7 @@ blockCommands = M.fromList
1886 -- include
1898 -- include
1887 , ("include", rawBlockOr "include" $ include "include")
1899 , ("include", rawBlockOr "include" $ include "include")
1888 , ("input", rawBlockOr "input" $ include "input")
1900 , ("input", rawBlockOr "input" $ include "input")
1889− , ("subfile", rawBlockOr "subfile" $ include "subfile")
1901+ , ("subfile", rawBlockOr "subfile" doSubfile)
1890 , ("usepackage", rawBlockOr "usepackage" $ include "usepackage")
1902 , ("usepackage", rawBlockOr "usepackage" $ include "usepackage")
1891 -- preamble
1903 -- preamble
1892 , ("PackageError", mempty <$ (braced >> braced >> braced))
1904 , ("PackageError", mempty <$ (braced >> braced >> braced))
@@ -1897,7 +1909,7 @@ blockCommands = M.fromList
1898environments :: PandocMonad m => M.Map Text (LP m Blocks)
1910environments :: PandocMonad m => M.Map Text (LP m Blocks)
1899environments = M.fromList
1911environments = M.fromList
1900− [ ("document", env "document" blocks)
1912+ [ ("document", env "document" blocks <* skipMany anyTok)
1901 , ("abstract", mempty <$ (env "abstract" blocks >>= addMeta "abstract"))
1913 , ("abstract", mempty <$ (env "abstract" blocks >>= addMeta "abstract"))
1902 , ("sloppypar", env "sloppypar" $ blocks)
1914 , ("sloppypar", env "sloppypar" $ blocks)
1903 , ("letter", env "letter" letterContents)
1915 , ("letter", env "letter" letterContents)