diff --git a/README b/README
--- a/README
+++ b/README
@@ -2282,7 +2282,7 @@
 Puneeth Chaganti, Paul Rivier, rodja.trappe, Bradley Kuhn, thsutton,
 Nathan Gass, Jonathan Daugherty, Jérémy Bobbio, Justin Bogner, qerub,
 Christopher Sawicki, Kelsey Hightower, Masayoshi Takahashi, Antoine
-Latter, Ralf Stephan, Eric Seidel, B. Scott Michel.
+Latter, Ralf Stephan, Eric Seidel, B. Scott Michel, Gavin Beatty.
 
 [markdown]: http://daringfireball.net/projects/markdown/
 [reStructuredText]: http://docutils.sourceforge.net/docs/ref/rst/introduction.html
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,38 @@
+pandoc (1.9.4.2)
+
+  * Don't encode/decode file paths if base >= 4.4.
+    Prior to base 4.4, filepaths and command line arguments were treated
+    as unencoded lists of bytes, not unicode strings, so we had to work
+    around that by encoding and decoding them. This commit adds CPP
+    checks for the base version that intelligibly enable encoding/decoding
+    when needed. Fixes a bug with multilingual filenames when pandoc was
+    compiled with ghc 7.4 (#540).
+    
+  * Don't generate an empty H1 after hrule slide breaks.
+    We now use a slide-level header with contents `[Str "\0"]` to mark
+    an hrule break.  This avoids creation of an empty H1 in these
+    contexts.  Closes #484.
+    
+  * Docbook reader: Added support for "bold" emphasis.  Thanks to mb21.
+  
+  * In make_osx_package.sh, ensure citeproc-hs is built with the
+    embed_data_files flag.
+    
+  * MediaWiki writer: Avoid extra blank lines after sublists (Gavin Beatty).
+    
+  * ConTeXt writer: Don't escape `&`, `^`, `<`, `>`, `_`,
+    simplified escapes for `}` and `{` to `\{` and `\}` (Aditya Mahajan).
+
+  * Fixed handling of absolute URLs in CSS imports with `--self-contained`.
+    Closes #535.
+
+  * Added webm to mime types. Closes #543.
+
+  * Added some missing exports and tests to the cabal file
+    (Alexander V Vershilov).
+    
+  * Compile with `-rtsopts` and `-threaded` by default.
+
 pandoc (1.9.4.1)
 
   * Markdown reader: Added `cf.` and `cp.` to list of likely abbreviations.
diff --git a/man/man1/pandoc.1 b/man/man1/pandoc.1
--- a/man/man1/pandoc.1
+++ b/man/man1/pandoc.1
@@ -1315,7 +1315,7 @@
 Nathan Gass, Jonathan Daugherty, Jérémy Bobbio, Justin Bogner, qerub,
 Christopher Sawicki, Kelsey Hightower, Masayoshi Takahashi, Antoine
 Latter, Ralf Stephan, Eric Seidel, B.
-Scott Michel.
+Scott Michel, Gavin Beatty.
 .SH PANDOC'S MARKDOWN
 For a complete description of pandoc's extensions to standard markdown,
 see \f[C]pandoc_markdown\f[] (5).
diff --git a/pandoc.cabal b/pandoc.cabal
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -1,5 +1,5 @@
 Name:            pandoc
-Version:         1.9.4.1
+Version:         1.9.4.2
 Cabal-Version:   >= 1.10
 Build-Type:      Custom
 License:         GPL
@@ -100,6 +100,8 @@
                  Benchmark.hs,
                  -- tests
                  tests/bodybg.gif,
+                 tests/docbook-reader.docbook
+                 tests/docbook-reader.native
                  tests/html-reader.html,
                  tests/html-reader.native,
                  tests/insert,
@@ -233,10 +235,13 @@
     Build-depends: base >= 4 && < 5, syb >= 0.1 && < 0.4
   else
     Build-depends: base >= 3 && < 4
-  if impl(ghc >= 6.12)
-    Ghc-Options:   -O2 -Wall -fno-warn-unused-do-bind -dno-debug-output
+  if impl(ghc >= 7.0.1)
+    Ghc-Options:   -O2 -rtsopts -Wall -fno-warn-unused-do-bind -dno-debug-output
   else
-    Ghc-Options:     -O2 -Wall
+    if impl(ghc >= 6.12)
+      Ghc-Options:   -O2 -Wall -fno-warn-unused-do-bind -dno-debug-output
+    else
+      Ghc-Options:   -O2 -Wall
   if impl(ghc >= 7.0.1)
     Ghc-Prof-Options: -auto-all -caf-all -rtsopts
   else
@@ -338,10 +343,13 @@
     Build-depends: base >= 4 && < 5, syb >= 0.1 && < 0.4
   else
     Build-depends: base >= 3 && < 4
-  if impl(ghc >= 6.12)
-    Ghc-Options:   -O2 -Wall -fno-warn-unused-do-bind -dno-debug-output
+  if impl(ghc >= 7.0.1)
+    Ghc-Options:   -O2 -rtsopts -threaded -Wall -fno-warn-unused-do-bind -dno-debug-output
   else
-    Ghc-Options:     -O2 -Wall
+    if impl(ghc >= 6.12)
+      Ghc-Options:   -O2 -Wall -threaded -fno-warn-unused-do-bind -dno-debug-output
+    else
+      Ghc-Options:   -O2 -Wall -threaded
   if impl(ghc >= 7.0.1)
     Ghc-Prof-Options: -auto-all -caf-all -rtsopts
   else
@@ -402,10 +410,13 @@
     Build-depends: base >= 4 && < 5, syb >= 0.1 && < 0.4
   else
     Build-depends: base >= 3 && < 4
-  if impl(ghc >= 6.12)
-    Ghc-Options:   -O2 -Wall -fno-warn-unused-do-bind -dno-debug-output
+  if impl(ghc >= 7.0.1)
+    Ghc-Options:   -O2 -rtsopts -threaded -Wall -fno-warn-unused-do-bind -dno-debug-output
   else
-    Ghc-Options:     -O2 -Wall
+    if impl(ghc >= 6.12)
+      Ghc-Options:   -O2 -Wall -threaded -fno-warn-unused-do-bind -dno-debug-output
+    else
+      Ghc-Options:   -O2 -Wall -threaded
   if impl(ghc >= 7.0.1)
     Ghc-Prof-Options: -auto-all -caf-all -rtsopts
   else
@@ -445,3 +456,4 @@
                       Tests.Writers.ConTeXt
                       Tests.Writers.HTML
                       Tests.Writers.Markdown
+                      Tests.Writers.LaTeX
diff --git a/src/Tests/Writers/ConTeXt.hs b/src/Tests/Writers/ConTeXt.hs
--- a/src/Tests/Writers/ConTeXt.hs
+++ b/src/Tests/Writers/ConTeXt.hs
@@ -33,7 +33,7 @@
 
 tests :: [Test]
 tests = [ testGroup "inline code"
-          [ "with '}'" =: code "}" =?> "\\mono{\\letterclosebrace{}}"
+          [ "with '}'" =: code "}" =?> "\\mono{\\}}"
           , "without '}'" =: code "]" =?> "\\type{]}"
           , property "code property" $ \s -> null s ||
                 if '{' `elem` s || '}' `elem` s
diff --git a/src/Tests/Writers/LaTeX.hs b/src/Tests/Writers/LaTeX.hs
new file mode 100644
--- /dev/null
+++ b/src/Tests/Writers/LaTeX.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE OverloadedStrings, QuasiQuotes #-}
+module Tests.Writers.LaTeX (tests) where
+
+import Test.Framework
+import Text.Pandoc.Builder
+import Text.Pandoc
+import Tests.Helpers
+import Tests.Arbitrary()
+
+latex :: (ToString a, ToPandoc a) => a -> String
+latex = writeLaTeX defaultWriterOptions . toPandoc
+
+{-
+  "my test" =: X =?> Y
+
+is shorthand for
+
+  test latex "my test" $ X =?> Y
+
+which is in turn shorthand for
+
+  test latex "my test" (X,Y)
+-}
+
+infix 4 =:
+(=:) :: (ToString a, ToPandoc a)
+     => String -> (a, String) -> Test
+(=:) = test latex
+
+tests :: [Test]
+tests = [ testGroup "code blocks"
+          [ "in footnotes" =: note (para "hi" <> codeBlock "hi") =?>
+            "\\footnote{hi\n\n\\begin{Verbatim}\nhi\n\\end{Verbatim}\n}"
+          ]
+        ]
diff --git a/src/Text/Pandoc/MIME.hs b/src/Text/Pandoc/MIME.hs
--- a/src/Text/Pandoc/MIME.hs
+++ b/src/Text/Pandoc/MIME.hs
@@ -448,6 +448,7 @@
            ,("wax","audio/x-ms-wax")
            ,("wbmp","image/vnd.wap.wbmp")
            ,("wbxml","application/vnd.wap.wbxml")
+           ,("webm","video/webm")
            ,("wk","application/x-123")
            ,("wm","video/x-ms-wm")
            ,("wma","audio/x-ms-wma")
diff --git a/src/Text/Pandoc/Readers/DocBook.hs b/src/Text/Pandoc/Readers/DocBook.hs
--- a/src/Text/Pandoc/Readers/DocBook.hs
+++ b/src/Text/Pandoc/Readers/DocBook.hs
@@ -874,6 +874,7 @@
              return $ link href "" ils'
         "foreignphrase" -> emph <$> innerInlines
         "emphasis" -> case attrValue "role" e of
+                             "bold"   -> strong <$> innerInlines
                              "strong" -> strong <$> innerInlines
                              "strikethrough" -> strikeout <$> innerInlines
                              _        -> emph <$> innerInlines
diff --git a/src/Text/Pandoc/SelfContained.hs b/src/Text/Pandoc/SelfContained.hs
--- a/src/Text/Pandoc/SelfContained.hs
+++ b/src/Text/Pandoc/SelfContained.hs
@@ -121,8 +121,12 @@
                   let url = toString
                           $ case B.take 1 u of
                                  "\"" -> B.takeWhile (/='"') $ B.drop 1 u
+                                 "'"  -> B.takeWhile (/='\'') $ B.drop 1 u
                                  _    -> u
-                  (raw, mime) <- getRaw userdata "" (d </> url)
+                  let url' = if isAbsoluteURI url
+                                then url
+                                else d </> url
+                  (raw, mime) <- getRaw userdata "" url'
                   rest <- cssURLs userdata d v
                   let enc = "data:" `B.append` fromString mime `B.append`
                                ";base64," `B.append` (encode raw)
diff --git a/src/Text/Pandoc/Slides.hs b/src/Text/Pandoc/Slides.hs
--- a/src/Text/Pandoc/Slides.hs
+++ b/src/Text/Pandoc/Slides.hs
@@ -49,9 +49,10 @@
 prepSlides slideLevel = ensureStartWithH . splitHrule
   where splitHrule (HorizontalRule : Header n xs : ys)
                        | n == slideLevel = Header slideLevel xs : splitHrule ys
-        splitHrule (HorizontalRule : xs) = Header slideLevel [] : splitHrule xs
+        splitHrule (HorizontalRule : xs) = Header slideLevel [Str "\0"] :
+                                           splitHrule xs
         splitHrule (x : xs)              = x : splitHrule xs
         splitHrule []                    = []
         ensureStartWithH bs@(Header n _:_)
                        | n <= slideLevel = bs
-        ensureStartWithH bs              = Header slideLevel [] : bs
+        ensureStartWithH bs              = Header slideLevel [Str "\0"] : bs
diff --git a/src/Text/Pandoc/UTF8.hs b/src/Text/Pandoc/UTF8.hs
--- a/src/Text/Pandoc/UTF8.hs
+++ b/src/Text/Pandoc/UTF8.hs
@@ -39,21 +39,25 @@
 
 where
 
+#if MIN_VERSION_base(4,4,0)
+#else
+import Codec.Binary.UTF8.String (encodeString)
+#endif
+
 #if MIN_VERSION_base(4,2,0)
 
 import System.IO hiding (readFile, writeFile, getContents,
                           putStr, putStrLn, hPutStr, hPutStrLn, hGetContents)
 import Prelude hiding (readFile, writeFile, getContents, putStr, putStrLn )
-import Codec.Binary.UTF8.String (encodeString)
 import qualified System.IO as IO
 
 readFile :: FilePath -> IO String
 readFile f = do
-  h <- openFile (encodeString f) ReadMode
+  h <- openFile (encodePath f) ReadMode
   hGetContents h
 
 writeFile :: FilePath -> String -> IO ()
-writeFile f s = withFile (encodeString f) WriteMode $ \h -> hPutStr h s
+writeFile f s = withFile (encodePath f) WriteMode $ \h -> hPutStr h s
 
 getContents :: IO String
 getContents = hGetContents stdin
@@ -76,7 +80,6 @@
 #else
 
 import qualified Data.ByteString as B
-import Codec.Binary.UTF8.String (encodeString)
 import Data.ByteString.UTF8 (toString, fromString)
 import Prelude hiding (readFile, writeFile, getContents, putStr, putStrLn)
 import System.IO (Handle)
@@ -91,10 +94,10 @@
 stripBOM s = s
 
 readFile :: FilePath -> IO String
-readFile = liftM (toString . stripBOM) . B.readFile . encodeString
+readFile = liftM (toString . stripBOM) . B.readFile . encodePath
 
 writeFile :: FilePath -> String -> IO ()
-writeFile f = B.writeFile (encodeString f) . fromString
+writeFile f = B.writeFile (encodePath f) . fromString
 
 getContents :: IO String
 getContents = liftM (toString . stripBOM) B.getContents
@@ -114,4 +117,11 @@
 hPutStrLn :: Handle -> String -> IO ()
 hPutStrLn h s = hPutStr h (s ++ "\n")
 
+#endif
+
+encodePath :: FilePath -> FilePath
+#if MIN_VERSION_base(4,4,0)
+encodePath = id
+#else
+encodePath = encodeString
 #endif
diff --git a/src/Text/Pandoc/Writers/ConTeXt.hs b/src/Text/Pandoc/Writers/ConTeXt.hs
--- a/src/Text/Pandoc/Writers/ConTeXt.hs
+++ b/src/Text/Pandoc/Writers/ConTeXt.hs
@@ -90,21 +90,16 @@
 escapeCharForConTeXt opts ch =
  let ligatures = writerTeXLigatures opts in
  case ch of
-    '{'    -> "\\letteropenbrace{}"
-    '}'    -> "\\letterclosebrace{}"
+    '{'    -> "\\{"
+    '}'    -> "\\}"
     '\\'   -> "\\letterbackslash{}"
     '$'    -> "\\$"
     '|'    -> "\\letterbar{}"
-    '^'    -> "\\letterhat{}"
     '%'    -> "\\letterpercent{}"
     '~'    -> "\\lettertilde{}"
-    '&'    -> "\\&"
     '#'    -> "\\#"
-    '<'    -> "\\letterless{}"
-    '>'    -> "\\lettermore{}"
     '['    -> "{[}"
     ']'    -> "{]}"
-    '_'    -> "\\letterunderscore{}"
     '\160' -> "~"
     '\x2014' | ligatures -> "---"
     '\x2013' | ligatures -> "--"
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -262,7 +262,9 @@
   -- always use level 1 for slide titles
   let level' = if slide then 1 else level
   let titleSlide = slide && level < slideLevel
-  header' <- blockToHtml opts (Header level' title')
+  header' <- if title' == [Str "\0"]  -- marker for hrule
+                then return mempty
+                else blockToHtml opts (Header level' title')
   let isSec (Sec _ _ _ _ _) = True
       isSec (Blk _)         = False
   innerContents <- mapM (elementToHtml slideLevel opts)
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs
--- a/src/Text/Pandoc/Writers/LaTeX.hs
+++ b/src/Text/Pandoc/Writers/LaTeX.hs
@@ -243,8 +243,11 @@
       let fragile = if not $ null $ queryWith hasCodeBlock elts ++ queryWith hasCode elts
                        then "[fragile]"
                        else ""
-      let slideStart = Para $ RawInline "latex" ("\\begin{frame}" ++ fragile ++
-                "\\frametitle{") : tit ++ [RawInline "latex" "}"]
+      let slideStart = Para $ RawInline "latex" ("\\begin{frame}" ++ fragile) :
+                if tit == [Str "\0"]  -- marker for hrule
+                   then []
+                   else (RawInline "latex" "\\frametitle{") : tit ++
+                        [RawInline "latex" "}"]
       let slideEnd = RawBlock "latex" "\\end{frame}"
       -- now carve up slide into blocks if there are sections inside
       bs <- concat `fmap` mapM (elementToBeamer slideLevel) elts
diff --git a/src/Text/Pandoc/Writers/MediaWiki.hs b/src/Text/Pandoc/Writers/MediaWiki.hs
--- a/src/Text/Pandoc/Writers/MediaWiki.hs
+++ b/src/Text/Pandoc/Writers/MediaWiki.hs
@@ -149,6 +149,7 @@
 
 blockToMediaWiki opts x@(BulletList items) = do
   oldUseTags <- get >>= return . stUseTags
+  listLevel <- get >>= return . stListLevel
   let useTags = oldUseTags || not (isSimpleList x)
   if useTags
      then do
@@ -160,10 +161,11 @@
         modify $ \s -> s { stListLevel = stListLevel s ++ "*" }
         contents <- mapM (listItemToMediaWiki opts) items
         modify $ \s -> s { stListLevel = init (stListLevel s) }
-        return $ vcat contents ++ "\n"
+        return $ vcat contents ++ if null listLevel then "\n" else ""
 
 blockToMediaWiki opts x@(OrderedList attribs items) = do
   oldUseTags <- get >>= return . stUseTags
+  listLevel <- get >>= return . stListLevel
   let useTags = oldUseTags || not (isSimpleList x)
   if useTags
      then do
@@ -175,10 +177,11 @@
         modify $ \s -> s { stListLevel = stListLevel s ++ "#" }
         contents <- mapM (listItemToMediaWiki opts) items
         modify $ \s -> s { stListLevel = init (stListLevel s) }
-        return $ vcat contents ++ "\n"
+        return $ vcat contents ++ if null listLevel then "\n" else ""
 
 blockToMediaWiki opts x@(DefinitionList items) = do
   oldUseTags <- get >>= return . stUseTags
+  listLevel <- get >>= return . stListLevel
   let useTags = oldUseTags || not (isSimpleList x)
   if useTags
      then do
@@ -190,7 +193,7 @@
         modify $ \s -> s { stListLevel = stListLevel s ++ ";" }
         contents <- mapM (definitionListItemToMediaWiki opts) items
         modify $ \s -> s { stListLevel = init (stListLevel s) }
-        return $ vcat contents ++ "\n"
+        return $ vcat contents ++ if null listLevel then "\n" else ""
 
 -- Auxiliary functions for lists:
 
diff --git a/src/pandoc.hs b/src/pandoc.hs
--- a/src/pandoc.hs
+++ b/src/pandoc.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 {-
 Copyright (C) 2006-2012 John MacFarlane <jgm@berkeley.edu>
 
@@ -56,9 +57,22 @@
 import Network.URI (parseURI, isURI, URI(..))
 import qualified Data.ByteString.Lazy as B
 import Data.ByteString.Lazy.UTF8 (toString )
-import Codec.Binary.UTF8.String (decodeString, encodeString)
 import Text.CSL.Reference (Reference(..))
+#if MIN_VERSION_base(4,4,0)
+#else
+import Codec.Binary.UTF8.String (decodeString, encodeString)
+#endif
 
+encodePath, decodeArg :: FilePath -> FilePath
+#if MIN_VERSION_base(4,4,0)
+encodePath = id
+decodeArg  = id
+#else
+encodePath = encodeString
+decodeArg  = decodeString
+#endif
+
+
 copyrightMessage :: String
 copyrightMessage = "\nCopyright (C) 2006-2012 John MacFarlane\n" ++
                     "Web:  http://johnmacfarlane.net/pandoc\n" ++
@@ -745,7 +759,7 @@
 main :: IO ()
 main = do
 
-  rawArgs <- liftM (map decodeString) getArgs
+  rawArgs <- liftM (map decodeArg) getArgs
   prg <- getProgName
   let compatMode = (prg == "hsmarkdown")
 
@@ -1023,7 +1037,7 @@
              else return doc1
 
   let writeBinary :: B.ByteString -> IO ()
-      writeBinary = B.writeFile (encodeString outputFile)
+      writeBinary = B.writeFile (encodePath outputFile)
 
   let writerFn :: FilePath -> String -> IO ()
       writerFn "-" = UTF8.putStr
diff --git a/tests/docbook-reader.docbook b/tests/docbook-reader.docbook
new file mode 100644
--- /dev/null
+++ b/tests/docbook-reader.docbook
@@ -0,0 +1,1468 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+                  "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
+<article>
+  <articleinfo>
+    <title>Pandoc Test Suite</title>
+    <author>
+      <firstname>John</firstname>
+      <surname>MacFarlane</surname>
+    </author>
+    <author>
+      <firstname></firstname>
+      <surname>Anonymous</surname>
+    </author>
+    <date>July 17, 2006</date>
+  </articleinfo>
+<para>
+  This is a set of tests for pandoc. Most of them are adapted from John
+  Gruber’s markdown test suite.
+</para>
+<sect1 id="headers">
+  <title>Headers</title>
+  <sect2 id="level-2-with-an-embedded-link">
+    <title>Level 2 with an <ulink url="/url">embedded link</ulink></title>
+    <sect3 id="level-3-with-emphasis">
+      <title>Level 3 with <emphasis>emphasis</emphasis></title>
+      <sect4 id="level-4">
+        <title>Level 4</title>
+        <sect5 id="level-5">
+          <title>Level 5</title>
+          <para>
+            Hi.
+          </para>
+        </sect5>
+      </sect4>
+    </sect3>
+  </sect2>
+</sect1>
+<sect1 id="level-1">
+  <title>Level 1</title>
+  <sect2 id="level-2-with-emphasis">
+    <title>Level 2 with <emphasis>emphasis</emphasis></title>
+    <sect3 id="level-3">
+      <title>Level 3</title>
+      <para>
+        with no blank line
+      </para>
+    </sect3>
+  </sect2>
+  <sect2 id="level-2">
+    <title>Level 2</title>
+    <para>
+      with no blank line
+    </para>
+  </sect2>
+</sect1>
+<sect1 id="paragraphs">
+  <title>Paragraphs</title>
+  <para>
+    Here’s a regular paragraph.
+  </para>
+  <para>
+    In Markdown 1.0.0 and earlier. Version 8. This line turns into a list
+    item. Because a hard-wrapped line in the middle of a paragraph looked like
+    a list item.
+  </para>
+  <para>
+    Here’s one with a bullet. * criminey.
+  </para>
+</sect1>
+<sect1 id="block-quotes">
+  <title>Block Quotes</title>
+  <para>
+    E-mail style:
+  </para>
+  <blockquote>
+    <para>
+      This is a block quote. It is pretty short.
+    </para>
+  </blockquote>
+  <blockquote>
+    <para>
+      Code in a block quote:
+    </para>
+    <programlisting>
+sub status {
+    print &quot;working&quot;;
+}
+</programlisting>
+    <para>
+      A list:
+    </para>
+    <orderedlist numeration="arabic">
+      <listitem>
+        <para>
+          item one
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          item two
+        </para>
+      </listitem>
+    </orderedlist>
+    <para>
+      Nested block quotes:
+    </para>
+    <blockquote>
+      <para>
+        nested
+      </para>
+    </blockquote>
+    <blockquote>
+      <para>
+        nested
+      </para>
+    </blockquote>
+  </blockquote>
+  <para>
+    This should not be a block quote: 2 &gt; 1.
+  </para>
+  <para>
+    And a following paragraph.
+  </para>
+</sect1>
+<sect1 id="code-blocks">
+  <title>Code Blocks</title>
+  <para>
+    Code:
+  </para>
+  <programlisting>
+---- (should be four hyphens)
+
+sub status {
+    print &quot;working&quot;;
+}
+
+this code block is indented by one tab
+</programlisting>
+  <para>
+    And:
+  </para>
+  <programlisting>
+    this code block is indented by two tabs
+
+These should not be escaped:  \$ \\ \&gt; \[ \{
+</programlisting>
+</sect1>
+<sect1 id="lists">
+  <title>Lists</title>
+  <sect2 id="unordered">
+    <title>Unordered</title>
+    <para>
+      Asterisks loose:
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>
+          asterisk 1
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          asterisk 2
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          asterisk 3
+        </para>
+      </listitem>
+    </itemizedlist>
+    <para>
+      Pluses loose:
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>
+          Plus 1
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Plus 2
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Plus 3
+        </para>
+      </listitem>
+    </itemizedlist>
+    <para>
+      Minuses loose:
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>
+          Minus 1
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Minus 2
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Minus 3
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+  <sect2 id="ordered">
+    <title>Ordered</title>
+    <orderedlist numeration="arabic">
+      <listitem>
+        <para>
+          First
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Second
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Third
+        </para>
+      </listitem>
+    </orderedlist>
+    <para>
+      and using spaces:
+    </para>
+    <orderedlist numeration="arabic">
+      <listitem>
+        <para>
+          One
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Two
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Three
+        </para>
+      </listitem>
+    </orderedlist>
+    <para>
+      Multiple paragraphs:
+    </para>
+    <orderedlist numeration="arabic">
+      <listitem>
+        <para>
+          Item 1, graf one.
+        </para>
+        <para>
+          Item 1. graf two. The quick brown fox jumped over the lazy dog’s
+          back.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Item 2.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Item 3.
+        </para>
+      </listitem>
+    </orderedlist>
+  </sect2>
+  <sect2 id="nested">
+    <title>Nested</title>
+    <itemizedlist>
+      <listitem>
+        <para>
+          Tab
+        </para>
+        <itemizedlist>
+          <listitem>
+            <para>
+              Tab
+            </para>
+            <itemizedlist>
+              <listitem>
+                <para>
+                  Tab
+                </para>
+              </listitem>
+            </itemizedlist>
+          </listitem>
+        </itemizedlist>
+      </listitem>
+    </itemizedlist>
+    <para>
+      Here’s another:
+    </para>
+    <orderedlist numeration="arabic">
+      <listitem>
+        <para>
+          First
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Second:
+        </para>
+        <itemizedlist>
+          <listitem>
+            <para>
+              Fee
+            </para>
+          </listitem>
+          <listitem>
+            <para>
+              Fie
+            </para>
+          </listitem>
+          <listitem>
+            <para>
+              Foe
+            </para>
+          </listitem>
+        </itemizedlist>
+      </listitem>
+      <listitem>
+        <para>
+          Third
+        </para>
+      </listitem>
+    </orderedlist>
+    <para>
+      Same thing but with paragraphs:
+    </para>
+    <orderedlist numeration="arabic">
+      <listitem>
+        <para>
+          First
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          Second:
+        </para>
+        <itemizedlist>
+          <listitem>
+            <para>
+              Fee
+            </para>
+          </listitem>
+          <listitem>
+            <para>
+              Fie
+            </para>
+          </listitem>
+          <listitem>
+            <para>
+              Foe
+            </para>
+          </listitem>
+        </itemizedlist>
+      </listitem>
+      <listitem>
+        <para>
+          Third
+        </para>
+      </listitem>
+    </orderedlist>
+  </sect2>
+  <sect2 id="tabs-and-spaces">
+    <title>Tabs and spaces</title>
+    <itemizedlist>
+      <listitem>
+        <para>
+          this is a list item indented with tabs
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          this is a list item indented with spaces
+        </para>
+        <itemizedlist>
+          <listitem>
+            <para>
+              this is an example list item indented with tabs
+            </para>
+          </listitem>
+          <listitem>
+            <para>
+              this is an example list item indented with spaces
+            </para>
+          </listitem>
+        </itemizedlist>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+  <sect2 id="fancy-list-markers">
+    <title>Fancy list markers</title>
+    <orderedlist numeration="arabic">
+      <listitem override="2">
+        <para>
+          begins with 2
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          and now 3
+        </para>
+        <para>
+          with a continuation
+        </para>
+        <orderedlist numeration="lowerroman">
+          <listitem override="4">
+            <para>
+              sublist with roman numerals, starting with 4
+            </para>
+          </listitem>
+          <listitem>
+            <para>
+              more items
+            </para>
+            <orderedlist numeration="upperalpha">
+              <listitem>
+                <para>
+                  a subsublist
+                </para>
+              </listitem>
+              <listitem>
+                <para>
+                  a subsublist
+                </para>
+              </listitem>
+            </orderedlist>
+          </listitem>
+        </orderedlist>
+      </listitem>
+    </orderedlist>
+    <para>
+      Nesting:
+    </para>
+    <orderedlist numeration="upperalpha">
+      <listitem>
+        <para>
+          Upper Alpha
+        </para>
+        <orderedlist numeration="upperroman">
+          <listitem>
+            <para>
+              Upper Roman.
+            </para>
+            <orderedlist numeration="arabic">
+              <listitem override="6">
+                <para>
+                  Decimal start with 6
+                </para>
+                <orderedlist numeration="loweralpha">
+                  <listitem override="3">
+                    <para>
+                      Lower alpha with paren
+                    </para>
+                  </listitem>
+                </orderedlist>
+              </listitem>
+            </orderedlist>
+          </listitem>
+        </orderedlist>
+      </listitem>
+    </orderedlist>
+    <para>
+      Autonumbering:
+    </para>
+    <orderedlist>
+      <listitem>
+        <para>
+          Autonumber.
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          More.
+        </para>
+        <orderedlist>
+          <listitem>
+            <para>
+              Nested.
+            </para>
+          </listitem>
+        </orderedlist>
+      </listitem>
+    </orderedlist>
+    <para>
+      Should not be a list item:
+    </para>
+    <para>
+      M.A. 2007
+    </para>
+    <para>
+      B. Williams
+    </para>
+  </sect2>
+</sect1>
+<sect1 id="definition-lists">
+  <title>Definition Lists</title>
+  <variablelist>
+    <varlistentry>
+      <term>
+        apple
+      </term>
+      <listitem>
+        <para>
+          red fruit
+        </para>
+      </listitem>
+    </varlistentry>
+    <varlistentry>
+      <term>
+        orange
+      </term>
+      <listitem>
+        <para>
+          orange fruit
+        </para>
+      </listitem>
+    </varlistentry>
+    <varlistentry>
+      <term>
+        banana
+      </term>
+      <listitem>
+        <para>
+          yellow fruit
+        </para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+  <para>
+    Multiple blocks with italics:
+  </para>
+  <variablelist>
+    <varlistentry>
+      <term>
+        <emphasis>apple</emphasis>
+      </term>
+      <listitem>
+        <para>
+          red fruit
+        </para>
+        <para>
+          contains seeds, crisp, pleasant to taste
+        </para>
+      </listitem>
+    </varlistentry>
+    <varlistentry>
+      <term>
+        <emphasis>orange</emphasis>
+      </term>
+      <listitem>
+        <para>
+          orange fruit
+        </para>
+        <programlisting>
+{ orange code block }
+</programlisting>
+        <blockquote>
+          <para>
+            orange block quote
+          </para>
+        </blockquote>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+  <para>
+    Multiple definitions, loose:
+  </para>
+  <variablelist>
+    <varlistentry>
+      <term>
+        apple
+      </term>
+      <listitem>
+        <para>
+          red fruit
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          computer
+        </para>
+      </listitem>
+    </varlistentry>
+    <varlistentry>
+      <term>
+        orange
+      </term>
+      <listitem>
+        <para>
+          orange fruit
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          bank
+        </para>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+  <para>
+    Blank line after term, indented marker, alternate markers:
+  </para>
+  <variablelist>
+    <varlistentry>
+      <term>
+        apple
+      </term>
+      <listitem>
+        <para>
+          red fruit
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          computer
+        </para>
+      </listitem>
+    </varlistentry>
+    <varlistentry>
+      <term>
+        orange
+      </term>
+      <listitem>
+        <para>
+          orange fruit
+        </para>
+        <orderedlist numeration="arabic">
+          <listitem>
+            <para>
+              sublist
+            </para>
+          </listitem>
+          <listitem>
+            <para>
+              sublist
+            </para>
+          </listitem>
+        </orderedlist>
+      </listitem>
+    </varlistentry>
+  </variablelist>
+</sect1>
+<sect1 id="inline-markup">
+  <title>Inline Markup</title>
+  <para>
+    This is <emphasis>emphasized</emphasis>, and so <emphasis>is
+    this</emphasis>.
+  </para>
+  <para>
+    This is <emphasis role="strong">strong</emphasis>, and so
+    <emphasis role="strong">is this</emphasis>.
+  </para>
+  <para>
+    An <emphasis><ulink url="/url">emphasized link</ulink></emphasis>.
+  </para>
+  <para>
+    <emphasis role="strong"><emphasis>This is strong and
+    em.</emphasis></emphasis>
+  </para>
+  <para>
+    So is <emphasis role="strong"><emphasis>this</emphasis></emphasis> word.
+  </para>
+  <para>
+    <emphasis role="strong"><emphasis>This is strong and
+    em.</emphasis></emphasis>
+  </para>
+  <para>
+    So is <emphasis role="strong"><emphasis>this</emphasis></emphasis> word.
+  </para>
+  <para>
+    This is code: <literal>&gt;</literal>, <literal>$</literal>,
+    <literal>\</literal>, <literal>\$</literal>,
+    <literal>&lt;html&gt;</literal>.
+  </para>
+  <para>
+    <emphasis role="strikethrough">This is
+    <emphasis>strikeout</emphasis>.</emphasis>
+  </para>
+  <para>
+    Superscripts: a<superscript>bc</superscript>d
+    a<superscript><emphasis>hello</emphasis></superscript>
+    a<superscript>hello there</superscript>.
+  </para>
+  <para>
+    Subscripts: H<subscript>2</subscript>O, H<subscript>23</subscript>O,
+    H<subscript>many of them</subscript>O.
+  </para>
+  <para>
+    These should not be superscripts or subscripts, because of the unescaped
+    spaces: a^b c^d, a~b c~d.
+  </para>
+</sect1>
+<sect1 id="smart-quotes-ellipses-dashes">
+  <title>Smart quotes, ellipses, dashes</title>
+  <para>
+    <quote>Hello,</quote> said the spider. <quote><quote>Shelob</quote> is my
+    name.</quote>
+  </para>
+  <para>
+    <quote>A</quote>, <quote>B</quote>, and <quote>C</quote> are letters.
+  </para>
+  <para>
+    <quote>He said, <quote>I want to go.</quote></quote> Were you alive in the
+    70’s?
+  </para>
+  <para>
+    Some dashes: one—two — three—four — five.
+  </para>
+  <para>
+    Dashes between numbers: 5–7, 255–66, 1987–1999.
+  </para>
+  <para>
+    Ellipses…and…and….
+  </para>
+</sect1>
+<sect1 id="special-characters">
+  <title>Special Characters</title>
+  <para>
+    Here is some unicode:
+  </para>
+  <itemizedlist>
+    <listitem>
+      <para>
+        I hat: Î
+      </para>
+    </listitem>
+    <listitem>
+      <para>
+        o umlaut: ö
+      </para>
+    </listitem>
+    <listitem>
+      <para>
+        section: §
+      </para>
+    </listitem>
+    <listitem>
+      <para>
+        set membership: ∈
+      </para>
+    </listitem>
+    <listitem>
+      <para>
+        copyright: ©
+      </para>
+    </listitem>
+  </itemizedlist>
+  <para>
+    AT&amp;T has an ampersand in their name.
+  </para>
+  <para>
+    AT&amp;T is another way to write it.
+  </para>
+  <para>
+    This &amp; that.
+  </para>
+  <para>
+    4 &lt; 5.
+  </para>
+  <para>
+    6 &gt; 5.
+  </para>
+  <para>
+    Backslash: \
+  </para>
+  <para>
+    Backtick: `
+  </para>
+  <para>
+    Asterisk: *
+  </para>
+  <para>
+    Underscore: _
+  </para>
+  <para>
+    Left brace: {
+  </para>
+  <para>
+    Right brace: }
+  </para>
+  <para>
+    Left bracket: [
+  </para>
+  <para>
+    Right bracket: ]
+  </para>
+  <para>
+    Left paren: (
+  </para>
+  <para>
+    Right paren: )
+  </para>
+  <para>
+    Greater-than: &gt;
+  </para>
+  <para>
+    Hash: #
+  </para>
+  <para>
+    Period: .
+  </para>
+  <para>
+    Bang: !
+  </para>
+  <para>
+    Plus: +
+  </para>
+  <para>
+    Minus: -
+  </para>
+</sect1>
+<sect1 id="links">
+  <title>Links</title>
+  <sect2 id="explicit">
+    <title>Explicit</title>
+    <para>
+      Just a <ulink url="/url/">URL</ulink>.
+    </para>
+    <para>
+      <ulink url="/url/">URL and title</ulink>.
+    </para>
+    <para>
+      <ulink url="/url/">URL and title</ulink>.
+    </para>
+    <para>
+      <ulink url="/url/">URL and title</ulink>.
+    </para>
+    <para>
+      <ulink url="/url/">URL and title</ulink>
+    </para>
+    <para>
+      <ulink url="/url/">URL and title</ulink>
+    </para>
+    <para>
+      <ulink url="/url/with_underscore">with_underscore</ulink>
+    </para>
+    <para>
+      <email>nobody@nowhere.net</email>
+    </para>
+    <para>
+      <ulink url="">Empty</ulink>.
+    </para>
+  </sect2>
+  <sect2 id="reference">
+    <title>Reference</title>
+    <para>
+      Foo <ulink url="/url/">bar</ulink>.
+    </para>
+    <para>
+      Foo <ulink url="/url/">bar</ulink>.
+    </para>
+    <para>
+      Foo <ulink url="/url/">bar</ulink>.
+    </para>
+    <para>
+      With <ulink url="/url/">embedded [brackets]</ulink>.
+    </para>
+    <para>
+      <ulink url="/url/">b</ulink> by itself should be a link.
+    </para>
+    <para>
+      Indented <ulink url="/url">once</ulink>.
+    </para>
+    <para>
+      Indented <ulink url="/url">twice</ulink>.
+    </para>
+    <para>
+      Indented <ulink url="/url">thrice</ulink>.
+    </para>
+    <para>
+      This should [not][] be a link.
+    </para>
+    <programlisting>
+[not]: /url
+</programlisting>
+    <para>
+      Foo <ulink url="/url/">bar</ulink>.
+    </para>
+    <para>
+      Foo <ulink url="/url/">biz</ulink>.
+    </para>
+  </sect2>
+  <sect2 id="with-ampersands">
+    <title>With ampersands</title>
+    <para>
+      Here’s a <ulink url="http://example.com/?foo=1&amp;bar=2">link with an
+      ampersand in the URL</ulink>.
+    </para>
+    <para>
+      Here’s a link with an amersand in the link text:
+      <ulink url="http://att.com/">AT&amp;T</ulink>.
+    </para>
+    <para>
+      Here’s an <ulink url="/script?foo=1&amp;bar=2">inline link</ulink>.
+    </para>
+    <para>
+      Here’s an <ulink url="/script?foo=1&amp;bar=2">inline link in pointy
+      braces</ulink>.
+    </para>
+  </sect2>
+  <sect2 id="autolinks">
+    <title>Autolinks</title>
+    <para>
+      With an ampersand:
+      <ulink url="http://example.com/?foo=1&amp;bar=2"><literal>http://example.com/?foo=1&amp;bar=2</literal></ulink>
+    </para>
+    <itemizedlist>
+      <listitem>
+        <para>
+          In a list?
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          <ulink url="http://example.com/"><literal>http://example.com/</literal></ulink>
+        </para>
+      </listitem>
+      <listitem>
+        <para>
+          It should.
+        </para>
+      </listitem>
+    </itemizedlist>
+    <para>
+      An e-mail address: <email>nobody@nowhere.net</email>
+    </para>
+    <blockquote>
+      <para>
+        Blockquoted:
+        <ulink url="http://example.com/"><literal>http://example.com/</literal></ulink>
+      </para>
+    </blockquote>
+    <para>
+      Auto-links should not occur here:
+      <literal>&lt;http://example.com/&gt;</literal>
+    </para>
+    <programlisting>
+or here: &lt;http://example.com/&gt;
+</programlisting>
+  </sect2>
+</sect1>
+<sect1 id="images">
+  <title>Images</title>
+  <para>
+    From <quote>Voyage dans la Lune</quote> by Georges Melies (1902):
+  </para>
+  <figure>
+    <title>lalune</title>
+    <mediaobject>
+      <imageobject>
+        <imagedata fileref="lalune.jpg" />
+      </imageobject>
+      <textobject><phrase>lalune</phrase></textobject>
+    </mediaobject>
+  </figure>
+  <para>
+    Here is a movie <inlinemediaobject>
+      <imageobject>
+        <imagedata fileref="movie.jpg" />
+      </imageobject>
+    </inlinemediaobject> icon.
+  </para>
+</sect1>
+<sect1 id="footnotes">
+  <title>Footnotes</title>
+  <para>
+    Here is a footnote reference,<footnote>
+      <para>
+        Here is the footnote. It can go anywhere after the footnote reference.
+        It need not be placed at the end of the document.
+      </para>
+    </footnote> and another.<footnote>
+      <para>
+        Here’s the long note. This one contains multiple blocks.
+      </para>
+      <para>
+        Subsequent blocks are indented to show that they belong to the
+        footnote (as with list items).
+      </para>
+      <programlisting>
+  { &lt;code&gt; }
+</programlisting>
+      <para>
+        If you want, you can indent every line, but you can also be lazy and
+        just indent the first line of each block.
+      </para>
+    </footnote> This should <emphasis>not</emphasis> be a footnote reference,
+    because it contains a space.[^my note] Here is an inline note.<footnote>
+      <para>
+        This is <emphasis>easier</emphasis> to type. Inline notes may contain
+        <ulink url="http://google.com">links</ulink> and <literal>]</literal>
+        verbatim characters, as well as [bracketed text].
+      </para>
+    </footnote>
+  </para>
+  <blockquote>
+    <para>
+      Notes can go in quotes.<footnote>
+        <para>
+          In quote.
+        </para>
+      </footnote>
+    </para>
+  </blockquote>
+  <orderedlist numeration="arabic">
+    <listitem>
+      <para>
+        And in list items.<footnote>
+          <para>
+            In list.
+          </para>
+        </footnote>
+      </para>
+    </listitem>
+  </orderedlist>
+  <para>
+    This paragraph should not be part of the note, as it is not indented.
+  </para>
+</sect1>
+<sect1 id="tables">
+  <title>Tables</title>
+  <para>
+    Simple table with caption:
+  </para>
+  <table>
+    <title>
+      Demonstration of simple table syntax.
+    </title>
+    <tgroup cols="4">
+      <colspec align="right" />
+      <colspec align="left" />
+      <colspec align="center" />
+      <colspec align="left" />
+      <thead>
+        <row>
+          <entry>
+            Right
+          </entry>
+          <entry>
+            Left
+          </entry>
+          <entry>
+            Center
+          </entry>
+          <entry>
+            Default
+          </entry>
+        </row>
+      </thead>
+      <tbody>
+        <row>
+          <entry>
+            12
+          </entry>
+          <entry>
+            12
+          </entry>
+          <entry>
+            12
+          </entry>
+          <entry>
+            12
+          </entry>
+        </row>
+        <row>
+          <entry>
+            123
+          </entry>
+          <entry>
+            123
+          </entry>
+          <entry>
+            123
+          </entry>
+          <entry>
+            123
+          </entry>
+        </row>
+        <row>
+          <entry>
+            1
+          </entry>
+          <entry>
+            1
+          </entry>
+          <entry>
+            1
+          </entry>
+          <entry>
+            1
+          </entry>
+        </row>
+      </tbody>
+    </tgroup>
+  </table>
+  <para>
+    Simple table without caption:
+  </para>
+  <informaltable>
+    <tgroup cols="4">
+      <colspec align="right" />
+      <colspec align="left" />
+      <colspec align="center" />
+      <colspec align="left" />
+      <thead>
+        <row>
+          <entry>
+            Right
+          </entry>
+          <entry>
+            Left
+          </entry>
+          <entry>
+            Center
+          </entry>
+          <entry>
+            Default
+          </entry>
+        </row>
+      </thead>
+      <tbody>
+        <row>
+          <entry>
+            12
+          </entry>
+          <entry>
+            12
+          </entry>
+          <entry>
+            12
+          </entry>
+          <entry>
+            12
+          </entry>
+        </row>
+        <row>
+          <entry>
+            123
+          </entry>
+          <entry>
+            123
+          </entry>
+          <entry>
+            123
+          </entry>
+          <entry>
+            123
+          </entry>
+        </row>
+        <row>
+          <entry>
+            1
+          </entry>
+          <entry>
+            1
+          </entry>
+          <entry>
+            1
+          </entry>
+          <entry>
+            1
+          </entry>
+        </row>
+      </tbody>
+    </tgroup>
+  </informaltable>
+  <para>
+    Simple table indented two spaces:
+  </para>
+  <table>
+    <title>
+      Demonstration of simple table syntax.
+    </title>
+    <tgroup cols="4">
+      <colspec align="right" />
+      <colspec align="left" />
+      <colspec align="center" />
+      <colspec align="left" />
+      <thead>
+        <row>
+          <entry>
+            Right
+          </entry>
+          <entry>
+            Left
+          </entry>
+          <entry>
+            Center
+          </entry>
+          <entry>
+            Default
+          </entry>
+        </row>
+      </thead>
+      <tbody>
+        <row>
+          <entry>
+            12
+          </entry>
+          <entry>
+            12
+          </entry>
+          <entry>
+            12
+          </entry>
+          <entry>
+            12
+          </entry>
+        </row>
+        <row>
+          <entry>
+            123
+          </entry>
+          <entry>
+            123
+          </entry>
+          <entry>
+            123
+          </entry>
+          <entry>
+            123
+          </entry>
+        </row>
+        <row>
+          <entry>
+            1
+          </entry>
+          <entry>
+            1
+          </entry>
+          <entry>
+            1
+          </entry>
+          <entry>
+            1
+          </entry>
+        </row>
+      </tbody>
+    </tgroup>
+  </table>
+  <para>
+    Multiline table with caption:
+  </para>
+  <table>
+    <title>
+      Here's the caption. It may span multiple lines.
+    </title>
+    <tgroup cols="4">
+      <colspec colwidth="2*" align="center" />
+      <colspec colwidth="2*" align="left" />
+      <colspec colwidth="3*" align="right" />
+      <colspec colwidth="3*" align="left" />
+      <thead>
+        <row>
+          <entry>
+            Centered Header
+          </entry>
+          <entry>
+            Left Aligned
+          </entry>
+          <entry>
+            Right Aligned
+          </entry>
+          <entry>
+            Default aligned
+          </entry>
+        </row>
+      </thead>
+      <tbody>
+        <row>
+          <entry>
+            First
+          </entry>
+          <entry>
+            row
+          </entry>
+          <entry>
+            12.0
+          </entry>
+          <entry>
+            Example of a row that spans multiple lines.
+          </entry>
+        </row>
+        <row>
+          <entry>
+            Second
+          </entry>
+          <entry>
+            row
+          </entry>
+          <entry>
+            5.0
+          </entry>
+          <entry>
+            Here's another one. Note the blank line between rows.
+          </entry>
+        </row>
+      </tbody>
+    </tgroup>
+  </table>
+  <para>
+    Multiline table without caption:
+  </para>
+  <informaltable>
+    <tgroup cols="4">
+      <colspec colwidth="1*" align="center" />
+      <colspec colwidth="2*" align="left" />
+      <colspec colwidth="3*" align="right" />
+      <colspec colwidth="4*" align="left" />
+      <thead>
+        <row>
+          <entry>
+            Centered Header
+          </entry>
+          <entry>
+            Left Aligned
+          </entry>
+          <entry>
+            Right Aligned
+          </entry>
+          <entry>
+            Default aligned
+          </entry>
+        </row>
+      </thead>
+      <tbody>
+        <row>
+          <entry>
+            First
+          </entry>
+          <entry>
+            row
+          </entry>
+          <entry>
+            12.0
+          </entry>
+          <entry>
+            Example of a row that spans multiple lines.
+          </entry>
+        </row>
+        <row>
+          <entry>
+            Second
+          </entry>
+          <entry>
+            row
+          </entry>
+          <entry>
+            5.0
+          </entry>
+          <entry>
+            Here's another one. Note the blank line between rows.
+          </entry>
+        </row>
+      </tbody>
+    </tgroup>
+  </informaltable>
+  <para>
+    Table without column headers:
+  </para>
+  <informaltable>
+    <tgroup cols="4">
+      <colspec align="right" />
+      <colspec align="left" />
+      <colspec align="center" />
+      <colspec align="right" />
+      <tbody>
+        <row>
+          <entry>
+            12
+          </entry>
+          <entry>
+            12
+          </entry>
+          <entry>
+            12
+          </entry>
+          <entry>
+            12
+          </entry>
+        </row>
+        <row>
+          <entry>
+            123
+          </entry>
+          <entry>
+            123
+          </entry>
+          <entry>
+            123
+          </entry>
+          <entry>
+            123
+          </entry>
+        </row>
+        <row>
+          <entry>
+            1
+          </entry>
+          <entry>
+            1
+          </entry>
+          <entry>
+            1
+          </entry>
+          <entry>
+            1
+          </entry>
+        </row>
+      </tbody>
+    </tgroup>
+  </informaltable>
+  <para>
+    Multiline table without column headers:
+  </para>
+  <informaltable>
+    <tgroup cols="4">
+      <colspec colwidth="10*" align="center" />
+      <colspec colwidth="10*" align="left" />
+      <colspec colwidth="10*" align="right" />
+      <colspec colwidth="10*" align="left" />
+      <tbody>
+        <row>
+          <entry>
+            First
+          </entry>
+          <entry>
+            row
+          </entry>
+          <entry>
+            12.0
+          </entry>
+          <entry>
+            Example of a row that spans multiple lines.
+          </entry>
+        </row>
+        <row>
+          <entry>
+            Second
+          </entry>
+          <entry>
+            row
+          </entry>
+          <entry>
+            5.0
+          </entry>
+          <entry>
+            Here's another one. Note the blank line between rows.
+          </entry>
+        </row>
+      </tbody>
+    </tgroup>
+  </informaltable>
+</sect1>
+</article>
diff --git a/tests/docbook-reader.native b/tests/docbook-reader.native
new file mode 100644
--- /dev/null
+++ b/tests/docbook-reader.native
@@ -0,0 +1,386 @@
+Pandoc (Meta {docTitle = [Str "Pandoc",Space,Str "Test",Space,Str "Suite"], docAuthors = [[Str "John",Space,Str "MacFarlane"],[Str "Anonymous"]], docDate = [Str "July",Space,Str "17,",Space,Str "2006"]})
+[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "set",Space,Str "of",Space,Str "tests",Space,Str "for",Space,Str "pandoc.",Space,Str "Most",Space,Str "of",Space,Str "them",Space,Str "are",Space,Str "adapted",Space,Str "from",Space,Str "John",Space,Str "Gruber\8217s",Space,Str "markdown",Space,Str "test",Space,Str "suite."]
+,Header 1 [Str "Headers"]
+,Header 2 [Str "Level",Space,Str "2",Space,Str "with",Space,Str "an",Space,Link [Str "embedded",Space,Str "link"] ("/url","")]
+,Header 3 [Str "Level",Space,Str "3",Space,Str "with",Space,Emph [Str "emphasis"]]
+,Header 4 [Str "Level",Space,Str "4"]
+,Header 5 [Str "Level",Space,Str "5"]
+,Para [Str "Hi."]
+,Header 1 [Str "Level",Space,Str "1"]
+,Header 2 [Str "Level",Space,Str "2",Space,Str "with",Space,Emph [Str "emphasis"]]
+,Header 3 [Str "Level",Space,Str "3"]
+,Para [Str "with",Space,Str "no",Space,Str "blank",Space,Str "line"]
+,Header 2 [Str "Level",Space,Str "2"]
+,Para [Str "with",Space,Str "no",Space,Str "blank",Space,Str "line"]
+,Header 1 [Str "Paragraphs"]
+,Para [Str "Here\8217s",Space,Str "a",Space,Str "regular",Space,Str "paragraph."]
+,Para [Str "In",Space,Str "Markdown",Space,Str "1.0.0",Space,Str "and",Space,Str "earlier.",Space,Str "Version",Space,Str "8.",Space,Str "This",Space,Str "line",Space,Str "turns",Space,Str "into",Space,Str "a",Space,Str "list",Space,Str "item.",Space,Str "Because",Space,Str "a",Space,Str "hard-wrapped",Space,Str "line",Space,Str "in",Space,Str "the",Space,Str "middle",Space,Str "of",Space,Str "a",Space,Str "paragraph",Space,Str "looked",Space,Str "like",Space,Str "a",Space,Str "list",Space,Str "item."]
+,Para [Str "Here\8217s",Space,Str "one",Space,Str "with",Space,Str "a",Space,Str "bullet.",Space,Str "*",Space,Str "criminey."]
+,Header 1 [Str "Block",Space,Str "Quotes"]
+,Para [Str "E-mail",Space,Str "style:"]
+,BlockQuote
+ [Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "block",Space,Str "quote.",Space,Str "It",Space,Str "is",Space,Str "pretty",Space,Str "short."]]
+,BlockQuote
+ [Para [Str "Code",Space,Str "in",Space,Str "a",Space,Str "block",Space,Str "quote:"]
+ ,CodeBlock ("",[],[]) "sub status {\n    print \"working\";\n}"
+ ,Para [Str "A",Space,Str "list:"]
+ ,OrderedList (1,Decimal,DefaultDelim)
+  [[Para [Str "item",Space,Str "one"]]
+  ,[Para [Str "item",Space,Str "two"]]]
+ ,Para [Str "Nested",Space,Str "block",Space,Str "quotes:"]
+ ,BlockQuote
+  [Para [Str "nested"]]
+ ,BlockQuote
+  [Para [Str "nested"]]]
+,Para [Str "This",Space,Str "should",Space,Str "not",Space,Str "be",Space,Str "a",Space,Str "block",Space,Str "quote:",Space,Str "2",Space,Str ">",Space,Str "1."]
+,Para [Str "And",Space,Str "a",Space,Str "following",Space,Str "paragraph."]
+,Header 1 [Str "Code",Space,Str "Blocks"]
+,Para [Str "Code:"]
+,CodeBlock ("",[],[]) "---- (should be four hyphens)\n\nsub status {\n    print \"working\";\n}\n\nthis code block is indented by one tab"
+,Para [Str "And:"]
+,CodeBlock ("",[],[]) "    this code block is indented by two tabs\n\nThese should not be escaped:  \\$ \\\\ \\> \\[ \\{"
+,Header 1 [Str "Lists"]
+,Header 2 [Str "Unordered"]
+,Para [Str "Asterisks",Space,Str "loose:"]
+,BulletList
+ [[Para [Str "asterisk",Space,Str "1"]]
+ ,[Para [Str "asterisk",Space,Str "2"]]
+ ,[Para [Str "asterisk",Space,Str "3"]]]
+,Para [Str "Pluses",Space,Str "loose:"]
+,BulletList
+ [[Para [Str "Plus",Space,Str "1"]]
+ ,[Para [Str "Plus",Space,Str "2"]]
+ ,[Para [Str "Plus",Space,Str "3"]]]
+,Para [Str "Minuses",Space,Str "loose:"]
+,BulletList
+ [[Para [Str "Minus",Space,Str "1"]]
+ ,[Para [Str "Minus",Space,Str "2"]]
+ ,[Para [Str "Minus",Space,Str "3"]]]
+,Header 2 [Str "Ordered"]
+,OrderedList (1,Decimal,DefaultDelim)
+ [[Para [Str "First"]]
+ ,[Para [Str "Second"]]
+ ,[Para [Str "Third"]]]
+,Para [Str "and",Space,Str "using",Space,Str "spaces:"]
+,OrderedList (1,Decimal,DefaultDelim)
+ [[Para [Str "One"]]
+ ,[Para [Str "Two"]]
+ ,[Para [Str "Three"]]]
+,Para [Str "Multiple",Space,Str "paragraphs:"]
+,OrderedList (1,Decimal,DefaultDelim)
+ [[Para [Str "Item",Space,Str "1,",Space,Str "graf",Space,Str "one."]
+  ,Para [Str "Item",Space,Str "1.",Space,Str "graf",Space,Str "two.",Space,Str "The",Space,Str "quick",Space,Str "brown",Space,Str "fox",Space,Str "jumped",Space,Str "over",Space,Str "the",Space,Str "lazy",Space,Str "dog\8217s",Space,Str "back."]]
+ ,[Para [Str "Item",Space,Str "2."]]
+ ,[Para [Str "Item",Space,Str "3."]]]
+,Header 2 [Str "Nested"]
+,BulletList
+ [[Para [Str "Tab"]
+  ,BulletList
+   [[Para [Str "Tab"]
+    ,BulletList
+     [[Para [Str "Tab"]]]]]]]
+,Para [Str "Here\8217s",Space,Str "another:"]
+,OrderedList (1,Decimal,DefaultDelim)
+ [[Para [Str "First"]]
+ ,[Para [Str "Second:"]
+  ,BulletList
+   [[Para [Str "Fee"]]
+   ,[Para [Str "Fie"]]
+   ,[Para [Str "Foe"]]]]
+ ,[Para [Str "Third"]]]
+,Para [Str "Same",Space,Str "thing",Space,Str "but",Space,Str "with",Space,Str "paragraphs:"]
+,OrderedList (1,Decimal,DefaultDelim)
+ [[Para [Str "First"]]
+ ,[Para [Str "Second:"]
+  ,BulletList
+   [[Para [Str "Fee"]]
+   ,[Para [Str "Fie"]]
+   ,[Para [Str "Foe"]]]]
+ ,[Para [Str "Third"]]]
+,Header 2 [Str "Tabs",Space,Str "and",Space,Str "spaces"]
+,BulletList
+ [[Para [Str "this",Space,Str "is",Space,Str "a",Space,Str "list",Space,Str "item",Space,Str "indented",Space,Str "with",Space,Str "tabs"]]
+ ,[Para [Str "this",Space,Str "is",Space,Str "a",Space,Str "list",Space,Str "item",Space,Str "indented",Space,Str "with",Space,Str "spaces"]
+  ,BulletList
+   [[Para [Str "this",Space,Str "is",Space,Str "an",Space,Str "example",Space,Str "list",Space,Str "item",Space,Str "indented",Space,Str "with",Space,Str "tabs"]]
+   ,[Para [Str "this",Space,Str "is",Space,Str "an",Space,Str "example",Space,Str "list",Space,Str "item",Space,Str "indented",Space,Str "with",Space,Str "spaces"]]]]]
+,Header 2 [Str "Fancy",Space,Str "list",Space,Str "markers"]
+,OrderedList (2,Decimal,DefaultDelim)
+ [[Para [Str "begins",Space,Str "with",Space,Str "2"]]
+ ,[Para [Str "and",Space,Str "now",Space,Str "3"]
+  ,Para [Str "with",Space,Str "a",Space,Str "continuation"]
+  ,OrderedList (4,LowerRoman,DefaultDelim)
+   [[Para [Str "sublist",Space,Str "with",Space,Str "roman",Space,Str "numerals,",Space,Str "starting",Space,Str "with",Space,Str "4"]]
+   ,[Para [Str "more",Space,Str "items"]
+    ,OrderedList (1,UpperAlpha,DefaultDelim)
+     [[Para [Str "a",Space,Str "subsublist"]]
+     ,[Para [Str "a",Space,Str "subsublist"]]]]]]]
+,Para [Str "Nesting:"]
+,OrderedList (1,UpperAlpha,DefaultDelim)
+ [[Para [Str "Upper",Space,Str "Alpha"]
+  ,OrderedList (1,UpperRoman,DefaultDelim)
+   [[Para [Str "Upper",Space,Str "Roman."]
+    ,OrderedList (6,Decimal,DefaultDelim)
+     [[Para [Str "Decimal",Space,Str "start",Space,Str "with",Space,Str "6"]
+      ,OrderedList (3,LowerAlpha,DefaultDelim)
+       [[Para [Str "Lower",Space,Str "alpha",Space,Str "with",Space,Str "paren"]]]]]]]]]
+,Para [Str "Autonumbering:"]
+,OrderedList (1,Decimal,DefaultDelim)
+ [[Para [Str "Autonumber."]]
+ ,[Para [Str "More."]
+  ,OrderedList (1,Decimal,DefaultDelim)
+   [[Para [Str "Nested."]]]]]
+,Para [Str "Should",Space,Str "not",Space,Str "be",Space,Str "a",Space,Str "list",Space,Str "item:"]
+,Para [Str "M.A.\160\&2007"]
+,Para [Str "B.",Space,Str "Williams"]
+,Header 1 [Str "Definition",Space,Str "Lists"]
+,DefinitionList
+ [([Str "apple"],
+   [[Para [Str "red",Space,Str "fruit"]]])
+ ,([Str "orange"],
+   [[Para [Str "orange",Space,Str "fruit"]]])
+ ,([Str "banana"],
+   [[Para [Str "yellow",Space,Str "fruit"]]])]
+,Para [Str "Multiple",Space,Str "blocks",Space,Str "with",Space,Str "italics:"]
+,DefinitionList
+ [([Emph [Str "apple"]],
+   [[Para [Str "red",Space,Str "fruit"]
+    ,Para [Str "contains",Space,Str "seeds,",Space,Str "crisp,",Space,Str "pleasant",Space,Str "to",Space,Str "taste"]]])
+ ,([Emph [Str "orange"]],
+   [[Para [Str "orange",Space,Str "fruit"]
+    ,CodeBlock ("",[],[]) "{ orange code block }"
+    ,BlockQuote
+     [Para [Str "orange",Space,Str "block",Space,Str "quote"]]]])]
+,Para [Str "Multiple",Space,Str "definitions,",Space,Str "loose:"]
+,DefinitionList
+ [([Str "apple"],
+   [[Para [Str "red",Space,Str "fruit"]]
+   ,[Para [Str "computer"]]])
+ ,([Str "orange"],
+   [[Para [Str "orange",Space,Str "fruit"]]
+   ,[Para [Str "bank"]]])]
+,Para [Str "Blank",Space,Str "line",Space,Str "after",Space,Str "term,",Space,Str "indented",Space,Str "marker,",Space,Str "alternate",Space,Str "markers:"]
+,DefinitionList
+ [([Str "apple"],
+   [[Para [Str "red",Space,Str "fruit"]]
+   ,[Para [Str "computer"]]])
+ ,([Str "orange"],
+   [[Para [Str "orange",Space,Str "fruit"]
+    ,OrderedList (1,Decimal,DefaultDelim)
+     [[Para [Str "sublist"]]
+     ,[Para [Str "sublist"]]]]])]
+,Header 1 [Str "Inline",Space,Str "Markup"]
+,Para [Str "This",Space,Str "is",Space,Emph [Str "emphasized"],Str ",",Space,Str "and",Space,Str "so",Space,Emph [Str "is",Space,Str "this"],Str "."]
+,Para [Str "This",Space,Str "is",Space,Strong [Str "strong"],Str ",",Space,Str "and",Space,Str "so",Space,Strong [Str "is",Space,Str "this"],Str "."]
+,Para [Str "An",Space,Emph [Link [Str "emphasized",Space,Str "link"] ("/url","")],Str "."]
+,Para [Strong [Emph [Str "This",Space,Str "is",Space,Str "strong",Space,Str "and",Space,Str "em."]]]
+,Para [Str "So",Space,Str "is",Space,Strong [Emph [Str "this"]],Space,Str "word."]
+,Para [Strong [Emph [Str "This",Space,Str "is",Space,Str "strong",Space,Str "and",Space,Str "em."]]]
+,Para [Str "So",Space,Str "is",Space,Strong [Emph [Str "this"]],Space,Str "word."]
+,Para [Str "This",Space,Str "is",Space,Str "code:",Space,Code ("",[],[]) ">",Str ",",Space,Code ("",[],[]) "$",Str ",",Space,Code ("",[],[]) "\\",Str ",",Space,Code ("",[],[]) "\\$",Str ",",Space,Code ("",[],[]) "<html>",Str "."]
+,Para [Strikeout [Str "This",Space,Str "is",Space,Emph [Str "strikeout"],Str "."]]
+,Para [Str "Superscripts:",Space,Str "a",Superscript [Str "bc"],Str "d",Space,Str "a",Superscript [Emph [Str "hello"]],Space,Str "a",Superscript [Str "hello\160there"],Str "."]
+,Para [Str "Subscripts:",Space,Str "H",Subscript [Str "2"],Str "O,",Space,Str "H",Subscript [Str "23"],Str "O,",Space,Str "H",Subscript [Str "many\160of\160them"],Str "O."]
+,Para [Str "These",Space,Str "should",Space,Str "not",Space,Str "be",Space,Str "superscripts",Space,Str "or",Space,Str "subscripts,",Space,Str "because",Space,Str "of",Space,Str "the",Space,Str "unescaped",Space,Str "spaces:",Space,Str "a^b",Space,Str "c^d,",Space,Str "a~b",Space,Str "c~d."]
+,Header 1 [Str "Smart",Space,Str "quotes,",Space,Str "ellipses,",Space,Str "dashes"]
+,Para [Quoted DoubleQuote [Str "Hello,"],Space,Str "said",Space,Str "the",Space,Str "spider.",Space,Quoted DoubleQuote [Quoted SingleQuote [Str "Shelob"],Space,Str "is",Space,Str "my",Space,Str "name."]]
+,Para [Quoted DoubleQuote [Str "A"],Str ",",Space,Quoted DoubleQuote [Str "B"],Str ",",Space,Str "and",Space,Quoted DoubleQuote [Str "C"],Space,Str "are",Space,Str "letters."]
+,Para [Quoted DoubleQuote [Str "He",Space,Str "said,",Space,Quoted SingleQuote [Str "I",Space,Str "want",Space,Str "to",Space,Str "go."]],Space,Str "Were",Space,Str "you",Space,Str "alive",Space,Str "in",Space,Str "the",Space,Str "70\8217s?"]
+,Para [Str "Some",Space,Str "dashes:",Space,Str "one\8212two",Space,Str "\8212",Space,Str "three\8212four",Space,Str "\8212",Space,Str "five."]
+,Para [Str "Dashes",Space,Str "between",Space,Str "numbers:",Space,Str "5\8211\&7,",Space,Str "255\8211\&66,",Space,Str "1987\8211\&1999."]
+,Para [Str "Ellipses\8230and\8230and\8230."]
+,Header 1 [Str "Special",Space,Str "Characters"]
+,Para [Str "Here",Space,Str "is",Space,Str "some",Space,Str "unicode:"]
+,BulletList
+ [[Para [Str "I",Space,Str "hat:",Space,Str "\206"]]
+ ,[Para [Str "o",Space,Str "umlaut:",Space,Str "\246"]]
+ ,[Para [Str "section:",Space,Str "\167"]]
+ ,[Para [Str "set",Space,Str "membership:",Space,Str "\8712"]]
+ ,[Para [Str "copyright:",Space,Str "\169"]]]
+,Para [Str "AT&T",Space,Str "has",Space,Str "an",Space,Str "ampersand",Space,Str "in",Space,Str "their",Space,Str "name."]
+,Para [Str "AT&T",Space,Str "is",Space,Str "another",Space,Str "way",Space,Str "to",Space,Str "write",Space,Str "it."]
+,Para [Str "This",Space,Str "&",Space,Str "that."]
+,Para [Str "4",Space,Str "<",Space,Str "5."]
+,Para [Str "6",Space,Str ">",Space,Str "5."]
+,Para [Str "Backslash:",Space,Str "\\"]
+,Para [Str "Backtick:",Space,Str "`"]
+,Para [Str "Asterisk:",Space,Str "*"]
+,Para [Str "Underscore:",Space,Str "_"]
+,Para [Str "Left",Space,Str "brace:",Space,Str "{"]
+,Para [Str "Right",Space,Str "brace:",Space,Str "}"]
+,Para [Str "Left",Space,Str "bracket:",Space,Str "["]
+,Para [Str "Right",Space,Str "bracket:",Space,Str "]"]
+,Para [Str "Left",Space,Str "paren:",Space,Str "("]
+,Para [Str "Right",Space,Str "paren:",Space,Str ")"]
+,Para [Str "Greater-than:",Space,Str ">"]
+,Para [Str "Hash:",Space,Str "#"]
+,Para [Str "Period:",Space,Str "."]
+,Para [Str "Bang:",Space,Str "!"]
+,Para [Str "Plus:",Space,Str "+"]
+,Para [Str "Minus:",Space,Str "-"]
+,Header 1 [Str "Links"]
+,Header 2 [Str "Explicit"]
+,Para [Str "Just",Space,Str "a",Space,Link [Str "URL"] ("/url/",""),Str "."]
+,Para [Link [Str "URL",Space,Str "and",Space,Str "title"] ("/url/",""),Str "."]
+,Para [Link [Str "URL",Space,Str "and",Space,Str "title"] ("/url/",""),Str "."]
+,Para [Link [Str "URL",Space,Str "and",Space,Str "title"] ("/url/",""),Str "."]
+,Para [Link [Str "URL",Space,Str "and",Space,Str "title"] ("/url/","")]
+,Para [Link [Str "URL",Space,Str "and",Space,Str "title"] ("/url/","")]
+,Para [Link [Str "with_underscore"] ("/url/with_underscore","")]
+,Para [Link [Code ("",[],[]) "nobody@nowhere.net"] ("mailto:nobody@nowhere.net","")]
+,Para [Link [Str "Empty"] ("",""),Str "."]
+,Header 2 [Str "Reference"]
+,Para [Str "Foo",Space,Link [Str "bar"] ("/url/",""),Str "."]
+,Para [Str "Foo",Space,Link [Str "bar"] ("/url/",""),Str "."]
+,Para [Str "Foo",Space,Link [Str "bar"] ("/url/",""),Str "."]
+,Para [Str "With",Space,Link [Str "embedded",Space,Str "[brackets]"] ("/url/",""),Str "."]
+,Para [Link [Str "b"] ("/url/",""),Space,Str "by",Space,Str "itself",Space,Str "should",Space,Str "be",Space,Str "a",Space,Str "link."]
+,Para [Str "Indented",Space,Link [Str "once"] ("/url",""),Str "."]
+,Para [Str "Indented",Space,Link [Str "twice"] ("/url",""),Str "."]
+,Para [Str "Indented",Space,Link [Str "thrice"] ("/url",""),Str "."]
+,Para [Str "This",Space,Str "should",Space,Str "[not][]",Space,Str "be",Space,Str "a",Space,Str "link."]
+,CodeBlock ("",[],[]) "[not]: /url"
+,Para [Str "Foo",Space,Link [Str "bar"] ("/url/",""),Str "."]
+,Para [Str "Foo",Space,Link [Str "biz"] ("/url/",""),Str "."]
+,Header 2 [Str "With",Space,Str "ampersands"]
+,Para [Str "Here\8217s",Space,Str "a",Space,Link [Str "link",Space,Str "with",Space,Str "an",Space,Str "ampersand",Space,Str "in",Space,Str "the",Space,Str "URL"] ("http://example.com/?foo=1&bar=2",""),Str "."]
+,Para [Str "Here\8217s",Space,Str "a",Space,Str "link",Space,Str "with",Space,Str "an",Space,Str "amersand",Space,Str "in",Space,Str "the",Space,Str "link",Space,Str "text:",Space,Link [Str "AT&T"] ("http://att.com/",""),Str "."]
+,Para [Str "Here\8217s",Space,Str "an",Space,Link [Str "inline",Space,Str "link"] ("/script?foo=1&bar=2",""),Str "."]
+,Para [Str "Here\8217s",Space,Str "an",Space,Link [Str "inline",Space,Str "link",Space,Str "in",Space,Str "pointy",Space,Str "braces"] ("/script?foo=1&bar=2",""),Str "."]
+,Header 2 [Str "Autolinks"]
+,Para [Str "With",Space,Str "an",Space,Str "ampersand:",Space,Link [Code ("",[],[]) "http://example.com/?foo=1&bar=2"] ("http://example.com/?foo=1&bar=2","")]
+,BulletList
+ [[Para [Str "In",Space,Str "a",Space,Str "list?"]]
+ ,[Para [Link [Code ("",[],[]) "http://example.com/"] ("http://example.com/","")]]
+ ,[Para [Str "It",Space,Str "should."]]]
+,Para [Str "An",Space,Str "e-mail",Space,Str "address:",Space,Link [Code ("",[],[]) "nobody@nowhere.net"] ("mailto:nobody@nowhere.net","")]
+,BlockQuote
+ [Para [Str "Blockquoted:",Space,Link [Code ("",[],[]) "http://example.com/"] ("http://example.com/","")]]
+,Para [Str "Auto-links",Space,Str "should",Space,Str "not",Space,Str "occur",Space,Str "here:",Space,Code ("",[],[]) "<http://example.com/>"]
+,CodeBlock ("",[],[]) "or here: <http://example.com/>"
+,Header 1 [Str "Images"]
+,Para [Str "From",Space,Quoted DoubleQuote [Str "Voyage",Space,Str "dans",Space,Str "la",Space,Str "Lune"],Space,Str "by",Space,Str "Georges",Space,Str "Melies",Space,Str "(1902):"]
+,Para [Image [Str "lalune"] ("lalune.jpg","")]
+,Para [Str "Here",Space,Str "is",Space,Str "a",Space,Str "movie",Space,Image [] ("movie.jpg",""),Space,Str "icon."]
+,Header 1 [Str "Footnotes"]
+,Para [Str "Here",Space,Str "is",Space,Str "a",Space,Str "footnote",Space,Str "reference,",Note [Para [Str "Here",Space,Str "is",Space,Str "the",Space,Str "footnote.",Space,Str "It",Space,Str "can",Space,Str "go",Space,Str "anywhere",Space,Str "after",Space,Str "the",Space,Str "footnote",Space,Str "reference.",Space,Str "It",Space,Str "need",Space,Str "not",Space,Str "be",Space,Str "placed",Space,Str "at",Space,Str "the",Space,Str "end",Space,Str "of",Space,Str "the",Space,Str "document."]],Space,Str "and",Space,Str "another.",Note [Para [Str "Here\8217s",Space,Str "the",Space,Str "long",Space,Str "note.",Space,Str "This",Space,Str "one",Space,Str "contains",Space,Str "multiple",Space,Str "blocks."],Para [Str "Subsequent",Space,Str "blocks",Space,Str "are",Space,Str "indented",Space,Str "to",Space,Str "show",Space,Str "that",Space,Str "they",Space,Str "belong",Space,Str "to",Space,Str "the",Space,Str "footnote",Space,Str "(as",Space,Str "with",Space,Str "list",Space,Str "items)."],CodeBlock ("",[],[]) "  { <code> }",Para [Str "If",Space,Str "you",Space,Str "want,",Space,Str "you",Space,Str "can",Space,Str "indent",Space,Str "every",Space,Str "line,",Space,Str "but",Space,Str "you",Space,Str "can",Space,Str "also",Space,Str "be",Space,Str "lazy",Space,Str "and",Space,Str "just",Space,Str "indent",Space,Str "the",Space,Str "first",Space,Str "line",Space,Str "of",Space,Str "each",Space,Str "block."]],Space,Str "This",Space,Str "should",Space,Emph [Str "not"],Space,Str "be",Space,Str "a",Space,Str "footnote",Space,Str "reference,",Space,Str "because",Space,Str "it",Space,Str "contains",Space,Str "a",Space,Str "space.[^my",Space,Str "note]",Space,Str "Here",Space,Str "is",Space,Str "an",Space,Str "inline",Space,Str "note.",Note [Para [Str "This",Space,Str "is",Space,Emph [Str "easier"],Space,Str "to",Space,Str "type.",Space,Str "Inline",Space,Str "notes",Space,Str "may",Space,Str "contain",Space,Link [Str "links"] ("http://google.com",""),Space,Str "and",Space,Code ("",[],[]) "]",Space,Str "verbatim",Space,Str "characters,",Space,Str "as",Space,Str "well",Space,Str "as",Space,Str "[bracketed",Space,Str "text]."]]]
+,BlockQuote
+ [Para [Str "Notes",Space,Str "can",Space,Str "go",Space,Str "in",Space,Str "quotes.",Note [Para [Str "In",Space,Str "quote."]]]]
+,OrderedList (1,Decimal,DefaultDelim)
+ [[Para [Str "And",Space,Str "in",Space,Str "list",Space,Str "items.",Note [Para [Str "In",Space,Str "list."]]]]]
+,Para [Str "This",Space,Str "paragraph",Space,Str "should",Space,Str "not",Space,Str "be",Space,Str "part",Space,Str "of",Space,Str "the",Space,Str "note,",Space,Str "as",Space,Str "it",Space,Str "is",Space,Str "not",Space,Str "indented."]
+,Header 1 [Str "Tables"]
+,Para [Str "Simple",Space,Str "table",Space,Str "with",Space,Str "caption:"]
+,Table [Str "Demonstration",Space,Str "of",Space,Str "simple",Space,Str "table",Space,Str "syntax."] [AlignRight,AlignLeft,AlignCenter,AlignLeft] [0.0,0.0,0.0,0.0]
+ [[Plain [Str "Right"]]
+ ,[Plain [Str "Left"]]
+ ,[Plain [Str "Center"]]
+ ,[Plain [Str "Default"]]]
+ [[[Plain [Str "12"]]
+  ,[Plain [Str "12"]]
+  ,[Plain [Str "12"]]
+  ,[Plain [Str "12"]]]
+ ,[[Plain [Str "123"]]
+  ,[Plain [Str "123"]]
+  ,[Plain [Str "123"]]
+  ,[Plain [Str "123"]]]
+ ,[[Plain [Str "1"]]
+  ,[Plain [Str "1"]]
+  ,[Plain [Str "1"]]
+  ,[Plain [Str "1"]]]]
+,Para [Str "Simple",Space,Str "table",Space,Str "without",Space,Str "caption:"]
+,Table [] [AlignRight,AlignLeft,AlignCenter,AlignLeft] [0.0,0.0,0.0,0.0]
+ [[Plain [Str "Right"]]
+ ,[Plain [Str "Left"]]
+ ,[Plain [Str "Center"]]
+ ,[Plain [Str "Default"]]]
+ [[[Plain [Str "12"]]
+  ,[Plain [Str "12"]]
+  ,[Plain [Str "12"]]
+  ,[Plain [Str "12"]]]
+ ,[[Plain [Str "123"]]
+  ,[Plain [Str "123"]]
+  ,[Plain [Str "123"]]
+  ,[Plain [Str "123"]]]
+ ,[[Plain [Str "1"]]
+  ,[Plain [Str "1"]]
+  ,[Plain [Str "1"]]
+  ,[Plain [Str "1"]]]]
+,Para [Str "Simple",Space,Str "table",Space,Str "indented",Space,Str "two",Space,Str "spaces:"]
+,Table [Str "Demonstration",Space,Str "of",Space,Str "simple",Space,Str "table",Space,Str "syntax."] [AlignRight,AlignLeft,AlignCenter,AlignLeft] [0.0,0.0,0.0,0.0]
+ [[Plain [Str "Right"]]
+ ,[Plain [Str "Left"]]
+ ,[Plain [Str "Center"]]
+ ,[Plain [Str "Default"]]]
+ [[[Plain [Str "12"]]
+  ,[Plain [Str "12"]]
+  ,[Plain [Str "12"]]
+  ,[Plain [Str "12"]]]
+ ,[[Plain [Str "123"]]
+  ,[Plain [Str "123"]]
+  ,[Plain [Str "123"]]
+  ,[Plain [Str "123"]]]
+ ,[[Plain [Str "1"]]
+  ,[Plain [Str "1"]]
+  ,[Plain [Str "1"]]
+  ,[Plain [Str "1"]]]]
+,Para [Str "Multiline",Space,Str "table",Space,Str "with",Space,Str "caption:"]
+,Table [Str "Here's",Space,Str "the",Space,Str "caption.",Space,Str "It",Space,Str "may",Space,Str "span",Space,Str "multiple",Space,Str "lines."] [AlignCenter,AlignLeft,AlignRight,AlignLeft] [0.2,0.2,0.3,0.3]
+ [[Plain [Str "Centered",Space,Str "Header"]]
+ ,[Plain [Str "Left",Space,Str "Aligned"]]
+ ,[Plain [Str "Right",Space,Str "Aligned"]]
+ ,[Plain [Str "Default",Space,Str "aligned"]]]
+ [[[Plain [Str "First"]]
+  ,[Plain [Str "row"]]
+  ,[Plain [Str "12.0"]]
+  ,[Plain [Str "Example",Space,Str "of",Space,Str "a",Space,Str "row",Space,Str "that",Space,Str "spans",Space,Str "multiple",Space,Str "lines."]]]
+ ,[[Plain [Str "Second"]]
+  ,[Plain [Str "row"]]
+  ,[Plain [Str "5.0"]]
+  ,[Plain [Str "Here's",Space,Str "another",Space,Str "one.",Space,Str "Note",Space,Str "the",Space,Str "blank",Space,Str "line",Space,Str "between",Space,Str "rows."]]]]
+,Para [Str "Multiline",Space,Str "table",Space,Str "without",Space,Str "caption:"]
+,Table [] [AlignCenter,AlignLeft,AlignRight,AlignLeft] [0.1,0.2,0.3,0.4]
+ [[Plain [Str "Centered",Space,Str "Header"]]
+ ,[Plain [Str "Left",Space,Str "Aligned"]]
+ ,[Plain [Str "Right",Space,Str "Aligned"]]
+ ,[Plain [Str "Default",Space,Str "aligned"]]]
+ [[[Plain [Str "First"]]
+  ,[Plain [Str "row"]]
+  ,[Plain [Str "12.0"]]
+  ,[Plain [Str "Example",Space,Str "of",Space,Str "a",Space,Str "row",Space,Str "that",Space,Str "spans",Space,Str "multiple",Space,Str "lines."]]]
+ ,[[Plain [Str "Second"]]
+  ,[Plain [Str "row"]]
+  ,[Plain [Str "5.0"]]
+  ,[Plain [Str "Here's",Space,Str "another",Space,Str "one.",Space,Str "Note",Space,Str "the",Space,Str "blank",Space,Str "line",Space,Str "between",Space,Str "rows."]]]]
+,Para [Str "Table",Space,Str "without",Space,Str "column",Space,Str "headers:"]
+,Table [] [AlignRight,AlignLeft,AlignCenter,AlignRight] [0.0,0.0,0.0,0.0]
+ [[]
+ ,[]
+ ,[]
+ ,[]]
+ [[[Plain [Str "12"]]
+  ,[Plain [Str "12"]]
+  ,[Plain [Str "12"]]
+  ,[Plain [Str "12"]]]
+ ,[[Plain [Str "123"]]
+  ,[Plain [Str "123"]]
+  ,[Plain [Str "123"]]
+  ,[Plain [Str "123"]]]
+ ,[[Plain [Str "1"]]
+  ,[Plain [Str "1"]]
+  ,[Plain [Str "1"]]
+  ,[Plain [Str "1"]]]]
+,Para [Str "Multiline",Space,Str "table",Space,Str "without",Space,Str "column",Space,Str "headers:"]
+,Table [] [AlignCenter,AlignLeft,AlignRight,AlignLeft] [0.25,0.25,0.25,0.25]
+ [[]
+ ,[]
+ ,[]
+ ,[]]
+ [[[Plain [Str "First"]]
+  ,[Plain [Str "row"]]
+  ,[Plain [Str "12.0"]]
+  ,[Plain [Str "Example",Space,Str "of",Space,Str "a",Space,Str "row",Space,Str "that",Space,Str "spans",Space,Str "multiple",Space,Str "lines."]]]
+ ,[[Plain [Str "Second"]]
+  ,[Plain [Str "row"]]
+  ,[Plain [Str "5.0"]]
+  ,[Plain [Str "Here's",Space,Str "another",Space,Str "one.",Space,Str "Note",Space,Str "the",Space,Str "blank",Space,Str "line",Space,Str "between",Space,Str "rows."]]]]]
diff --git a/tests/writer.context b/tests/writer.context
--- a/tests/writer.context
+++ b/tests/writer.context
@@ -133,7 +133,7 @@
 \stopblockquote
 \stopblockquote
 
-This should not be a block quote: 2 \lettermore{} 1.
+This should not be a block quote: 2 > 1.
 
 And a following paragraph.
 
@@ -617,7 +617,7 @@
 Subscripts: H\low{2}O, H\low{23}O, H\low{many~of~them}O.
 
 These should not be superscripts or subscripts, because of the unescaped
-spaces: a\letterhat{}b c\letterhat{}d, a\lettertilde{}b c\lettertilde{}d.
+spaces: a^b c^d, a\lettertilde{}b c\lettertilde{}d.
 
 \thinrule
 
@@ -701,15 +701,15 @@
   copyright: ©
 \stopitemize
 
-AT\&T has an ampersand in their name.
+AT&T has an ampersand in their name.
 
-AT\&T is another way to write it.
+AT&T is another way to write it.
 
-This \& that.
+This & that.
 
-4 \letterless{} 5.
+4 < 5.
 
-6 \lettermore{} 5.
+6 > 5.
 
 Backslash: \letterbackslash{}
 
@@ -717,11 +717,11 @@
 
 Asterisk: *
 
-Underscore: \letterunderscore{}
+Underscore: _
 
-Left brace: \letteropenbrace{}
+Left brace: \{
 
-Right brace: \letterclosebrace{}
+Right brace: \}
 
 Left bracket: {[}
 
@@ -731,7 +731,7 @@
 
 Right paren: )
 
-Greater-than: \lettermore{}
+Greater-than: >
 
 Hash: \#
 
@@ -761,7 +761,7 @@
 
 \useURL[url9][/url/][][URL and title]\from[url9]
 
-\useURL[url10][/url/with_underscore][][with\letterunderscore{}underscore]\from[url10]
+\useURL[url10][/url/with_underscore][][with_underscore]\from[url10]
 
 \useURL[url11][mailto:nobody@nowhere.net][][Email link]\from[url11]
 
@@ -801,7 +801,7 @@
 ampersand in the URL]\from[url23].
 
 Here's a link with an amersand in the link text:
-\useURL[url24][http://att.com/][][AT\&T]\from[url24].
+\useURL[url24][http://att.com/][][AT&T]\from[url24].
 
 Here's an \useURL[url25][/script?foo=1&bar=2][][inline link]\from[url25].
 
@@ -811,7 +811,7 @@
 \subsection[autolinks]{Autolinks}
 
 With an ampersand:
-\useURL[url27][http://example.com/?foo=1&bar=2][][\hyphenatedurl{http://example.com/?foo=1\&bar=2}]\from[url27]
+\useURL[url27][http://example.com/?foo=1&bar=2][][\hyphenatedurl{http://example.com/?foo=1&bar=2}]\from[url27]
 
 \startitemize
 \item
@@ -864,11 +864,10 @@
 
   If you want, you can indent every line, but you can also be lazy and just
   indent the first line of each block.\stopbuffer\footnote{\getbuffer} This
-should {\em not} be a footnote reference, because it contains a
-space.{[}\letterhat{}my note{]} Here is an inline note.\footnote{This is
-  {\em easier} to type. Inline notes may contain
-  \useURL[url31][http://google.com][][links]\from[url31] and \type{]} verbatim
-  characters, as well as {[}bracketed text{]}.}
+should {\em not} be a footnote reference, because it contains a space.{[}^my
+note{]} Here is an inline note.\footnote{This is {\em easier} to type. Inline
+  notes may contain \useURL[url31][http://google.com][][links]\from[url31] and
+  \type{]} verbatim characters, as well as {[}bracketed text{]}.}
 
 \startblockquote
 Notes can go in quotes.\footnote{In quote.}
diff --git a/tests/writer.mediawiki b/tests/writer.mediawiki
--- a/tests/writer.mediawiki
+++ b/tests/writer.mediawiki
@@ -170,8 +170,6 @@
 ** Tab
 *** Tab
 
-
-
 Here’s another:
 
 # First
@@ -179,7 +177,6 @@
 #* Fee
 #* Fie
 #* Foe
-
 # Third
 
 Same thing but with paragraphs:
@@ -189,7 +186,6 @@
 #* Fee
 #* Fie
 #* Foe
-
 # Third
 
 == Tabs and spaces ==
@@ -199,7 +195,6 @@
 ** this is an example list item indented with tabs
 ** this is an example list item indented with spaces
 
-
 == Fancy list markers ==
 
 <ol start="2" style="list-style-type: decimal;">
@@ -235,7 +230,6 @@
 # More.
 ## Nested.
 
-
 Should not be a list item:
 
 M.A. 2007
@@ -312,7 +306,6 @@
 : orange fruit
 ;# sublist
 ;# sublist
-
 
 = HTML Blocks =
 
