diff --git a/Data/Graph/Analysis/Reporting.hs b/Data/Graph/Analysis/Reporting.hs
--- a/Data/Graph/Analysis/Reporting.hs
+++ b/Data/Graph/Analysis/Reporting.hs
@@ -19,6 +19,7 @@
       DocGraph,
       -- * Helper functions
       -- $utilities
+      addLegend,
       today,
       tryCreateDirectory,
       createGraph,
@@ -29,7 +30,7 @@
 import Data.Graph.Inductive(Node)
 import Data.GraphViz
 
-import Data.Maybe(isJust, fromJust)
+import Data.Maybe(isJust, fromJust, catMaybes)
 import Data.Time(getZonedTime, zonedTimeToLocalTime, formatTime)
 import Control.Exception.Extensible(SomeException(..), tryJust)
 import System.Directory(createDirectoryIfMissing)
@@ -61,6 +62,7 @@
                       author         :: String,
                       date           :: String,
                       -- | Main-matter
+                      legend         :: [(DocGraph, DocInline)],
                       content        :: [DocElement]
                     }
 
@@ -85,7 +87,7 @@
                 | Paragraph [DocInline]
                 | Enumeration [DocElement]
                 | Itemized [DocElement]
-                | Definition DocInline DocElement
+                | Definitions [(DocInline, DocInline)]
                 | GraphImage DocGraph
 
 -- | Inline elements of a document.
@@ -108,6 +110,31 @@
    Utility functions to help with document creation.
  -}
 
+-- | Create the legend section and add it to the document proper.
+addLegend       :: FilePath -> FilePath -> Document -> IO Document
+addLegend fp gfp d = do mLg <- legendToElement fp gfp $ legend d
+                        let es = content d
+                            es' = maybe es (flip (:) es) mLg
+                        return $ d { legend  = []
+                                   , content = es'
+                                   }
+
+legendToElement           :: FilePath -> FilePath -> [(DocGraph, DocInline)]
+                             -> IO (Maybe DocElement)
+legendToElement _  _   [] = return Nothing
+legendToElement fp gfp ls = do mDefs <- mapM (uncurry (legToDef fp gfp)) ls
+                               let defs = catMaybes mDefs
+                                   df   = Definitions defs
+                                   sec  = Section (Text "Legend") [df]
+                               return $ Just sec
+
+legToDef               :: FilePath -> FilePath -> DocGraph -> DocInline
+                          -> IO (Maybe (DocInline, DocInline))
+legToDef fp gfp dg def = fmap (fmap (flip (,) def)) img
+    where
+      img = graphImage fp gfp DefaultSize Png "png" DocImage dg
+
+
 -- | Return today's date as a string, e.g. \"Monday 1 January, 2000\".
 --   This arbitrary format is chosen as there doesn't seem to be a way
 --   of determining the correct format as per the user's locale settings.
@@ -184,7 +211,7 @@
 setSize (GivenSize p) g = g { graphStatements = stmts' }
     where
       stmts = graphStatements g
-      stmts' = stmts { attrStmts = a : (attrStmts stmts) }
+      stmts' = stmts { attrStmts = a : attrStmts stmts }
       a = GraphAttrs [s]
       s = Size p
 
diff --git a/Data/Graph/Analysis/Reporting/Pandoc.hs b/Data/Graph/Analysis/Reporting/Pandoc.hs
--- a/Data/Graph/Analysis/Reporting/Pandoc.hs
+++ b/Data/Graph/Analysis/Reporting/Pandoc.hs
@@ -32,6 +32,7 @@
 
 import Data.List(intersperse)
 import Data.Maybe(isNothing, fromJust)
+import Control.Arrow((***))
 import Control.Exception.Extensible(SomeException, try)
 import System.Directory(removeDirectoryRecursive)
 import System.FilePath((</>), (<.>))
@@ -140,7 +141,8 @@
                       tryCreateDirectory $ dir </> gdir
                       if not created
                          then failDoc
-                         else do elems <- multiElems pp (content d)
+                         else do d' <- addLegend dir gdir d
+                                 elems <- multiElems pp $ content d'
                                  case elems of
                                    Just es -> do let es' = htmlAuthDt : es
                                                      pnd = Pandoc meta es'
@@ -233,10 +235,9 @@
 elements p (Itemized elems)    = do elems' <- multiElems' p elems
                                     return (fmap (return . BulletList) elems')
 
-elements p (Definition x def)  = do def' <- elements p def
-                                    let x' = inlines x
-                                        xdef = fmap (return . (,) x') def'
-                                    return (fmap (return . DefinitionList) xdef)
+elements _ (Definitions defs)  = return . Just . return . DefinitionList
+                                 $ map (inlines *** (return . Plain . inlines))
+                                       defs
 
 elements p (GraphImage dg)     = do el <- createGraph (filedir p)
                                                       (graphdir p)
diff --git a/Graphalyze.cabal b/Graphalyze.cabal
--- a/Graphalyze.cabal
+++ b/Graphalyze.cabal
@@ -1,9 +1,9 @@
 Name:                Graphalyze
-Version:             0.7.0.0
+Version:             0.8.0.0
 Synopsis:            Graph-Theoretic Analysis library.
 Description:         A library to use graph theory to analyse the relationships
                         inherent in discrete data.
-Category:            Algorithms
+Category:            Graphs, Algorithms
 License:             OtherLicense
 License-File:        LICENSE
 Copyright:           (c) Ivan Lazar Miljenovic
