@@ -34,7 +34,7 @@ import Text.Pandoc
34import Text.Pandoc.PDF (tex2pdf)
34import Text.Pandoc.PDF (tex2pdf)
35import Text.Pandoc.Readers.LaTeX (handleIncludes)
35import Text.Pandoc.Readers.LaTeX (handleIncludes)
36import Text.Pandoc.Shared ( tabFilter, readDataFile, safeRead,
36import Text.Pandoc.Shared ( tabFilter, readDataFile, safeRead,
37− headerShift, findDataFile, normalize, err, warn )
37+ headerShift, normalize, err, warn )
38import Text.Pandoc.XML ( toEntities, fromEntities )
38import Text.Pandoc.XML ( toEntities, fromEntities )
39import Text.Pandoc.SelfContained ( makeSelfContained )
39import Text.Pandoc.SelfContained ( makeSelfContained )
40import Text.Pandoc.Highlighting ( languages, Style, tango, pygments,
40import Text.Pandoc.Highlighting ( languages, Style, tango, pygments,
@@ -127,7 +127,7 @@ data Opt = Opt
127 , optDataDir :: Maybe FilePath
127 , optDataDir :: Maybe FilePath
128 , optCiteMethod :: CiteMethod -- ^ Method to output cites
128 , optCiteMethod :: CiteMethod -- ^ Method to output cites
129 , optBibliography :: [String]
129 , optBibliography :: [String]
130− , optCslFile :: FilePath
130+ , optCslFile :: Maybe FilePath
131 , optAbbrevsFile :: Maybe FilePath
131 , optAbbrevsFile :: Maybe FilePath
132 , optListings :: Bool -- ^ Use listings package for code blocks
132 , optListings :: Bool -- ^ Use listings package for code blocks
133 , optLaTeXEngine :: String -- ^ Program to use for latex -> pdf
133 , optLaTeXEngine :: String -- ^ Program to use for latex -> pdf
@@ -179,7 +179,7 @@ defaultOpts = Opt
179 , optDataDir = Nothing
179 , optDataDir = Nothing
180 , optCiteMethod = Citeproc
180 , optCiteMethod = Citeproc
181 , optBibliography = []
181 , optBibliography = []
182− , optCslFile = ""
182+ , optCslFile = Nothing
183 , optAbbrevsFile = Nothing
183 , optAbbrevsFile = Nothing
184 , optListings = False
184 , optListings = False
185 , optLaTeXEngine = "pdflatex"
185 , optLaTeXEngine = "pdflatex"
@@ -573,7 +573,7 @@ options =
574 , Option "" ["csl"]
574 , Option "" ["csl"]
576− (\arg opt -> return opt { optCslFile = arg })
576+ (\arg opt -> return opt { optCslFile = Just arg })
577 "FILENAME")
577 "FILENAME")
@@ -814,7 +814,7 @@ main = do
814 , optIndentedCodeClasses = codeBlockClasses
814 , optIndentedCodeClasses = codeBlockClasses
815 , optDataDir = mbDataDir
815 , optDataDir = mbDataDir
816 , optBibliography = reffiles
816 , optBibliography = reffiles
817− , optCslFile = cslfile
817+ , optCslFile = mbCsl
818 , optAbbrevsFile = cslabbrevs
818 , optAbbrevsFile = cslabbrevs
819 , optCiteMethod = citeMethod
819 , optCiteMethod = citeMethod
820 , optListings = listings
820 , optListings = listings
@@ -1007,18 +1007,18 @@ main = do
1007 doc2 <- do
1007 doc2 <- do
1008 if citeMethod == Citeproc && not (null refs)
1008 if citeMethod == Citeproc && not (null refs)
1010− csldir <- getAppUserDataDirectory "csl"
1010+ csl <- case mbCsl of
1011− cslfile' <- if null cslfile
1012− then findDataFile datadir "default.csl"
1011+ Nothing -> readDataFile datadir "default.csl"
1013− else do
1012+ Just cslfile -> do
1014− ex <- doesFileExist cslfile
1013+ exists <- doesFileExist cslfile
1015− if ex
1014+ if exists
1016− then return cslfile
1015+ then UTF8.readFile cslfile
1017− else findDataFile datadir $
1016+ else do
1017+ csldir <- getAppUserDataDirectory "csl"
1018− replaceDirectory
1019+ readDataFile datadir (replaceDirectory
1019− (replaceExtension cslfile "csl")
1020+ (replaceExtension cslfile "csl") csldir)
1021− processBiblio cslfile' cslabbrevs refs doc1
1021+ processBiblio csl cslabbrevs refs doc1
1022 else return doc1
1022 else return doc1
1024 let writeBinary :: B.ByteString -> IO ()
1024 let writeBinary :: B.ByteString -> IO ()