diff --git a/BlogLiterately.cabal b/BlogLiterately.cabal
--- a/BlogLiterately.cabal
+++ b/BlogLiterately.cabal
@@ -1,5 +1,5 @@
 Name:           BlogLiterately
-Version:        0.7.1.11
+Version:        0.8
 Synopsis:       A tool for posting Haskelly articles to blogs
 Description:    Write blog posts in Markdown format, then use BlogLiterately
                 to do syntax highlighting, format ghci sessions, and upload
@@ -57,10 +57,10 @@
                    blaze-html >= 0.5 && < 0.9,
                    cmdargs >= 0.9.5 && < 0.11,
                    haxr >= 3000.9 && < 3000.11,
-                   pandoc >= 1.12 && < 1.14,
+                   pandoc >= 1.14 && < 1.15,
                    pandoc-types >= 1.12 && < 1.13,
                    pandoc-citeproc >= 0.1.2 && < 0.8,
-                   highlighting-kate >= 0.5 && < 0.6,
+                   highlighting-kate >= 0.5 && < 0.7,
                    data-default >= 0.5 && < 0.6,
                    lens >= 3.8 && < 4.12
   Exposed-modules: Text.BlogLiterately
diff --git a/CHANGES.md b/CHANGES.md
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,14 @@
+0.8 (28 May 2015)
+-----------------
+
+  * Require `pandoc-1.14`
+  * Allow `highlighting-kate-0.6`
+  * With the introduction of `Either` results for `pandoc`'s reader
+    functions, the type of `Text.BlogLiterately.Transform.xformDoc`
+    has changed. It now yields `IO (Either PandocError
+    (BlogLiterately, String))` instead of `IO (BlogLiterately,
+    String)`.
+
 0.7.1.11 (26 May 2015)
 ----------------------
 
diff --git a/src/Text/BlogLiterately/Run.hs b/src/Text/BlogLiterately/Run.hs
--- a/src/Text/BlogLiterately/Run.hs
+++ b/src/Text/BlogLiterately/Run.hs
@@ -56,8 +56,10 @@
 --   orders of the standard transforms and your own, to exclude some
 --   or all of the standard transforms, etc.
 blogLiteratelyCustom :: [Transform] -> IO ()
-blogLiteratelyCustom ts =
-      cmdArgs blOpts
-  >>= \bl -> readFile (file' bl)
-  >>= xformDoc bl ts
-  >>= uncurry postIt
+blogLiteratelyCustom ts = do
+  bl  <- cmdArgs blOpts
+  doc <- readFile (file' bl)
+  res <- xformDoc bl ts doc
+  case res of
+    Left err -> putStrLn $ "Pandoc error: " ++ show err
+    Right (bl',doc') -> postIt bl' doc'
diff --git a/src/Text/BlogLiterately/Transform.hs b/src/Text/BlogLiterately/Transform.hs
--- a/src/Text/BlogLiterately/Transform.hs
+++ b/src/Text/BlogLiterately/Transform.hs
@@ -56,6 +56,7 @@
 import           Data.Monoid                       (mappend)
 import           Data.Monoid                       (mempty, (<>))
 import qualified Data.Set                          as S
+import           Data.Traversable                  (traverse)
 import           System.Directory                  (doesFileExist,
                                                     getAppUserDataDirectory)
 import           System.Exit                       (exitFailure)
@@ -64,6 +65,7 @@
 import           Text.Blaze.Html.Renderer.String   (renderHtml)
 import           Text.CSL.Pandoc                   (processCites')
 import           Text.Pandoc
+import           Text.Pandoc.Error                 (PandocError)
 import           Text.Parsec                       (ParseError)
 
 import           Text.BlogLiterately.Block         (onTag)
@@ -330,16 +332,17 @@
 
 -- | Transform a complete input document string to an HTML output
 --   string, given a list of transformation passes.
-xformDoc :: BlogLiterately -> [Transform] -> String -> IO (BlogLiterately, String)
+xformDoc :: BlogLiterately -> [Transform] -> String -> IO (Either PandocError (BlogLiterately, String))
 xformDoc bl xforms =
         fixLineEndings
     >>> parseFile parseOpts
-
-    >>> runTransforms xforms bl
-
-    >=> (\(bl', p) -> return $ (bl', writeHtml (writeOpts bl') p) )
-    >=> _2 (return . renderHtml)
+    >>> traverse
+      (  runTransforms xforms bl
+      >=> (\(bl', p) -> return $ (bl', writeHtml (writeOpts bl') p) )
+      >=> _2 (return . renderHtml)
+      )
   where
+    parseFile :: ReaderOptions -> String -> Either PandocError Pandoc
     parseFile opts =
       case bl^.format of
         Just "rst"      -> readRST      opts
