git.iko.soy/typeable/pandoc
on master help sign in
Give more useful error message if '-t pdf' is specified.
11120d6John MacFarlane
pandoc.hs+24−16
@@ -1022,17 +1022,15 @@ main = do
1022 let laTeXOutput = "latex" `isPrefixOf` writerName' ||
1022 let laTeXOutput = "latex" `isPrefixOf` writerName' ||
1023 "beamer" `isPrefixOf` writerName'
1023 "beamer" `isPrefixOf` writerName'
1024
1024
1025− when pdfOutput $ do
1025+ writer <- case getWriter writerName' of
1026− -- make sure writer is latex or beamer
1026+ Left e -> err 9 $
1027− unless laTeXOutput $
1027+ if writerName' == "pdf"
1028− err 47 $ "cannot produce pdf output with " ++ writerName' ++ " writer"
1028+ then e ++ "\nTo create a pdf with pandoc, use the " ++
1029− -- check for latex program
1029+ "latex or beamer writer and specify\n" ++
1030− mbLatex <- findExecutable latexEngine
1030+ "an output file with .pdf extension " ++
1031− case mbLatex of
1031+ "(pandoc -t latex -o filename.pdf)."
1032− Nothing -> err 41 $
1032+ else e
1033− latexEngine ++ " not found. " ++
1033+ Right w -> return w
1034− latexEngine ++ " is needed for pdf output."
1035− Just _ -> return ()
1036
1034
1037 reader <- case getReader readerName' of
1035 reader <- case getReader readerName' of
1038 Right r -> return r
1036 Right r -> return r
@@ -1179,12 +1177,22 @@ main = do
1179 writerFn "-" = UTF8.putStr
1177 writerFn "-" = UTF8.putStr
1180 writerFn f = UTF8.writeFile f
1178 writerFn f = UTF8.writeFile f
1181
1179
1182− case getWriter writerName' of
1180+ case writer of
1183− Left e -> err 9 e
1184− Right (IOStringWriter f) -> f writerOptions doc2 >>= writerFn outputFile
1181+ IOStringWriter f -> f writerOptions doc2 >>= writerFn outputFile
1185− Right (IOByteStringWriter f) -> f writerOptions doc2 >>= writeBinary
1182+ IOByteStringWriter f -> f writerOptions doc2 >>= writeBinary
1186− Right (PureStringWriter f)
1183+ PureStringWriter f
1187 | pdfOutput -> do
1184 | pdfOutput -> do
1185+ -- make sure writer is latex or beamer
1186+ unless laTeXOutput $
1187+ err 47 $ "cannot produce pdf output with " ++ writerName' ++
1188+ " writer"
1189+
1190+ -- check for latex program
1191+ mbLatex <- findExecutable latexEngine
1192+ when (mbLatex == Nothing) $
1193+ err 41 $ latexEngine ++ " not found. " ++
1194+ latexEngine ++ " is needed for pdf output."
1195+
1188 res <- makePDF latexEngine f writerOptions doc2
1196 res <- makePDF latexEngine f writerOptions doc2
1189 case res of
1197 case res of
1190 Right pdf -> writeBinary pdf
1198 Right pdf -> writeBinary pdf