@@ -34,7 +34,7 @@ import Text.Pandoc
3434import Text.Pandoc.PDF (tex2pdf)
3535import Text.Pandoc.Readers.LaTeX (handleIncludes)
3636import Text.Pandoc.Shared ( tabFilter, readDataFile, safeRead,
37− headerShift, findDataFile, normalize, err, warn )
37+ headerShift, normalize, err, warn )
3838import Text.Pandoc.XML ( toEntities, fromEntities )
3939import Text.Pandoc.SelfContained ( makeSelfContained )
4040import Text.Pandoc.Highlighting ( languages, Style, tango, pygments,
@@ -127,7 +127,7 @@ data Opt = Opt
127127 , optDataDir :: Maybe FilePath
128128 , optCiteMethod :: CiteMethod -- ^ Method to output cites
129129 , optBibliography :: [String]
130− , optCslFile :: FilePath
130+ , optCslFile :: Maybe FilePath
131131 , optAbbrevsFile :: Maybe FilePath
132132 , optListings :: Bool -- ^ Use listings package for code blocks
133133 , optLaTeXEngine :: String -- ^ Program to use for latex -> pdf
@@ -179,7 +179,7 @@ defaultOpts = Opt
179179 , optDataDir = Nothing
180180 , optCiteMethod = Citeproc
181181 , optBibliography = []
182− , optCslFile = ""
182+ , optCslFile = Nothing
183183 , optAbbrevsFile = Nothing
184184 , optListings = False
185185 , optLaTeXEngine = "pdflatex"
@@ -573,7 +573,7 @@ options =
573573
574574 , Option "" ["csl"]
575575 (ReqArg
576− (\arg opt -> return opt { optCslFile = arg })
576+ (\arg opt -> return opt { optCslFile = Just arg })
577577 "FILENAME")
578578 ""
579579
@@ -814,7 +814,7 @@ main = do
814814 , optIndentedCodeClasses = codeBlockClasses
815815 , optDataDir = mbDataDir
816816 , optBibliography = reffiles
817− , optCslFile = cslfile
817+ , optCslFile = mbCsl
818818 , optAbbrevsFile = cslabbrevs
819819 , optCiteMethod = citeMethod
820820 , optListings = listings
@@ -1007,18 +1007,18 @@ main = do
10071007 doc2 <- do
10081008 if citeMethod == Citeproc && not (null refs)
10091009 then do
1010− csldir <- getAppUserDataDirectory "csl"
1011− cslfile' <- if null cslfile
1012− then findDataFile datadir "default.csl"
1013− else do
1014− ex <- doesFileExist cslfile
1015− if ex
1016− then return cslfile
1017− else findDataFile datadir $
1018− replaceDirectory
1019− (replaceExtension cslfile "csl")
1020− csldir
1021− processBiblio cslfile' cslabbrevs refs doc1
1010+ csl <- case mbCsl of
1011+ Nothing -> readDataFile datadir "default.csl"
1012+ Just cslfile -> do
1013+ exists <- doesFileExist cslfile
1014+ if exists
1015+ then UTF8.readFile cslfile
1016+ else do
1017+ csldir <- getAppUserDataDirectory "csl"
1018+ print csldir
1019+ readDataFile datadir (replaceDirectory
1020+ (replaceExtension cslfile "csl") csldir)
1021+ processBiblio csl cslabbrevs refs doc1
10221022 else return doc1
10231023
10241024 let writeBinary :: B.ByteString -> IO ()