diff --git a/AUTHORS.md b/AUTHORS.md
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -45,6 +45,7 @@
 - Craig S. Bosma
 - Damien Clochard
 - Daniel Bergey
+- Daniel Maslowski
 - Daniel T. Staal
 - Daniele D'Orazio
 - David A Roberts
@@ -57,6 +58,7 @@
 - Emily Eisenberg
 - Eric Kow
 - Eric Seidel
+- Eric Schrijver
 - Étienne Bersac
 - Felix Yan
 - Florian Eitel
@@ -129,6 +131,7 @@
 - Mathias Schenner
 - Mathias Walter
 - Mathieu Duponchelle
+- Matthew Doty
 - Matthew Eddey
 - Matthew Pickering
 - Matthias C. M. Troffaes
@@ -177,6 +180,7 @@
 - Sergey Astanin
 - Shahbaz Youssefi
 - Shaun Attfield
+- Shim Myeongseob
 - Sidarth Kapur
 - Sidharth Kapur
 - Simon Hengel
@@ -201,14 +205,17 @@
 - Wandmalfarbe
 - Waldir Pimenta
 - Wikiwide
+- Winnie Hellmann
 - Xavier Olive
 - Yan Pashkovsky
 - Yoan Blanc
 - Yuchen Pei
 - bucklereed
 - bumper314
+- chinapedia
 - csforste
 - d-dorazio
+- ebiim
 - iandol
 - infinity0x
 - kaizshang91
diff --git a/MANUAL.txt b/MANUAL.txt
--- a/MANUAL.txt
+++ b/MANUAL.txt
@@ -1,6 +1,6 @@
 % Pandoc User's Guide
 % John MacFarlane
-% April 5, 2019
+% June 11, 2019
 
 Synopsis
 ========
@@ -300,6 +300,7 @@
     - `icml` ([InDesign ICML])
     - `ipynb` ([Jupyter notebook])
     - `jats` ([JATS] XML)
+    - `jira` ([Jira] wiki markup)
     - `json` (JSON version of native AST)
     - `latex` ([LaTeX])
     - `man` ([roff man])
@@ -442,6 +443,7 @@
 [Rich Text Format]: http://en.wikipedia.org/wiki/Rich_Text_Format
 [DocBook]: http://docbook.org
 [JATS]: https://jats.nlm.nih.gov
+[Jira]: https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all
 [txt2tags]: http://txt2tags.org
 [EPUB]: http://idpf.org/epub
 [OPML]: http://dev.opml.org/spec2.html
@@ -751,6 +753,12 @@
     unless `-s/--standalone` is used, and it has no effect
     on `man`, `docbook4`, `docbook5`, or `jats` output.
 
+    Note that if you are producing a PDF via `ms`, the table
+    of contents will appear at the beginning of the
+    document, before the title.  If you would prefer it to
+    be at the end of the document, use the option
+    `--pdf-engine-opt=--no-toc-relocation`.
+
 `--toc-depth=`*NUMBER*
 
 :   Specify the number of section levels to include in the table
@@ -1397,6 +1405,12 @@
         - Peter Abelard
         ...
 
+    Note that if you just want to set PDF or HTML metadata, without
+    including a title block in the document itself, you can
+    set the `title-meta`, `author-meta`, and `date-meta`
+    variables.  (By default these are set automatically, based
+    on `title`, `author`, and `date`.)
+
 `subtitle`
 :   document subtitle, included in HTML, EPUB, LaTeX, ConTeXt, and docx
     documents
@@ -1905,6 +1919,11 @@
 
     Similarly, `outputfile` can be `-` if output goes to the terminal.
 
+    If you need absolute paths, use e.g. `$curdir$/$sourcefile$`.
+
+`curdir`
+:   working directory from which pandoc is run.
+
 `toc`
 :   non-null value if `--toc/--table-of-contents` was specified
 
@@ -2418,7 +2437,7 @@
 attributes, writers generally don't use all of this information.  Identifiers,
 classes, and key/value attributes are used in HTML and HTML-based formats such
 as EPUB and slidy.  Identifiers are used for labels and link anchors in the
-LaTeX, ConTeXt, Textile, and AsciiDoc writers.
+LaTeX, ConTeXt, Textile, Jira markup, and AsciiDoc writers.
 
 Headings with the class `unnumbered` will not be numbered, even if
 `--number-sections` is specified.  A single hyphen (`-`) in an attribute
@@ -3575,7 +3594,7 @@
 Texinfo
   ~ It will be rendered inside a `@math` command.
 
-roff man
+roff man, Jira markup
   ~ It will be rendered verbatim without `$`'s.
 
 MediaWiki, DokuWiki
@@ -3773,7 +3792,7 @@
     $\tuple{a, b, c}$
 
 Note that LaTeX macros will not be applied if they occur
-inside inside a raw span or block marked with the
+inside a raw span or block marked with the
 [`raw_attribute` extension](#extension-raw_attribute).
 
 When `latex_macros` is disabled, the raw LaTeX and math will
@@ -4933,17 +4952,24 @@
 acknowledgments                   frontmatter
 copyright-page                    frontmatter
 dedication                        frontmatter
+credits                           frontmatter
+keywords                          frontmatter
+imprint                           frontmatter
+contributors                      frontmatter
+other-credits                     frontmatter
+errata                            frontmatter
+revision-history                  frontmatter
+titlepage                         frontmatter
+halftitlepage                     frontmatter
+seriespage                        frontmatter
 foreword                          frontmatter
-halftitle,                        frontmatter
-introduction                      frontmatter
 preface                           frontmatter
 seriespage                        frontmatter
 titlepage                         frontmatter
-afterword                         backmatter
 appendix                          backmatter
 colophon                          backmatter
-conclusion                        backmatter
-epigraph                          backmatter
+bibliography                      backmatter
+index                             backmatter
 
 [epub-type]: http://www.idpf.org/epub/31/spec/epub-contentdocs.html#sec-epub-type-attribute
 
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -111,6 +111,9 @@
   - `ipynb` ([Jupyter
     notebook](https://nbformat.readthedocs.io/en/latest/))
   - `jats` ([JATS](https://jats.nlm.nih.gov) XML)
+  - `jira`
+    ([Jira](https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all)
+    wiki markup)
   - `json` (JSON version of native AST)
   - `latex` ([LaTeX](http://latex-project.org))
   - `man` ([roff
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,326 @@
+pandoc (2.7.3)
+
+  * Add `jira` (Atlassian's Jira wiki markup) as output format (#2497,
+    Albert Krewinkel).
+
+  * Add `tex_math_dollars` to `multimarkdownExtensions` (#5512).
+    This form is now supported in multimarkdown,
+    in addition to `tex_math_double_backslash`.
+
+  * Fix `--self-contained` so it works when output format has extensions.
+    Previously if you used `--self-contained` with `html-smart` or
+    `html+smart`, it wouldn't work.
+
+  * Add template variable `curdir` with working directory
+    from which pandoc is run (#5464).
+
+  * Markdown reader: don't create implicit reference for empty header
+    (#5549).
+
+  * Muse reader: allow images inside link descriptions (Alexander Krotov).
+
+  * HTML reader: epub related fixes.
+
+    + With epub extensions, check for `epub:type` in addition to `type`.
+    + Fix problem with noteref parsing which caused block-level
+      content to be eaten with the noteref.
+    + Rename `pAnyTag` to `pAny`.
+    + Refactor note resolution.
+    + Trim definition list terms (Alexander Krotov).
+
+  * LaTeX reader:
+
+    + Add braces when resolving `\DeclareMathOperator`
+      (#5441).  These seem to be needed for xelatex but not pdflatex.
+    + Allow newlines in `\mintinline`.
+    + Pass through unknown listings language as class (#5540).
+      Previously if the language was not in the list of languages supported
+      by listings, it would not be added as a class, so highlighting
+      would not be triggered.
+    + `rawLaTeXInline`: Include trailing `{}`s in raw latex commands (#5439).
+      This change affects the markdown reader and other readers that allow raw
+      LaTeX.  Previously, trailing `{}` would be included for unknown
+      commands, but not for known commands.  However, they are sometimes used
+      to avoid a trailing space after the command.  The chances that a `{}`
+      after a LaTeX command is not part of the command are very small.
+
+  * MediaWiki reader: handle multiple attributes in table row (#5471,
+    chinapedia).
+
+  * Docx reader: Add support for `w:rtl` (#5545).  Elements with this
+    property are put into Span inlines with `dir="rtl"`.
+
+  * DocBook reader: Issue `IgnoredElement` warnings.
+
+  * Org reader (Albert Krewinkel):
+
+    + Fix planning elements in headers level 3 and higher
+      (#5494).  Planning info is now always placed before
+      the subtree contents.  Previously, the planning info was placed after
+      the content if the header's subtree was converted to a list, which
+      happens with headers of level 3 and higher per default.
+    + Omit, but warn about unknown export options.  Unknown export
+      options are properly ignored and omitted from the output.
+    + Prefer plain symbols over math symbols (#5483).
+      Symbols like `\alpha` are output plain and unemphasized, not as math.
+    + Recognize emphasis after TODO/DONE keyword (#5484).
+
+  * FB2 reader:
+
+    + Skip unknown elements rather than throwing errors (#5560).
+      Sometimes custom elements are used (e.g. `id` element
+      inside `author`); previously the reader would halt with an error.
+      Now it skips the element and issues an `IgnoredElement` warning.
+    + Parse notes (#5493, Alexander Krotov).
+    + Internal improvements (Alexander Krotov).
+
+  * OpenDocument writer:  Roll back automatic figure/table numbering
+    (#5474).  This was added in pandoc 2.7.2, but it makes it impossible
+    to use pandoc-crossref. So this has been rolled back for now,
+    until we find a good solution to make this behavior optional
+    (or a creative way to let pandoc-crossref and this feature
+    to coexist).
+
+  * New module Text.Pandoc.Writers.Jira, exporting `writeJira` [API
+    change] (Albert Krewinkel).
+
+  * EPUB writer:
+
+    + Don't include 'landmarks' if there aren't any.
+      Previously we could get an empty ol element, which caused
+      validation errors with epubcheck.
+    + Ensure unique ids for styleesheets in content.opf (#5463).
+    + Make stylesheet link compatible with kindlegen (#5466,
+      Eric Schrijver).  Pandoc omitted `type="text/css"` from both
+      `<style>` and `<rel="stylesheet">` elements in all templates, which
+      is valid according to the spec. However, Amazon’s kindlegen software
+      relies on this attribute on `<link>` elements when detecting
+      stylesheets to include.
+
+  * HTML writer:
+
+    + Output video and audio elements depending on file
+      extension of the image path (Mauro Bieg).
+    + Emit empty alt tag in figures (#5518, Mauro Bieg).
+      The same text is already in the <figcaption> and
+      screen-readers would read it twice, see #4737.
+    + Don't add variation selector if it's already there.
+      This fixes round-trip failures.
+    + Prevent gratuitious emojification on iOS (#5469).
+      iOS chooses to render a number of Unicode entities, including '↩', as
+      big colorful emoji.  This can be defeated by appending Unicode VARIATION
+      SELECTOR-15'/'VARIATION SELECTOR-16'.  So we now append this character
+      when escaping strings, for both '↩' and '↔'.  If other characters prove
+      problematic, they can simply be added to `needsVariationSelector`.
+    + Add `class="heading"` to level 7+ Headers rendered as `<p>` elements
+      (#5457).
+
+  * RST writer: treat Span with no attributes as transparent (#5446).
+    Previously an Emph inside a Span was being treated as
+    nested markup and ignored.  With this patch, the Span
+    is just ignored.
+
+  * LaTeX writer:
+
+    + Include inline code attributes with `--listings` (#5420).
+    + Don't produce columns environment unless beamer (#5485).
+    + Fix footnote in image caption.  Regression: the fix for #4683 broke
+      this case.
+    + Don't highlight code in headings (#5574).  This causes
+      compilation errors.
+    + Use `\mbox` to get proper behavior inside `\sout` (#5529).
+
+  * EPUB writer: Fix document section assignments (#5546).
+    For example, introduction should go in bodymatter, not frontmatter, and
+    epigraph, conclusion, and afterward should go in bodymatter, not
+    backmatter.  For the full list of assignments, see the manual.
+
+  * Markdown writer:
+
+    + Add backslashes to avoid unwanted interpretation of
+      definition list terms as other kinds of block (#554).
+    + Ensure the code fence is long enough (#5519).
+      Previously too few backticks were used when the code block
+      contained an indented line of backticks.  (Ditto tildes.)
+    + Handle labels with integer names (Jesse Rosenthal, #5495).
+      Previously if labels had integer names, it could produce a conflict
+      with auto-labeled reference links. Now we test for a conflict and
+      find the next available integer.  This involves adding a new state
+      variable `stPrevRefs` to keep track of refs used in other document
+      parts when using `--reference-location=block|section`
+
+  * Textile writer: fix closing tag for math output (Albert Krewinkel).
+    Opening and closing tag for math output match now.
+
+  * Org writer: always indent src blocks content by 2 spaces (#5440, Albert
+    Krewinkel).  Emacs always uses two spaces when indenting the content of
+    src blocks, e.g., when exiting a `C-c '` edit-buffer. Pandoc used to
+    indent contents by the space-equivalent of one tab, but now always uses
+    two spaces, too.
+
+  * Asciidoc writer:
+
+    + Use `` `+...+` `` form for inline code.
+      The old `` `a__b__c` `` yields emphasis inside code in asciidoc.
+      To get a pure literal code span, use `` `+a__b__c+` ``.
+    + Use proper smart quotes with asciidoctor (#5487).
+      Asciidoctor has a different format for smart quotes.
+    + Use doubled ## when necessary for spans (#5566).
+    + Ensure correct nesting of strong/emph (#5565): strong
+      must be the outer element.
+
+  * JATS writer:
+
+    + Wrap elements with p when needed (#5570).  The JATS spec restricts
+      what elements can go inside `fn` and `list-item`.  So we wrap other
+      elements inside `<p specific-use="wrapper">` when needed.
+    + Properly handle footnotes (#5511) according to "best practice."
+      (Group them at the end in `<fn-group>` and use `<xref>` elements
+      to link them.)
+    + Fix citations with PMID so they validate (#5481).  This includes
+      an update to data/jats.csl.
+    + Ensure validity of `<pub-date>` by parsing the date and
+      extracting year, month, and day, as expected.  Also add an
+      iso-8601-date attribute automatically.
+    + Don't use `<break>` element for LineBreak. It is only
+      allowed in a few special contexts, and not in `<p>` elements.
+    + Don't make `<string-name>` a child of `<string>`, which is illegal.
+
+  * FB2 writer:
+
+    + Do not wrap note references into `<sup>` and brackets
+      (Alexander Krotov).  Existing FB2 readers, such as FBReader, already
+      display links with type="note" as a superscript.
+    + Use genre metadata field (#5478).
+
+  * Muse writer: do not escape empty line after `<br>` (Alexander Krotov).
+
+  * Add unicode code point in "Missing character" warning (#5538).
+    If the character isn't in the console font, the message is pretty useless,
+    so we show the code point for anything non-ASCII.
+
+  * Lua: add Version type to simplify comparisons (Albert Krewinkel).
+    Version specifiers like `PANDOC_VERSION` and `PANDOC_API_VERSION` are
+    turned into `Version` objects. The objects simplify version-appropriate
+    comparisons while maintaining backward-compatibility.
+    A function `pandoc.types.Version` is added as part of the newly
+    introduced module `pandoc.types`, allowing users to create version
+    objects in scripts.
+
+  * pandoc lua module (Albert Krewinkel):
+
+    - Fix deletion of nonexistent attributes (#5569).
+    - Better tests for Attr and AttributeList.
+
+  * pandoc.mediabag lua module (Albert Krewinkel):
+
+    + Add function `delete` for deleting a single item.
+    + Add function `empty` for removing all entries.
+    + Add function `items` for iterating over mediabag.
+
+  * Text.Pandoc.Class: Fix handling of `file:` URL scheme in
+    `downloadOrRead` (#5517, Mauro Bieg).  Previously `file:/`
+    URLs were handled wrongly and pandoc attempted to make HTTP
+    requests, which failed.
+
+  * Text.Pandoc.MIME: add `mediaCategory` [API change] (Mauro Bieg).
+
+  * Text.Pandoc.Shared:
+
+    + Add `onlySimpleTableCells` [API change]
+      (Mauro Bieg) and use this to consolidate simple-table detection
+      (#5524).  This fixes an inconsistency in the HTML reader, which did not
+      treat tables with `<p>` inside cells as simple.
+    + `metaToJSON`: treat digits starting with 0 as a string, not a number
+      (#5479).  This fixes a regression in YAML metadata in pandoc 2.7.2.
+
+  * Text.Pandoc.Logging: Add `IgnoredElement` constructor for
+    `LogMessage`.  `SkippedConetnt` doesn't work for some XML-based
+    readers which don't have access to parsec source positions.
+
+  * Text.Pandoc.Asciify: Add Turkish undotted-i (#5433, Mauro Bieg).
+
+  * Improve output of Lua tests (#5499, Albert Krewinkel).
+    This makes use of tasty-lua, a package to write tests in Lua
+    and integrate the results into Tasty output. Test output becomes
+    more informative: individual tests and test groups become visible
+    in test output. Failures are reported with helpful error messages.
+
+  * Lua: add `pandoc.system` module (#5468, Albert Krewinkel).
+    The `system` Lua module provides utility functions to interact with the
+    operating- and file system. E.g.
+    `print(pandoc.system.get_current_directory())`
+    or
+    ```lua
+        pandoc.system.with_temporary_directory('tikz', function (dir)
+          -- write and compile a TikZ file with pdflatex
+        end)
+    ```
+
+  * LaTeX template: Add pdflang to hypersetup if lang is set (#5443).
+
+  * beamer template: Fix using Beamer with geometry (#5505, Daniel Maslowski).
+    Beamer already loads geometry, so we need to use the `\geometry`
+    command to set geometry options.
+
+  * EPUB2/3 templates: Move inline styles to default epub.css (#5466).
+    NOTE: Those who use a custom CSS stylesheet with EPUB should
+    add these lines:
+
+        code{ white-space: pre-wrap; }
+        span.smallcaps{ font-variant: small-caps; }
+        span.underline{ text-decoration: underline; }
+        q { quotes: "“" "”" "‘" "’"; }
+        div.column{ display: inline-block; vertical-align: top; width: 50%; }
+
+  * reveal.js template:
+
+    + Updates for revealjs 3.8.0 (#5435, ebiim).
+    + Remove reference to head.min.js (#5448, Winnie Hellmann).
+      NOTE: users will need to update reveal.js to at least 3.8.0
+      for their presentations generated with this version of pandoc
+      to work correctly.
+
+  * Text.Pandoc.PDF:
+
+    + Replace `</>` with literal `/` (#5451).
+      We use forward-slash for a directory separator in tmpDir,
+      even on Windows (because that's what tex likes).  So we
+      should not put a backslash between the tmpDir and the
+      filename on Windows.  This is harmless enough in normal
+      Windows setups, but it breaks on Cygwin.
+      Thanks to @cc2x for noticing and diagnosing the problem.
+    + Allow use of `-output-directory` in `--pdf-engine-opt` (#5462).
+      This is currently possible with `mklatex` and `-outdir`, but
+      was not yet possible with xelatex and `-output-directory`.
+    + For PDF via ms/pdfroff, make TOC appear at beginning and in
+      PDF bookmarks (#5553).  Previously the TOC appeared at the end
+      of the document, and was not bookmarked.  To keep it at the end,
+      add `--pdf-engine-opt=--no-toc-relocation` to your command line.
+
+  * Fix broken links in documents (#5473, Shim Myeongseob).
+    Also, use absolute links to pandoc.org when possible, so that
+    the links can be followed by people viewing these documents
+    on GitHub.
+
+  * Improved sample lua tikz filter in lua-filters docs (#5445,
+    Matthew Doty).  There are three changes:
+
+    + It only processes elements which begin with `\begin{tikzpicture}`
+    + It uses pdf2svg instead of imagemagick to preserve fidelity
+    + The images produced have transparent backgrounds
+
+  * MANUAL.txt:
+
+    + Add note about `title-meta`, `author-meta`, `date-meta` (#5486).
+    + Fix typo (#5489, Christian Krause).
+
+  * add test/tables.xwiki to git and pandoc.cabal (#5498, Mauro Bieg).
+
+  * Disable missing-home-modules warning in `stack.yaml`.
+    Otherwise `stack ghci` fails.
+
+
 pandoc (2.7.2)
 
   * Add XWiki writer (#1800, Derek Chen-Becker).
diff --git a/data/epub.css b/data/epub.css
--- a/data/epub.css
+++ b/data/epub.css
@@ -17,3 +17,8 @@
 a.footnote-ref { vertical-align: super; }
 em, em em em, em em em em em { font-style: italic;}
 em em, em em em em { font-style: normal; }
+code{ white-space: pre-wrap; }
+span.smallcaps{ font-variant: small-caps; }
+span.underline{ text-decoration: underline; }
+q { quotes: "“" "”" "‘" "’"; }
+div.column{ display: inline-block; vertical-align: top; width: 50%; }
diff --git a/data/jats.csl b/data/jats.csl
--- a/data/jats.csl
+++ b/data/jats.csl
@@ -64,7 +64,7 @@
       <if type="book" match="any">
         <group prefix="{{jats}}&lt;source&gt;{{/jats}}" suffix="{{jats}}&lt;/source&gt;{{/jats}}">
 	        <text variable="title"/>
-				</group>			
+				</group>
 			</if>
       <else>
         <group prefix="{{jats}}&lt;article-title&gt;{{/jats}}" suffix="{{jats}}&lt;/article-title&gt;{{/jats}}">
@@ -90,8 +90,7 @@
     </choose>
     <choose>
       <if match="any" variable="PMID">
-        <group prefix="{{jats}}&lt;ext-link ext-link-type=&quot;pmid&quot; {{/jats}}" suffix="{{jats}}&lt;/ext-link&gt;{{/jats}}">
-          <text variable="PMID" prefix="{{jats}}xlink:href=&quot;http://www.ncbi.nlm.nih.gov/pubmed/{{/jats}}" suffix="{{jats}}&quot; xlink:type=&quot;simple&quot;&gt;{{/jats}}"/>
+        <group prefix="{{jats}}&lt;pub-id pub-id-type=&quot;pmid&quot;&gt;{{/jats}}" suffix="{{jats}}&lt;/pub-id&gt;{{/jats}}">
           <text variable="PMID"/>
         </group>
       </if>
@@ -202,4 +201,3 @@
     </layout>
   </bibliography>
 </style>
-
diff --git a/data/pandoc.lua b/data/pandoc.lua
--- a/data/pandoc.lua
+++ b/data/pandoc.lua
@@ -27,6 +27,7 @@
 -- Re-export bundled modules
 M.List = require 'pandoc.List'
 M.mediabag = require 'pandoc.mediabag'
+M.system = require 'pandoc.system'
 M.utils = require 'pandoc.utils'
 M.text = require 'text'
 
@@ -845,7 +846,10 @@
 
   __newindex = function (t, k, v)
     local cur, idx = List.find_if(t, assoc_key_equals(k))
-    if v == nil then
+    if v == nil and not cur then
+      -- deleted key does not exists in list
+      return
+    elseif v == nil then
       table.remove(t, idx)
     elseif cur then
       cur[2] = v
diff --git a/data/templates/default.epub2 b/data/templates/default.epub2
--- a/data/templates/default.epub2
+++ b/data/templates/default.epub2
@@ -6,15 +6,6 @@
   <meta http-equiv="Content-Style-Type" content="text/css" />
   <meta name="generator" content="pandoc" />
   <title>$pagetitle$</title>
-  <style type="text/css">
-      code{white-space: pre-wrap;}
-      span.smallcaps{font-variant: small-caps;}
-      span.underline{text-decoration: underline;}
-      div.column{display: inline-block; vertical-align: top; width: 50%;}
-$if(quotes)$
-      q { quotes: "“" "”" "‘" "’"; }
-$endif$
-  </style>
 $if(highlighting-css)$
   <style type="text/css">
 $highlighting-css$
diff --git a/data/templates/default.epub3 b/data/templates/default.epub3
--- a/data/templates/default.epub3
+++ b/data/templates/default.epub3
@@ -5,22 +5,13 @@
   <meta charset="utf-8" />
   <meta name="generator" content="pandoc" />
   <title>$pagetitle$</title>
-  <style>
-      code{white-space: pre-wrap;}
-      span.smallcaps{font-variant: small-caps;}
-      span.underline{text-decoration: underline;}
-      div.column{display: inline-block; vertical-align: top; width: 50%;}
-$if(quotes)$
-      q { quotes: "“" "”" "‘" "’"; }
-$endif$
-  </style>
 $if(highlighting-css)$
   <style>
 $highlighting-css$
   </style>
 $endif$
 $for(css)$
-  <link rel="stylesheet" href="$css$" />
+  <link rel="stylesheet" type="text/css" href="$css$" />
 $endfor$
 $for(header-includes)$
   $header-includes$
diff --git a/data/templates/default.jats b/data/templates/default.jats
--- a/data/templates/default.jats
+++ b/data/templates/default.jats
@@ -83,14 +83,14 @@
 $if(author.orcid)$
 <contrib-id contrib-id-type="orcid">$author.orcid$</contrib-id>
 $endif$
-<name>
 $if(author.surname)$
+<name>
 <surname>$author.surname$</surname>
 <given-names>$author.given-names$</given-names>
+</name>
 $else$
 <string-name>$author$</string-name>
 $endif$
-</name>
 $if(author.email)$
 <email>$author.email$</email>
 $endif$
@@ -120,22 +120,14 @@
 </author-notes>
 $endif$
 $if(date)$
-$if(date.iso-8601)$
-<pub-date pub-type="epub" iso-8601-date="$date.iso-8601$">
-$else$
-<pub-date pub-type="epub">
-$endif$
+<pub-date pub-type="epub"$if(date.iso-8601)$ iso-8601-date="$date.iso-8601$"$endif$>
 $if(date.day)$
-<day>$pub-date.day$</day>
+<day>$date.day$</day>
 $endif$
 $if(date.month)$
-<month>$pub-date.month$</month>
-$endif$
-$if(date.year)$
-<year>$pub-date.year$</year>
-$else$
-<string-date>$date$</string-date>
+<month>$date.month$</month>
 $endif$
+<year>$date.year$</year>
 </pub-date>
 $endif$
 $if(article.volume)$
diff --git a/data/templates/default.jira b/data/templates/default.jira
new file mode 100644
--- /dev/null
+++ b/data/templates/default.jira
@@ -0,0 +1,9 @@
+$for(include-before)$
+$include-before$
+
+$endfor$
+$body$
+$for(include-after)$
+
+$include-after$
+$endfor$
diff --git a/data/templates/default.latex b/data/templates/default.latex
--- a/data/templates/default.latex
+++ b/data/templates/default.latex
@@ -205,6 +205,9 @@
 $if(author-meta)$
   pdfauthor={$author-meta$},
 $endif$
+$if(lang)$
+  pdflang={$lang$},
+$endif$
 $if(subject)$
   pdfsubject={$subject$},
 $endif$
@@ -226,7 +229,11 @@
 \VerbatimFootnotes % allow verbatim text in footnotes
 $endif$
 $if(geometry)$
+$if(beamer)$
+\geometry{$for(geometry)$$geometry$$sep$,$endfor$}
+$else$
 \usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
+$endif$
 $endif$
 $if(beamer)$
 \newif\ifbibliography
diff --git a/data/templates/default.revealjs b/data/templates/default.revealjs
--- a/data/templates/default.revealjs
+++ b/data/templates/default.revealjs
@@ -16,6 +16,7 @@
   <meta name="apple-mobile-web-app-capable" content="yes">
   <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
   <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
+  <link rel="stylesheet" href="$revealjs-url$/css/reset.css">
   <link rel="stylesheet" href="$revealjs-url$/css/reveal.css">
   <style>
       code{white-space: pre-wrap;}
@@ -88,7 +89,6 @@
     </div>
   </div>
 
-  <script src="$revealjs-url$/lib/js/head.min.js"></script>
   <script src="$revealjs-url$/js/reveal.js"></script>
 
   <script>
diff --git a/man/pandoc.1 b/man/pandoc.1
--- a/man/pandoc.1
+++ b/man/pandoc.1
@@ -1,5 +1,5 @@
 .\"t
-.TH PANDOC 1 "April 5, 2019" "pandoc 2.7.2"
+.TH PANDOC 1 "June 11, 2019" "pandoc 2.7.3"
 .SH NAME
 pandoc - general markup converter
 .SH SYNOPSIS
@@ -339,6 +339,8 @@
 .IP \[bu] 2
 \f[C]jats\f[R] (JATS XML)
 .IP \[bu] 2
+\f[C]jira\f[R] (Jira wiki markup)
+.IP \[bu] 2
 \f[C]json\f[R] (JSON version of native AST)
 .IP \[bu] 2
 \f[C]latex\f[R] (LaTeX)
@@ -765,6 +767,13 @@
 This option has no effect unless \f[C]-s/--standalone\f[R] is used, and
 it has no effect on \f[C]man\f[R], \f[C]docbook4\f[R],
 \f[C]docbook5\f[R], or \f[C]jats\f[R] output.
+.RS
+.PP
+Note that if you are producing a PDF via \f[C]ms\f[R], the table of
+contents will appear at the beginning of the document, before the title.
+If you would prefer it to be at the end of the document, use the option
+\f[C]--pdf-engine-opt=--no-toc-relocation\f[R].
+.RE
 .TP
 .B \f[C]--toc-depth=\f[R]\f[I]NUMBER\f[R]
 Specify the number of section levels to include in the table of
@@ -1493,6 +1502,13 @@
 \&...
 \f[R]
 .fi
+.PP
+Note that if you just want to set PDF or HTML metadata, without
+including a title block in the document itself, you can set the
+\f[C]title-meta\f[R], \f[C]author-meta\f[R], and \f[C]date-meta\f[R]
+variables.
+(By default these are set automatically, based on \f[C]title\f[R],
+\f[C]author\f[R], and \f[C]date\f[R].)
 .RE
 .TP
 .B \f[C]subtitle\f[R]
@@ -2036,8 +2052,14 @@
 .PP
 Similarly, \f[C]outputfile\f[R] can be \f[C]-\f[R] if output goes to the
 terminal.
+.PP
+If you need absolute paths, use e.g.
+\f[C]$curdir$/$sourcefile$\f[R].
 .RE
 .TP
+.B \f[C]curdir\f[R]
+working directory from which pandoc is run.
+.TP
 .B \f[C]toc\f[R]
 non-null value if \f[C]--toc/--table-of-contents\f[R] was specified
 .TP
@@ -2643,7 +2665,7 @@
 Identifiers, classes, and key/value attributes are used in HTML and
 HTML-based formats such as EPUB and slidy.
 Identifiers are used for labels and link anchors in the LaTeX, ConTeXt,
-Textile, and AsciiDoc writers.
+Textile, Jira markup, and AsciiDoc writers.
 .PP
 Headings with the class \f[C]unnumbered\f[R] will not be numbered, even
 if \f[C]--number-sections\f[R] is specified.
@@ -4126,7 +4148,7 @@
 .B Texinfo
 It will be rendered inside a \f[C]\[at]math\f[R] command.
 .TP
-.B roff man
+.B roff man, Jira markup
 It will be rendered verbatim without \f[C]$\f[R]\[aq]s.
 .TP
 .B MediaWiki, DokuWiki
@@ -4350,8 +4372,8 @@
 \f[R]
 .fi
 .PP
-Note that LaTeX macros will not be applied if they occur inside inside a
-raw span or block marked with the \f[C]raw_attribute\f[R] extension.
+Note that LaTeX macros will not be applied if they occur inside a raw
+span or block marked with the \f[C]raw_attribute\f[R] extension.
 .PP
 When \f[C]latex_macros\f[R] is disabled, the raw LaTeX and math will not
 have macros applied.
@@ -5814,41 +5836,76 @@
 frontmatter
 T}
 T{
-foreword
+credits
 T}@T{
 frontmatter
 T}
 T{
-halftitle,
+keywords
 T}@T{
 frontmatter
 T}
 T{
-introduction
+imprint
 T}@T{
 frontmatter
 T}
 T{
-preface
+contributors
 T}@T{
 frontmatter
 T}
 T{
-seriespage
+other-credits
 T}@T{
 frontmatter
 T}
 T{
+errata
+T}@T{
+frontmatter
+T}
+T{
+revision-history
+T}@T{
+frontmatter
+T}
+T{
 titlepage
 T}@T{
 frontmatter
 T}
 T{
-afterword
+halftitlepage
 T}@T{
-backmatter
+frontmatter
 T}
 T{
+seriespage
+T}@T{
+frontmatter
+T}
+T{
+foreword
+T}@T{
+frontmatter
+T}
+T{
+preface
+T}@T{
+frontmatter
+T}
+T{
+seriespage
+T}@T{
+frontmatter
+T}
+T{
+titlepage
+T}@T{
+frontmatter
+T}
+T{
 appendix
 T}@T{
 backmatter
@@ -5859,12 +5916,12 @@
 backmatter
 T}
 T{
-conclusion
+bibliography
 T}@T{
 backmatter
 T}
 T{
-epigraph
+index
 T}@T{
 backmatter
 T}
diff --git a/pandoc.cabal b/pandoc.cabal
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -1,17 +1,17 @@
 name:            pandoc
-version:         2.7.2
+version:         2.7.3
 cabal-version:   2.0
 build-type:      Simple
 license:         GPL-2
 license-file:    COPYING.md
-copyright:       (c) 2006-2018 John MacFarlane
+copyright:       (c) 2006-2019 John MacFarlane
 author:          John MacFarlane <jgm@berkeley.edu>
 maintainer:      John MacFarlane <jgm@berkeley.edu>
 bug-reports:     https://github.com/jgm/pandoc/issues
 stability:       alpha
 homepage:        https://pandoc.org
 category:        Text
-tested-with:     GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.3
+tested-with:     GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5
 synopsis:        Conversion between markup formats
 description:     Pandoc is a Haskell library for converting from one markup
                  format to another, and a command-line tool that uses
@@ -25,7 +25,7 @@
                  reStructuredText, XHTML, HTML 5, LaTeX, ConTeXt, DocBook,
                  JATS, OPML, TEI, OpenDocument, ODT, Word docx,
                  PowerPoint pptx, RTF, MediaWiki, DokuWiki, XWiki,
-                 ZimWiki, Textile, roff man, roff ms, plain text,
+                 ZimWiki, Textile, Jira, roff man, roff ms, plain text,
                  Emacs Org-Mode, AsciiDoc, Haddock markup,
                  EPUB (v2 and v3), ipynb, FictionBook2,
                  InDesign ICML, Muse, LaTeX beamer slides,
@@ -53,6 +53,7 @@
                  data/templates/default.latex
                  data/templates/default.context
                  data/templates/default.texinfo
+                 data/templates/default.jira
                  data/templates/default.man
                  data/templates/default.ms
                  data/templates/default.markdown
@@ -242,6 +243,7 @@
                  test/tables.docbook4
                  test/tables.docbook5
                  test/tables.jats
+                 test/tables.jira
                  test/tables.dokuwiki
                  test/tables.zimwiki
                  test/tables.icml
@@ -266,12 +268,14 @@
                  test/tables.fb2
                  test/tables.muse
                  test/tables.custom
+                 test/tables.xwiki
                  test/testsuite.txt
                  test/writer.latex
                  test/writer.context
                  test/writer.docbook4
                  test/writer.docbook5
                  test/writer.jats
+                 test/writer.jira
                  test/writer.html4
                  test/writer.html5
                  test/writer.man
@@ -338,6 +342,7 @@
                  test/odt/markdown/*.md
                  test/odt/native/*.native
                  test/lua/*.lua
+                 test/lua/module/*.lua
 source-repository head
   type:          git
   location:      git://github.com/jgm/pandoc.git
@@ -360,7 +365,7 @@
   Default:       False
 
 library
-  build-depends: base >= 4.8 && < 5,
+  build-depends: base >= 4.9 && < 5,
                  syb >= 0.1 && < 0.8,
                  containers >= 0.4.2.1 && < 0.7,
                  unordered-containers >= 0.2 && < 0.3,
@@ -387,13 +392,14 @@
                  tagsoup >= 0.14.6 && < 0.15,
                  base64-bytestring >= 0.1 && < 1.1,
                  zlib >= 0.5 && < 0.7,
-                 skylighting >= 0.7.7 && < 0.8,
+                 skylighting >= 0.8.1 && < 0.9,
                  data-default >= 0.4 && < 0.8,
                  temporary >= 1.1 && < 1.4,
                  blaze-html >= 0.9 && < 0.10,
                  blaze-markup >= 0.8 && < 0.9,
                  vector >= 0.10 && < 0.13,
                  hslua >= 1.0.1 && < 1.1,
+                 hslua-module-system >= 0.2 && < 0.3,
                  hslua-module-text >= 0.2 && < 0.3,
                  binary >= 0.5 && < 0.11,
                  SHA >= 1.6 && < 1.7,
@@ -401,7 +407,7 @@
                  deepseq >= 1.3 && < 1.5,
                  JuicyPixels >= 3.1.6.1 && < 3.4,
                  Glob >= 0.7 && < 0.11,
-                 cmark-gfm >= 0.1.8 && < 0.2,
+                 cmark-gfm >= 0.2 && < 0.3,
                  doctemplates >= 0.2.1 && < 0.3,
                  network-uri >= 2.6 && < 2.7,
                  network >= 2.6,
@@ -497,6 +503,7 @@
                    Text.Pandoc.Writers.HTML,
                    Text.Pandoc.Writers.Ipynb,
                    Text.Pandoc.Writers.ICML,
+                   Text.Pandoc.Writers.Jira,
                    Text.Pandoc.Writers.LaTeX,
                    Text.Pandoc.Writers.ConTeXt,
                    Text.Pandoc.Writers.OpenDocument,
@@ -588,9 +595,13 @@
                    Text.Pandoc.Lua.Marshaling.AST,
                    Text.Pandoc.Lua.Marshaling.AnyValue,
                    Text.Pandoc.Lua.Marshaling.CommonState,
+                   Text.Pandoc.Lua.Marshaling.MediaBag,
                    Text.Pandoc.Lua.Marshaling.ReaderOptions,
+                   Text.Pandoc.Lua.Marshaling.Version,
                    Text.Pandoc.Lua.Module.MediaBag,
                    Text.Pandoc.Lua.Module.Pandoc,
+                   Text.Pandoc.Lua.Module.System,
+                   Text.Pandoc.Lua.Module.Types,
                    Text.Pandoc.Lua.Module.Utils,
                    Text.Pandoc.Lua.Packages,
                    Text.Pandoc.Lua.Util,
@@ -678,9 +689,10 @@
                   Diff >= 0.2 && < 0.4,
                   tasty >= 0.11 && < 1.3,
                   tasty-hunit >= 0.9 && < 0.11,
+                  tasty-lua >= 0.2 && < 0.3,
                   tasty-quickcheck >= 0.8 && < 0.11,
                   tasty-golden >= 2.3 && < 2.4,
-                  QuickCheck >= 2.4 && < 2.13,
+                  QuickCheck >= 2.4 && < 2.14,
                   containers >= 0.4.2.1 && < 0.7,
                   executable-path >= 0.0 && < 0.1,
                   zip-archive >= 0.2.3.4 && < 0.5,
@@ -696,6 +708,7 @@
                   Tests.Command
                   Tests.Helpers
                   Tests.Lua
+                  Tests.Lua.Module
                   Tests.Shared
                   Tests.Readers.LaTeX
                   Tests.Readers.HTML
diff --git a/src/Text/Pandoc/App.hs b/src/Text/Pandoc/App.hs
--- a/src/Text/Pandoc/App.hs
+++ b/src/Text/Pandoc/App.hs
@@ -241,13 +241,13 @@
                        "all"    -> id
                        "none"   -> (filterIpynbOutput Nothing :)
                        "best"   -> (filterIpynbOutput (Just $
-                                     if htmlFormat writerName
+                                     if htmlFormat format
                                         then Format "html"
                                         else
-                                          case writerName of
+                                          case format of
                                             "latex"  -> Format "latex"
                                             "beamer" -> Format "latex"
-                                            _        -> Format writerName) :)
+                                            _        -> Format format) :)
                        _  -> id)  -- should not happen
                      $ []
 
@@ -299,7 +299,7 @@
                                else (<> T.singleton '\n')
                 output <- addNl <$> f writerOptions doc
                 writerFn eol outputFile =<<
-                  if optSelfContained opts && htmlFormat writerName
+                  if optSelfContained opts && htmlFormat format
                      -- TODO not maximally efficient; change type
                      -- of makeSelfContained so it works w/ Text
                      then T.pack <$> makeSelfContained (T.unpack output)
diff --git a/src/Text/Pandoc/App/OutputSettings.hs b/src/Text/Pandoc/App/OutputSettings.hs
--- a/src/Text/Pandoc/App/OutputSettings.hs
+++ b/src/Text/Pandoc/App/OutputSettings.hs
@@ -28,6 +28,7 @@
 import Data.Maybe (fromMaybe)
 import Skylighting (defaultSyntaxMap)
 import Skylighting.Parser (addSyntaxDefinition, parseSyntaxDefinition)
+import System.Directory (getCurrentDirectory)
 import System.Exit (exitSuccess)
 import System.FilePath
 import System.IO (stdout)
@@ -113,6 +114,8 @@
         s <- UTF8.toString . fst <$> fetchItem fp
         return $ (varname, s) : vars
 
+  curdir <- liftIO getCurrentDirectory
+
   variables <-
     withList (addStringAsVariable "sourcefile")
              (reverse $ optInputFiles opts)
@@ -139,6 +142,8 @@
     >>=
     maybe return (addStringAsVariable "epub-cover-image")
                  (optEpubCoverImage opts)
+    >>=
+    addStringAsVariable "curdir" curdir
     >>=
     (\vars ->  if format == "dzslides"
                   then do
diff --git a/src/Text/Pandoc/Asciify.hs b/src/Text/Pandoc/Asciify.hs
--- a/src/Text/Pandoc/Asciify.hs
+++ b/src/Text/Pandoc/Asciify.hs
@@ -121,6 +121,7 @@
   ,('\302','I')
   ,('\303','i')
   ,('\304','I')
+  ,('\305','i')
   ,('\308','J')
   ,('\309','j')
   ,('\310','K')
diff --git a/src/Text/Pandoc/Class.hs b/src/Text/Pandoc/Class.hs
--- a/src/Text/Pandoc/Class.hs
+++ b/src/Text/Pandoc/Class.hs
@@ -572,10 +572,10 @@
             Nothing -> openURL s' -- will throw error
     (Nothing, s') ->
        case parseURI s' of  -- requires absolute URI
-            -- We don't want to treat C:/ as a scheme:
-            Just u' | length (uriScheme u') > 2 -> openURL (show u')
             Just u' | uriScheme u' == "file:" ->
                  readLocalFile $ uriPathToPath (uriPath u')
+            -- We don't want to treat C:/ as a scheme:
+            Just u' | length (uriScheme u') > 2 -> openURL (show u')
             _ -> readLocalFile fp -- get from local file system
    where readLocalFile f = do
              resourcePath <- getResourcePath
diff --git a/src/Text/Pandoc/Extensions.hs b/src/Text/Pandoc/Extensions.hs
--- a/src/Text/Pandoc/Extensions.hs
+++ b/src/Text/Pandoc/Extensions.hs
@@ -275,6 +275,7 @@
   -- Note: MMD's raw TeX syntax requires raw TeX to be
   -- enclosed in HTML comment
   , Ext_tex_math_double_backslash
+  , Ext_tex_math_dollars
   , Ext_intraword_underscores
   , Ext_mmd_title_block
   , Ext_footnotes
diff --git a/src/Text/Pandoc/Logging.hs b/src/Text/Pandoc/Logging.hs
--- a/src/Text/Pandoc/Logging.hs
+++ b/src/Text/Pandoc/Logging.hs
@@ -54,6 +54,7 @@
 
 data LogMessage =
     SkippedContent String SourcePos
+  | IgnoredElement String
   | CouldNotParseYamlMetadata String SourcePos
   | DuplicateLinkReference String SourcePos
   | DuplicateNoteReference String SourcePos
@@ -86,6 +87,7 @@
   | NoTranslation String
   | CouldNotLoadTranslations String String
   | UnexpectedXmlElement String String
+  | UnknownOrgExportOption String
   deriving (Show, Eq, Data, Ord, Typeable, Generic)
 
 instance ToJSON LogMessage where
@@ -98,6 +100,8 @@
             "source" .= Text.pack (sourceName pos),
             "line" .= sourceLine pos,
             "column" .= sourceColumn pos]
+      IgnoredElement s ->
+           ["contents" .= Text.pack s]
       CouldNotParseYamlMetadata s pos ->
            ["message" .= Text.pack s,
             "source" .= Text.pack (sourceName pos),
@@ -201,6 +205,8 @@
       UnexpectedXmlElement element parent ->
            ["element" .= Text.pack element,
             "parent" .= Text.pack parent]
+      UnknownOrgExportOption option ->
+           ["option" .= Text.pack option]
 
 
 showPos :: SourcePos -> String
@@ -221,6 +227,8 @@
   case msg of
        SkippedContent s pos ->
          "Skipped '" ++ s ++ "' at " ++ showPos pos
+       IgnoredElement s ->
+         "Ignored element " ++ s
        CouldNotParseYamlMetadata s pos ->
          "Could not parse YAML metadata at " ++ showPos pos ++
            if null s then "" else ": " ++ s
@@ -300,11 +308,14 @@
            if null m then "" else '\n' : m
        UnexpectedXmlElement element parent ->
          "Unexpected XML element " ++ element ++ " in " ++ parent
+       UnknownOrgExportOption option ->
+         "Ignoring unknown Org export option: " ++ option
 
 messageVerbosity:: LogMessage -> Verbosity
 messageVerbosity msg =
   case msg of
        SkippedContent{}             -> INFO
+       IgnoredElement{}             -> INFO
        CouldNotParseYamlMetadata{}  -> WARNING
        DuplicateLinkReference{}     -> WARNING
        DuplicateNoteReference{}     -> WARNING
@@ -339,3 +350,4 @@
        NoTranslation{}              -> WARNING
        CouldNotLoadTranslations{}   -> WARNING
        UnexpectedXmlElement {}      -> WARNING
+       UnknownOrgExportOption {}    -> WARNING
diff --git a/src/Text/Pandoc/Lua/Global.hs b/src/Text/Pandoc/Lua/Global.hs
--- a/src/Text/Pandoc/Lua/Global.hs
+++ b/src/Text/Pandoc/Lua/Global.hs
@@ -17,7 +17,6 @@
 
 import Prelude
 import Data.Data (Data)
-import Data.Version (Version (versionBranch))
 import Foreign.Lua (Lua, Peekable, Pushable)
 import Foreign.Lua.Userdata ( ensureUserdataMetatable, pushAnyWithMetatable
                             , metatableName)
@@ -52,7 +51,7 @@
     Lua.push format
     Lua.setglobal "FORMAT"
   PANDOC_API_VERSION -> do
-    Lua.push (versionBranch pandocTypesVersion)
+    Lua.push pandocTypesVersion
     Lua.setglobal "PANDOC_API_VERSION"
   PANDOC_DOCUMENT doc -> do
     Lua.push (LazyPandoc doc)
@@ -67,7 +66,7 @@
     Lua.push commonState
     Lua.setglobal "PANDOC_STATE"
   PANDOC_VERSION              -> do
-    Lua.push (versionBranch version)
+    Lua.push version
     Lua.setglobal "PANDOC_VERSION"
 
 -- | Readonly and lazy pandoc objects.
diff --git a/src/Text/Pandoc/Lua/Marshaling.hs b/src/Text/Pandoc/Lua/Marshaling.hs
--- a/src/Text/Pandoc/Lua/Marshaling.hs
+++ b/src/Text/Pandoc/Lua/Marshaling.hs
@@ -14,3 +14,4 @@
 import Text.Pandoc.Lua.Marshaling.AST ()
 import Text.Pandoc.Lua.Marshaling.CommonState ()
 import Text.Pandoc.Lua.Marshaling.ReaderOptions ()
+import Text.Pandoc.Lua.Marshaling.Version ()
diff --git a/src/Text/Pandoc/Lua/Marshaling/MediaBag.hs b/src/Text/Pandoc/Lua/Marshaling/MediaBag.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Pandoc/Lua/Marshaling/MediaBag.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE NoImplicitPrelude    #-}
+{- |
+   Module      : Text.Pandoc.Lua.Marshaling.MediaBag
+   Copyright   : © 2012-2019 John MacFarlane
+                 © 2017-2019 Albert Krewinkel
+   License     : GNU GPL, version 2 or above
+   Maintainer  : Albert Krewinkel <tarleb+pandoc@moltkeplatz.de>
+   Stability   : alpha
+
+Instances to marshal (push) and unmarshal (peek) media data.
+-}
+module Text.Pandoc.Lua.Marshaling.MediaBag (pushIterator) where
+
+import Prelude
+import Foreign.Ptr (Ptr)
+import Foreign.StablePtr (StablePtr, deRefStablePtr, newStablePtr)
+import Foreign.Lua (Lua, NumResults, Peekable, Pushable, StackIndex)
+import Foreign.Lua.Types.Peekable (reportValueOnFailure)
+import Foreign.Lua.Userdata (ensureUserdataMetatable, pushAnyWithMetatable,
+                             toAnyWithName)
+import Text.Pandoc.MediaBag (MediaBag, mediaItems)
+import Text.Pandoc.MIME (MimeType)
+import Text.Pandoc.Lua.Marshaling.AnyValue (AnyValue (..))
+
+import qualified Data.ByteString.Lazy as BL
+import qualified Foreign.Lua as Lua
+import qualified Foreign.Storable as Storable
+
+-- | A list of 'MediaBag' items.
+newtype MediaItems = MediaItems [(String, MimeType, BL.ByteString)]
+
+instance Pushable MediaItems where
+  push = pushMediaItems
+
+instance Peekable MediaItems where
+  peek = peekMediaItems
+
+-- | Push an iterator triple to be used with Lua's @for@ loop construct.
+-- Each iterator invokation returns a tripple consisting of an item's
+-- filename, MIME type, and content.
+pushIterator :: MediaBag -> Lua NumResults
+pushIterator mb = do
+  Lua.pushHaskellFunction nextItem
+  Lua.push (MediaItems $ mediaItems mb)
+  Lua.pushnil
+  return 3
+
+-- | Lua type name for @'MediaItems'@.
+mediaItemsTypeName :: String
+mediaItemsTypeName = "pandoc MediaItems"
+
+-- | Push a @MediaItems@ element to the stack.
+pushMediaItems :: MediaItems -> Lua ()
+pushMediaItems xs = pushAnyWithMetatable pushMT xs
+ where
+  pushMT = ensureUserdataMetatable mediaItemsTypeName (return ())
+
+-- | Retrieve a @MediaItems@ element from the stack.
+peekMediaItems :: StackIndex -> Lua MediaItems
+peekMediaItems = reportValueOnFailure mediaItemsTypeName
+                 (`toAnyWithName` mediaItemsTypeName)
+
+-- | Retrieve a list of items from an iterator state, return the first
+-- item (if present), and advance the state.
+nextItem :: Ptr (StablePtr MediaItems) -> AnyValue -> Lua NumResults
+nextItem ptr _ = do
+  (MediaItems items) <- Lua.liftIO $ deRefStablePtr =<< Storable.peek ptr
+  case items of
+    [] -> 2 <$ (Lua.pushnil *> Lua.pushnil)
+    (key, mt, content):xs -> do
+      Lua.liftIO $ Storable.poke ptr =<< newStablePtr (MediaItems xs)
+      Lua.push key
+      Lua.push mt
+      Lua.push content
+      return 3
diff --git a/src/Text/Pandoc/Lua/Marshaling/Version.hs b/src/Text/Pandoc/Lua/Marshaling/Version.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Pandoc/Lua/Marshaling/Version.hs
@@ -0,0 +1,154 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# LANGUAGE LambdaCase           #-}
+{-# LANGUAGE NoImplicitPrelude    #-}
+{- |
+   Module      : Text.Pandoc.Lua.Marshaling.Version
+   Copyright   : © 2019 Albert Krewinkel
+   License     : GNU GPL, version 2 or above
+
+   Maintainer  : Albert Krewinkel <tarleb+pandoc@moltkeplatz.de>
+   Stability   : alpha
+
+Marshaling of @'Version'@s. The marshaled elements can be compared using
+default comparison operators (like @>@ and @<=@).
+-}
+module Text.Pandoc.Lua.Marshaling.Version
+  ( peekVersion
+  , pushVersion
+  )
+  where
+
+import Prelude
+import Data.Maybe (fromMaybe)
+import Data.Version (Version (..), makeVersion, parseVersion, showVersion)
+import Foreign.Lua (Lua, Optional (..), NumResults,
+                    Peekable, Pushable, StackIndex)
+import Foreign.Lua.Types.Peekable (reportValueOnFailure)
+import Foreign.Lua.Userdata (ensureUserdataMetatable, pushAnyWithMetatable,
+                             toAnyWithName)
+import Safe (atMay, lastMay)
+import Text.Pandoc.Lua.Marshaling.AnyValue (AnyValue (..))
+import Text.ParserCombinators.ReadP (readP_to_S)
+
+import qualified Foreign.Lua as Lua
+import qualified Text.Pandoc.Lua.Util as LuaUtil
+
+-- | Push a @'Version'@ element to the Lua stack.
+pushVersion :: Version -> Lua ()
+pushVersion version = pushAnyWithMetatable pushVersionMT version
+ where
+  pushVersionMT = ensureUserdataMetatable versionTypeName $ do
+    LuaUtil.addFunction "__eq" __eq
+    LuaUtil.addFunction "__le" __le
+    LuaUtil.addFunction "__lt" __lt
+    LuaUtil.addFunction "__len" __len
+    LuaUtil.addFunction "__index" __index
+    LuaUtil.addFunction "__pairs" __pairs
+    LuaUtil.addFunction "__tostring" __tostring
+
+instance Pushable Version where
+  push = pushVersion
+
+peekVersion :: StackIndex -> Lua Version
+peekVersion idx = Lua.ltype idx >>= \case
+  Lua.TypeString -> do
+    versionStr <- Lua.peek idx
+    let parses = readP_to_S parseVersion versionStr
+    case lastMay parses of
+      Just (v, "") -> return v
+      _  -> Lua.throwException $ "could not parse as Version: " ++ versionStr
+
+  Lua.TypeUserdata ->
+    reportValueOnFailure versionTypeName
+                         (`toAnyWithName` versionTypeName)
+                         idx
+  Lua.TypeNumber -> do
+    n <- Lua.peek idx
+    return (makeVersion [n])
+
+  Lua.TypeTable ->
+    makeVersion <$> Lua.peek idx
+
+  _ ->
+    Lua.throwException "could not peek Version"
+
+instance Peekable Version where
+  peek = peekVersion
+
+-- | Name used by Lua for the @CommonState@ type.
+versionTypeName :: String
+versionTypeName = "HsLua Version"
+
+__eq :: Version -> Version -> Lua Bool
+__eq v1 v2 = return (v1 == v2)
+
+__le :: Version -> Version -> Lua Bool
+__le v1 v2 = return (v1 <= v2)
+
+__lt :: Version -> Version -> Lua Bool
+__lt v1 v2 = return (v1 < v2)
+
+-- | Get number of version components.
+__len :: Version -> Lua Int
+__len = return . length . versionBranch
+
+-- | Access fields.
+__index :: Version -> AnyValue -> Lua NumResults
+__index v (AnyValue k) = do
+  ty <- Lua.ltype k
+  case ty of
+    Lua.TypeNumber -> do
+      n <- Lua.peek k
+      let versionPart = atMay (versionBranch v) (n - 1)
+      Lua.push (Lua.Optional versionPart)
+      return 1
+    Lua.TypeString -> do
+      str <- Lua.peek k
+      if str == "must_be_at_least"
+        then 1 <$ Lua.pushHaskellFunction must_be_at_least
+        else 1 <$ Lua.pushnil
+    _ -> 1 <$ Lua.pushnil
+
+-- | Create iterator.
+__pairs :: Version -> Lua NumResults
+__pairs v = do
+  Lua.pushHaskellFunction nextFn
+  Lua.pushnil
+  Lua.pushnil
+  return 3
+ where
+  nextFn :: AnyValue -> Optional Int -> Lua Lua.NumResults
+  nextFn _ (Optional key) =
+    case key of
+      Nothing -> case versionBranch v of
+                   []  -> 2 <$ (Lua.pushnil *> Lua.pushnil)
+                   n:_ -> 2 <$ (Lua.push (1 :: Int) *> Lua.push n)
+      Just n  -> case atMay (versionBranch v) n of
+                   Nothing -> 2 <$ (Lua.pushnil *> Lua.pushnil)
+                   Just b  -> 2 <$ (Lua.push (n + 1) *> Lua.push b)
+
+-- | Convert to string.
+__tostring :: Version -> Lua String
+__tostring v = return (showVersion v)
+
+-- | Default error message when a version is too old. This message is
+-- formatted in Lua with the expected and actual versions as arguments.
+versionTooOldMessage :: String
+versionTooOldMessage = "expected version %s or newer, got %s"
+
+-- | Throw an error if this version is older than the given version.
+-- FIXME: This function currently requires the string library to be
+-- loaded.
+must_be_at_least :: Version -> Version -> Optional String -> Lua NumResults
+must_be_at_least actual expected optMsg = do
+  let msg = fromMaybe versionTooOldMessage (fromOptional optMsg)
+  if expected <= actual
+    then return 0
+    else do
+      Lua.getglobal' "string.format"
+      Lua.push msg
+      Lua.push (showVersion expected)
+      Lua.push (showVersion actual)
+      Lua.call 3 1
+      Lua.error
+
diff --git a/src/Text/Pandoc/Lua/Module/MediaBag.hs b/src/Text/Pandoc/Lua/Module/MediaBag.hs
--- a/src/Text/Pandoc/Lua/Module/MediaBag.hs
+++ b/src/Text/Pandoc/Lua/Module/MediaBag.hs
@@ -20,6 +20,7 @@
 import Text.Pandoc.Class (CommonState (..), fetchItem, putCommonState,
                           runIOorExplode, setMediaBag)
 import Text.Pandoc.Lua.Marshaling ()
+import Text.Pandoc.Lua.Marshaling.MediaBag (pushIterator)
 import Text.Pandoc.Lua.Util (addFunction)
 import Text.Pandoc.MIME (MimeType)
 
@@ -33,7 +34,10 @@
 pushModule :: Lua NumResults
 pushModule = do
   Lua.newtable
+  addFunction "delete" delete
+  addFunction "empty" empty
   addFunction "insert" insertMediaFn
+  addFunction "items" items
   addFunction "lookup" lookupMediaFn
   addFunction "list" mediaDirectoryFn
   addFunction "fetch" fetch
@@ -58,6 +62,16 @@
 modifyCommonState :: (CommonState -> CommonState) -> Lua ()
 modifyCommonState f = getCommonState >>= setCommonState . f
 
+-- | Delete a single item from the media bag.
+delete :: FilePath -> Lua NumResults
+delete fp = 0 <$ modifyCommonState
+  (\st -> st { stMediaBag = MB.deleteMedia fp (stMediaBag st) })
+
+-- | Delete all items from the media bag.
+empty :: Lua NumResults
+empty = 0 <$ modifyCommonState (\st -> st { stMediaBag = mempty })
+
+-- | Insert a new item into the media bag.
 insertMediaFn :: FilePath
               -> Optional MimeType
               -> BL.ByteString
@@ -66,15 +80,19 @@
   modifyCommonState $ \st ->
     let mb = MB.insertMedia fp (Lua.fromOptional optionalMime) contents
                                (stMediaBag st)
-    in st { stMediaBag = mb}
+    in st { stMediaBag = mb }
   return 0
 
+-- | Returns iterator values to be used with a Lua @for@ loop.
+items :: Lua NumResults
+items = stMediaBag <$> getCommonState >>= pushIterator
+
 lookupMediaFn :: FilePath
               -> Lua NumResults
 lookupMediaFn fp = do
   res <- MB.lookupMedia fp . stMediaBag <$> getCommonState
   case res of
-    Nothing -> Lua.pushnil *> return 1
+    Nothing -> 1 <$ Lua.pushnil
     Just (mimeType, contents) -> do
       Lua.push mimeType
       Lua.push contents
diff --git a/src/Text/Pandoc/Lua/Module/System.hs b/src/Text/Pandoc/Lua/Module/System.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Pandoc/Lua/Module/System.hs
@@ -0,0 +1,34 @@
+{- |
+   Module      : Text.Pandoc.Lua.Module.System
+   Copyright   : © 2019 Albert Krewinkel
+   License     : GNU GPL, version 2 or above
+
+   Maintainer  : Albert Krewinkel <tarleb+pandoc@moltkeplatz.de>
+   Stability   : alpha
+
+Pandoc's system Lua module.
+-}
+module Text.Pandoc.Lua.Module.System
+  ( pushModule
+  ) where
+
+import Prelude
+import Foreign.Lua (Lua, NumResults)
+import Foreign.Lua.Module.System (arch, env, getwd, os,
+                                  with_env, with_tmpdir, with_wd)
+import Text.Pandoc.Lua.Util (addFunction, addField)
+
+import qualified Foreign.Lua as Lua
+
+-- | Push the pandoc.system module on the Lua stack.
+pushModule :: Lua NumResults
+pushModule = do
+  Lua.newtable
+  addField "arch" arch
+  addField "os" os
+  addFunction "environment" env
+  addFunction "get_current_directory" getwd
+  addFunction "with_environment" with_env
+  addFunction "with_temp_directory" with_tmpdir
+  addFunction "with_working_directory" with_wd
+  return 1
diff --git a/src/Text/Pandoc/Lua/Module/Types.hs b/src/Text/Pandoc/Lua/Module/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Pandoc/Lua/Module/Types.hs
@@ -0,0 +1,28 @@
+{- |
+   Module      : Text.Pandoc.Lua.Module.Types
+   Copyright   : © 2019 Albert Krewinkel
+   License     : GNU GPL, version 2 or above
+
+   Maintainer  : Albert Krewinkel <tarleb+pandoc@moltkeplatz.de>
+   Stability   : alpha
+
+Pandoc data type constructors.
+-}
+module Text.Pandoc.Lua.Module.Types
+  ( pushModule
+  ) where
+
+import Prelude
+import Data.Version (Version)
+import Foreign.Lua (Lua, NumResults)
+import Text.Pandoc.Lua.Marshaling.Version ()
+import Text.Pandoc.Lua.Util (addFunction)
+
+import qualified Foreign.Lua as Lua
+
+-- | Push the pandoc.system module on the Lua stack.
+pushModule :: Lua NumResults
+pushModule = do
+  Lua.newtable
+  addFunction "Version" (return :: Version -> Lua Version)
+  return 1
diff --git a/src/Text/Pandoc/Lua/Module/Utils.hs b/src/Text/Pandoc/Lua/Module/Utils.hs
--- a/src/Text/Pandoc/Lua/Module/Utils.hs
+++ b/src/Text/Pandoc/Lua/Module/Utils.hs
@@ -17,6 +17,7 @@
 import Control.Applicative ((<|>))
 import Data.Char (toLower)
 import Data.Default (def)
+import Data.Version (Version)
 import Foreign.Lua (Peekable, Lua, NumResults)
 import Text.Pandoc.Class (runIO, setUserDataDir)
 import Text.Pandoc.Definition ( Pandoc, Meta, MetaValue (..), Block, Inline
@@ -43,6 +44,7 @@
   addFunction "sha1" sha1
   addFunction "stringify" stringify
   addFunction "to_roman_numeral" toRomanNumeral
+  addFunction "Version" (return :: Version -> Lua Version)
   return 1
 
 -- | Squashes a list of blocks into inlines.
diff --git a/src/Text/Pandoc/Lua/Packages.hs b/src/Text/Pandoc/Lua/Packages.hs
--- a/src/Text/Pandoc/Lua/Packages.hs
+++ b/src/Text/Pandoc/Lua/Packages.hs
@@ -25,6 +25,8 @@
 import qualified Foreign.Lua as Lua
 import Text.Pandoc.Lua.Module.Pandoc as Pandoc
 import Text.Pandoc.Lua.Module.MediaBag as MediaBag
+import Text.Pandoc.Lua.Module.System as System
+import Text.Pandoc.Lua.Module.Types as Types
 import Text.Pandoc.Lua.Module.Utils as Utils
 
 -- | Parameters used to create lua packages/modules.
@@ -52,6 +54,8 @@
     "pandoc"          -> let datadir = luaPkgDataDir pkgParams
                          in pushWrappedHsFun (Pandoc.pushModule datadir)
     "pandoc.mediabag" -> pushWrappedHsFun MediaBag.pushModule
+    "pandoc.system"   -> pushWrappedHsFun System.pushModule
+    "pandoc.types"    -> pushWrappedHsFun Types.pushModule
     "pandoc.utils"    -> let datadir = luaPkgDataDir pkgParams
                          in pushWrappedHsFun (Utils.pushModule datadir)
     _ -> searchPureLuaLoader
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
@@ -11,12 +11,13 @@
 Mime type lookup for ODT writer.
 -}
 module Text.Pandoc.MIME ( MimeType, getMimeType, getMimeTypeDef,
-                          extensionFromMimeType )where
+                          extensionFromMimeType, mediaCategory ) where
 import Prelude
 import Data.Char (toLower)
 import Data.List (isPrefixOf, isSuffixOf)
+import Data.List.Split (splitOn)
 import qualified Data.Map as M
-import Data.Maybe (fromMaybe)
+import Data.Maybe (fromMaybe, listToMaybe)
 import System.FilePath
 
 type MimeType = String
@@ -42,15 +43,25 @@
   M.lookup (takeWhile (/=';') mimetype) reverseMimeTypes
   -- note:  we just look up the basic mime type, dropping the content-encoding etc.
 
+-- | Determine general media category for file path, e.g.
+--
+-- prop> mediaCategory "foo.jpg" = Just "image"
+mediaCategory :: FilePath -> Maybe String
+mediaCategory fp = getMimeType fp >>= listToMaybe . splitOn "/"
+
 reverseMimeTypes :: M.Map MimeType String
 reverseMimeTypes = M.fromList $ map (\(k,v) -> (v,k)) mimeTypesList
 
 mimeTypes :: M.Map String MimeType
 mimeTypes = M.fromList mimeTypesList
 
+-- | Collection of common mime types.
+-- Except for first entry, list borrowed from
+-- <https://github.com/Happstack/happstack-server/blob/master/src/Happstack/Server/FileServe/BuildingBlocks.hs happstack-server>
 mimeTypesList :: [(String, MimeType)]
-mimeTypesList = -- List borrowed from happstack-server.
-           [("gz","application/x-gzip")
+mimeTypesList =
+           [("cpt","image/x-corelphotopaint")
+           ,("gz","application/x-gzip")
            ,("cabal","application/x-cabal")
            ,("%","application/x-trash")
            ,("323","text/h323")
diff --git a/src/Text/Pandoc/MediaBag.hs b/src/Text/Pandoc/MediaBag.hs
--- a/src/Text/Pandoc/MediaBag.hs
+++ b/src/Text/Pandoc/MediaBag.hs
@@ -16,9 +16,11 @@
 -}
 module Text.Pandoc.MediaBag (
                      MediaBag,
+                     deleteMedia,
                      lookupMedia,
                      insertMedia,
                      mediaDirectory,
+                     mediaItems
                      ) where
 import Prelude
 import qualified Data.ByteString.Lazy as BL
@@ -40,6 +42,14 @@
 instance Show MediaBag where
   show bag = "MediaBag " ++ show (mediaDirectory bag)
 
+-- | Delete a media item from a 'MediaBag', or do nothing if no item corresponds
+-- to the given path.
+deleteMedia :: FilePath       -- ^ relative path and canonical name of resource
+            -> MediaBag
+            -> MediaBag
+deleteMedia fp (MediaBag mediamap) =
+  MediaBag $ M.delete (splitDirectories fp) mediamap
+
 -- | Insert a media item into a 'MediaBag', replacing any existing
 -- value with the same name.
 insertMedia :: FilePath       -- ^ relative path and canonical name of resource
@@ -66,3 +76,8 @@
 mediaDirectory (MediaBag mediamap) =
   M.foldrWithKey (\fp (mime,contents) ->
       ((Posix.joinPath fp, mime, fromIntegral $ BL.length contents):)) [] mediamap
+
+mediaItems :: MediaBag -> [(String, MimeType, BL.ByteString)]
+mediaItems (MediaBag mediamap) =
+  M.foldrWithKey (\fp (mime,contents) ->
+      ((Posix.joinPath fp, mime, contents):)) [] mediamap
diff --git a/src/Text/Pandoc/PDF.hs b/src/Text/Pandoc/PDF.hs
--- a/src/Text/Pandoc/PDF.hs
+++ b/src/Text/Pandoc/PDF.hs
@@ -27,6 +27,8 @@
 import Data.Maybe (fromMaybe)
 import Data.Text (Text)
 import qualified Data.Text as T
+import Text.Printf (printf)
+import Data.Char (ord, isAscii)
 import System.Directory
 import System.Environment
 import System.Exit (ExitCode (..))
@@ -47,7 +49,7 @@
 #ifdef _WINDOWS
 import Data.List (intercalate)
 #endif
-import Data.List (isPrefixOf)
+import Data.List (isPrefixOf, find)
 import Text.Pandoc.Class (PandocIO, extractMedia, fillMediaBag, getCommonState,
                           getVerbosity, putCommonState, report,
                           runIOorExplode, setVerbosity)
@@ -75,8 +77,8 @@
       liftIO $ html2pdf verbosity program pdfargs source
     "pdfroff" -> do
       source <- writer opts doc
-      let args   = ["-ms", "-mpdfmark", "-e", "-t", "-k", "-KUTF-8", "-i",
-                    "--no-toc-relocation"] ++ pdfargs
+      let args   = ["-ms", "-mpdfmark", "-mspdf",
+                    "-e", "-t", "-k", "-KUTF-8", "-i"] ++ pdfargs
       verbosity <- getVerbosity
       liftIO $ generic2pdf verbosity program args source
     baseProg -> do
@@ -243,7 +245,12 @@
 missingCharacterWarnings verbosity log' = do
   let ls = BC.lines log'
   let isMissingCharacterWarning = BC.isPrefixOf "Missing character: "
-  let warnings = [ UTF8.toStringLazy (BC.drop 19 l)
+  let addCodePoint [] = []
+      addCodePoint (c:cs)
+        | isAscii c   = c : addCodePoint cs
+        | otherwise   = c : " (U+" ++ printf "%04X" (ord c) ++ ")" ++
+                            addCodePoint cs
+  let warnings = [ addCodePoint (UTF8.toStringLazy (BC.drop 19 l))
                  | l <- ls
                  , isMissingCharacterWarning l
                  ]
@@ -297,7 +304,7 @@
       putStrLn "[makePDF] Running"
       BL.hPutStr stdout out
       putStr "\n"
-    let pdfFile = tmpDir </> "texput.pdf"
+    let pdfFile = tmpDir ++ "/texput.pdf"
     (_, pdf) <- getResultingPDF Nothing pdfFile
     return (exit, out, pdf)
 
@@ -330,12 +337,14 @@
 runTeXProgram :: Verbosity -> String -> [String] -> Int -> Int -> FilePath
               -> Text -> PandocIO (ExitCode, ByteString, Maybe ByteString)
 runTeXProgram verbosity program args runNumber numRuns tmpDir' source = do
+    let isOutdirArg x = "-outdir=" `isPrefixOf` x ||
+                        "-output-directory=" `isPrefixOf` x
     let tmpDir =
-          case [x | x <- args, "-outdir=" `isPrefixOf` x] of
-            [x] -> drop 8 x
-            _   -> tmpDir'
+          case find isOutdirArg args of
+            Just x  -> drop 1 $ dropWhile (/='=') x
+            Nothing -> tmpDir'
     liftIO $ createDirectoryIfMissing True tmpDir
-    let file = tmpDir </> "input.tex"
+    let file = tmpDir ++ "/input.tex"  -- note: tmpDir has / path separators
     exists <- liftIO $ doesFileExist file
     unless exists $ liftIO $ BS.writeFile file $ UTF8.fromText source
     let isLatexMk = takeBaseName program == "latexmk"
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
@@ -24,8 +24,9 @@
 import qualified Data.Text as T
 import Text.HTML.TagSoup.Entity (lookupEntity)
 import Text.Pandoc.Builder
-import Text.Pandoc.Class (PandocMonad)
+import Text.Pandoc.Class (PandocMonad, report)
 import Text.Pandoc.Options
+import Text.Pandoc.Logging (LogMessage(..))
 import Text.Pandoc.Shared (crFilter, safeRead)
 import Text.TeXMath (readMathML, writeTeX)
 import Text.XML.Light
@@ -690,8 +691,8 @@
 parseBlock (CRef x) = return $ plain $ str $ map toUpper x
 parseBlock (Elem e) =
   case qName (elName e) of
-        "toc"   -> return mempty -- skip TOC, since in pandoc it's autogenerated
-        "index" -> return mempty -- skip index, since page numbers meaningless
+        "toc"   -> skip -- skip TOC, since in pandoc it's autogenerated
+        "index" -> skip -- skip index, since page numbers meaningless
         "para"  -> parseMixed para (elContent e)
         "formalpara" -> do
            tit <- case filterChild (named "title") e of
@@ -703,9 +704,9 @@
         "ackno"  -> parseMixed para (elContent e)
         "epigraph" -> parseBlockquote
         "blockquote" -> parseBlockquote
-        "attribution" -> return mempty
-        "titleabbrev" -> return mempty
-        "authorinitials" -> return mempty
+        "attribution" -> skip
+        "titleabbrev" -> skip
+        "authorinitials" -> skip
         "bibliography" -> sect 0
         "bibliodiv" -> sect 1
         "biblioentry" -> parseMixed para (elContent e)
@@ -745,9 +746,9 @@
                         <$> getBlocks e
         "warning" -> blockQuote . (para (strong $ str "Warning") <>)
                         <$> getBlocks e
-        "area" -> return mempty
-        "areaset" -> return mempty
-        "areaspec" -> return mempty
+        "area" -> skip
+        "areaset" -> skip
+        "areaspec" -> skip
         "qandadiv" -> gets dbSectionLevel >>= sect . (+1)
         "question" -> addToStart (strong (str "Q:") <> str " ") <$> getBlocks e
         "answer" -> addToStart (strong (str "A:") <> str " ") <$> getBlocks e
@@ -770,22 +771,22 @@
         "variablelist" -> definitionList <$> deflistitems
         "figure" -> getFigure e
         "mediaobject" -> para <$> getMediaobject e
-        "caption" -> return mempty
+        "caption" -> skip
         "info" -> addMetadataFromElement e
         "articleinfo" -> addMetadataFromElement e
-        "sectioninfo" -> return mempty  -- keywords & other metadata
-        "refsectioninfo" -> return mempty  -- keywords & other metadata
-        "refsect1info" -> return mempty  -- keywords & other metadata
-        "refsect2info" -> return mempty  -- keywords & other metadata
-        "refsect3info" -> return mempty  -- keywords & other metadata
-        "sect1info" -> return mempty  -- keywords & other metadata
-        "sect2info" -> return mempty  -- keywords & other metadata
-        "sect3info" -> return mempty  -- keywords & other metadata
-        "sect4info" -> return mempty  -- keywords & other metadata
-        "sect5info" -> return mempty  -- keywords & other metadata
-        "chapterinfo" -> return mempty  -- keywords & other metadata
-        "glossaryinfo" -> return mempty  -- keywords & other metadata
-        "appendixinfo" -> return mempty  -- keywords & other metadata
+        "sectioninfo" -> skip -- keywords & other metadata
+        "refsectioninfo" -> skip -- keywords & other metadata
+        "refsect1info" -> skip -- keywords & other metadata
+        "refsect2info" -> skip -- keywords & other metadata
+        "refsect3info" -> skip -- keywords & other metadata
+        "sect1info" -> skip  -- keywords & other metadata
+        "sect2info" -> skip  -- keywords & other metadata
+        "sect3info" -> skip  -- keywords & other metadata
+        "sect4info" -> skip  -- keywords & other metadata
+        "sect5info" -> skip  -- keywords & other metadata
+        "chapterinfo" -> skip -- keywords & other metadata
+        "glossaryinfo" -> skip  -- keywords & other metadata
+        "appendixinfo" -> skip  -- keywords & other metadata
         "bookinfo" -> addMetadataFromElement e
         "article" -> modify (\st -> st{ dbBook = False }) >>
                            addMetadataFromElement e >> getBlocks e
@@ -802,8 +803,12 @@
         "?xml"  -> return mempty
         "title" -> return mempty     -- handled in parent element
         "subtitle" -> return mempty  -- handled in parent element
-        _       -> getBlocks e
-   where parseMixed container conts = do
+        _       -> skip >> getBlocks e
+   where skip = do
+           lift $ report $ IgnoredElement $ qName (elName e)
+           return mempty
+
+         parseMixed container conts = do
            let (ils,rest) = break isBlockElement conts
            ils' <- (trimInlines . mconcat) <$> mapM parseInline ils
            let p = if ils' == mempty then mempty else container ils'
@@ -1000,13 +1005,17 @@
         "footnote" -> (note . mconcat) <$>
                          mapM parseBlock (elContent e)
         "title" -> return mempty
-        "affiliation" -> return mempty
+        "affiliation" -> skip
         -- Note: this isn't a real docbook tag; it's what we convert
         -- <?asciidor-br?> to in handleInstructions, above.  A kludge to
         -- work around xml-light's inability to parse an instruction.
         "br" -> return linebreak
-        _          -> innerInlines
-   where innerInlines = (trimInlines . mconcat) <$>
+        _          -> skip >> innerInlines
+   where skip = do
+           lift $ report $ IgnoredElement $ qName (elName e)
+           return mempty
+
+         innerInlines = (trimInlines . mconcat) <$>
                           mapM parseInline (elContent e)
          codeWithLang = do
            let classes' = case attrValue "language" e of
diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs
--- a/src/Text/Pandoc/Readers/Docx.hs
+++ b/src/Text/Pandoc/Readers/Docx.hs
@@ -252,13 +252,17 @@
                            , isStrike = case isStrike rPr of
                                Just bool -> Just bool
                                Nothing   -> isStrike rPr'
+                           , isRTL = case isRTL rPr of
+                               Just bool -> Just bool
+                               Nothing   -> isRTL rPr'
                            , rVertAlign = case rVertAlign rPr of
                                Just valign -> Just valign
                                Nothing     -> rVertAlign rPr'
                            , rUnderline = case rUnderline rPr of
                                Just ulstyle -> Just ulstyle
                                Nothing      -> rUnderline rPr'
-                           , rStyle = rStyle rPr }
+                           , rStyle = rStyle rPr
+                           }
   | otherwise = return rPr
 
 runStyleToTransform :: PandocMonad m => RunStyle -> DocxContext m (Inlines -> Inlines)
@@ -286,6 +290,12 @@
   | Just True <- isStrike rPr = do
       transform <- runStyleToTransform rPr{isStrike = Nothing}
       return $ strikeout . transform
+  | Just True <- isRTL rPr = do
+      transform <- runStyleToTransform rPr{isRTL = Nothing}
+      return $ spanWith ("",[],[("dir","rtl")]) . transform
+  | Just False <- isRTL rPr = do
+      transform <- runStyleToTransform rPr{isRTL = Nothing}
+      return $ spanWith ("",[],[("dir","ltr")]) . transform
   | Just SupScrpt <- rVertAlign rPr = do
       transform <- runStyleToTransform rPr{rVertAlign = Nothing}
       return $ superscript . transform
diff --git a/src/Text/Pandoc/Readers/Docx/Parse.hs b/src/Text/Pandoc/Readers/Docx/Parse.hs
--- a/src/Text/Pandoc/Readers/Docx/Parse.hs
+++ b/src/Text/Pandoc/Readers/Docx/Parse.hs
@@ -289,9 +289,11 @@
                          , isItalic    :: Maybe Bool
                          , isSmallCaps :: Maybe Bool
                          , isStrike    :: Maybe Bool
+                         , isRTL       :: Maybe Bool
                          , rVertAlign  :: Maybe VertAlign
                          , rUnderline  :: Maybe String
-                         , rStyle      :: Maybe CharStyle}
+                         , rStyle      :: Maybe CharStyle
+                         }
                 deriving Show
 
 data ParStyleData = ParStyleData { headingLev   :: Maybe (String, Int)
@@ -305,9 +307,11 @@
                            , isItalic = Nothing
                            , isSmallCaps = Nothing
                            , isStrike = Nothing
+                           , isRTL = Nothing
                            , rVertAlign = Nothing
                            , rUnderline = Nothing
-                           , rStyle = Nothing}
+                           , rStyle = Nothing
+                           }
 
 type Target = String
 type Anchor = String
@@ -1106,6 +1110,7 @@
                    checkOnOff ns rPr (elemName ns "w" "iCs")
       , isSmallCaps = checkOnOff ns rPr (elemName ns "w" "smallCaps")
       , isStrike = checkOnOff ns rPr (elemName ns "w" "strike")
+      , isRTL = checkOnOff ns rPr (elemName ns "w" "rtl")
       , rVertAlign =
            findChildByName ns "w" "vertAlign" rPr >>=
            findAttrByName ns "w" "val" >>=
@@ -1117,7 +1122,7 @@
           findChildByName ns "w" "u" rPr >>=
           findAttrByName ns "w" "val"
       , rStyle = parentStyle
-        }
+      }
 elemToRunStyle _ _ _ = defaultRunStyle
 
 getHeaderLevel :: NameSpaces -> Element -> Maybe (String,Int)
diff --git a/src/Text/Pandoc/Readers/FB2.hs b/src/Text/Pandoc/Readers/FB2.hs
--- a/src/Text/Pandoc/Readers/FB2.hs
+++ b/src/Text/Pandoc/Readers/FB2.hs
@@ -31,6 +31,7 @@
 import Data.Functor
 import Data.List (dropWhileEnd, intersperse)
 import Data.List.Split (splitOn)
+import qualified Data.Map as M
 import Data.Text (Text)
 import Data.Default
 import Data.Maybe
@@ -48,12 +49,14 @@
 data FB2State = FB2State{ fb2SectionLevel :: Int
                         , fb2Meta :: Meta
                         , fb2Authors :: [String]
+                        , fb2Notes :: M.Map String Blocks
                         } deriving Show
 
 instance Default FB2State where
   def = FB2State{ fb2SectionLevel = 1
                 , fb2Meta = mempty
                 , fb2Authors = []
+                , fb2Notes = M.empty
                 }
 
 instance HasMeta FB2State where
@@ -61,12 +64,15 @@
   deleteMeta field s = s {fb2Meta = deleteMeta field (fb2Meta s)}
 
 readFB2 :: PandocMonad m => ReaderOptions -> Text -> m Pandoc
-readFB2 _ inp  = do
-  (bs, st) <- runStateT (mapM parseBlock $ parseXML (crFilter inp)) def
-  let authors = if null $ fb2Authors st
-                then id
-                else setMeta "author" (map text $ reverse $ fb2Authors st)
-  pure $ Pandoc (authors $ fb2Meta st) (toList . mconcat $ bs)
+readFB2 _ inp =
+  case parseXMLDoc $ crFilter inp of
+    Nothing -> throwError $ PandocParseError "Not an XML document"
+    Just e ->  do
+      (bs, st) <- runStateT (parseRootElement e) def
+      let authors = if null $ fb2Authors st
+                    then id
+                    else setMeta "author" (map text $ reverse $ fb2Authors st)
+      pure $ Pandoc (authors $ fb2Meta st) $ toList bs
 
 -- * Utility functions
 
@@ -92,7 +98,9 @@
     "sup" -> superscript <$> parseStyleType e
     "code" -> pure $ code $ strContent e
     "image" -> parseInlineImageElement e
-    name -> throwError $ PandocParseError ("Couldn't parse FB2 file: unexpected element " ++ name ++ ".")
+    name -> do
+      report $ IgnoredElement name
+      pure mempty
 parseInline (Text x) = pure $ text $ cdData x
 parseInline (CRef r) = pure $ str $ convertEntity r
 
@@ -101,21 +109,59 @@
 
 -- * Root element parser
 
-parseBlock :: PandocMonad m => Content -> FB2 m Blocks
-parseBlock (Elem e) =
+parseRootElement :: PandocMonad m => Element -> FB2 m Blocks
+parseRootElement e =
   case qName $ elName e of
-    "?xml"  -> pure mempty
-    "FictionBook" -> mconcat <$> mapM parseFictionBookChild (elChildren e)
+    "FictionBook" -> do
+      -- Parse notes before parsing the rest of the content.
+      case filterChild isNotesBody e of
+        Nothing -> pure ()
+        Just notesBody -> parseNotesBody notesBody
+      -- Parse metadata and content
+      mconcat <$> mapM parseFictionBookChild (elChildren e)
     name -> report (UnexpectedXmlElement name "root") $> mempty
-parseBlock _ = pure mempty
 
+-- | Parse notes
+parseNotesBody :: PandocMonad m => Element -> FB2 m ()
+parseNotesBody e = mempty <$ mapM parseNotesBodyChild (elChildren e)
+
+-- | Parse a child of @\<body name="notes">@ element.
+parseNotesBodyChild :: PandocMonad m => Element -> FB2 m ()
+parseNotesBodyChild e =
+  case qName $ elName e of
+    "section" -> parseNote e
+    _ -> pure ()
+
+isNotesBody :: Element -> Bool
+isNotesBody e =
+  qName (elName e) == "body" &&
+  findAttr (unqual "name") e == Just "notes"
+
+parseNote :: PandocMonad m => Element -> FB2 m ()
+parseNote e =
+  case findAttr (unqual "id") e of
+    Nothing -> pure ()
+    Just sectionId -> do
+      content <- mconcat <$> mapM parseSectionChild (dropTitle $ elChildren e)
+      oldNotes <- gets fb2Notes
+      modify $ \s -> s { fb2Notes = M.insert ("#" ++ sectionId) content oldNotes }
+      pure ()
+  where
+    isTitle x = qName (elName x) == "title"
+    dropTitle (x:xs) = if isTitle x
+                         then xs -- Drop note section <title> if present
+                         else (x:xs)
+    dropTitle [] = []
+
 -- | Parse a child of @\<FictionBook>@ element.
 parseFictionBookChild :: PandocMonad m => Element -> FB2 m Blocks
 parseFictionBookChild e =
   case qName $ elName e of
     "stylesheet" -> pure mempty -- stylesheet is ignored
     "description" -> mempty <$ mapM_ parseDescriptionChild (elChildren e)
-    "body" -> mconcat <$> mapM parseBodyChild (elChildren e)
+    "body" -> if isNotesBody e
+                then pure mempty
+                else mconcat <$> mapM parseBodyChild (elChildren e)
     "binary" -> mempty <$ parseBinaryElement e
     name -> report (UnexpectedXmlElement name "FictionBook") $> mempty
 
@@ -129,7 +175,9 @@
     "publish-info" -> pure ()
     "custom-info" -> pure ()
     "output" -> pure ()
-    name -> throwError $ PandocParseError ("Couldn't parse FB2 file: unexpected element " ++ name ++ "in description.")
+    name -> do
+      report $ IgnoredElement $ name ++ " in description"
+      pure mempty
 
 -- | Parse a child of @\<body>@ element.
 parseBodyChild :: PandocMonad m => Element -> FB2 m Blocks
@@ -144,27 +192,30 @@
 -- | Parse a @\<binary>@ element.
 parseBinaryElement :: PandocMonad m => Element -> FB2 m ()
 parseBinaryElement e =
-  case (findAttr (QName "id" Nothing Nothing) e, findAttr (QName "content-type" Nothing Nothing) e) of
-    (Nothing, _) -> throwError $ PandocParseError "<binary> element must have an \"id\" attribute"
-    (Just _, Nothing) -> throwError $ PandocParseError "<binary> element must have a \"content-type\" attribute"
+  case (findAttr (unqual "id") e, findAttr (unqual "content-type") e) of
+    (Nothing, _) -> report $ IgnoredElement "binary without id attribute"
+    (Just _, Nothing) ->
+      report $ IgnoredElement "binary without content-type attribute"
     (Just filename, contentType) -> insertMedia filename contentType (decodeLenient (pack (strContent e)))
 
 -- * Type parsers
 
 -- | Parse @authorType@
 parseAuthor :: PandocMonad m => Element -> FB2 m String
-parseAuthor e = unwords <$> mapM parseAuthorChild (elChildren e)
+parseAuthor e = unwords . catMaybes <$> mapM parseAuthorChild (elChildren e)
 
-parseAuthorChild :: PandocMonad m => Element -> FB2 m String
+parseAuthorChild :: PandocMonad m => Element -> FB2 m (Maybe String)
 parseAuthorChild e =
   case qName $ elName e of
-    "first-name" -> pure $ strContent e
-    "middle-name" -> pure $ strContent e
-    "last-name" -> pure $ strContent e
-    "nickname" -> pure $ strContent e
-    "home-page" -> pure $ strContent e
-    "email" -> pure $ strContent e
-    name -> throwError $ PandocParseError ("Couldn't parse FB2 file: unexpected element " ++ name ++ " in author.")
+    "first-name" -> pure $ Just $ strContent e
+    "middle-name" -> pure $ Just $ strContent e
+    "last-name" -> pure $ Just $ strContent e
+    "nickname" -> pure $ Just $ strContent e
+    "home-page" -> pure $ Just $ strContent e
+    "email" -> pure $ Just $ strContent e
+    name -> do
+      report $ IgnoredElement $ name ++ " in author"
+      pure Nothing
 
 -- | Parse @titleType@
 parseTitle :: PandocMonad m => Element -> FB2 m Blocks
@@ -186,10 +237,12 @@
 parseImageElement e =
   case href of
     Just src -> pure $ para $ imageWith (imgId, [], []) (removeHash src) title alt
-    Nothing -> throwError $ PandocParseError "Couldn't parse FB2 file: image without href."
-  where alt = maybe mempty str $ findAttr (QName "alt" Nothing Nothing) e
-        title = fromMaybe "" $ findAttr (QName "title" Nothing Nothing) e
-        imgId = fromMaybe "" $ findAttr (QName "id" Nothing Nothing) e
+    Nothing -> do
+      report $ IgnoredElement " image without href"
+      pure mempty
+  where alt = maybe mempty str $ findAttr (unqual "alt") e
+        title = fromMaybe "" $ findAttr (unqual "title") e
+        imgId = fromMaybe "" $ findAttr (unqual "id") e
         href = findAttr (QName "href" (Just "http://www.w3.org/1999/xlink") Nothing) e
 
 -- | Parse @pType@
@@ -247,7 +300,7 @@
 parseEpigraph :: PandocMonad m => Element -> FB2 m Blocks
 parseEpigraph e =
   divWith (divId, ["epigraph"], []) . mconcat <$> mapM parseEpigraphChild (elChildren e)
-  where divId = fromMaybe "" $ findAttr (QName "id" Nothing Nothing) e
+  where divId = fromMaybe "" $ findAttr (unqual "id") e
 
 parseEpigraphChild :: PandocMonad m => Element -> FB2 m Blocks
 parseEpigraphChild e =
@@ -279,7 +332,7 @@
 parseSection e = do
   n <- gets fb2SectionLevel
   modify $ \st -> st{ fb2SectionLevel = n + 1 }
-  let sectionId = fromMaybe "" $ findAttr (QName "id" Nothing Nothing) e
+  let sectionId = fromMaybe "" $ findAttr (unqual "id") e
   bs <- divWith (sectionId, ["section"], []) . mconcat <$> mapM parseSectionChild (elChildren e)
   modify $ \st -> st{ fb2SectionLevel = n }
   pure bs
@@ -309,9 +362,11 @@
 parseNamedStyle e = do
   content <- mconcat <$> mapM parseNamedStyleChild (elContent e)
   let lang = maybeToList $ ("lang",) <$> findAttr (QName "lang" Nothing (Just "xml")) e
-  case findAttr (QName "name" Nothing Nothing) e of
+  case findAttr (unqual "name") e of
     Just name -> pure $ spanWith ("", [name], lang) content
-    Nothing -> throwError $ PandocParseError "Couldn't parse FB2 file: link without required name."
+    Nothing -> do
+      report $ IgnoredElement "link without required name"
+      pure mempty
 
 parseNamedStyleChild :: PandocMonad m => Content -> FB2 m Inlines
 parseNamedStyleChild (Elem e) =
@@ -325,22 +380,33 @@
     "sup" -> superscript <$> parseStyleType e
     "code" -> pure $ code $ strContent e
     "image" -> parseInlineImageElement e
-    name -> throwError $ PandocParseError ("Couldn't parse FB2 file: unexpected element " ++ name ++ ".")
+    name -> do
+      report $ IgnoredElement $ name ++ " in style"
+      pure mempty
 parseNamedStyleChild x = parseInline x
 
 -- | Parse @linkType@
 parseLinkType :: PandocMonad m => Element -> FB2 m Inlines
 parseLinkType e = do
   content <- mconcat <$> mapM parseStyleLinkType (elContent e)
+  notes <- gets fb2Notes
   case findAttr (QName "href" (Just "http://www.w3.org/1999/xlink") Nothing) e of
-    Just href -> pure $ link href "" content
-    Nothing -> throwError $ PandocParseError "Couldn't parse FB2 file: link without required href."
+    Just href -> case findAttr (QName "type" Nothing Nothing) e of
+                   Just "note" -> case M.lookup href notes of
+                                    Nothing -> pure $ link href "" content
+                                    Just contents -> pure $ note contents
+                   _ -> pure $ link href "" content
+    Nothing -> do
+      report $ IgnoredElement "link without required href"
+      pure mempty
 
 -- | Parse @styleLinkType@
 parseStyleLinkType :: PandocMonad m => Content -> FB2 m Inlines
 parseStyleLinkType x@(Elem e) =
   case qName (elName e) of
-    "a" -> throwError $ PandocParseError "Couldn't parse FB2 file: links cannot be nested."
+    "a" -> do
+      report $ IgnoredElement "nested link"
+      pure mempty
     _ -> parseInline x
 parseStyleLinkType x = parseInline x
 
@@ -363,7 +429,7 @@
     "src-lang" -> pure ()
     "translator" -> pure ()
     "sequence" -> pure ()
-    name -> throwError $ PandocParseError ("Couldn't parse FB2 file: unexpected element " ++ name ++ " in title-info.")
+    name -> report $ IgnoredElement $ name ++ " in title-info"
 
 parseCoverPage :: PandocMonad m => Element -> FB2 m ()
 parseCoverPage e =
@@ -381,6 +447,8 @@
 parseInlineImageElement e =
   case href of
     Just src -> pure $ imageWith ("", [], []) (removeHash src) "" alt
-    Nothing -> throwError $ PandocParseError "Couldn't parse FB2 file: inline image without href."
-  where alt = maybe mempty str $ findAttr (QName "alt" Nothing Nothing) e
+    Nothing -> do
+      report $ IgnoredElement "inline image without href"
+      pure mempty
+  where alt = maybe mempty str $ findAttr (unqual "alt") e
         href = findAttr (QName "href" (Just "http://www.w3.org/1999/xlink") Nothing) e
diff --git a/src/Text/Pandoc/Readers/HTML.hs b/src/Text/Pandoc/Readers/HTML.hs
--- a/src/Text/Pandoc/Readers/HTML.hs
+++ b/src/Text/Pandoc/Readers/HTML.hs
@@ -1,4 +1,5 @@
 {-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE LambdaCase        #-}
 {-# LANGUAGE FlexibleContexts      #-}
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
@@ -61,7 +62,7 @@
     extensionEnabled)
 import Text.Pandoc.Parsing hiding ((<|>))
 import Text.Pandoc.Shared (addMetaField, blocksToInlines', crFilter, escapeURI,
-                           extractSpaces, safeRead, underlineSpan)
+    extractSpaces, onlySimpleTableCells, safeRead, underlineSpan)
 import Text.Pandoc.Walk
 import Text.Parsec.Error
 import Text.TeXMath (readMathML, writeTeX)
@@ -94,13 +95,14 @@
     Left  err -> throwError $ PandocParseError $ getError err
 
 replaceNotes :: PandocMonad m => [Block] -> TagParser m [Block]
-replaceNotes = walkM replaceNotes'
+replaceNotes bs = do
+  st <- getState
+  return $ walk (replaceNotes' (noteTable st)) bs
 
-replaceNotes' :: PandocMonad m => Inline -> TagParser m Inline
-replaceNotes' (RawInline (Format "noteref") ref) = maybe (Str "") (Note . B.toList) . lookup ref <$> getNotes
-  where
-    getNotes = noteTable <$> getState
-replaceNotes' x = return x
+replaceNotes' :: [(String, Blocks)] -> Inline -> Inline
+replaceNotes' noteTbl (RawInline (Format "noteref") ref) =
+  maybe (Str "") (Note . B.toList) $ lookup ref noteTbl
+replaceNotes' _ x = x
 
 data HTMLState =
   HTMLState
@@ -129,7 +131,7 @@
 
 pHtml :: PandocMonad m => TagParser m Blocks
 pHtml = try $ do
-  (TagOpen "html" attr) <- lookAhead pAnyTag
+  (TagOpen "html" attr) <- lookAhead pAny
   for_ (lookup "lang" attr) $
     updateState . B.setMeta "lang" . B.text . T.unpack
   pInTags "html" block
@@ -138,7 +140,7 @@
 pBody = pInTags "body" block
 
 pHead :: PandocMonad m => TagParser m Blocks
-pHead = pInTags "head" $ pTitle <|> pMetaTag <|> pBaseTag <|> (mempty <$ pAnyTag)
+pHead = pInTags "head" $ pTitle <|> pMetaTag <|> pBaseTag <|> (mempty <$ pAny)
   where pTitle = pInTags "title" inline >>= setTitle . trimInlines
         setTitle t = mempty <$ updateState (B.setMeta "title" t)
         pMetaTag = do
@@ -216,15 +218,16 @@
   let attr = toStringAttr attr'
   case flip lookup namespaces =<< lookup "required-namespace" attr of
     Just p -> Just <$> pInTags "case" (skipMany pBlank *> p <* skipMany pBlank)
-    Nothing -> Nothing <$ manyTill pAnyTag (pSatisfy (matchTagClose "case"))
+    Nothing -> Nothing <$ manyTill pAny (pSatisfy (matchTagClose "case"))
 
 eFootnote :: PandocMonad m => TagParser m ()
 eFootnote = try $ do
   let notes = ["footnote", "rearnote"]
   guardEnabled Ext_epub_html_exts
-  (TagOpen tag attr') <- lookAhead pAnyTag
+  (TagOpen tag attr') <- lookAhead pAny
   let attr = toStringAttr attr'
-  guard $ maybe False (`elem` notes) (lookup "type" attr)
+  guard $ maybe False (`elem` notes)
+          (lookup "type" attr <|> lookup "epub:type" attr)
   let ident = fromMaybe "" (lookup "id" attr)
   content <- pInTags tag block
   addNote ident content
@@ -235,20 +238,26 @@
 eNoteref :: PandocMonad m => TagParser m Inlines
 eNoteref = try $ do
   guardEnabled Ext_epub_html_exts
-  TagOpen tag attr' <- lookAhead pAnyTag
-  let attr = toStringAttr attr'
-  guard $ lookup "type" attr == Just "noteref"
-  let ident = maybe "" (dropWhile (== '#')) (lookup "href" attr)
-  guard (not (null ident))
-  pInTags tag block
+  TagOpen tag attr <-
+    pSatisfy (\case
+                 TagOpen _ as
+                    -> (lookup "type" as <|> lookup "epub:type" as)
+                        == Just "noteref"
+                 _  -> False)
+  ident <- case T.unpack <$> lookup "href" attr of
+             Just ('#':rest) -> return rest
+             _ -> mzero
+  _ <- manyTill pAny (pSatisfy (\case
+                                   TagClose t -> t == tag
+                                   _          -> False))
   return $ B.rawInline "noteref" ident
 
 -- Strip TOC if there is one, better to generate again
 eTOC :: PandocMonad m => TagParser m ()
 eTOC = try $ do
   guardEnabled Ext_epub_html_exts
-  (TagOpen tag attr) <- lookAhead pAnyTag
-  guard $ lookup "type" attr == Just "toc"
+  (TagOpen tag attr) <- lookAhead pAny
+  guard $ (lookup "type" attr <|> lookup "epub:type" attr) == Just "toc"
   void (pInTags tag block)
 
 pList :: PandocMonad m => TagParser m Blocks
@@ -336,7 +345,7 @@
   terms <- many1 (try $ skipMany nonItem >> pInTags "dt" inline)
   defs  <- many1 (try $ skipMany nonItem >> pInTags "dd" block)
   skipMany nonItem
-  let term = foldl1 (\x y ->  x <> B.linebreak <> y) terms
+  let term = foldl1 (\x y -> x <> B.linebreak <> y) $ map trimInlines terms
   return (term, map (fixPlains True) defs)
 
 fixPlains :: Bool -> Blocks -> Blocks
@@ -357,7 +366,7 @@
 
 pRawTag :: PandocMonad m => TagParser m Text
 pRawTag = do
-  tag <- pAnyTag
+  tag <- pAny
   let ignorable x = x `elem` ["html","head","body","!DOCTYPE","?xml"]
   if tagOpen ignorable (const True) tag || tagClose ignorable tag
      then return mempty
@@ -414,13 +423,14 @@
 pHtmlBlock :: PandocMonad m => Text -> TagParser m Text
 pHtmlBlock t = try $ do
   open <- pSatisfy (matchTagOpen t [])
-  contents <- manyTill pAnyTag (pSatisfy (matchTagClose t))
+  contents <- manyTill pAny (pSatisfy (matchTagClose t))
   return $ renderTags' $ [open] <> contents <> [TagClose t]
 
 -- Sets chapter context
 eSection :: PandocMonad m => TagParser m Blocks
 eSection = try $ do
-  let matchChapter as = maybe False (T.isInfixOf "chapter") (lookup "type" as)
+  let matchChapter as = maybe False (T.isInfixOf "chapter")
+                        (lookup "type" as <|> lookup "epub:type" as)
   let sectTag = tagOpen (`elem` sectioningContent) matchChapter
   TagOpen tag _ <- lookAhead $ pSatisfy sectTag
   setInChapter (pInTags tag block)
@@ -439,7 +449,8 @@
 
 eTitlePage :: PandocMonad m => TagParser m ()
 eTitlePage = try $ do
-  let isTitlePage as = maybe False (T.isInfixOf "titlepage") (lookup "type" as)
+  let isTitlePage as = maybe False (T.isInfixOf "titlepage")
+       (lookup "type" as <|> lookup "epub:type" as)
   let groupTag = tagOpen (\x -> x `elem` groupingContent || x == "section")
                           isTitlePage
   TagOpen tag _ <- lookAhead $ pSatisfy groupTag
@@ -488,14 +499,9 @@
   TagClose _ <- pSatisfy (matchTagClose "table")
   let rows'' = concat rowsLs <> topfoot <> bottomfoot
   let rows''' = map (map snd) rows''
-  -- let rows''' = map (map snd) rows''
   -- fail on empty table
   guard $ not $ null head' && null rows'''
-  let isSinglePlain x = case B.toList x of
-                             []        -> True
-                             [Plain _] -> True
-                             _         -> False
-  let isSimple = all isSinglePlain $ concat (head':rows''')
+  let isSimple = onlySimpleTableCells $ fmap B.toList <$> head':rows'''
   let cols = if null head'
                 then maximum (map length rows''')
                 else length head'
@@ -610,7 +616,7 @@
 pCodeBlock = try $ do
   TagOpen _ attr' <- pSatisfy (matchTagOpen "pre" [])
   let attr = toStringAttr attr'
-  contents <- manyTill pAnyTag (pCloses "pre" <|> eof)
+  contents <- manyTill pAny (pCloses "pre" <|> eof)
   let rawText = concatMap tagToString contents
   -- drop leading newline if any
   let result' = case rawText of
@@ -663,8 +669,8 @@
 pSatisfy :: PandocMonad m => (Tag Text -> Bool) -> TagParser m (Tag Text)
 pSatisfy f = try $ optional pLocation >> pSat f
 
-pAnyTag :: PandocMonad m => TagParser m (Tag Text)
-pAnyTag = pSatisfy (const True)
+pAny :: PandocMonad m => TagParser m (Tag Text)
+pAny = pSatisfy (const True)
 
 pSelfClosing :: PandocMonad m
              => (Text -> Bool) -> ([Attribute Text] -> Bool)
@@ -771,7 +777,7 @@
 pCode = try $ do
   (TagOpen open attr') <- pSatisfy $ tagOpen (`elem` ["code","tt"]) (const True)
   let attr = toStringAttr attr'
-  result <- manyTill pAnyTag (pCloses open)
+  result <- manyTill pAny (pCloses open)
   return $ B.codeWith (mkAttr attr) $ unwords $ lines $ T.unpack $
            innerText result
 
@@ -818,7 +824,7 @@
                       -> return $ "display" `T.isSuffixOf` x
                     _ -> mzero
   contents <- T.unpack . innerText <$>
-                manyTill pAnyTag (pSatisfy (matchTagClose "script"))
+                manyTill pAny (pSatisfy (matchTagClose "script"))
   return $ (if isdisplay then B.displayMath else B.math) contents
 
 pMath :: PandocMonad m => Bool -> TagParser m Inlines
@@ -829,7 +835,7 @@
   let attr = toStringAttr attr'
   unless inCase $
     guard (maybe True (== mathMLNamespace) (lookup "xmlns" attr))
-  contents <- manyTill pAnyTag (pSatisfy (matchTagClose "math"))
+  contents <- manyTill pAny (pSatisfy (matchTagClose "math"))
   case mathMLToTeXMath (T.unpack $ renderTags $
           [open] <> contents <> [TagClose "math"]) of
        Left _   -> return $ B.spanWith ("",["math"],attr) $ B.text $
@@ -872,7 +878,7 @@
 pCloses tagtype = try $ do
   t <- lookAhead $ pSatisfy $ \tag -> isTagClose tag || isTagOpen tag
   case t of
-       (TagClose t') | t' == tagtype -> void pAnyTag
+       (TagClose t') | t' == tagtype -> void pAny
        (TagOpen t' _) | t' `closes` tagtype -> return ()
        (TagClose "ul") | tagtype == "li" -> return ()
        (TagClose "ol") | tagtype == "li" -> return ()
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs
--- a/src/Text/Pandoc/Readers/LaTeX.hs
+++ b/src/Text/Pandoc/Readers/LaTeX.hs
@@ -155,10 +155,15 @@
                => ParserT String s m String
 rawLaTeXInline = do
   lookAhead (try (char '\\' >> letter))
-  snd <$> (  rawLaTeXParser True
+  raw <- snd <$>
+          (   rawLaTeXParser True
               (mempty <$ (controlSeq "input" >> skipMany opt >> braced))
               inlines
-        <|> rawLaTeXParser True (inlineEnvironment <|> inlineCommand') inlines)
+          <|> rawLaTeXParser True (inlineEnvironment <|> inlineCommand')
+              inlines
+          )
+  finalbraces <- mconcat <$> many (try (string "{}")) -- see #5439
+  return $ raw <> finalbraces
 
 inlineCommand :: PandocMonad m => ParserT String ParserState m Inlines
 inlineCommand = do
@@ -511,11 +516,11 @@
               _            -> mzero
   withVerbatimMode $
     (code . T.unpack . untokenize) <$>
-      manyTill (verbTok marker) (symbol marker)
+      manyTill (notFollowedBy newlineTok >> verbTok marker) (symbol marker)
 
 verbTok :: PandocMonad m => Char -> LP m Tok
 verbTok stopchar = do
-  t@(Tok pos toktype txt) <- satisfyTok (not . isNewlineTok)
+  t@(Tok pos toktype txt) <- anyTok
   case T.findIndex (== stopchar) txt of
        Nothing -> return t
        Just i  -> do
@@ -525,10 +530,16 @@
                   : totoks (incSourceColumn pos (i + 1)) (T.drop 1 t2) ++ inp
          return $ Tok pos toktype t1
 
+listingsLanguage :: [(String, String)] -> Maybe String
+listingsLanguage opts =
+  case lookup "language" opts of
+    Nothing  -> Nothing
+    Just l   -> fromListingsLanguage l `mplus` Just l
+
 dolstinline :: PandocMonad m => LP m Inlines
 dolstinline = do
   options <- option [] keyvals
-  let classes = maybeToList $ lookup "language" options >>= fromListingsLanguage
+  let classes = maybeToList $ listingsLanguage options
   doinlinecode classes
 
 domintinline :: PandocMonad m => LP m Inlines
@@ -545,9 +556,13 @@
               _            -> mzero
   let stopchar = if marker == '{' then '}' else marker
   withVerbatimMode $
-    (codeWith ("",classes,[]) . T.unpack . untokenize) <$>
+    (codeWith ("",classes,[]) . map nlToSpace . T.unpack . untokenize) <$>
       manyTill (verbTok stopchar) (symbol stopchar)
 
+nlToSpace :: Char -> Char
+nlToSpace '\n' = ' '
+nlToSpace x    = x
+
 keyval :: PandocMonad m => LP m (String, String)
 keyval = try $ do
   Tok _ Word key <- satisfyTok isWordTok
@@ -1559,10 +1574,11 @@
          case mtype of
               "DeclareMathOperator" ->
                  Tok pos (CtrlSeq "mathop") "\\mathop"
+                 : Tok pos Symbol "{"
                  : Tok pos (CtrlSeq "mathrm") "\\mathrm"
                  : Tok pos Symbol "{"
                  : (contents' ++
-                   [ Tok pos Symbol "}" ])
+                   [ Tok pos Symbol "}", Tok pos Symbol "}" ])
               _                     -> contents'
     when (mtype == "newcommand") $ do
       macros <- sMacros <$> getState
@@ -2031,8 +2047,7 @@
                   else k, v) | (k,v) <- options ]
       classes = [ "numberLines" |
                   lookup "numbers" options == Just "left" ]
-             ++ maybeToList (lookup "language" options
-                     >>= fromListingsLanguage)
+             ++ maybeToList (listingsLanguage options)
   in  (fromMaybe "" (lookup "label" options), classes, kvs)
 
 inputListing :: PandocMonad m => LP m Blocks
@@ -2048,15 +2063,16 @@
                         report $ CouldNotLoadIncludeFile f pos
                         return []
   let (ident,classes,kvs) = parseListingsOptions options
-  let language = case lookup "language" options >>= fromListingsLanguage of
-                      Just l -> [l]
-                      Nothing -> take 1 $ languagesByExtension (takeExtension f)
+  let classes' =
+        (case listingsLanguage options of
+           Nothing -> (take 1 (languagesByExtension (takeExtension f)) ++)
+           Just _  -> id) classes
   let firstline = fromMaybe 1 $ lookup "firstline" options >>= safeRead
   let lastline = fromMaybe (length codeLines) $
                        lookup "lastline" options >>= safeRead
   let codeContents = intercalate "\n" $ take (1 + lastline - firstline) $
                        drop (firstline - 1) codeLines
-  return $ codeBlockWith (ident,ordNub (classes ++ language),kvs) codeContents
+  return $ codeBlockWith (ident,classes',kvs) codeContents
 
 -- lists
 
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs
--- a/src/Text/Pandoc/Readers/Markdown.hs
+++ b/src/Text/Pandoc/Readers/Markdown.hs
@@ -589,10 +589,13 @@
   return $ B.headerWith attr' level <$> text
 
 registerImplicitHeader :: PandocMonad m => String -> Attr -> MarkdownParser m ()
-registerImplicitHeader raw attr@(ident, _, _) = do
-  let key = toKey $ "[" ++ raw ++ "]"
-  updateState (\s -> s { stateHeaderKeys =
-                         M.insert key (('#':ident,""), attr) (stateHeaderKeys s) })
+registerImplicitHeader raw attr@(ident, _, _)
+  | null raw  = return ()
+  | otherwise = do
+      let key = toKey $ "[" ++ raw ++ "]"
+      updateState $ \s ->
+        s { stateHeaderKeys = M.insert key (('#':ident,""), attr)
+                                     (stateHeaderKeys s) }
 
 --
 -- hrule block
diff --git a/src/Text/Pandoc/Readers/MediaWiki.hs b/src/Text/Pandoc/Readers/MediaWiki.hs
--- a/src/Text/Pandoc/Readers/MediaWiki.hs
+++ b/src/Text/Pandoc/Readers/MediaWiki.hs
@@ -253,7 +253,7 @@
 
 rowsep :: PandocMonad m => MWParser m ()
 rowsep = try $ guardColumnOne *> skipSpaces *> sym "|-" <*
-               many (char '-') <* optional parseAttr <* blanklines
+               many (char '-') <* optional parseAttrs <* blanklines
 
 cellsep :: PandocMonad m => MWParser m ()
 cellsep = try $ do
@@ -277,7 +277,7 @@
   guardColumnOne
   skipSpaces
   sym "|+"
-  optional (try $ parseAttr *> skipSpaces *> char '|' *> blanklines)
+  optional (try $ parseAttrs *> skipSpaces *> char '|' *> blanklines)
   (trimInlines . mconcat) <$>
     many (notFollowedBy (cellsep <|> rowsep) *> inline)
 
diff --git a/src/Text/Pandoc/Readers/Muse.hs b/src/Text/Pandoc/Readers/Muse.hs
--- a/src/Text/Pandoc/Readers/Muse.hs
+++ b/src/Text/Pandoc/Readers/Muse.hs
@@ -903,10 +903,7 @@
 
 -- | Parse a link or image.
 linkOrImage :: PandocMonad m => MuseParser m (F Inlines)
-linkOrImage = try $ do
-  inLink <- asks museInLink
-  guard $ not inLink
-  local (\s -> s { museInLink = True }) (link "URL:" <|> image <|> link "")
+linkOrImage = try $ link "URL:" <|> image <|> link ""
 
 linkContent :: PandocMonad m => MuseParser m (F Inlines)
 linkContent = trimInlinesF . mconcat
@@ -916,9 +913,11 @@
 -- | Parse a link starting with (possibly null) prefix
 link :: PandocMonad m => String -> MuseParser m (F Inlines)
 link prefix = try $ do
+  inLink <- asks museInLink
+  guard $ not inLink
   string $ "[[" ++ prefix
   url <- manyTill anyChar $ char ']'
-  content <- option (pure $ B.str url) linkContent
+  content <- option (pure $ B.str url) (local (\s -> s { museInLink = True }) linkContent)
   char ']'
   return $ B.link url "" <$> content
 
diff --git a/src/Text/Pandoc/Readers/Org/DocumentTree.hs b/src/Text/Pandoc/Readers/Org/DocumentTree.hs
--- a/src/Text/Pandoc/Readers/Org/DocumentTree.hs
+++ b/src/Text/Pandoc/Readers/Org/DocumentTree.hs
@@ -235,8 +235,8 @@
                    else flattenHeader header
   return . mconcat $
     [ headerText
-    , headlineContents hdln
     , planningBlock
+    , headlineContents hdln
     , listBlock
     ]
  where
@@ -273,7 +273,9 @@
 todoKeyword :: Monad m => OrgParser m TodoMarker
 todoKeyword = try $ do
   taskStates <- activeTodoMarkers <$> getState
-  let kwParser tdm = try (tdm <$ string (todoMarkerName tdm) <* spaceChar)
+  let kwParser tdm = try (tdm <$ string (todoMarkerName tdm)
+                              <* spaceChar
+                              <* updateLastPreCharPos)
   choice (map kwParser taskStates)
 
 todoKeywordToInlines :: TodoMarker -> Inlines
diff --git a/src/Text/Pandoc/Readers/Org/ExportSettings.hs b/src/Text/Pandoc/Readers/Org/ExportSettings.hs
--- a/src/Text/Pandoc/Readers/Org/ExportSettings.hs
+++ b/src/Text/Pandoc/Readers/Org/ExportSettings.hs
@@ -13,6 +13,8 @@
   ) where
 
 import Prelude
+import Text.Pandoc.Class (PandocMonad, report)
+import Text.Pandoc.Logging (LogMessage (UnknownOrgExportOption))
 import Text.Pandoc.Readers.Org.ParserState
 import Text.Pandoc.Readers.Org.Parsing
 
@@ -21,14 +23,14 @@
 import Data.Maybe (listToMaybe)
 
 -- | Read and handle space separated org-mode export settings.
-exportSettings :: Monad m => OrgParser m ()
-exportSettings = void $ sepBy spaces exportSetting
+exportSettings :: PandocMonad m => OrgParser m ()
+exportSettings = void $ sepBy skipSpaces exportSetting
 
 -- | Setter function for export settings.
 type ExportSettingSetter a = a -> ExportSettings -> ExportSettings
 
 -- | Read and process a single org-mode export option.
-exportSetting :: Monad m => OrgParser m ()
+exportSetting :: PandocMonad m => OrgParser m ()
 exportSetting = choice
   [ booleanSetting "^" (\val es -> es { exportSubSuperscripts = val })
   , booleanSetting "'" (\val es -> es { exportSmartQuotes = val })
@@ -63,6 +65,7 @@
   , ignoredSetting "toc"
   , booleanSetting "todo" (\val es -> es { exportWithTodoKeywords = val })
   , ignoredSetting "|"
+  , ignoreAndWarn
   ] <?> "export setting"
 
 genericExportSetting :: Monad m
@@ -143,6 +146,13 @@
 -- | Read but ignore the export setting.
 ignoredSetting :: Monad m => String -> OrgParser m ()
 ignoredSetting s = try (() <$ string s <* char ':' <* many1 nonspaceChar)
+
+-- | Read any setting string, but ignore it and emit a warning.
+ignoreAndWarn :: PandocMonad m => OrgParser m ()
+ignoreAndWarn = try $ do
+  opt <- many1 nonspaceChar
+  report (UnknownOrgExportOption opt)
+  return ()
 
 -- | Read an elisp boolean.  Only NIL is treated as false, non-NIL values are
 -- interpreted as true.
diff --git a/src/Text/Pandoc/Readers/Org/Inlines.hs b/src/Text/Pandoc/Readers/Org/Inlines.hs
--- a/src/Text/Pandoc/Readers/Org/Inlines.hs
+++ b/src/Text/Pandoc/Readers/Org/Inlines.hs
@@ -791,7 +791,7 @@
   cmd <- inlineLaTeXCommand
   ils <- (lift . lift) $ parseAsInlineLaTeX cmd
   maybe mzero returnF $
-     parseAsMath cmd `mplus` parseAsMathMLSym cmd `mplus` ils
+     parseAsMathMLSym cmd `mplus` parseAsMath cmd `mplus` ils
  where
    parseAsMath :: String -> Maybe Inlines
    parseAsMath cs = B.fromList <$> texMathToPandoc cs
diff --git a/src/Text/Pandoc/Readers/Org/Meta.hs b/src/Text/Pandoc/Readers/Org/Meta.hs
--- a/src/Text/Pandoc/Readers/Org/Meta.hs
+++ b/src/Text/Pandoc/Readers/Org/Meta.hs
@@ -131,7 +131,7 @@
 --
 -- export options
 --
-optionLine :: Monad m => OrgParser m ()
+optionLine :: PandocMonad m => OrgParser m ()
 optionLine = try $ do
   key <- metaKey
   case key of
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs
--- a/src/Text/Pandoc/Shared.hs
+++ b/src/Text/Pandoc/Shared.hs
@@ -59,6 +59,7 @@
                      isHeaderBlock,
                      headerShift,
                      stripEmptyParagraphs,
+                     onlySimpleTableCells,
                      isTightList,
                      taskListItemFromAscii,
                      taskListItemToAscii,
@@ -108,6 +109,7 @@
 import Data.Ord (comparing)
 import qualified Data.Map as M
 import Data.Maybe (mapMaybe)
+import Data.Monoid (Any (..))
 import Data.Sequence (ViewL (..), ViewR (..), viewl, viewr)
 import qualified Data.Set as Set
 import qualified Data.Text as T
@@ -570,6 +572,19 @@
         go = filter (not . isEmptyParagraph)
         isEmptyParagraph (Para []) = True
         isEmptyParagraph _         = False
+
+-- | Detect if table rows contain only cells consisting of a single
+-- paragraph that has no @LineBreak@.
+onlySimpleTableCells :: [[TableCell]] -> Bool
+onlySimpleTableCells = all isSimpleCell . concat
+  where
+    isSimpleCell [Plain ils] = not (hasLineBreak ils)
+    isSimpleCell [Para ils ] = not (hasLineBreak ils)
+    isSimpleCell []          = True
+    isSimpleCell _           = False
+    hasLineBreak = getAny . query isLineBreak
+    isLineBreak LineBreak = Any True
+    isLineBreak _         = Any False
 
 -- | Detect if a list is tight.
 isTightList :: [[Block]] -> Bool
diff --git a/src/Text/Pandoc/Writers.hs b/src/Text/Pandoc/Writers.hs
--- a/src/Text/Pandoc/Writers.hs
+++ b/src/Text/Pandoc/Writers.hs
@@ -41,6 +41,7 @@
     , writeICML
     , writeJATS
     , writeJSON
+    , writeJira
     , writeLaTeX
     , writeMan
     , writeMarkdown
@@ -91,6 +92,7 @@
 import Text.Pandoc.Writers.HTML
 import Text.Pandoc.Writers.ICML
 import Text.Pandoc.Writers.JATS
+import Text.Pandoc.Writers.Jira
 import Text.Pandoc.Writers.LaTeX
 import Text.Pandoc.Writers.Man
 import Text.Pandoc.Writers.Markdown
@@ -141,6 +143,7 @@
   ,("docbook4"     , TextWriter writeDocbook4)
   ,("docbook5"     , TextWriter writeDocbook5)
   ,("jats"         , TextWriter writeJATS)
+  ,("jira"         , TextWriter writeJira)
   ,("opml"         , TextWriter writeOPML)
   ,("opendocument" , TextWriter writeOpenDocument)
   ,("latex"        , TextWriter writeLaTeX)
diff --git a/src/Text/Pandoc/Writers/AsciiDoc.hs b/src/Text/Pandoc/Writers/AsciiDoc.hs
--- a/src/Text/Pandoc/Writers/AsciiDoc.hs
+++ b/src/Text/Pandoc/Writers/AsciiDoc.hs
@@ -405,6 +405,8 @@
 
 -- | Convert Pandoc inline element to asciidoc.
 inlineToAsciiDoc :: PandocMonad m => WriterOptions -> Inline -> ADW m Doc
+inlineToAsciiDoc opts (Emph [Strong xs]) =
+  inlineToAsciiDoc opts (Strong [Emph xs])  -- see #5565
 inlineToAsciiDoc opts (Emph lst) = do
   contents <- inlineListToAsciiDoc opts lst
   isIntraword <- gets intraword
@@ -425,12 +427,18 @@
   contents <- inlineListToAsciiDoc opts lst
   return $ "~" <> contents <> "~"
 inlineToAsciiDoc opts (SmallCaps lst) = inlineListToAsciiDoc opts lst
-inlineToAsciiDoc opts (Quoted SingleQuote lst) =
-  inlineListToAsciiDoc opts (Str "`" : lst ++ [Str "'"])
-inlineToAsciiDoc opts (Quoted DoubleQuote lst) =
-  inlineListToAsciiDoc opts (Str "``" : lst ++ [Str "''"])
+inlineToAsciiDoc opts (Quoted qt lst) = do
+  isAsciidoctor <- gets asciidoctorVariant
+  inlineListToAsciiDoc opts $
+    case qt of
+      SingleQuote
+        | isAsciidoctor -> [Str "'`"] ++ lst ++ [Str "`'"]
+        | otherwise     -> [Str "`"] ++ lst ++ [Str "'"]
+      DoubleQuote
+        | isAsciidoctor -> [Str "\"`"] ++ lst ++ [Str "`\""]
+        | otherwise     -> [Str "``"] ++ lst ++ [Str "''"]
 inlineToAsciiDoc _ (Code _ str) = return $
-  text "`" <> text (escapeStringUsing (backslashEscapes "`") str) <> "`"
+  text "`+" <> text (escapeStringUsing (backslashEscapes "`") str) <> "+`"
 inlineToAsciiDoc _ (Str str) = return $ text $ escapeString str
 inlineToAsciiDoc _ (Math InlineMath str) = do
   isAsciidoctor <- gets asciidoctorVariant
@@ -512,9 +520,11 @@
 inlineToAsciiDoc _ (Note _) = return "[multiblock footnote omitted]"
 inlineToAsciiDoc opts (Span (ident,classes,_) ils) = do
   contents <- inlineListToAsciiDoc opts ils
+  isIntraword <- gets intraword
+  let marker = if isIntraword then "##" else "#"
   if null ident && null classes
      then return contents
      else do
        let modifier = brackets $ text $ unwords $
             [ '#':ident | not (null ident)] ++ map ('.':) classes
-       return $ modifier <> "#" <> contents <> "#"
+       return $ modifier <> marker <> contents <> marker
diff --git a/src/Text/Pandoc/Writers/CommonMark.hs b/src/Text/Pandoc/Writers/CommonMark.hs
--- a/src/Text/Pandoc/Writers/CommonMark.hs
+++ b/src/Text/Pandoc/Writers/CommonMark.hs
@@ -21,17 +21,16 @@
 import Data.Char (isAscii)
 import Data.Foldable (foldrM)
 import Data.List (transpose)
-import Data.Monoid (Any (..))
 import Data.Text (Text)
 import qualified Data.Text as T
 import Network.HTTP (urlEncode)
 import Text.Pandoc.Class (PandocMonad)
 import Text.Pandoc.Definition
 import Text.Pandoc.Options
-import Text.Pandoc.Shared (isTightList, taskListItemToAscii, linesToPara,
-                           substitute, capitalize, isHeaderBlock)
+import Text.Pandoc.Shared (capitalize, isHeaderBlock, isTightList,
+    linesToPara, onlySimpleTableCells, substitute, taskListItemToAscii)
 import Text.Pandoc.Templates (renderTemplate')
-import Text.Pandoc.Walk (query, walk, walkM)
+import Text.Pandoc.Walk (walk, walkM)
 import Text.Pandoc.Writers.HTML (writeHtml5String, tagWithAttributes)
 import Text.Pandoc.Writers.Shared
 import Text.Pandoc.XML (toHtml5Entities)
@@ -159,16 +158,7 @@
         dlToBullet (term, xs) =
           Para term : concat xs
 blockToNodes opts t@(Table capt aligns _widths headers rows) ns = do
-  let allcells = concat (headers:rows)
-  let isLineBreak LineBreak = Any True
-      isLineBreak _         = Any False
-  let isPlainOrPara [Para _]  = True
-      isPlainOrPara [Plain _] = True
-      isPlainOrPara []        = True
-      isPlainOrPara _         = False
-  let isSimple = all isPlainOrPara allcells &&
-                 not ( getAny (query isLineBreak allcells) )
-  if isEnabled Ext_pipe_tables opts && isSimple
+  if isEnabled Ext_pipe_tables opts && onlySimpleTableCells (headers:rows)
      then do
        -- We construct a table manually as a CUSTOM_BLOCK, for
        -- two reasons:  (1) cmark-gfm currently doesn't support
diff --git a/src/Text/Pandoc/Writers/EPUB.hs b/src/Text/Pandoc/Writers/EPUB.hs
--- a/src/Text/Pandoc/Writers/EPUB.hs
+++ b/src/Text/Pandoc/Writers/EPUB.hs
@@ -584,11 +584,14 @@
                      _                   -> (Pandoc nullMeta bs, "bodymatter")
                frontMatterTypes = ["prologue", "abstract", "acknowledgments",
                                    "copyright-page", "dedication",
-                                   "foreword", "halftitle",
-                                   "introduction", "preface",
+                                   "credits", "keywords", "imprint",
+                                   "contributors", "other-credits",
+                                   "errata", "revision-history",
+                                   "titlepage", "halftitlepage", "seriespage",
+                                   "foreword", "preface",
                                    "seriespage", "titlepage"]
-               backMatterTypes = ["afterword", "appendix", "colophon",
-                                  "conclusion", "epigraph"]
+               backMatterTypes = ["appendix", "colophon", "bibliography",
+                                  "index"]
 
   chapterEntries <- zipWithM chapToEntry [1..] chapters
 
@@ -656,11 +659,11 @@
                                ,("media-type","application/xhtml+xml")] ++
                                [("properties","nav") | epub3 ]) $ ()
              ] ++
-             [ unode "item" ! [("id","style"), ("href",fp)
+             [ unode "item" ! [("id","stylesheet" ++ show n), ("href",fp)
                               ,("media-type","text/css")] $ () |
-                             fp <- map
+                             (n :: Int, fp) <- zip [1..] (map
                                (makeRelative epubSubdir . eRelativePath)
-                               stylesheetEntries ] ++
+                               stylesheetEntries) ] ++
              map chapterNode (cpgEntry ++ (tpEntry : chapterEntries)) ++
              (case cpicEntry of
                     []    -> []
@@ -793,13 +796,8 @@
                                    [("id","toc")]) $
                     [ unode "h1" ! [("id","toc-title")] $ tocTitle
                     , unode "ol" ! [("class","toc")] $ tocBlocks ]]
-  let landmarks = if epub3
-                     then [RawBlock (Format "html") $ ppElement $
-                            unode "nav" ! [("epub:type","landmarks")
-                                          ,("id","landmarks")
-                                          ,("hidden","hidden")] $
-                            [ unode "ol" $
-                              [ unode "li"
+  let landmarkItems = if epub3
+                         then [ unode "li"
                                 [ unode "a" ! [("href", "text/cover.xhtml")
                                               ,("epub:type", "cover")] $
                                   "Cover"] |
@@ -811,9 +809,15 @@
                                     "Table of contents"
                                 ] | writerTableOfContents opts
                               ]
-                            ]
+                         else []
+  let landmarks = if null landmarkItems
+                     then []
+                     else [RawBlock (Format "html") $ ppElement $
+                            unode "nav" ! [("epub:type","landmarks")
+                                          ,("id","landmarks")
+                                          ,("hidden","hidden")] $
+                            [ unode "ol" landmarkItems ]
                           ]
-                     else []
   navData <- lift $ writeHtml opts'{ writerVariables = ("navpage","true"):
                      cssvars False ++ vars }
             (Pandoc (setMeta "title"
diff --git a/src/Text/Pandoc/Writers/FB2.hs b/src/Text/Pandoc/Writers/FB2.hs
--- a/src/Text/Pandoc/Writers/FB2.hs
+++ b/src/Text/Pandoc/Writers/FB2.hs
@@ -21,7 +21,7 @@
 import Prelude
 import Control.Monad (zipWithM)
 import Control.Monad.Except (catchError)
-import Control.Monad.State.Strict (StateT, evalStateT, get, lift, liftM, modify)
+import Control.Monad.State.Strict (StateT, evalStateT, get, gets, lift, liftM, modify)
 import Data.ByteString.Base64 (encode)
 import qualified Data.ByteString.Char8 as B8
 import Data.Char (isAscii, isControl, isSpace, toLower)
@@ -40,6 +40,7 @@
 import Text.Pandoc.Logging
 import Text.Pandoc.Options (HTMLMathMethod (..), WriterOptions (..), def)
 import Text.Pandoc.Shared (capitalize, isURI, orderedListMarkers, hierarchicalize)
+import Text.Pandoc.Writers.Shared (lookupMetaString)
 import qualified Text.Pandoc.Shared as Shared (Element(Blk, Sec))
 
 -- | Data to be written at the end of the document:
@@ -96,12 +97,14 @@
 
 description :: PandocMonad m => Meta -> FBM m Content
 description meta' = do
-  let genre = el "genre" "unrecognised"
+  let genre = case lookupMetaString "genre" meta' of
+                "" -> el "genre" "unrecognised"
+                s  -> el "genre" s
   bt <- booktitle meta'
   let as = authors meta'
   dd <- docdate meta'
   annotation <- case lookupMeta "abstract" meta' of
-                  Just (MetaBlocks bs) -> (list . el "annotation") <$> cMapM blockToXml (map unPlain bs)
+                  Just (MetaBlocks bs) -> list . el "annotation" <$> cMapM blockToXml (map unPlain bs)
                   _ -> pure mempty
   let lang = case lookupMeta "lang" meta' of
                Just (MetaInlines [Str s]) -> [el "lang" $ iso639 s]
@@ -179,8 +182,8 @@
             else list . el "title" <$> formatTitle title
   let sectionContent = if null id'
       then el "section" (title' ++ content)
-      else el "section" ([uattr "id" id'], (title' ++ content))
-  return $ [sectionContent]
+      else el "section" ([uattr "id" id'], title' ++ content)
+  return [sectionContent]
 
 -- | Only <p> and <empty-line> are allowed within <title> in FB2.
 formatTitle :: PandocMonad m => [Inline] -> FBM m [Content]
@@ -287,6 +290,15 @@
 footnoteID :: Int -> String
 footnoteID i = "n" ++ show i
 
+mkitem :: PandocMonad m => String -> [Block] -> FBM m [Content]
+mkitem mrk bs = do
+  pmrk <- gets parentListMarker
+  let nmrk = pmrk ++ mrk ++ " "
+  modify (\s -> s { parentListMarker = nmrk})
+  item <- cMapM blockToXml $ plainToPara $ indentBlocks nmrk bs
+  modify (\s -> s { parentListMarker = pmrk }) -- old parent marker
+  return item
+
 -- | Convert a block-level Pandoc's element to FictionBook XML representation.
 blockToXml :: PandocMonad m => Block -> FBM m [Content]
 blockToXml (Plain ss) = cMapM toXml ss  -- FIXME: can lead to malformed FB2
@@ -294,40 +306,26 @@
 -- title beginning with fig: indicates that the image is a figure
 blockToXml (Para [Image atr alt (src,'f':'i':'g':':':tit)]) =
   insertImage NormalImage (Image atr alt (src,tit))
-blockToXml (Para ss) = (list . el "p") <$> cMapM toXml ss
+blockToXml (Para ss) = list . el "p" <$> cMapM toXml ss
 blockToXml (CodeBlock _ s) = return . spaceBeforeAfter .
                              map (el "p" . el "code") . lines $ s
-blockToXml (RawBlock f str) = do
+blockToXml (RawBlock f str) =
   if f == Format "fb2"
     then return $ XI.parseXML str
     else return []
 blockToXml (Div _ bs) = cMapM blockToXml bs
-blockToXml (BlockQuote bs) = (list . el "cite") <$> cMapM blockToXml bs
+blockToXml (BlockQuote bs) = list . el "cite" <$> cMapM blockToXml bs
 blockToXml (LineBlock lns) =
-  (list . el "poem") <$> mapM stanza (split null lns)
+  list . el "poem" <$> mapM stanza (split null lns)
   where
     v xs = el "v" <$> cMapM toXml xs
     stanza xs = el "stanza" <$> mapM v xs
-blockToXml (OrderedList a bss) = do
-    state <- get
-    let pmrk = parentListMarker state
-    let markers = (pmrk ++) <$> orderedListMarkers a
-    let mkitem mrk bs = do
-          modify (\s -> s { parentListMarker = mrk ++ " "})
-          item <- cMapM blockToXml $ plainToPara $ indentBlocks (mrk ++ " ") bs
-          modify (\s -> s { parentListMarker = pmrk }) -- old parent marker
-          return item
+blockToXml (OrderedList a bss) =
     concat <$> zipWithM mkitem markers bss
-blockToXml (BulletList bss) = do
-    state <- get
-    let pmrk = parentListMarker state
-    let mrk = pmrk ++ "•"
-    let mkitem bs = do
-          modify (\s -> s { parentListMarker = mrk ++ " "})
-          item <- cMapM blockToXml $ plainToPara $ indentBlocks (mrk ++ " ") bs
-          modify (\s -> s { parentListMarker = pmrk }) -- old parent marker
-          return item
-    cMapM mkitem bss
+    where
+      markers = orderedListMarkers a
+blockToXml (BulletList bss) =
+    cMapM (mkitem "•") bss
 blockToXml (DefinitionList defs) =
     cMapM mkdef defs
     where
@@ -441,7 +439,7 @@
   let fn_id = footnoteID n
   fn_desc <- cMapM blockToXml bs
   modify (\s -> s { footnotes = (n, fn_id, fn_desc) : fns })
-  let fn_ref = el "sup" . txt $ "[" ++ show n ++ "]"
+  let fn_ref = txt $ "[" ++ show n ++ "]"
   return . list $ el "a" ( [ attr ("l","href") ('#':fn_id)
                            , uattr "type" "note" ]
                          , fn_ref )
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
@@ -65,18 +65,21 @@
 #endif
 #if MIN_VERSION_blaze_html(0,5,1)
 import qualified Text.Blaze.XHtml5 as H5
+import qualified Text.Blaze.XHtml5.Attributes as A5
 #else
 import qualified Text.Blaze.Html5 as H5
+import qualified Text.Blaze.Html5.Attributes as A5
 #endif
 import Control.Monad.Except (throwError)
 import Data.Aeson (Value)
-import System.FilePath (takeBaseName, takeExtension)
+import System.FilePath (takeBaseName)
 import Text.Blaze.Html.Renderer.Text (renderHtml)
 import qualified Text.Blaze.XHtml1.Transitional as H
 import qualified Text.Blaze.XHtml1.Transitional.Attributes as A
 import Text.Pandoc.Class (PandocMonad, report, runPure)
 import Text.Pandoc.Error
 import Text.Pandoc.Logging
+import Text.Pandoc.MIME (mediaCategory)
 import Text.TeXMath
 import Text.XML.Light (elChildren, unode, unqual)
 import qualified Text.XML.Light as XML
@@ -108,11 +111,23 @@
 strToHtml :: String -> Html
 strToHtml ('\'':xs) = preEscapedString "\'" `mappend` strToHtml xs
 strToHtml ('"' :xs) = preEscapedString "\"" `mappend` strToHtml xs
-strToHtml xs@(_:_)  = case break (\c -> c == '\'' || c == '"') xs of
+strToHtml (x:xs) | needsVariationSelector x
+                 = preEscapedString [x, '\xFE0E'] `mappend`
+                   case xs of
+                     ('\xFE0E':ys) -> strToHtml ys
+                     _             -> strToHtml xs
+strToHtml xs@(_:_)  = case break (\c -> c == '\'' || c == '"' ||
+                                        needsVariationSelector c) xs of
                            (_ ,[]) -> toHtml xs
                            (ys,zs) -> toHtml ys `mappend` strToHtml zs
 strToHtml [] = ""
 
+-- See #5469: this prevents iOS from substituting emojis.
+needsVariationSelector :: Char -> Bool
+needsVariationSelector '↩' = True
+needsVariationSelector '↔' = True
+needsVariationSelector _   = False
+
 -- | Hard linebreak.
 nl :: WriterOptions -> Html
 nl opts = if writerWrapText opts == WrapNone
@@ -653,23 +668,11 @@
                (Just x)         -> [("style", show dir ++ ":" ++ show x)]
                Nothing          -> []
 
-imageExts :: [String]
-imageExts = [ "art", "bmp", "cdr", "cdt", "cpt", "cr2", "crw", "djvu", "erf",
-              "gif", "ico", "ief", "jng", "jpg", "jpeg", "nef", "orf", "pat", "pbm",
-              "pcx", "pgm", "png", "pnm", "ppm", "psd", "ras", "rgb", "svg", "tiff",
-              "wbmp", "xbm", "xpm", "xwd" ]
-
-treatAsImage :: FilePath -> Bool
-treatAsImage fp =
-  let path = maybe fp uriPath (parseURIReference fp)
-      ext  = map toLower $ drop 1 $ takeExtension path
-  in  null ext || ext `elem` imageExts
-
 figure :: PandocMonad m
        => WriterOptions -> Attr -> [Inline] -> (String, String)
        -> StateT WriterState m Html
 figure opts attr txt (s,tit) = do
-  img <- inlineToHtml opts (Image attr txt (s,tit))
+  img <- inlineToHtml opts (Image attr [Str ""] (s,tit))
   html5 <- gets stHtml5
   let tocapt = if html5
                   then H5.figcaption
@@ -836,7 +839,7 @@
               4 -> H.h4 contents'
               5 -> H.h5 contents'
               6 -> H.h6 contents'
-              _ -> H.p contents'
+              _ -> H.p ! A.class_ "heading" $ contents'
 blockToHtml opts (BulletList lst) = do
   contents <- mapM (listItemToHtml opts) lst
   unordList opts contents
@@ -1123,8 +1126,8 @@
                         return $ if null tit
                                     then link'
                                     else link' ! A.title (toValue tit)
-    (Image attr txt (s,tit)) | treatAsImage s -> do
-                        let alternate' = stringify txt
+    (Image attr txt (s,tit)) -> do
+                        let alternate = stringify txt
                         slideVariant <- gets stSlideVariant
                         let isReveal = slideVariant == RevealJsSlides
                         attrs <- imgAttrsToHtml opts attr
@@ -1134,22 +1137,23 @@
                                   then customAttribute "data-src" $ toValue s
                                   else A.src $ toValue s) :
                               [A.title $ toValue tit | not (null tit)] ++
-                              [A.alt $ toValue alternate' | not (null txt)] ++
                               attrs
-                        let tag = if html5 then H5.img else H.img
-                        return $ foldl (!) tag attributes
-                        -- note:  null title included, as in Markdown.pl
-    (Image attr _ (s,tit)) -> do
-                        slideVariant <- gets stSlideVariant
-                        let isReveal = slideVariant == RevealJsSlides
-                        attrs <- imgAttrsToHtml opts attr
-                        let attributes =
-                              (if isReveal
-                                  then customAttribute "data-src" $ toValue s
-                                  else A.src $ toValue s) :
-                              [A.title $ toValue tit | not (null tit)] ++
-                              attrs
-                        return $ foldl (!) H5.embed attributes
+                            imageTag = (if html5 then H5.img else H.img
+                              , [A.alt $ toValue alternate | not (null txt)] )
+                            mediaTag tg fallbackTxt =
+                              let linkTxt = if null txt
+                                            then fallbackTxt
+                                            else alternate
+                              in (tg $ H.a ! A.href (toValue s) $ toHtml linkTxt
+                                 , [A5.controls ""] )
+                            normSrc = maybe s uriPath (parseURIReference s)
+                            (tag, specAttrs) = case mediaCategory normSrc of
+                              Just "image" -> imageTag
+                              Just "video" -> mediaTag H5.video "Video"
+                              Just "audio" -> mediaTag H5.audio "Audio"
+                              Just _       -> (H5.embed, [])
+                              _            -> imageTag
+                        return $ foldl (!) tag $ attributes ++ specAttrs
                         -- note:  null title included, as in Markdown.pl
     (Note contents) -> do
                         notes <- gets stNotes
diff --git a/src/Text/Pandoc/Writers/JATS.hs b/src/Text/Pandoc/Writers/JATS.hs
--- a/src/Text/Pandoc/Writers/JATS.hs
+++ b/src/Text/Pandoc/Writers/JATS.hs
@@ -16,16 +16,20 @@
 module Text.Pandoc.Writers.JATS ( writeJATS ) where
 import Prelude
 import Control.Monad.Reader
+import Control.Monad.State
 import Data.Char (toLower)
 import Data.Generics (everywhere, mkT)
-import Data.List (isSuffixOf, partition)
+import Data.List (isSuffixOf, partition, isPrefixOf)
+import qualified Data.Map as M
 import Data.Maybe (fromMaybe)
+import Data.Time (toGregorian, Day, parseTimeM, defaultTimeLocale, formatTime)
 import Data.Text (Text)
 import Text.Pandoc.Class (PandocMonad, report)
 import Text.Pandoc.Definition
 import Text.Pandoc.Highlighting (languages, languagesByExtension)
 import Text.Pandoc.Logging
 import Text.Pandoc.MIME (getMimeType)
+import Text.Pandoc.Walk (walk)
 import Text.Pandoc.Options
 import Text.Pandoc.Pretty
 import Text.Pandoc.Shared
@@ -39,11 +43,16 @@
 data JATSVersion = JATS1_1
      deriving (Eq, Show)
 
-type JATS = ReaderT JATSVersion
+data JATSState = JATSState
+  { jatsNotes :: [(Int, Doc)] }
 
+type JATS a = StateT JATSState (ReaderT JATSVersion a)
+
 writeJATS :: PandocMonad m => WriterOptions -> Pandoc -> m Text
 writeJATS opts d =
-  runReaderT (docToJATS opts d) JATS1_1
+  runReaderT (evalStateT (docToJATS opts d)
+     (JATSState{ jatsNotes = [] }))
+     JATS1_1
 
 -- | Convert Pandoc document to string in JATS format.
 docToJATS :: PandocMonad m => WriterOptions -> Pandoc -> JATS m Text
@@ -52,7 +61,7 @@
       isBackBlock _                    = False
   let (backblocks, bodyblocks) = partition isBackBlock blocks
   let elements = hierarchicalize bodyblocks
-  let backElements = hierarchicalize backblocks
+  let backElements = hierarchicalize $ backblocks
   let colwidth = if writerWrapText opts == WrapAuto
                     then Just $ writerColumns opts
                     else Nothing
@@ -77,10 +86,25 @@
                  meta
   main <- (render' . vcat) <$>
             mapM (elementToJATS opts' startLvl) elements
-  back <- (render' . vcat) <$>
-            mapM (elementToJATS opts' startLvl) backElements
+  notes <- reverse . map snd <$> gets jatsNotes
+  backs <- mapM (elementToJATS opts' startLvl) backElements
+  let fns = inTagsIndented "fn-group" $ vcat notes
+  let back = render' $ vcat backs $$ fns
+  let date = case  getField "date" metadata -- an object
+               `mplus`
+                   (getField "date" metadata >>= parseDate) of
+               Nothing  -> mempty
+               Just day ->
+                 let (y,m,d) = toGregorian day
+                 in  M.insert ("year" :: String) (show y)
+                      $ M.insert "month" (show m)
+                      $ M.insert "day" (show d)
+                      $ M.insert "iso-8601"
+                         (formatTime defaultTimeLocale "%F" day)
+                      $ mempty
   let context = defField "body" main
               $ defField "back" back
+              $ resetField ("date" :: String) date
               $ defField "mathml" (case writerHTMLMathMethod opts of
                                         MathML -> True
                                         _      -> False) metadata
@@ -103,8 +127,23 @@
 
 -- | Convert a list of Pandoc blocks to JATS.
 blocksToJATS :: PandocMonad m => WriterOptions -> [Block] -> JATS m Doc
-blocksToJATS opts = fmap vcat . mapM (blockToJATS opts)
+blocksToJATS = wrappedBlocksToJATS (const False)
 
+wrappedBlocksToJATS :: PandocMonad m
+                    => (Block -> Bool)
+                    -> WriterOptions
+                    -> [Block]
+                    -> JATS m Doc
+wrappedBlocksToJATS needsWrap opts =
+  fmap vcat . mapM wrappedBlockToJATS
+  where
+    wrappedBlockToJATS b = do
+      inner <- blockToJATS opts b
+      return $
+        if needsWrap b
+           then inTags True "p" [("specific-use","wrapper")] inner
+           else inner
+
 -- | Auxiliary function to convert Plain block to Para.
 plainToPara :: Block -> Block
 plainToPara (Plain x) = Para x
@@ -122,7 +161,9 @@
                      => WriterOptions -> [Inline] -> [[Block]] -> JATS m Doc
 deflistItemToJATS opts term defs = do
   term' <- inlinesToJATS opts term
-  def' <- blocksToJATS opts $ concatMap (map plainToPara) defs
+  def' <- wrappedBlocksToJATS (not . isPara)
+              opts $ concatMap (walk demoteHeaderAndRefs .
+                                map plainToPara) defs
   return $ inTagsIndented "def-item" $
       inTagsSimple "term" term' $$
       inTagsIndented "def" def'
@@ -139,7 +180,8 @@
 listItemToJATS :: PandocMonad m
                => WriterOptions -> Maybe String -> [Block] -> JATS m Doc
 listItemToJATS opts mbmarker item = do
-  contents <- blocksToJATS opts item
+  contents <- wrappedBlocksToJATS (not . isParaOrList) opts
+                 (walk demoteHeaderAndRefs item)
   return $ inTagsIndented "list-item" $
            maybe empty (\lbl -> inTagsSimple "label" (text lbl)) mbmarker
            $$ contents
@@ -322,11 +364,15 @@
 inlinesToJATS opts lst = hcat <$> mapM (inlineToJATS opts) (fixCitations lst)
   where
    fixCitations [] = []
-   fixCitations (x@(RawInline (Format "jats") "<pub-id pub-id-type=\"doi\">") : xs) =
-     let isRawInline (RawInline{}) = True
-         isRawInline _             = False
-         (ys,zs)                   = break isRawInline xs
-         in x : Str (stringify ys) : fixCitations zs
+   fixCitations (x:xs) | needsFixing x =
+     x : Str (stringify ys) : fixCitations zs
+     where
+       needsFixing (RawInline (Format "jats") z) =
+           "<pub-id pub-id-type=" `isPrefixOf` z
+       needsFixing _             = False
+       isRawInline (RawInline{}) = True
+       isRawInline _             = False
+       (ys,zs)                   = break isRawInline xs
    fixCitations (x:xs) = x : fixCitations xs
 
 -- | Convert an inline element to JATS.
@@ -359,14 +405,24 @@
   | otherwise   = do
       report $ InlineNotRendered il
       return empty
-inlineToJATS _ LineBreak = return $ selfClosingTag "break" []
+inlineToJATS _ LineBreak = return cr -- not allowed as child of p
+-- see https://jats.nlm.nih.gov/publishing/tag-library/1.2/element/break.html
 inlineToJATS _ Space = return space
 inlineToJATS opts SoftBreak
   | writerWrapText opts == WrapPreserve = return cr
   | otherwise = return space
-inlineToJATS opts (Note contents) =
-  -- TODO technically only <p> tags are allowed inside
-  inTagsIndented "fn" <$> blocksToJATS opts contents
+inlineToJATS opts (Note contents) = do
+  notes <- gets jatsNotes
+  let notenum = case notes of
+                  (n, _):_ -> n + 1
+                  []       -> 1
+  thenote <- inTags True "fn" [("id","fn" ++ show notenum)]
+                <$> wrappedBlocksToJATS (not . isPara) opts
+                     (walk demoteHeaderAndRefs contents)
+  modify $ \st -> st{ jatsNotes = (notenum, thenote) : notes }
+  return $ inTags False "xref" [("ref-type", "fn"),
+                                ("rid", "fn" ++ show notenum)]
+         $ text (show notenum)
 inlineToJATS opts (Cite _ lst) =
   -- TODO revisit this after examining the jats.csl pipeline
   inlinesToJATS opts lst
@@ -445,3 +501,29 @@
                         "xlink:href", "xlink:role", "xlink:show",
                         "xlink:type"]]
   return $ selfClosingTag "inline-graphic" attr
+
+isParaOrList :: Block -> Bool
+isParaOrList Para{}           = True
+isParaOrList Plain{}          = True
+isParaOrList BulletList{}     = True
+isParaOrList OrderedList{}    = True
+isParaOrList DefinitionList{} = True
+isParaOrList _                = False
+
+isPara :: Block -> Bool
+isPara Para{}  = True
+isPara Plain{} = True
+isPara _       = False
+
+demoteHeaderAndRefs :: Block -> Block
+demoteHeaderAndRefs (Header _ _ ils) = Para ils
+demoteHeaderAndRefs (Div ("refs",cls,kvs) bs) =
+                       Div ("",cls,kvs) bs
+demoteHeaderAndRefs x = x
+
+parseDate :: String -> Maybe Day
+parseDate s = msum (map (\fs -> parsetimeWith fs s) formats) :: Maybe Day
+  where parsetimeWith = parseTimeM True defaultTimeLocale
+        formats = ["%x","%m/%d/%Y", "%D","%F", "%d %b %Y",
+                    "%e %B %Y", "%b. %e, %Y", "%B %e, %Y",
+                    "%Y%m%d", "%Y%m", "%Y"]
diff --git a/src/Text/Pandoc/Writers/Jira.hs b/src/Text/Pandoc/Writers/Jira.hs
new file mode 100644
--- /dev/null
+++ b/src/Text/Pandoc/Writers/Jira.hs
@@ -0,0 +1,322 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{- |
+   Module      : Text.Pandoc.Writers.Jira
+   Copyright   : © 2010-2019 Albert Krewinkel, John MacFarlane
+   License     : GNU GPL, version 2 or above
+
+   Maintainer  : Albert Krewinkel <tarleb+pandoc@moltkeplatz.de>
+   Stability   : alpha
+   Portability : portable
+
+Conversion of 'Pandoc' documents to Jira markup.
+
+JIRA:
+<https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all>
+-}
+module Text.Pandoc.Writers.Jira ( writeJira ) where
+import Prelude
+import Control.Monad.State.Strict
+import Data.Char (toLower)
+import Data.Foldable (find)
+import Data.Text (Text, pack)
+import Text.Pandoc.Class (PandocMonad, report)
+import Text.Pandoc.Definition
+import Text.Pandoc.Logging (LogMessage (BlockNotRendered, InlineNotRendered))
+import Text.Pandoc.Options (WriterOptions (writerTemplate))
+import Text.Pandoc.Shared (blocksToInlines, linesToPara)
+import Text.Pandoc.Templates (renderTemplate')
+import Text.Pandoc.Writers.Math (texMathToInlines)
+import Text.Pandoc.Writers.Shared (metaToJSON, defField)
+import qualified Data.Text as T
+
+data WriterState = WriterState
+  { stNotes     :: [Text]      -- Footnotes
+  , stListLevel :: Text        -- String at beginning of list items, e.g. "**"
+  }
+
+-- | Initial writer state
+startState :: WriterState
+startState = WriterState
+  { stNotes = []
+  , stListLevel = ""
+  }
+
+type JiraWriter = StateT WriterState
+
+-- | Convert Pandoc to Jira.
+writeJira :: PandocMonad m => WriterOptions -> Pandoc -> m Text
+writeJira opts document =
+  evalStateT (pandocToJira opts document) startState
+
+-- | Return Jira representation of document.
+pandocToJira :: PandocMonad m
+             => WriterOptions -> Pandoc -> JiraWriter m Text
+pandocToJira opts (Pandoc meta blocks) = do
+  metadata <- metaToJSON opts (blockListToJira opts)
+                 (inlineListToJira opts) meta
+  body <- blockListToJira opts blocks
+  notes <- gets $ T.intercalate "\n" . reverse . stNotes
+  let main = body <> if T.null notes then "" else "\n\n" <> notes
+  let context = defField "body" main metadata
+  case writerTemplate opts of
+    Nothing  -> return main
+    Just tpl -> renderTemplate' tpl context
+
+-- | Escape one character as needed for Jira.
+escapeCharForJira :: Char -> Text
+escapeCharForJira c = case c of
+  '&'      -> "&amp;"
+  '<'      -> "&lt;"
+  '>'      -> "&gt;"
+  '"'      -> "&quot;"
+  '*'      -> "&ast;"
+  '_'      -> "&lowbar;"
+  '@'      -> "&commat;"
+  '+'      -> "&plus;"
+  '-'      -> "&hyphen;"
+  '|'      -> "&vert;"
+  '{'      -> "\\{"
+  '\x2014' -> " -- "
+  '\x2013' -> " - "
+  '\x2019' -> "'"
+  '\x2026' -> "..."
+  _        -> T.singleton c
+
+-- | Escape string as needed for Jira.
+escapeStringForJira :: Text -> Text
+escapeStringForJira = T.concatMap escapeCharForJira
+
+-- | Create an anchor macro from the given element attributes.
+anchor :: Attr -> Text
+anchor (ident,_,_) =
+  if ident == ""
+  then ""
+  else "{anchor:" <> pack ident <> "}"
+
+-- | Append a newline character unless we are in a list.
+appendNewlineUnlessInList :: PandocMonad m
+                          => Text
+                          -> JiraWriter m Text
+appendNewlineUnlessInList t = do
+  listLevel <- gets stListLevel
+  return (if T.null listLevel then t <> "\n" else t)
+
+-- | Convert Pandoc block element to Jira.
+blockToJira :: PandocMonad m
+            => WriterOptions -- ^ Options
+            -> Block         -- ^ Block element
+            -> JiraWriter m Text
+
+blockToJira _ Null = return ""
+
+blockToJira opts (Div attr bs) =
+  (anchor attr <>) <$> blockListToJira opts bs
+
+blockToJira opts (Plain inlines) =
+  inlineListToJira opts inlines
+
+blockToJira opts (Para inlines) = do
+  contents <- inlineListToJira opts inlines
+  appendNewlineUnlessInList contents
+
+blockToJira opts (LineBlock lns) =
+  blockToJira opts $ linesToPara lns
+
+blockToJira _ b@(RawBlock f str) =
+  if f == Format "jira"
+  then return (pack str)
+  else "" <$ report (BlockNotRendered b)
+
+blockToJira _ HorizontalRule = return "----\n"
+
+blockToJira opts (Header level attr inlines) = do
+  contents <- inlineListToJira opts inlines
+  let prefix = "h" <> pack (show level) <> ". "
+  return $ prefix <> anchor attr <> contents <> "\n"
+
+blockToJira _ (CodeBlock attr@(_,classes,_) str) = do
+  let lang = find (\c -> map toLower c `elem` knownLanguages) classes
+  let start = case lang of
+                Nothing -> "{code}"
+                Just l  -> "{code:" <> pack l <> "}"
+  let anchorMacro = anchor attr
+  appendNewlineUnlessInList . T.intercalate "\n" $
+    (if anchorMacro == "" then id else (anchorMacro :))
+    [start, escapeStringForJira (pack str), "{code}"]
+
+blockToJira opts (BlockQuote [p@(Para _)]) = do
+  contents <- blockToJira opts p
+  appendNewlineUnlessInList ("bq. " <> contents)
+
+blockToJira opts (BlockQuote blocks) = do
+  contents <- blockListToJira opts blocks
+  appendNewlineUnlessInList . T.intercalate "\n" $
+    [ "{quote}", contents, "{quote}"]
+
+blockToJira opts (Table _caption _aligns _widths headers rows) = do
+  headerCells <- mapM blocksToCell headers
+  bodyRows    <- mapM (mapM blocksToCell) rows
+  let tblHead = headerCellsToRow headerCells
+  let tblBody = map cellsToRow bodyRows
+  return $ if all null headers
+           then T.unlines tblBody
+           else T.unlines (tblHead : tblBody)
+ where
+  blocksToCell :: PandocMonad m => [Block] -> JiraWriter m Text
+  blocksToCell = inlineListToJira opts . blocksToInlines
+
+  cellsToRow :: [Text] -> Text
+  cellsToRow cells = "|" <> T.intercalate "|" cells <> "|"
+
+  headerCellsToRow :: [Text] -> Text
+  headerCellsToRow cells = "||" <> T.intercalate "||" cells <> "||"
+
+blockToJira opts (BulletList items) =
+  listWithMarker opts items '*'
+
+blockToJira opts (OrderedList _listAttr items) =
+  listWithMarker opts items '#'
+
+blockToJira opts (DefinitionList items) =
+  blockToJira opts (BulletList (map defToBulletItem items))
+ where
+  defToBulletItem :: ([Inline], [[Block]]) -> [Block]
+  defToBulletItem (inlns, defs) =
+    let term = Plain [Strong inlns]
+        blks = mconcat defs
+    in term : blks
+
+-- Auxiliary functions for lists:
+
+-- | Create a list using the given character as bullet item marker.
+listWithMarker :: PandocMonad m
+               => WriterOptions
+               -> [[Block]]
+               -> Char
+               -> JiraWriter m Text
+listWithMarker opts items marker = do
+  modify $ \s -> s { stListLevel = stListLevel s `T.snoc` marker }
+  contents <- mapM (listItemToJira opts) items
+  modify $ \s -> s { stListLevel = T.init (stListLevel s) }
+  appendNewlineUnlessInList $ T.intercalate "\n" contents
+
+-- | Convert bullet or ordered list item (list of blocks) to Jira.
+listItemToJira :: PandocMonad m
+               => WriterOptions
+               -> [Block]
+               -> JiraWriter m Text
+listItemToJira opts items = do
+  contents <- blockListToJira opts items
+  marker <- gets stListLevel
+  return $ marker <> " " <> contents
+
+-- | Convert list of Pandoc block elements to Jira.
+blockListToJira :: PandocMonad m
+                => WriterOptions -- ^ Options
+                -> [Block]       -- ^ List of block elements
+                -> JiraWriter m Text
+blockListToJira opts blocks =
+  T.intercalate "\n" <$> mapM (blockToJira opts) blocks
+
+-- | Convert list of Pandoc inline elements to Jira.
+inlineListToJira :: PandocMonad m
+                 => WriterOptions
+                 -> [Inline]
+                 -> JiraWriter m Text
+inlineListToJira opts lst =
+  T.concat <$> mapM (inlineToJira opts) lst
+
+-- | Convert Pandoc inline element to Jira.
+inlineToJira :: PandocMonad m
+             => WriterOptions
+             -> Inline
+             -> JiraWriter m Text
+
+inlineToJira opts (Span attr lst) =
+  (anchor attr <>) <$> inlineListToJira opts lst
+
+inlineToJira opts (Emph lst) = do
+  contents <- inlineListToJira opts lst
+  return $ "_" <> contents <> "_"
+
+inlineToJira opts (Strong lst) = do
+  contents <- inlineListToJira opts lst
+  return $ "*" <> contents <> "*"
+
+inlineToJira opts (Strikeout lst) = do
+  contents <- inlineListToJira opts lst
+  return $ "-" <> contents <> "-"
+
+inlineToJira opts (Superscript lst) = do
+  contents <- inlineListToJira opts lst
+  return $ "{^" <> contents <> "^}"
+
+inlineToJira opts (Subscript lst) = do
+  contents <- inlineListToJira opts lst
+  return $ "{~" <> contents <> "~}"
+
+inlineToJira opts (SmallCaps lst) = inlineListToJira opts lst
+
+inlineToJira opts (Quoted SingleQuote lst) = do
+  contents <- inlineListToJira opts lst
+  return $ "'" <> contents <> "'"
+
+inlineToJira opts (Quoted DoubleQuote lst) = do
+  contents <- inlineListToJira opts lst
+  return $ "\"" <> contents <> "\""
+
+inlineToJira opts (Cite _  lst) = inlineListToJira opts lst
+
+inlineToJira _ (Code attr str) =
+  return (anchor attr <> "{{" <> escapeStringForJira (pack str) <> "}}")
+
+inlineToJira _ (Str str) = return $ escapeStringForJira (pack str)
+
+inlineToJira opts (Math InlineMath str) =
+  lift (texMathToInlines InlineMath str) >>= inlineListToJira opts
+
+inlineToJira opts (Math DisplayMath str) = do
+  mathInlines <- lift (texMathToInlines DisplayMath str)
+  contents    <- inlineListToJira opts mathInlines
+  return $ "\\\\" <> contents <> "\\\\"
+
+inlineToJira _opts il@(RawInline f str) =
+  if f == Format "jira"
+  then return (pack str)
+  else "" <$ report (InlineNotRendered il)
+
+inlineToJira _ LineBreak = return "\n"
+
+inlineToJira _ SoftBreak = return " "
+
+inlineToJira _ Space = return " "
+
+inlineToJira opts (Link _attr txt (src, _title)) = do
+  linkText <- inlineListToJira opts txt
+  return $ T.concat
+    [ "["
+    , if null txt then "" else linkText <> "|"
+    , pack src
+    , "]"
+    ]
+
+inlineToJira _opts (Image attr _alt (src, _title)) =
+  return . T.concat $ [anchor attr, "!", pack src, "!"]
+
+inlineToJira opts (Note contents) = do
+  curNotes <- gets stNotes
+  let newnum = length curNotes + 1
+  contents' <- blockListToJira opts contents
+  let thisnote = "[" <> pack (show newnum) <> "] " <> contents' <> "\n"
+  modify $ \s -> s { stNotes = thisnote : curNotes }
+  return $ "[" <> pack (show newnum) <> "]"
+
+-- | Language codes recognized by jira
+knownLanguages :: [String]
+knownLanguages =
+  [ "actionscript", "ada", "applescript", "bash", "c", "c#", "c++"
+  , "css", "erlang", "go", "groovy", "haskell", "html", "javascript"
+  , "json", "lua", "nyan", "objc", "perl", "php", "python", "r", "ruby"
+  , "scala", "sql", "swift", "visualbasic", "xml", "yaml"
+  ]
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
@@ -54,6 +54,7 @@
               , stInQuote       :: Bool          -- true if in a blockquote
               , stExternalNotes :: Bool          -- true if in context where
                                                  -- we need to store footnotes
+              , stInMinipage    :: Bool          -- true if in minipage 
               , stInHeading     :: Bool          -- true if in a section heading
               , stInItem        :: Bool          -- true if in \item[..]
               , stNotes         :: [Doc]         -- notes in a minipage
@@ -80,6 +81,7 @@
                 , stInQuote = False
                 , stExternalNotes = False
                 , stInHeading = False
+                , stInMinipage = False
                 , stInItem = False
                 , stNotes = []
                 , stOLLevel = 1
@@ -558,13 +560,13 @@
               _ -> linkAnchor'
       let align dir txt = inCmd "begin" dir $$ txt $$ inCmd "end" dir
       lang <- toLang $ lookup "lang" kvs
-      let wrapColumns = if "columns" `elem` classes
+      let wrapColumns = if beamer && "columns" `elem` classes
                         then \contents ->
                                inCmd "begin" "columns" <> brackets "T"
                                $$ contents
                                $$ inCmd "end" "columns"
                         else id
-          wrapColumn  = if "column" `elem` classes
+          wrapColumn  = if beamer && "column" `elem` classes
                         then \contents ->
                                let w = maybe "0.48" fromPct (lookup "width" kvs)
                                in  inCmd "begin" "column" <>
@@ -608,11 +610,12 @@
                  "\\centering" $$ img $$ caption <> cr
   let figure = cr <> "\\begin{figure}" $$ innards $$ "\\end{figure}"
   st <- get
-  return $ if stExternalNotes st
-              -- can't have figures in notes or minipage (here, table cell)
-              -- http://www.tex.ac.uk/FAQ-ouparmd.html
-              then "\\begin{center}" $$ img $+$ capt $$ "\\end{center}"
-              else figure $$ footnotes
+  return $ (if stInMinipage st
+               -- can't have figures in notes or minipage (here, table cell)
+               -- http://www.tex.ac.uk/FAQ-ouparmd.html
+               then cr <> "\\begin{center}" $$ img $+$ capt $$
+                    "\\end{center}"
+               else figure) $$ footnotes
 -- . . . indicates pause in beamer slides
 blockToLaTeX (Para [Str ".",Space,Str ".",Space,Str "."]) = do
   beamer <- gets stBeamer
@@ -833,6 +836,9 @@
   oldExternalNotes <- gets stExternalNotes
   modify $ \st -> st{ stExternalNotes = externalNotes, stNotes = [] }
   capt <- inlineListToLaTeX txt
+  footnotes <- if externalNotes
+                  then notesToLaTeX <$> gets stNotes
+                  else return empty
   modify $ \st -> st{ stExternalNotes = oldExternalNotes, stNotes = [] }
   -- We can't have footnotes in the list of figures/tables, so remove them:
   let getNote (Note _) = Any True
@@ -841,9 +847,6 @@
   captForLof <- if hasNotes txt
                    then brackets <$> inlineListToLaTeX (walk deNote txt)
                    else return empty
-  footnotes <- if externalNotes
-                  then notesToLaTeX <$> gets stNotes
-                  else return empty
   return (capt, captForLof, footnotes)
 
 toColDescriptor :: Alignment -> String
@@ -911,11 +914,14 @@
 tableCellToLaTeX header (width, align, blocks) = do
   beamer <- gets stBeamer
   externalNotes <- gets stExternalNotes
+  inMinipage <- gets stInMinipage
   -- See #5367 -- footnotehyper/footnote don't work in beamer,
   -- so we need to produce the notes outside the table...
-  modify $ \st -> st{ stExternalNotes = beamer }
+  modify $ \st -> st{ stExternalNotes = beamer,
+                      stInMinipage = True }
   cellContents <- blockListToLaTeX blocks
-  modify $ \st -> st{ stExternalNotes = externalNotes }
+  modify $ \st -> st{ stExternalNotes = externalNotes,
+                      stInMinipage = inMinipage }
   let valign = text $ if header then "[b]" else "[t]"
   let halign = case align of
                AlignLeft    -> "\\raggedright"
@@ -1125,7 +1131,9 @@
 inlineToLaTeX (Strikeout lst) = do
   -- we need to protect VERB in an mbox or we get an error
   -- see #1294
-  contents <- inlineListToLaTeX $ protectCode lst
+  -- with regular texttt we don't get an error, but we get
+  -- incorrect results if there is a space, see #5529
+  contents <- inlineListToLaTeX $ walk (concatMap protectCode) lst
   modify $ \s -> s{ stStrikeout = True }
   return $ inCmd "sout" contents
 inlineToLaTeX (Superscript lst) =
@@ -1142,14 +1150,22 @@
      Biblatex -> citationsToBiblatex cits
      _        -> inlineListToLaTeX lst
 
-inlineToLaTeX (Code (_,classes,_) str) = do
+inlineToLaTeX (Code (_,classes,kvs) str) = do
   opts <- gets stOptions
   inHeading <- gets stInHeading
   inItem <- gets stInItem
   let listingsCode = do
-        let listingsopt = case getListingsLanguage classes of
-                               Just l  -> "[language=" ++ mbBraced l ++ "]"
-                               Nothing -> ""
+        let listingsopts = (case getListingsLanguage classes of
+                                Just l  -> (("language", mbBraced l):)
+                                Nothing -> id) $
+                           [(k,v) | (k,v) <- kvs
+                                  , k `notElem` ["exports","tangle","results"]]
+        let listingsopt = if null listingsopts
+                             then ""
+                             else "[" ++
+                                  intercalate ", "
+                                  (map (\(k,v) -> k ++ "=" ++ v)
+                                   listingsopts) ++ "]"
         inNote <- gets stInNote
         when inNote $ modify $ \s -> s{ stVerbInNote = True }
         let chr = case "!\"'()*,-./:;?@" \\ str of
@@ -1174,10 +1190,11 @@
                Right h -> modify (\st -> st{ stHighlighting = True }) >>
                           return (text (T.unpack h))
   case () of
-     _ | writerListings opts  && not (inHeading || inItem) -> listingsCode
+     _ | inHeading || inItem  -> rawCode  -- see #5574
+       | writerListings opts  -> listingsCode
        | isJust (writerHighlightStyle opts) && not (null classes)
-                                                    -> highlightCode
-       | otherwise                                  -> rawCode
+                              -> highlightCode
+       | otherwise            -> rawCode
 inlineToLaTeX (Quoted qt lst) = do
   contents <- inlineListToLaTeX lst
   csquotes <- liftM stCsquotes get
@@ -1322,12 +1339,10 @@
          '%':_      -> s ++ "\n"
          _          -> s
 
-protectCode :: [Inline] -> [Inline]
-protectCode [] = []
-protectCode (x@(Code ("",[],[]) _) : xs) = x : protectCode xs
-protectCode (x@(Code _ _) : xs) = ltx "\\mbox{" : x : ltx "}" : xs
+protectCode :: Inline -> [Inline]
+protectCode x@(Code _ _) = [ltx "\\mbox{" , x , ltx "}"]
   where ltx = RawInline (Format "latex")
-protectCode (x : xs) = x : protectCode xs
+protectCode x = [x]
 
 setEmptyLine :: PandocMonad m => Bool -> LW m ()
 setEmptyLine b = modify $ \st -> st{ stEmptyLine = b }
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs
--- a/src/Text/Pandoc/Writers/Markdown.hs
+++ b/src/Text/Pandoc/Writers/Markdown.hs
@@ -23,10 +23,10 @@
 import Data.Char (isPunctuation, isSpace, isAlphaNum)
 import Data.Default
 import qualified Data.HashMap.Strict as H
-import Data.List (find, group, intersperse, sortBy, stripPrefix, transpose)
+import Data.List (find, group, intersperse, sortBy, stripPrefix, transpose,
+                  isPrefixOf)
 import qualified Data.Map as M
 import Data.Maybe (fromMaybe)
-import Data.Monoid (Any (..))
 import Data.Ord (comparing)
 import qualified Data.Set as Set
 import qualified Data.Scientific as Scientific
@@ -75,6 +75,7 @@
                         }
 
 data WriterState = WriterState { stNotes   :: Notes
+                               , stPrevRefs :: Refs
                                , stRefs    :: Refs
                                , stKeys    :: M.Map Key
                                                 (M.Map (Target, Attr) Int)
@@ -85,6 +86,7 @@
 
 instance Default WriterState
   where def = WriterState{ stNotes = []
+                         , stPrevRefs = []
                          , stRefs = []
                          , stKeys = M.empty
                          , stLastIdx = 0
@@ -355,7 +357,8 @@
   notes' <- reverse <$> gets stNotes >>= notesToMarkdown opts
   modify $ \s -> s { stNotes = [] }
   refs' <- reverse <$> gets stRefs >>= refsToMarkdown opts
-  modify $ \s -> s { stRefs = [] }
+  modify $ \s -> s { stPrevRefs = stPrevRefs s ++ stRefs s
+                   , stRefs = []}
 
   let endSpacing =
         if | writerReferenceLocation opts == EndOfDocument -> empty
@@ -541,16 +544,14 @@
            | isEnabled Ext_fenced_code_blocks opts ->
           tildes <> attrs <> cr <> text str <> cr <> tildes <> blankline
      _ -> nest (writerTabStop opts) (text str) <> blankline
-   where tildes    = text $ case [ln | ln <- lines str, all (=='~') ln] of
-                               [] -> "~~~~"
-                               xs -> case maximum $ map length xs of
-                                          n | n < 3 -> "~~~~"
-                                            | otherwise -> replicate (n+1) '~'
-         backticks = text $ case [ln | ln <- lines str, all (=='`') ln] of
-                               [] -> "```"
-                               xs -> case maximum $ map length xs of
-                                          n | n < 3 -> "```"
-                                            | otherwise -> replicate (n+1) '`'
+   where endline c = text $ case [length ln
+                                   | ln <- map trim (lines str)
+                                   , [c,c,c] `isPrefixOf` ln
+                                   , all (== c) ln] of
+                               [] -> replicate 3 c
+                               xs -> replicate (maximum xs + 1) c
+         backticks = endline '`'
+         tildes = endline '~'
          attrs  = if isEnabled Ext_fenced_code_attributes opts
                      then nowrap $ " " <> attrsToMarkdown attribs
                      else case attribs of
@@ -572,14 +573,7 @@
   let caption'' = if null caption || not (isEnabled Ext_table_captions opts)
                      then blankline
                      else blankline $$ (": " <> caption') $$ blankline
-  let isLineBreak LineBreak = Any True
-      isLineBreak _         = Any False
-  let hasLineBreak = getAny . query isLineBreak
-  let isSimpleCell [Plain ils] = not (hasLineBreak ils)
-      isSimpleCell [Para ils ] = not (hasLineBreak ils)
-      isSimpleCell []          = True
-      isSimpleCell _           = False
-  let hasSimpleCells = all isSimpleCell (concat (headers:rows))
+  let hasSimpleCells = onlySimpleTableCells $ headers:rows
   let isSimple = hasSimpleCells && all (==0) widths
   let isPlainBlock (Plain _) = True
       isPlainBlock _         = False
@@ -789,7 +783,7 @@
                              -> ([Inline],[[Block]])
                              -> MD m Doc
 definitionListItemToMarkdown opts (label, defs) = do
-  labelText <- inlineListToMarkdown opts label
+  labelText <- blockToMarkdown opts (Plain label)
   defs' <- mapM (mapM (blockToMarkdown opts)) defs
   if isEnabled Ext_definition_lists opts
      then do
@@ -810,10 +804,10 @@
             let isTight = case defs of
                                ((Plain _ : _): _) -> True
                                _                  -> False
-            return $ blankline <> nowrap labelText <>
-                     (if isTight then cr else blankline) <> contents <> blankline
+            return $ blankline <> nowrap labelText $$
+                     (if isTight then empty else blankline) <> contents <> blankline
      else do
-       return $ nowrap labelText <> text "  " <> cr <>
+       return $ nowrap (chomp labelText <> text "  " <> cr) <>
                 vsep (map vsep defs') <> blankline
 
 -- | Convert list of Pandoc block elements to markdown.
@@ -867,6 +861,19 @@
 getKey :: Doc -> Key
 getKey = toKey . render Nothing
 
+findUsableIndex :: [Doc] -> Int -> Int
+findUsableIndex lbls i = if (text (show i)) `elem` lbls
+                         then findUsableIndex lbls (i + 1)
+                         else i
+
+getNextIndex :: PandocMonad m => MD m Int
+getNextIndex = do
+  prevRefs <- gets stPrevRefs
+  refs <- gets stRefs
+  i <- (+ 1) <$> gets stLastIdx
+  let refLbls = map (\(r,_,_) -> r) $ prevRefs ++ refs
+  return $ findUsableIndex refLbls i
+
 -- | Get reference for target; if none exists, create unique one and return.
 --   Prefer label if possible; otherwise, generate a unique key.
 getReference :: PandocMonad m => Attr -> Doc -> Target -> MD m Doc
@@ -880,7 +887,7 @@
            Nothing -> do -- no other refs with this label
              (lab', idx) <- if isEmpty label
                                then do
-                                 i <- (+ 1) <$> gets stLastIdx
+                                 i <- getNextIndex
                                  modify $ \s -> s{ stLastIdx = i }
                                  return (text (show i), i)
                                else return (label, 0)
@@ -905,7 +912,7 @@
                          stRefs = (lab', target, attr) : refs })
                     return lab'
                   Nothing -> do -- but this one is to a new target
-                    i <- (+ 1) <$> gets stLastIdx
+                    i <- getNextIndex
                     modify $ \s -> s{ stLastIdx = i }
                     let lab' = text (show i)
                     modify (\s -> s{
diff --git a/src/Text/Pandoc/Writers/Muse.hs b/src/Text/Pandoc/Writers/Muse.hs
--- a/src/Text/Pandoc/Writers/Muse.hs
+++ b/src/Text/Pandoc/Writers/Muse.hs
@@ -31,7 +31,6 @@
 import Data.Char (isAlphaNum, isAsciiLower, isAsciiUpper, isDigit, isSpace)
 import Data.Default
 import Data.List (intersperse, isInfixOf, transpose)
-import Data.Monoid (Any (..))
 import qualified Data.Set as Set
 import Data.Text (Text)
 import System.FilePath (takeExtension)
@@ -44,7 +43,6 @@
 import Text.Pandoc.Templates (renderTemplate')
 import Text.Pandoc.Writers.Math
 import Text.Pandoc.Writers.Shared
-import Text.Pandoc.Walk
 
 type Notes = [[Block]]
 
@@ -269,15 +267,7 @@
     blocksToDoc opts blocks =
       local (\env -> env { envOptions = opts }) $ blockListToMuse blocks
     numcols = maximum (length aligns : length widths : map length (headers:rows))
-    hasSimpleCells = all isSimpleCell (concat (headers:rows))
-    isLineBreak LineBreak = Any True
-    isLineBreak _         = Any False
-    hasLineBreak = getAny . query isLineBreak
-    isSimple = hasSimpleCells && all (== 0) widths
-    isSimpleCell [Plain ils] = not (hasLineBreak ils)
-    isSimpleCell [Para ils ] = not (hasLineBreak ils)
-    isSimpleCell []          = True
-    isSimpleCell _           = False
+    isSimple = onlySimpleTableCells (headers:rows) && all (== 0) widths
 blockToMuse (Div _ bs) = flatBlockListToMuse bs
 blockToMuse Null = return empty
 
@@ -510,9 +500,7 @@
 renderInlineList :: PandocMonad m
                  => [Inline]
                  -> Muse m Doc
-renderInlineList [] = do
-  start <- asks envInlineStart
-  pure $ if start then "<verbatim></verbatim>" else ""
+renderInlineList [] = pure ""
 renderInlineList (x:xs) = do
   start <- asks envInlineStart
   afterSpace <- asks envAfterSpace
@@ -545,8 +533,11 @@
 inlineListToMuse lst = do
   lst' <- normalizeInlineList . fixNotes <$> preprocessInlineList (map (removeKeyValues . replaceSmallCaps) lst)
   insideAsterisks <- asks envInsideAsterisks
+  start <- asks envInlineStart
   modify $ \st -> st { stUseTags = False } -- Previous character is likely a '>' or some other markup
-  local (\env -> env { envNearAsterisks = insideAsterisks }) $ renderInlineList lst'
+  if start && null lst'
+    then pure "<verbatim></verbatim>"
+    else local (\env -> env { envNearAsterisks = insideAsterisks }) $ renderInlineList lst'
 
 inlineListToMuse' :: PandocMonad m => [Inline] -> Muse m Doc
 inlineListToMuse' lst = do
diff --git a/src/Text/Pandoc/Writers/OpenDocument.hs b/src/Text/Pandoc/Writers/OpenDocument.hs
--- a/src/Text/Pandoc/Writers/OpenDocument.hs
+++ b/src/Text/Pandoc/Writers/OpenDocument.hs
@@ -393,7 +393,10 @@
         mapM_ addParaStyle . newPara $ paraHStyles ++ paraStyles
         captionDoc <- if null c
                       then return empty
-                      else inlinesToOpenDocument o c >>= numberedTableCaption
+                      else inlinesToOpenDocument o c >>=
+                             if True -- temporary: see #5474
+                                then unNumberedCaption "TableCaption"
+                                else numberedTableCaption
         th <- if all null h
                  then return empty
                  else colHeadsToOpenDocument o (map fst paraHStyles) h
@@ -405,7 +408,10 @@
         withParagraphStyle o "Figure" [Para [Image attr caption (source,title)]]
                                   | otherwise    = do
         imageDoc <- withParagraphStyle o "FigureWithCaption" [Para [Image attr caption (source,title)]]
-        captionDoc <- inlinesToOpenDocument o caption >>= numberedFigureCaption
+        captionDoc <- inlinesToOpenDocument o caption >>=
+                         if True -- temporary: see #5474
+                            then unNumberedCaption "FigureCaption"
+                            else numberedFigureCaption
         return $ imageDoc $$ captionDoc
 
 
@@ -433,6 +439,9 @@
                                            ("style:num-format", "1") ] $ text $ show num
         c = text ": "
     in inParagraphTagsWithStyle style $ hcat [ t, text " ", s, c, caption ]
+
+unNumberedCaption :: Monad m => String -> Doc -> OD m Doc
+unNumberedCaption style caption = return $ inParagraphTagsWithStyle style caption
 
 colHeadsToOpenDocument :: PandocMonad m
                        => WriterOptions -> [String] -> [[Block]]
diff --git a/src/Text/Pandoc/Writers/Org.hs b/src/Text/Pandoc/Writers/Org.hs
--- a/src/Text/Pandoc/Writers/Org.hs
+++ b/src/Text/Pandoc/Writers/Org.hs
@@ -169,8 +169,6 @@
                   else cr <> nest (level + 1) (propertiesDrawer attr)
   return $ headerStr <> " " <> contents <> drawerStr <> blankline
 blockToOrg (CodeBlock (_,classes,kvs) str) = do
-  opts <- gets stOptions
-  let tabstop = writerTabStop opts
   let startnum = maybe "" (\x -> ' ' : trimr x) $ lookup "startFrom" kvs
   let numberlines = if "numberLines" `elem` classes
                       then if "continuedSourceBlock" `elem` classes
@@ -181,7 +179,7 @@
   let (beg, end) = case at of
                       []    -> ("#+BEGIN_EXAMPLE" ++ numberlines, "#+END_EXAMPLE")
                       (x:_) -> ("#+BEGIN_SRC " ++ x ++ numberlines, "#+END_SRC")
-  return $ text beg $$ nest tabstop (text str) $$ text end $$ blankline
+  return $ text beg $$ nest 2 (text str) $$ text end $$ blankline
 blockToOrg (BlockQuote blocks) = do
   contents <- blockListToOrg blocks
   return $ blankline $$ "#+BEGIN_QUOTE" $$
diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs
--- a/src/Text/Pandoc/Writers/RST.hs
+++ b/src/Text/Pandoc/Writers/RST.hs
@@ -472,6 +472,9 @@
           -- them and they will be readable and parsable
           (Quoted _ _, _)          -> keep f i
           (_, Quoted _ _)          -> keep f i
+          -- spans are not rendered using RST inlines, so we can keep them
+          (Span ("",[],[]) _, _)   -> keep f i
+          (_, Span ("",[],[]) _)   -> keep f i
           -- inlineToRST handles this case properly so it's safe to keep
           (Link _ _ _, Image _ _ _) -> keep f i
           -- parent inlines would prevent links from being correctly
diff --git a/src/Text/Pandoc/Writers/Shared.hs b/src/Text/Pandoc/Writers/Shared.hs
--- a/src/Text/Pandoc/Writers/Shared.hs
+++ b/src/Text/Pandoc/Writers/Shared.hs
@@ -109,6 +109,9 @@
 metaValueToJSON blockWriter inlineWriter (MetaList xs) = toJSON <$>
   Traversable.mapM (metaValueToJSON blockWriter inlineWriter) xs
 metaValueToJSON _ _ (MetaBool b) = return $ toJSON b
+metaValueToJSON _ inlineWriter (MetaString s@('0':_:_)) =
+   -- don't treat string with leading 0 as string (#5479)
+   toJSON <$> inlineWriter (Builder.toList (Builder.text s))
 metaValueToJSON _ inlineWriter (MetaString s) =
   case safeRead s of
      Just (n :: Scientific) -> return $ Aeson.Number n
diff --git a/src/Text/Pandoc/Writers/Textile.hs b/src/Text/Pandoc/Writers/Textile.hs
--- a/src/Text/Pandoc/Writers/Textile.hs
+++ b/src/Text/Pandoc/Writers/Textile.hs
@@ -428,7 +428,7 @@
 inlineToTextile _ (Str str) = return $ escapeStringForTextile str
 
 inlineToTextile _ (Math _ str) =
-  return $ "<span class=\"math\">" ++ escapeStringForXML str ++ "</math>"
+  return $ "<span class=\"math\">" ++ escapeStringForXML str ++ "</span>"
 
 inlineToTextile opts il@(RawInline f str)
   | f == Format "html" || f == Format "textile" = return str
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -11,12 +11,14 @@
 packages:
 - '.'
 extra-deps:
-- pandoc-citeproc-0.16.1.3
-- skylighting-0.7.7
-- skylighting-core-0.7.7
+- pandoc-citeproc-0.16.2
 - ipynb-0.1
-- texmath-0.11.2.2
-- cmark-gfm-0.1.8
+- cmark-gfm-0.2.0
+- hslua-1.0.3.1
+- hslua-module-system-0.2.0
+- tasty-lua-0.2.0
+- skylighting-core-0.8.1
+- skylighting-0.8.1
 ghc-options:
-   "$locals": -Wall -fno-warn-unused-do-bind -Wincomplete-record-updates -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -Wincomplete-uni-patterns -Widentities -Wcpp-undef -fhide-source-paths
-resolver: lts-13.9
+   "$locals": -Wall -fno-warn-unused-do-bind -Wincomplete-record-updates -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -Wincomplete-uni-patterns -Widentities -Wcpp-undef -fhide-source-paths -Wno-missing-home-modules
+resolver: lts-13.17
diff --git a/test/Tests/Lua.hs b/test/Tests/Lua.hs
--- a/test/Tests/Lua.hs
+++ b/test/Tests/Lua.hs
@@ -11,11 +11,10 @@
 
 Unit and integration tests for pandoc's Lua subsystem.
 -}
-module Tests.Lua ( tests ) where
+module Tests.Lua ( runLuaTest, tests ) where
 
 import Prelude
 import Control.Monad (when)
-import Data.Version (Version (versionBranch))
 import System.FilePath ((</>))
 import Test.Tasty (TestTree, localOption)
 import Test.Tasty.HUnit (Assertion, assertEqual, testCase)
@@ -34,6 +33,7 @@
 import Text.Pandoc.Shared (pandocVersion)
 
 import qualified Foreign.Lua as Lua
+import qualified Data.ByteString.Char8 as BS
 
 tests :: [TestTree]
 tests = map (localOption (QuickCheckTests 20))
@@ -128,43 +128,24 @@
       (doc $ divWith ("", [], kv_before) (para "nil"))
       (doc $ divWith ("", [], kv_after) (para "nil"))
 
-  , testCase "Test module pandoc.utils" $
-    assertFilterConversion "pandoc.utils doesn't work as expected."
-      "test-pandoc-utils.lua"
-      (doc $ para "doesn't matter")
-      (doc $ mconcat [ plain (str "blocks_to_inlines: OK")
-                     , plain (str "hierarchicalize: OK")
-                     , plain (str "normalize_date: OK")
-                     , plain (str "pipe: OK")
-                     , plain (str "failing pipe: OK")
-                     , plain (str "read: OK")
-                     , plain (str "failing read: OK")
-                     , plain (str "sha1: OK")
-                     , plain (str "stringify: OK")
-                     , plain (str "to_roman_numeral: OK")
-                     ])
-
   , testCase "Script filename is set" $
     assertFilterConversion "unexpected script name"
       "script-name.lua"
       (doc $ para "ignored")
       (doc $ para (str $ "lua" </> "script-name.lua"))
 
-  , testCase "Pandoc version is set" . runLua' $ do
-      Lua.getglobal' "table.concat"
+  , testCase "Pandoc version is set" . runLuaTest $ do
       Lua.getglobal "PANDOC_VERSION"
-      Lua.push ("." :: String) -- separator
-      Lua.call 2 1
-      Lua.liftIO . assertEqual "pandoc version is wrong" pandocVersion
-        =<< Lua.peek Lua.stackTop
+      Lua.liftIO .
+        assertEqual "pandoc version is wrong" (BS.pack pandocVersion)
+        =<< Lua.tostring' Lua.stackTop
 
-  , testCase "Pandoc types version is set" . runLua' $ do
-      let versionNums = versionBranch pandocTypesVersion
+  , testCase "Pandoc types version is set" . runLuaTest $ do
       Lua.getglobal "PANDOC_API_VERSION"
-      Lua.liftIO . assertEqual "pandoc-types version is wrong" versionNums
+      Lua.liftIO . assertEqual "pandoc-types version is wrong" pandocTypesVersion
         =<< Lua.peek Lua.stackTop
 
-  , testCase "Allow singleton inline in constructors" . runLua' $ do
+  , testCase "Allow singleton inline in constructors" . runLuaTest $ do
       Lua.liftIO . assertEqual "Not the exptected Emph" (Emph [Str "test"])
         =<< Lua.callFunc "pandoc.Emph" (Str "test")
       Lua.liftIO . assertEqual "Unexpected element" (Para [Str "test"])
@@ -178,14 +159,19 @@
           Lua.peek Lua.stackTop
         )
 
-  , testCase "Elements with Attr have `attr` accessor" . runLua' $ do
+  , testCase "Elements with Attr have `attr` accessor" . runLuaTest $ do
       Lua.push (Div ("hi", ["moin"], [])
                 [Para [Str "ignored"]])
       Lua.getfield Lua.stackTop "attr"
       Lua.liftIO . assertEqual "no accessor" (("hi", ["moin"], []) :: Attr)
         =<< Lua.peek Lua.stackTop
 
-  , testCase "informative error messages" . runLua' $ do
+  , testCase "module `pandoc.system` is present" . runLuaTest $ do
+      Lua.getglobal' "pandoc.system"
+      ty <- Lua.ltype Lua.stackTop
+      Lua.liftIO $ assertEqual "module should be a table" Lua.TypeTable ty
+
+  , testCase "informative error messages" . runLuaTest $ do
       Lua.pushboolean True
       err <- Lua.peekEither Lua.stackTop
       case (err :: Either String Pandoc) of
@@ -207,7 +193,7 @@
 roundtripEqual x = (x ==) <$> roundtripped
  where
   roundtripped :: (Lua.Peekable a, Lua.Pushable a) => IO a
-  roundtripped = runLua' $ do
+  roundtripped = runLuaTest $ do
     oldSize <- Lua.gettop
     Lua.push x
     size <- Lua.gettop
@@ -218,8 +204,8 @@
       Left e -> error (show e)
       Right y -> return y
 
-runLua' :: Lua.Lua a -> IO a
-runLua' op = runIOorExplode $ do
+runLuaTest :: Lua.Lua a -> IO a
+runLuaTest op = runIOorExplode $ do
   setUserDataDir (Just "../data")
   res <- runLua op
   case res of
diff --git a/test/Tests/Lua/Module.hs b/test/Tests/Lua/Module.hs
new file mode 100644
--- /dev/null
+++ b/test/Tests/Lua/Module.hs
@@ -0,0 +1,33 @@
+{- |
+Module      : Tests.Lua.Module
+Copyright   : © 2019 Albert Krewinkel
+License     : GNU GPL, version 2 or above
+
+Maintainer  : Albert Krewinkel <albert@zeitkraut.de>
+Stability   : alpha
+Portability : portable
+
+Lua module tests
+-}
+module Tests.Lua.Module (tests) where
+
+import System.FilePath ((</>))
+import Test.Tasty (TestName, TestTree)
+import Test.Tasty.Lua (testLuaFile)
+
+import Tests.Lua (runLuaTest)
+
+tests :: [TestTree]
+tests =
+  [ testPandocLua "pandoc"
+                  ("lua" </> "module" </> "pandoc.lua")
+  , testPandocLua "pandoc.mediabag"
+                  ("lua" </> "module" </> "pandoc-mediabag.lua")
+  , testPandocLua "pandoc.types"
+                  ("lua" </> "module" </> "pandoc-types.lua")
+  , testPandocLua "pandoc.util"
+                  ("lua" </> "module" </> "pandoc-utils.lua")
+  ]
+
+testPandocLua :: TestName -> FilePath -> TestTree
+testPandocLua = testLuaFile runLuaTest
diff --git a/test/Tests/Old.hs b/test/Tests/Old.hs
--- a/test/Tests/Old.hs
+++ b/test/Tests/Old.hs
@@ -96,6 +96,9 @@
     , test' "reader" ["-r", "jats", "-w", "native", "-s"]
       "jats-reader.xml" "jats-reader.native"
     ]
+  , testGroup "jira"
+    [ testGroup "writer" $ writerTests' "jira"
+    ]
   , testGroup "native"
     [ testGroup "writer" $ writerTests' "native"
     , test' "reader" ["-r", "native", "-w", "native", "-s"]
diff --git a/test/Tests/Readers/FB2.hs b/test/Tests/Readers/FB2.hs
--- a/test/Tests/Readers/FB2.hs
+++ b/test/Tests/Readers/FB2.hs
@@ -36,4 +36,5 @@
         , fb2Test "Epigraph" "fb2/reader/epigraph.fb2"
         , fb2Test "Poem" "fb2/reader/poem.fb2"
         , fb2Test "Meta" "fb2/reader/meta.fb2"
+        , fb2Test "Notes" "fb2/reader/notes.fb2"
         ]
diff --git a/test/Tests/Readers/Muse.hs b/test/Tests/Readers/Muse.hs
--- a/test/Tests/Readers/Muse.hs
+++ b/test/Tests/Readers/Muse.hs
@@ -289,6 +289,12 @@
         , "No footnotes inside links" =:
           "[[https://amusewiki.org/][foo[1]]" =?>
           para (link "https://amusewiki.org/" "" (text "foo[1"))
+        , "Image inside link" =:
+          "[[https://amusewiki.org/][Image [[image.png][with it's own description]] inside link description]]" =?>
+          para (link "https://amusewiki.org/" "" (text "Image " <> (image "image.png" "" (text "with it's own description")) <> text " inside link description"))
+        , "Link inside image description" =:
+          "[[image.jpg][Image from [[https://amusewiki.org/]]]]" =?>
+          para (image "image.jpg" "" (text "Image from " <> link "https://amusewiki.org/" "" (str "https://amusewiki.org/")))
         ]
 
       , testGroup "Literal"
diff --git a/test/Tests/Readers/Org/Block/Header.hs b/test/Tests/Readers/Org/Block/Header.hs
--- a/test/Tests/Readers/Org/Block/Header.hs
+++ b/test/Tests/Readers/Org/Block/Header.hs
@@ -87,6 +87,13 @@
         let todoSpan = spanWith ("", ["done", "DONE"], []) "DONE"
         in headerWith ("header", [], []) 1 (todoSpan <> space <> "header")
 
+    , "emphasis in first word" =:
+        "** TODO /fix/ this" =?>
+        let todoSpan = spanWith ("", ["todo", "TODO"], []) "TODO"
+        in headerWith ("fix-this", [], [])
+                      2
+                      (todoSpan <> space <> emph "fix" <> space <> "this")
+
     , "Header with unknown todo keyword" =:
         "* WAITING header" =?>
         headerWith ("waiting-header", [], []) 1 "WAITING header"
@@ -229,5 +236,29 @@
                 , "  :END:"
                 ] =?>
       headerWith ("look", [], []) 1 "important"
+
+    , "third and forth level headers" =:
+      T.unlines [ "#+OPTIONS: p:t h:3"
+                , "*** Third"
+                , "    CLOSED: [2018-09-05 Wed 13:58]"
+                , "    Text 3"
+                , "**** Fourth"
+                , "SCHEDULED: <2019-05-13 Mon 22:42>"
+                , "Text 4"
+                ] =?>
+      mconcat
+      [ headerWith ("third", [], mempty) 3 "Third"
+      , plain $
+        strong "CLOSED:" <> space <> emph (str "[2018-09-05 Wed 13:58]")
+      , para "Text 3"
+      , orderedList [
+          mconcat
+          [ para "Fourth"
+          , plain $ strong "SCHEDULED:"
+                    <> space
+                    <> emph (str "<2019-05-13 Mon 22:42>")
+          , para "Text 4"
+          ]]
+      ]
     ]
   ]
diff --git a/test/Tests/Readers/Org/Directive.hs b/test/Tests/Readers/Org/Directive.hs
--- a/test/Tests/Readers/Org/Directive.hs
+++ b/test/Tests/Readers/Org/Directive.hs
@@ -184,6 +184,24 @@
                   ] =?>
         headerWith ("wichtig", mempty, mempty) 1 "Wichtig"
       ]
+
+    , testGroup "unknown options"
+      [ "unknown options are ignored" =:
+          T.unlines [ "#+OPTIONS: does-not-exist:t "] =?>
+          (mempty :: Pandoc)
+
+      , "highlighting after unknown option" =:
+          T.unlines [ "#+OPTIONS: nope"
+                    , "/yup/"
+                    ] =?>
+          para (emph "yup")
+
+      , "unknown option interleaved with known" =:
+          T.unlines [ "#+OPTIONS: tags:nil foo:bar todo:nil"
+                    , "* DONE ignore things  :easy:"
+                    ] =?>
+          headerWith ("ignore-things", [], mempty) 1 "ignore things"
+      ]
     ]
 
   , testGroup "Include"
diff --git a/test/Tests/Readers/Org/Inline.hs b/test/Tests/Readers/Org/Inline.hs
--- a/test/Tests/Readers/Org/Inline.hs
+++ b/test/Tests/Readers/Org/Inline.hs
@@ -328,9 +328,13 @@
       "\\emph{Emphasis mine}" =?>
       para (emph "Emphasis mine")
 
-  , "Inline LaTeX math symbol" =:
-      "\\tau" =?>
-      para (emph "τ")
+  , "Inline math symbols" =:
+      "\\tau \\oplus \\alpha" =?>
+      para "τ ⊕ α"
+
+  , "Inline LaTeX math command" =:
+      "\\crarr" =?>
+      para "↵"
 
   , "Unknown inline LaTeX command" =:
       "\\notacommand{foo}" =?>
diff --git a/test/Tests/Writers/JATS.hs b/test/Tests/Writers/JATS.hs
--- a/test/Tests/Writers/JATS.hs
+++ b/test/Tests/Writers/JATS.hs
@@ -86,9 +86,7 @@
             headerWith ("foo",["unnumbered"],[]) 1
               (text "Header 1" <> note (plain $ text "note")) =?>
             "<sec id=\"foo\">\n\
-            \  <title>Header 1<fn>\n\
-            \    <p>note</p>\n\
-            \  </fn></title>\n\
+            \  <title>Header 1<xref ref-type=\"fn\" rid=\"fn1\">1</xref></title>\n\
             \</sec>"
           , "unnumbered sub header" =:
             headerWith ("foo",["unnumbered"],[]) 1
diff --git a/test/Tests/Writers/LaTeX.hs b/test/Tests/Writers/LaTeX.hs
--- a/test/Tests/Writers/LaTeX.hs
+++ b/test/Tests/Writers/LaTeX.hs
@@ -81,7 +81,7 @@
           , "struck out and not highlighted" =:
             strikeout (code "foo" <> space
               <> str "bar") =?>
-            "\\sout{\\texttt{foo} bar}"
+            "\\sout{\\mbox{\\texttt{foo}} bar}"
           , "single quotes" =:
               code "dog's" =?> "\\texttt{dog\\textquotesingle{}s}"
           , "backtick" =:
diff --git a/test/Tests/Writers/Muse.hs b/test/Tests/Writers/Muse.hs
--- a/test/Tests/Writers/Muse.hs
+++ b/test/Tests/Writers/Muse.hs
@@ -2,8 +2,8 @@
 {-# LANGUAGE OverloadedStrings #-}
 module Tests.Writers.Muse (tests) where
 
-import Prelude
-import Data.Text (unpack)
+import Prelude hiding (unlines)
+import Data.Text (Text, unlines)
 import Test.Tasty
 import Tests.Helpers
 import Text.Pandoc
@@ -15,15 +15,15 @@
                writerExtensions = extensionsFromList [Ext_amuse,
                                                       Ext_auto_identifiers] }
 
-muse :: (ToPandoc a) => a -> String
+muse :: (ToPandoc a) => a -> Text
 muse = museWithOpts defopts
 
-museWithOpts :: (ToPandoc a) => WriterOptions -> a -> String
-museWithOpts opts = unpack . purely (writeMuse opts) . toPandoc
+museWithOpts :: (ToPandoc a) => WriterOptions -> a -> Text
+museWithOpts opts = purely (writeMuse opts) . toPandoc
 
 infix 4 =:
 (=:) :: (ToString a, ToPandoc a)
-     => String -> (a, String) -> TestTree
+     => String -> (a, Text) -> TestTree
 (=:) = test muse
 
 noteLocationTestDoc :: Blocks
@@ -545,6 +545,7 @@
                    "remove soft break" $ "a" <> softbreak <> "b"
                    =?> ("a b" :: String)
             , "line break" =: "a" <> linebreak <> "b" =?> "a<br>\nb"
+            , "line break at the end" =: "a" <> linebreak =?> "a<br>"
             , "no newline after line break in header" =: header 1 ("a" <> linebreak <> "b") =?> "* a<br>b"
             , "no softbreak in header" =: header 1 ("a" <> softbreak <> "b") =?> "* a b"
             ]
diff --git a/test/command/2662.md b/test/command/2662.md
--- a/test/command/2662.md
+++ b/test/command/2662.md
@@ -7,5 +7,5 @@
    :scale: 300 %
    :alt: alternate text
 ^D
-<p><img src="http://url.to.image/foo.png" alt="alternate text" class="align-left" width="600" height="300" /></p>
+<p><img src="http://url.to.image/foo.png" class="align-left" width="600" height="300" alt="alternate text" /></p>
 ```
diff --git a/test/command/3450.md b/test/command/3450.md
--- a/test/command/3450.md
+++ b/test/command/3450.md
@@ -2,7 +2,7 @@
 % pandoc -fmarkdown-implicit_figures
 ![image](lalune.jpg){height=2em}
 ^D
-<p><img src="lalune.jpg" alt="image" style="height:2em" /></p>
+<p><img src="lalune.jpg" style="height:2em" alt="image" /></p>
 ```
 ```
 % pandoc -fmarkdown-implicit_figures -t latex
diff --git a/test/command/3577.md b/test/command/3577.md
--- a/test/command/3577.md
+++ b/test/command/3577.md
@@ -16,10 +16,10 @@
 \end{figure}
 ^D
 <figure>
-<img src="img1.jpg" alt="Caption 1" /><figcaption>Caption 1</figcaption>
+<img src="img1.jpg" alt="" /><figcaption>Caption 1</figcaption>
 </figure>
 <figure>
-<img src="img2.jpg" alt="Caption 2" /><figcaption>Caption 2</figcaption>
+<img src="img2.jpg" alt="" /><figcaption>Caption 2</figcaption>
 </figure>
 ```
 ```
@@ -30,6 +30,6 @@
 \end{figure}
 ^D
 <figure>
-<img src="img1.jpg" alt="Caption 3" /><figcaption>Caption 3</figcaption>
+<img src="img1.jpg" alt="" /><figcaption>Caption 3</figcaption>
 </figure>
 ```
diff --git a/test/command/4012.md b/test/command/4012.md
--- a/test/command/4012.md
+++ b/test/command/4012.md
@@ -4,5 +4,5 @@
 
 [image]: http://example.com/image.jpg {height=35mm}
 ^D
-<p><img src="http://example.com/image.jpg" alt="image" style="height:35mm" /></p>
+<p><img src="http://example.com/image.jpg" style="height:35mm" alt="image" /></p>
 ```
diff --git a/test/command/4235.md b/test/command/4235.md
--- a/test/command/4235.md
+++ b/test/command/4235.md
@@ -6,7 +6,7 @@
 <section class="footnotes" role="doc-endnotes">
 <hr />
 <ol>
-<li id="foofn1" role="doc-endnote"><p>Has a footnote.<a href="#foofnref1" class="footnote-back" role="doc-backlink">↩</a></p></li>
+<li id="foofn1" role="doc-endnote"><p>Has a footnote.<a href="#foofnref1" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
 </ol>
 </section>
 ```
diff --git a/test/command/4677.md b/test/command/4677.md
--- a/test/command/4677.md
+++ b/test/command/4677.md
@@ -3,6 +3,6 @@
 ![Caption](img.png){#img:1}
 ^D
 <figure>
-<img src="img.png" alt="Caption" id="img:1" /><figcaption>Caption</figcaption>
+<img src="img.png" id="img:1" alt="" /><figcaption>Caption</figcaption>
 </figure>
 ```
diff --git a/test/command/5121.md b/test/command/5121.md
--- a/test/command/5121.md
+++ b/test/command/5121.md
@@ -5,7 +5,7 @@
 ## Header 2
 ^D
 <figure>
-<img src="./my-figure.jpg" alt="My caption" width="500" /><figcaption>My caption</figcaption>
+<img src="./my-figure.jpg" width="500" alt="" /><figcaption>My caption</figcaption>
 </figure>
 
 Header 2
diff --git a/test/command/5178.md b/test/command/5178.md
--- a/test/command/5178.md
+++ b/test/command/5178.md
@@ -7,19 +7,19 @@
    unsafePerformIO main
 ^D
 #+BEGIN_SRC haskell -n 42
-    main = putStrLn "Hello World!"
-    unsafePerformIO main
+  main = putStrLn "Hello World!"
+  unsafePerformIO main
 #+END_SRC
 ```
 
 ```
 % pandoc -f org -t native
 #+BEGIN_SRC lisp -n 20
-    (+ 1 1)
+  (+ 1 1)
 #+END_SRC
 
 #+BEGIN_SRC lisp +n 10
-    (+ 2 2)
+  (+ 2 2)
 #+END_SRC
 ^D
 [CodeBlock ("",["commonlisp","numberLines"],[("org-language","lisp"),("startFrom","20")]) "(+ 1 1)\n"
@@ -32,10 +32,10 @@
 ,CodeBlock ("",["commonlisp","numberLines","continuedSourceBlock"],[("org-language","lisp"),("startFrom","10")]) "(+ 2 2)\n"]
 ^D
 #+BEGIN_SRC lisp -n 20
-    (+ 1 1)
+  (+ 1 1)
 #+END_SRC
 
 #+BEGIN_SRC lisp +n 10
-    (+ 2 2)
+  (+ 2 2)
 #+END_SRC
 ```
diff --git a/test/command/5420.md b/test/command/5420.md
new file mode 100644
--- /dev/null
+++ b/test/command/5420.md
@@ -0,0 +1,6 @@
+```
+% pandoc --listings -t latex
+`int a = 1;`{.cpp style=cpp}
+^D
+\passthrough{\lstinline[language={C++}, style=cpp]!int a = 1;!}
+```
diff --git a/test/command/5439.md b/test/command/5439.md
new file mode 100644
--- /dev/null
+++ b/test/command/5439.md
@@ -0,0 +1,6 @@
+```
+% pandoc -t latex
+namespace\fshyp{}container
+^D
+namespace\fshyp{}container
+```
diff --git a/test/command/5446.md b/test/command/5446.md
new file mode 100644
--- /dev/null
+++ b/test/command/5446.md
@@ -0,0 +1,6 @@
+```
+% pandoc -f latex -t rst
+{\em test test \/}
+^D
+*test test*
+```
diff --git a/test/command/5476.md b/test/command/5476.md
new file mode 100644
--- /dev/null
+++ b/test/command/5476.md
@@ -0,0 +1,12 @@
+```
+% pandoc -t latex
+![moon^[the moon]](test/lalune.jpg)
+^D
+\begin{figure}
+\centering
+\includegraphics{test/lalune.jpg}
+\caption[moon]{moon\footnotemark{}}
+\end{figure}
+\footnotetext{the moon}
+```
+
diff --git a/test/command/5495.md b/test/command/5495.md
new file mode 100644
--- /dev/null
+++ b/test/command/5495.md
@@ -0,0 +1,18 @@
+```
+% pandoc -t markdown --reference-links
+All because of [1](#one) link...
+
+[This](#foo) will break Pandoc.
+
+[This](#bar) will make you laugh.
+^D
+All because of [1] link...
+
+[This] will break Pandoc.
+
+[This][2] will make you laugh.
+
+  [1]: #one
+  [This]: #foo
+  [2]: #bar
+```
diff --git a/test/command/5519.md b/test/command/5519.md
new file mode 100644
--- /dev/null
+++ b/test/command/5519.md
@@ -0,0 +1,14 @@
+~~~
+% pandoc -t markdown
+``````{.attr}
+ ```
+ code
+ ```
+``````
+^D
+```` {.attr}
+ ```
+ code
+ ```
+````
+~~~
diff --git a/test/command/5529.md b/test/command/5529.md
new file mode 100644
--- /dev/null
+++ b/test/command/5529.md
@@ -0,0 +1,10 @@
+```
+% pandoc -t latex
+~~`hello world`~~
+
+~~_`hello world`_~~
+^D
+\sout{\mbox{\texttt{hello\ world}}}
+
+\sout{\emph{\mbox{\texttt{hello\ world}}}}
+```
diff --git a/test/command/5540.md b/test/command/5540.md
new file mode 100644
--- /dev/null
+++ b/test/command/5540.md
@@ -0,0 +1,8 @@
+```
+% pandoc -f latex -t native
+\begin{lstlisting}[language=myfunnylanguage]
+Stay pure!
+\end{lstlisting}
+^D
+[CodeBlock ("",["myfunnylanguage"],[("language","myfunnylanguage")]) "Stay pure!"]
+```
diff --git a/test/command/5543.md b/test/command/5543.md
new file mode 100644
--- /dev/null
+++ b/test/command/5543.md
@@ -0,0 +1,8 @@
+```
+% pandoc -t markdown
+1\. item
+:   description
+^D
+1\. item
+:   description
+```
diff --git a/test/command/5549.md b/test/command/5549.md
new file mode 100644
--- /dev/null
+++ b/test/command/5549.md
@@ -0,0 +1,9 @@
+```
+% pandoc -t native
+##
+
+[]
+^D
+[Header 2 ("section",[],[]) []
+,Para [Str "[]"]]
+```
diff --git a/test/command/5565.md b/test/command/5565.md
new file mode 100644
--- /dev/null
+++ b/test/command/5565.md
@@ -0,0 +1,6 @@
+```
+% pandoc -t asciidoc
+***hi***
+^D
+*_hi_*
+```
diff --git a/test/command/5566.md b/test/command/5566.md
new file mode 100644
--- /dev/null
+++ b/test/command/5566.md
@@ -0,0 +1,6 @@
+```
+% pandoc -t asciidoc -f html
+fo<span class="c">o</span> f<span class="c">o</span>o <span class="c">f</span>oo <span class="c">foo</span>
+^D
+fo[.c]##o## f[.c]##o##o [.c]##f##oo [.c]#foo#
+```
diff --git a/test/command/5574.md b/test/command/5574.md
new file mode 100644
--- /dev/null
+++ b/test/command/5574.md
@@ -0,0 +1,8 @@
+No highlighting inside heading:
+```
+% pandoc -t latex
+# `foo`{.cpp}
+^D
+\hypertarget{foo}{%
+\section{\texorpdfstring{\texttt{foo}}{foo}}\label{foo}}
+```
diff --git a/test/command/html-trim-definition-list-terms.md b/test/command/html-trim-definition-list-terms.md
new file mode 100644
--- /dev/null
+++ b/test/command/html-trim-definition-list-terms.md
@@ -0,0 +1,17 @@
+```
+% pandoc -f html -t native
+<dl>
+    <dt>
+    foo
+    bar
+    </dt>
+    <dt>
+    baz
+    </dt>
+    <dd>test</dd>
+</dl>
+^D
+[DefinitionList
+ [([Str "foo",SoftBreak,Str "bar",LineBreak,Str "baz"],
+   [[Plain [Str "test"]]])]]
+```
diff --git a/test/command/video-audio.md b/test/command/video-audio.md
new file mode 100644
--- /dev/null
+++ b/test/command/video-audio.md
@@ -0,0 +1,19 @@
+```
+% pandoc -f markdown-implicit_figures -t html
+![](./test.mp4)
+
+![Your browser does not support video.](foo/test.webm){width=300}
+
+![](test.mp3)
+
+![](./test.pdf)
+
+![](./test.jpg)
+^D
+<p><video src="./test.mp4" controls=""><a href="./test.mp4">Video</a></video></p>
+<p><video src="foo/test.webm" width="300" controls=""><a href="foo/test.webm">Your browser does not support video.</a></video></p>
+<p><audio src="test.mp3" controls=""><a href="test.mp3">Audio</a></audio></p>
+<p><embed src="./test.pdf" /></p>
+<p><img src="./test.jpg" /></p>
+```
+
diff --git a/test/epub/wasteland.native b/test/epub/wasteland.native
--- a/test/epub/wasteland.native
+++ b/test/epub/wasteland.native
@@ -46,896 +46,893 @@
    [Div ("",[],[])
     [Plain [Str "What",Space,Str "are",Space,Str "the",Space,Str "roots",Space,Str "that",Space,Str "clutch,",Space,Str "what",Space,Str "branches",Space,Str "grow"]]
    ,Div ("wasteland-content.xhtml#ln20",[],[])
-    [Plain [Str "Out",Space,Str "of",Space,Str "this",Space,Str "stony",Space,Str "rubbish?",Space,Str "Son",Space,Str "of",Space,Str "man,",Note [Para [Link ("",[],[]) [Str "Line",Space,Str "20."] ("#wasteland-content.xhtml#ln20",""),Space,Str "Cf.",Space,Str "Ezekiel",Space,Str "2:1."]]]
-    ,Div ("",[],[])
-     [Plain [Str "You",Space,Str "cannot",Space,Str "say,",Space,Str "or",Space,Str "guess,",Space,Str "for",Space,Str "you",Space,Str "know",Space,Str "only"]]
-    ,Div ("",[],[])
-     [Plain [Str "A",Space,Str "heap",Space,Str "of",Space,Str "broken",Space,Str "images,",Space,Str "where",Space,Str "the",Space,Str "sun",Space,Str "beats,"]]
-    ,Div ("wasteland-content.xhtml#ln23",[],[])
-     [Plain [Str "And",Space,Str "the",Space,Str "dead",Space,Str "tree",Space,Str "gives",Space,Str "no",Space,Str "shelter,",Space,Str "the",Space,Str "cricket",Space,Str "no",Space,Str "relief,",Note [Para [Link ("",[],[]) [Str "23."] ("#wasteland-content.xhtml#ln23",""),Space,Str "Cf.",Space,Str "Ecclesiastes",Space,Str "12:5."]]]
-     ,Div ("",[],[])
-      [Plain [Str "And",Space,Str "the",Space,Str "dry",Space,Str "stone",Space,Str "no",Space,Str "sound",Space,Str "of",Space,Str "water.",Space,Str "Only"]]
-     ,Div ("",[],[])
-      [Plain [Str "There",Space,Str "is",Space,Str "shadow",Space,Str "under",Space,Str "this",Space,Str "red",Space,Str "rock,"]]
-     ,Div ("",[],[])
-      [Plain [Str "(Come",Space,Str "in",Space,Str "under",Space,Str "the",Space,Str "shadow",Space,Str "of",Space,Str "this",Space,Str "red",Space,Str "rock),"]]
-     ,Div ("",[],[])
-      [Plain [Str "And",Space,Str "I",Space,Str "will",Space,Str "show",Space,Str "you",Space,Str "something",Space,Str "different",Space,Str "from",Space,Str "either"]]
-     ,Div ("",[],[])
-      [Plain [Str "Your",Space,Str "shadow",Space,Str "at",Space,Str "morning",Space,Str "striding",Space,Str "behind",Space,Str "you"]]
-     ,Div ("",[],[])
-      [Plain [Str "Or",Space,Str "your",Space,Str "shadow",Space,Str "at",Space,Str "evening",Space,Str "rising",Space,Str "to",Space,Str "meet",Space,Str "you;"]]
-     ,Div ("",[],[])
-      [Plain [Str "I",Space,Str "will",Space,Str "show",Space,Str "you",Space,Str "fear",Space,Str "in",Space,Str "a",Space,Str "handful",Space,Str "of",Space,Str "dust.",Span ("",["lnum"],[]) [Str "30"]]]
-     ,BlockQuote
-      [Div ("",[],[])
-       [Div ("wasteland-content.xhtml#ln31",[],[])
-        [Plain [Str "Frisch",Space,Str "weht",Space,Str "der",Space,Str "Wind",Note [Para [Link ("",[],[]) [Str "31."] ("#wasteland-content.xhtml#ln31",""),Space,Str "V.",Space,Str "Tristan",Space,Str "und",Space,Str "Isolde,",Space,Str "i,",Space,Str "verses",Space,Str "5-8."]]]
-        ,Div ("",[],[])
-         [Plain [Str "Der",Space,Str "Heimat",Space,Str "zu"]]
-        ,Div ("",[],[])
-         [Plain [Str "Mein",Space,Str "Irisch",Space,Str "Kind,"]]
-        ,Div ("",[],[])
-         [Plain [Str "Wo",Space,Str "weilest",Space,Str "du?"]]]
-       ,RawBlock (Format "html") "</blockquote>"
-       ,Div ("",[],[])
-        [Plain [Str "\"You",Space,Str "gave",Space,Str "me",Space,Str "hyacinths",Space,Str "first",Space,Str "a",Space,Str "year",Space,Str "ago;"]]
-       ,Div ("",[],[])
-        [Plain [Str "\"They",Space,Str "called",Space,Str "me",Space,Str "the",Space,Str "hyacinth",Space,Str "girl.\""]]
-       ,Div ("",[],[])
-        [Plain [Str "\8213Yet",Space,Str "when",Space,Str "we",Space,Str "came",Space,Str "back,",Space,Str "late,",Space,Str "from",Space,Str "the",Space,Str "Hyacinth",SoftBreak,Str "garden,"]]
-       ,Div ("",[],[])
-        [Plain [Str "Your",Space,Str "arms",Space,Str "full,",Space,Str "and",Space,Str "your",Space,Str "hair",Space,Str "wet,",Space,Str "I",Space,Str "could",Space,Str "not"]]
-       ,Div ("",[],[])
-        [Plain [Str "Speak,",Space,Str "and",Space,Str "my",Space,Str "eyes",Space,Str "failed,",Space,Str "I",Space,Str "was",Space,Str "neither"]]
-       ,Div ("",[],[])
-        [Plain [Str "Living",Space,Str "nor",Space,Str "dead,",Space,Str "and",Space,Str "I",Space,Str "knew",Space,Str "nothing,",Span ("",["lnum"],[]) [Str "40"]]]
-       ,Div ("",[],[])
-        [Plain [Str "Looking",Space,Str "into",Space,Str "the",Space,Str "heart",Space,Str "of",Space,Str "light,",Space,Str "the",Space,Str "silence."]]
-       ,Div ("wasteland-content.xhtml#ln42",[],[("lang","de")])
-        [Plain [Emph [Str "Od'",Space,Str "und",Space,Str "leer",Space,Str "das",Space,Str "Meer"],Str ".",Note [Para [Link ("",[],[]) [Str "42."] ("#wasteland-content.xhtml#ln42",""),Space,Str "Id.",Space,Str "iii,",Space,Str "verse",Space,Str "24."]]]
-        ,Div ("",["linegroup"],[])
-         [Div ("",[],[])
-          [Plain [Str "Madame",Space,Str "Sosostris,",Space,Str "famous",Space,Str "clairvoyante,"]]
-         ,Div ("",[],[])
-          [Plain [Str "Had",Space,Str "a",Space,Str "bad",Space,Str "cold,",Space,Str "nevertheless"]]
-         ,Div ("",[],[])
-          [Plain [Str "Is",Space,Str "known",Space,Str "to",Space,Str "be",Space,Str "the",Space,Str "wisest",Space,Str "woman",Space,Str "in",Space,Str "Europe,"]]
-         ,Div ("wasteland-content.xhtml#ln46",[],[])
-          [Plain [Str "With",Space,Str "a",Space,Str "wicked",Space,Str "pack",Space,Str "of",Space,Str "cards.",Space,Str "Here,",Space,Str "said",Space,Str "she,",Note [Para [Link ("",[],[]) [Str "46."] ("#wasteland-content.xhtml#ln46",""),Space,Str "I",Space,Str "am",Space,Str "not",Space,Str "familiar",Space,Str "with",Space,Str "the",Space,Str "exact",Space,Str "constitution",Space,Str "of",Space,Str "the",Space,Str "Tarot",Space,Str "pack",Space,Str "of",SoftBreak,Str "cards,",Space,Str "from",Space,Str "which",Space,Str "I",Space,Str "have",Space,Str "obviously",Space,Str "departed",Space,Str "to",Space,Str "suit",Space,Str "my",Space,Str "own",Space,Str "convenience.",SoftBreak,Str "The",Space,Str "Hanged",Space,Str "Man,",Space,Str "a",Space,Str "member",Space,Str "of",Space,Str "the",Space,Str "traditional",Space,Str "pack,",Space,Str "fits",Space,Str "my",Space,Str "purpose",Space,Str "in",Space,Str "two",SoftBreak,Str "ways:",Space,Str "because",Space,Str "he",Space,Str "is",Space,Str "associated",Space,Str "in",Space,Str "my",Space,Str "mind",Space,Str "with",Space,Str "the",Space,Str "Hanged",Space,Str "God",Space,Str "of",Space,Str "Frazer,",SoftBreak,Str "and",Space,Str "because",Space,Str "I",Space,Str "associate",Space,Str "him",Space,Str "with",Space,Str "the",Space,Str "hooded",Space,Str "figure",Space,Str "in",Space,Str "the",Space,Str "passage",Space,Str "of",Space,Str "the",SoftBreak,Str "disciples",Space,Str "to",Space,Str "Emmaus",Space,Str "in",Space,Str "Part",Space,Str "V.",Space,Str "The",Space,Str "Phoenician",Space,Str "Sailor",Space,Str "and",Space,Str "the",Space,Str "Merchant",SoftBreak,Str "appear",Space,Str "later;",Space,Str "also",Space,Str "the",Space,Str "\"crowds",Space,Str "of",Space,Str "people,\"",Space,Str "and",Space,Str "Death",Space,Str "by",Space,Str "Water",Space,Str "is",SoftBreak,Str "executed",Space,Str "in",Space,Str "Part",Space,Str "IV.",Space,Str "The",Space,Str "Man",Space,Str "with",Space,Str "Three",Space,Str "Staves",Space,Str "(an",Space,Str "authentic",Space,Str "member",Space,Str "of",SoftBreak,Str "the",Space,Str "Tarot",Space,Str "pack)",Space,Str "I",Space,Str "associate,",Space,Str "quite",Space,Str "arbitrarily,",Space,Str "with",Space,Str "the",Space,Str "Fisher",Space,Str "King",SoftBreak,Str "himself."]]]
-          ,Div ("",[],[])
-           [Plain [Str "Is",Space,Str "your",Space,Str "card,",Space,Str "the",Space,Str "drowned",Space,Str "Phoenician",Space,Str "Sailor,"]]
-          ,Div ("",[],[])
-           [Plain [Str "(Those",Space,Str "are",Space,Str "pearls",Space,Str "that",Space,Str "were",Space,Str "his",Space,Str "eyes.",Space,Str "Look!)"]]
-          ,Div ("",[],[])
-           [Plain [Str "Here",Space,Str "is",Space,Str "Belladonna,",Space,Str "the",Space,Str "Lady",Space,Str "of",Space,Str "the",Space,Str "Rocks,"]]
-          ,Div ("",[],[])
-           [Plain [Str "The",Space,Str "lady",Space,Str "of",Space,Str "situations.",Span ("",["lnum"],[]) [Str "50"]]]
-          ,Div ("",[],[])
-           [Plain [Str "Here",Space,Str "is",Space,Str "the",Space,Str "man",Space,Str "with",Space,Str "three",Space,Str "staves,",Space,Str "and",Space,Str "here",Space,Str "the",Space,Str "Wheel,"]]
-          ,Div ("",[],[])
-           [Plain [Str "And",Space,Str "here",Space,Str "is",Space,Str "the",Space,Str "one-eyed",Space,Str "merchant,",Space,Str "and",Space,Str "this",Space,Str "card,"]]
-          ,Div ("",[],[])
-           [Plain [Str "Which",Space,Str "is",Space,Str "blank,",Space,Str "is",Space,Str "something",Space,Str "he",Space,Str "carries",Space,Str "on",Space,Str "his",Space,Str "back,"]]
-          ,Div ("",[],[])
-           [Plain [Str "Which",Space,Str "I",Space,Str "am",Space,Str "forbidden",Space,Str "to",Space,Str "see.",Space,Str "I",Space,Str "do",Space,Str "not",Space,Str "find"]]
-          ,Div ("",[],[])
-           [Plain [Str "The",Space,Str "Hanged",Space,Str "Man.",Space,Str "Fear",Space,Str "death",Space,Str "by",Space,Str "water."]]
-          ,Div ("",[],[])
-           [Plain [Str "I",Space,Str "see",Space,Str "crowds",Space,Str "of",Space,Str "people,",Space,Str "walking",Space,Str "round",Space,Str "in",Space,Str "a",Space,Str "ring."]]
-          ,Div ("",[],[])
-           [Plain [Str "Thank",Space,Str "you.",Space,Str "If",Space,Str "you",Space,Str "see",Space,Str "dear",Space,Str "Mrs.",Space,Str "Equitone,"]]
-          ,Div ("",[],[])
-           [Plain [Str "Tell",Space,Str "her",Space,Str "I",Space,Str "bring",Space,Str "the",Space,Str "horoscope",Space,Str "myself:"]]
-          ,Div ("",[],[])
-           [Plain [Str "One",Space,Str "must",Space,Str "be",Space,Str "so",Space,Str "careful",Space,Str "these",Space,Str "days."]]]
-         ,Div ("",["linegroup"],[])
-          [Div ("wasteland-content.xhtml#ln60",[],[])
-           [Plain [Str "Unreal",Space,Str "City,",Note [Para [Link ("",[],[]) [Str "60."] ("#wasteland-content.xhtml#ln60",""),Space,Str "Cf.",Space,Str "Baudelaire:"],BlockQuote [Para [Str "\"Fourmillante",Space,Str "cite;,",Space,Str "cite;",Space,Str "pleine",Space,Str "de",Space,Str "reves,",LineBreak,Str "Ou",Space,Str "le",Space,Str "spectre",Space,Str "en",SoftBreak,Str "plein",Space,Str "jour",Space,Str "raccroche",Space,Str "le",Space,Str "passant.\""]]]]
-           ,Div ("",[],[])
-            [Plain [Str "Under",Space,Str "the",Space,Str "brown",Space,Str "fog",Space,Str "of",Space,Str "a",Space,Str "winter",Space,Str "dawn,"]]
-           ,Div ("",[],[])
-            [Plain [Str "A",Space,Str "crowd",Space,Str "flowed",Space,Str "over",Space,Str "London",Space,Str "Bridge,",Space,Str "so",Space,Str "many,"]]
-           ,Div ("wasteland-content.xhtml#ln63",[],[])
-            [Plain [Str "I",Space,Str "had",Space,Str "not",Space,Str "thought",Space,Str "death",Space,Str "had",Space,Str "undone",Space,Str "so",Space,Str "many.",Note [Para [Link ("",[],[]) [Str "63."] ("#wasteland-content.xhtml#ln63",""),Space,Str "Cf.",Space,Str "Inferno,",Space,Str "iii.",Space,Str "55-7."],BlockQuote [Para [Str "\"si",Space,Str "lunga",Space,Str "tratta",LineBreak,Str "di",Space,Str "gente,",Space,Str "ch'io",Space,Str "non",Space,Str "avrei",Space,Str "mai",Space,Str "creduto",LineBreak,Str "che",SoftBreak,Str "morte",Space,Str "tanta",Space,Str "n'avesse",Space,Str "disfatta.\""]]]]
-            ,Div ("wasteland-content.xhtml#ln64",[],[])
-             [Plain [Str "Sighs,",Space,Str "short",Space,Str "and",Space,Str "infrequent,",Space,Str "were",Space,Str "exhaled,",Note [Para [Link ("",[],[]) [Str "64."] ("#wasteland-content.xhtml#ln64",""),Space,Str "Cf.",Space,Str "Inferno,",Space,Str "iv.",Space,Str "25-7:"],BlockQuote [Para [Str "\"Quivi,",Space,Str "secondo",Space,Str "che",Space,Str "per",Space,Str "ascoltahre,",LineBreak,Str "\"non",Space,Str "avea",Space,Str "pianto,",Space,Str "ma'",Space,Str "che",Space,Str "di",SoftBreak,Str "sospiri,",LineBreak,Str "\"che",Space,Str "l'aura",Space,Str "eterna",Space,Str "facevan",Space,Str "tremare.\""]]]]
-             ,Div ("",[],[])
-              [Plain [Str "And",Space,Str "each",Space,Str "man",Space,Str "fixed",Space,Str "his",Space,Str "eyes",Space,Str "before",Space,Str "his",Space,Str "feet."]]
-             ,Div ("",[],[])
-              [Plain [Str "Flowed",Space,Str "up",Space,Str "the",Space,Str "hill",Space,Str "and",Space,Str "down",Space,Str "King",Space,Str "William",Space,Str "Street,"]]
-             ,Div ("",[],[])
-              [Plain [Str "To",Space,Str "where",Space,Str "Saint",Space,Str "Mary",Space,Str "Woolnoth",Space,Str "kept",Space,Str "the",Space,Str "hours"]]
-             ,Div ("wasteland-content.xhtml#ln68",[],[])
-              [Plain [Str "With",Space,Str "a",Space,Str "dead",Space,Str "sound",Space,Str "on",Space,Str "the",Space,Str "final",Space,Str "stroke",Space,Str "of",Space,Str "nine.",Note [Para [Link ("",[],[]) [Str "68."] ("#wasteland-content.xhtml#ln68",""),Space,Str "A",Space,Str "phenomenon",Space,Str "which",Space,Str "I",Space,Str "have",Space,Str "often",Space,Str "noticed."]]]
-              ,Div ("",[],[])
-               [Plain [Str "There",Space,Str "I",Space,Str "saw",Space,Str "one",Space,Str "I",Space,Str "knew,",Space,Str "and",Space,Str "stopped",Space,Str "him,",Space,Str "crying",SoftBreak,Str "\"Stetson!"]]
-              ,Div ("",[],[])
-               [Plain [Str "\"You",Space,Str "who",Space,Str "were",Space,Str "with",Space,Str "me",Space,Str "in",Space,Str "the",Space,Str "ships",Space,Str "at",Space,Str "Mylae!",Span ("",["lnum"],[]) [Str "70"]]]
-              ,Div ("",[],[])
-               [Plain [Str "\"That",Space,Str "corpse",Space,Str "you",Space,Str "planted",Space,Str "last",Space,Str "year",Space,Str "in",Space,Str "your",Space,Str "garden,"]]
-              ,Div ("",[],[])
-               [Plain [Str "\"Has",Space,Str "it",Space,Str "begun",Space,Str "to",Space,Str "sprout?",Space,Str "Will",Space,Str "it",Space,Str "bloom",Space,Str "this",Space,Str "year?"]]
-              ,Div ("",[],[])
-               [Plain [Str "\"Or",Space,Str "has",Space,Str "the",Space,Str "sudden",Space,Str "frost",Space,Str "disturbed",Space,Str "its",Space,Str "bed?"]]]
-             ,Div ("",["linegroup"],[])
-              [Div ("wasteland-content.xhtml#ln74",[],[])
-               [Plain [Str "\"Oh",Space,Str "keep",Space,Str "the",Space,Str "Dog",Space,Str "far",Space,Str "hence,",Space,Str "that's",Space,Str "friend",Space,Str "to",Space,Str "men,",Note [Para [Link ("",[],[]) [Str "74."] ("#wasteland-content.xhtml#ln74",""),Space,Str "Cf.",Space,Str "the",Space,Str "Dirge",Space,Str "in",Space,Str "Webster's",Space,Str "White",Space,Str "Devil",Space,Str "."]]]
-               ,Div ("",[],[])
-                [Plain [Str "\"Or",Space,Str "with",Space,Str "his",Space,Str "nails",Space,Str "he'll",Space,Str "dig",Space,Str "it",Space,Str "up",Space,Str "again!"]]
-               ,Div ("wasteland-content.xhtml#ln76",[],[])
-                [Plain [Str "\"You!",Space,Span ("",[],[("lang","fr")]) [Str "hypocrite",Space,Str "lecteur!",Space,Str "-",Space,Str "mon",Space,Str "semblable,",Space,Str "-",SoftBreak,Str "mon",Space,Str "frere"],Space,Str "!\"",Note [Para [Link ("",[],[]) [Str "76."] ("#wasteland-content.xhtml#ln76",""),Space,Str "V.",Space,Str "Baudelaire,",Space,Str "Preface",Space,Str "to",Space,Str "Fleurs",Space,Str "du",Space,Str "Mal."]]]
-                ,Div ("wasteland-content.xhtml#ch2",["section"],[])
-                 [Header 2 ("",[],[]) [Str "II.",Space,Str "A",Space,Str "GAME",Space,Str "OF",Space,Str "CHESS"]
-                 ,Div ("",["linegroup"],[])
-                  [Div ("wasteland-content.xhtml#ln77",[],[])
-                   [Plain [Str "The",Space,Str "Chair",Space,Str "she",Space,Str "sat",Space,Str "in,",Space,Str "like",Space,Str "a",Space,Str "burnished",Space,Str "throne,",Note [Para [Link ("",[],[]) [Str "77."] ("#wasteland-content.xhtml#ln77",""),Space,Str "Cf.",Space,Str "Antony",Space,Str "and",Space,Str "Cleopatra,",Space,Str "II.",Space,Str "ii.,",Space,Str "l.",Space,Str "190."]]]
-                   ,Div ("",[],[])
-                    [Plain [Str "Glowed",Space,Str "on",Space,Str "the",Space,Str "marble,",Space,Str "where",Space,Str "the",Space,Str "glass"]]
-                   ,Div ("",[],[])
-                    [Plain [Str "Held",Space,Str "up",Space,Str "by",Space,Str "standards",Space,Str "wrought",Space,Str "with",Space,Str "fruited",Space,Str "vines"]]
-                   ,Div ("",[],[])
-                    [Plain [Str "From",Space,Str "which",Space,Str "a",Space,Str "golden",Space,Str "Cupidon",Space,Str "peeped",Space,Str "out",Span ("",["lnum"],[]) [Str "80"]]]
-                   ,Div ("",[],[])
-                    [Plain [Str "(Another",Space,Str "hid",Space,Str "his",Space,Str "eyes",Space,Str "behind",Space,Str "his",Space,Str "wing)"]]
-                   ,Div ("",[],[])
-                    [Plain [Str "Doubled",Space,Str "the",Space,Str "flames",Space,Str "of",Space,Str "sevenbranched",Space,Str "candelabra"]]
-                   ,Div ("",[],[])
-                    [Plain [Str "Reflecting",Space,Str "light",Space,Str "upon",Space,Str "the",Space,Str "table",Space,Str "as"]]
-                   ,Div ("",[],[])
-                    [Plain [Str "The",Space,Str "glitter",Space,Str "of",Space,Str "her",Space,Str "jewels",Space,Str "rose",Space,Str "to",Space,Str "meet",Space,Str "it,"]]
-                   ,Div ("",[],[])
-                    [Plain [Str "From",Space,Str "satin",Space,Str "cases",Space,Str "poured",Space,Str "in",Space,Str "rich",Space,Str "profusion;"]]
-                   ,Div ("",[],[])
-                    [Plain [Str "In",Space,Str "vials",Space,Str "of",Space,Str "ivory",Space,Str "and",Space,Str "coloured",Space,Str "glass"]]
-                   ,Div ("",[],[])
-                    [Plain [Str "Unstoppered,",Space,Str "lurked",Space,Str "her",Space,Str "strange",Space,Str "synthetic",Space,Str "perfumes,"]]
-                   ,Div ("",[],[])
-                    [Plain [Str "Unguent,",Space,Str "powdered,",Space,Str "or",Space,Str "liquid",Space,Str "-",Space,Str "troubled,",Space,Str "confused"]]
-                   ,Div ("",[],[])
-                    [Plain [Str "And",Space,Str "drowned",Space,Str "the",Space,Str "sense",Space,Str "in",Space,Str "odours;",Space,Str "stirred",Space,Str "by",Space,Str "the",Space,Str "air"]]
-                   ,Div ("",[],[])
-                    [Plain [Str "That",Space,Str "freshened",Space,Str "from",Space,Str "the",Space,Str "window,",Space,Str "these",Space,Str "ascended",Span ("",["lnum"],[]) [Str "90"]]]
-                   ,Div ("",[],[])
-                    [Plain [Str "In",Space,Str "fattening",Space,Str "the",Space,Str "prolonged",Space,Str "candle-flames,"]]
-                   ,Div ("wasteland-content.xhtml#ln92",[],[])
-                    [Plain [Str "Flung",Space,Str "their",Space,Str "smoke",Space,Str "into",Space,Str "the",Space,Str "laquearia,",Note [Para [Link ("",[],[]) [Str "92."] ("#wasteland-content.xhtml#ln92",""),Space,Str "Laquearia.",Space,Str "V.",Space,Str "Aeneid,",Space,Str "I.",Space,Str "726:"],BlockQuote [Para [Str "dependent",Space,Str "lychni",Space,Str "laquearibus",Space,Str "aureis",Space,Str "incensi,",Space,Str "et",Space,Str "noctem",SoftBreak,Str "flammis",LineBreak,Str "funalia",Space,Str "vincunt."]]]]
-                    ,Div ("",[],[])
-                     [Plain [Str "Stirring",Space,Str "the",Space,Str "pattern",Space,Str "on",Space,Str "the",Space,Str "coffered",Space,Str "ceiling."]]
-                    ,Div ("",[],[])
-                     [Plain [Str "Huge",Space,Str "sea-wood",Space,Str "fed",Space,Str "with",Space,Str "copper"]]
-                    ,Div ("",[],[])
-                     [Plain [Str "Burned",Space,Str "green",Space,Str "and",Space,Str "orange,",Space,Str "framed",Space,Str "by",Space,Str "the",Space,Str "coloured",Space,Str "stone,"]]
-                    ,Div ("",[],[])
-                     [Plain [Str "In",Space,Str "which",Space,Str "sad",Space,Str "light",Space,Str "a",Space,Str "carved",Space,Str "dolphin",Space,Str "swam."]]
-                    ,Div ("",[],[])
-                     [Plain [Str "Above",Space,Str "the",Space,Str "antique",Space,Str "mantel",Space,Str "was",Space,Str "displayed"]]
-                    ,Div ("wasteland-content.xhtml#ln98",[],[])
-                     [Plain [Str "As",Space,Str "though",Space,Str "a",Space,Str "window",Space,Str "gave",Space,Str "upon",Space,Str "the",Space,Str "sylvan",Space,Str "scene",Note [Para [Link ("",[],[]) [Str "98."] ("#wasteland-content.xhtml#ln98",""),Space,Str "Sylvan",Space,Str "scene.",Space,Str "V.",Space,Str "Milton,",Space,Str "Paradise",Space,Str "Lost,",Space,Str "iv.",Space,Str "140."]]]
-                     ,Div ("wasteland-content.xhtml#ln99",[],[])
-                      [Plain [Str "The",Space,Str "change",Space,Str "of",Space,Str "Philomel,",Space,Str "by",Space,Str "the",Space,Str "barbarous",Space,Str "king",Note [Para [Link ("",[],[]) [Str "99."] ("#wasteland-content.xhtml#ln99",""),Space,Str "V.",Space,Str "Ovid,",Space,Str "Metamorphoses,",Space,Str "vi,",Space,Str "Philomela."]]]
-                      ,Div ("wasteland-content.xhtml#ln100",[],[])
-                       [Plain [Str "So",Space,Str "rudely",Space,Str "forced;",Space,Str "yet",Space,Str "there",Space,Str "the",Space,Str "nightingale",Note [Para [Link ("",[],[]) [Str "100."] ("#wasteland-content.xhtml#ln100",""),Space,Str "Cf.",Space,Str "Part",Space,Str "III,",Space,Str "l.",Space,Str "204."]]]
-                       ,Div ("",[],[])
-                        [Plain [Str "Filled",Space,Str "all",Space,Str "the",Space,Str "desert",Space,Str "with",Space,Str "inviolable",Space,Str "voice"]]
-                       ,Div ("",[],[])
-                        [Plain [Str "And",Space,Str "still",Space,Str "she",Space,Str "cried,",Space,Str "and",Space,Str "still",Space,Str "the",Space,Str "world",Space,Str "pursues,"]]
-                       ,Div ("",[],[])
-                        [Plain [Str "\"Jug",Space,Str "Jug\"",Space,Str "to",Space,Str "dirty",Space,Str "ears."]]
-                       ,Div ("",[],[])
-                        [Plain [Str "And",Space,Str "other",Space,Str "withered",Space,Str "stumps",Space,Str "of",Space,Str "time"]]
-                       ,Div ("",[],[])
-                        [Plain [Str "Were",Space,Str "told",Space,Str "upon",Space,Str "the",Space,Str "walls;",Space,Str "staring",Space,Str "forms"]]
-                       ,Div ("",[],[])
-                        [Plain [Str "Leaned",Space,Str "out,",Space,Str "leaning,",Space,Str "hushing",Space,Str "the",Space,Str "room",Space,Str "enclosed."]]
-                       ,Div ("",[],[])
-                        [Plain [Str "Footsteps",Space,Str "shuffled",Space,Str "on",Space,Str "the",Space,Str "stair."]]
-                       ,Div ("",[],[])
-                        [Plain [Str "Under",Space,Str "the",Space,Str "firelight,",Space,Str "under",Space,Str "the",Space,Str "brush,",Space,Str "her",Space,Str "hair"]]
-                       ,Div ("",[],[])
-                        [Plain [Str "Spread",Space,Str "out",Space,Str "in",Space,Str "fiery",Space,Str "points"]]
-                       ,Div ("",[],[])
-                        [Plain [Str "Glowed",Space,Str "into",Space,Str "words,",Space,Str "then",Space,Str "would",Space,Str "be",Space,Str "savagely",Space,Str "still.",Span ("",["lnum"],[]) [Str "110"]]]]
-                      ,Div ("",["linegroup"],[])
-                       [Div ("",["linegroup"],[])
-                        [Div ("",[],[])
-                         [Plain [Str "\"My",Space,Str "nerves",Space,Str "are",Space,Str "bad",Space,Str "to-night.",Space,Str "Yes,",Space,Str "bad.",Space,Str "Stay",Space,Str "with",Space,Str "me."]]
-                        ,Div ("",[],[])
-                         [Plain [Str "\"Speak",Space,Str "to",Space,Str "me.",Space,Str "Why",Space,Str "do",Space,Str "you",Space,Str "never",Space,Str "speak.",Space,Str "Speak."]]
-                        ,Div ("",[],[])
-                         [Plain [Str "\"What",Space,Str "are",Space,Str "you",Space,Str "thinking",Space,Str "of?",Space,Str "What",Space,Str "thinking?",Space,Str "What?"]]
-                        ,Div ("",[],[])
-                         [Plain [Str "\"I",Space,Str "never",Space,Str "know",Space,Str "what",Space,Str "you",Space,Str "are",Space,Str "thinking.",Space,Str "Think.\""]]]
-                       ,Div ("",["linegroup"],[])
-                        [Div ("wasteland-content.xhtml#ln115",[],[])
-                         [Plain [Str "I",Space,Str "think",Space,Str "we",Space,Str "are",Space,Str "in",Space,Str "rats'",Space,Str "alley",Note [Para [Link ("",[],[]) [Str "115."] ("#wasteland-content.xhtml#ln115",""),Space,Str "Cf.",Space,Str "Part",Space,Str "III,",Space,Str "l.",Space,Str "195."]]]
-                         ,Div ("",[],[])
-                          [Plain [Str "Where",Space,Str "the",Space,Str "dead",Space,Str "men",Space,Str "lost",Space,Str "their",Space,Str "bones."]]]]
-                       ,Div ("",["linegroup"],[])
-                        [Div ("",[],[])
-                         [Plain [Str "\"What",Space,Str "is",Space,Str "that",Space,Str "noise?\""]]
-                        ,Div ("wasteland-content.xhtml#ln118",["indent"],[])
-                         [Plain [Str "The",Space,Str "wind",Space,Str "under",Space,Str "the",Space,Str "door.",Note [Para [Link ("",[],[]) [Str "118."] ("#wasteland-content.xhtml#ln118",""),Space,Str "Cf.",Space,Str "Webster:"],BlockQuote [Para [Str "\"Is",Space,Str "the",Space,Str "wind",Space,Str "in",Space,Str "that",Space,Str "door",Space,Str "still?\""]]]]
-                         ,Div ("",[],[])
-                          [Plain [Str "\"What",Space,Str "is",Space,Str "that",Space,Str "noise",Space,Str "now?",Space,Str "What",Space,Str "is",Space,Str "the",Space,Str "wind",Space,Str "doing?\""]]
-                         ,Div ("",["indent"],[])
-                          [Plain [Str "Nothing",Space,Str "again",Space,Str "nothing.",Span ("",["lnum"],[]) [Str "120"]]]]
-                        ,Div ("",["linegroup"],[])
-                         [Div ("",[],[])
-                          [Plain [Str "\"Do"]]
-                         ,Div ("",[],[])
-                          [Plain [Str "\"You",Space,Str "know",Space,Str "nothing?",Space,Str "Do",Space,Str "you",Space,Str "see",Space,Str "nothing?",Space,Str "Do",Space,Str "you",Space,Str "remember"]]
-                         ,Div ("",[],[])
-                          [Plain [Str "\"Nothing?\""]]]
-                        ,Div ("",["linegroup"],[])
-                         [Div ("",[],[])
-                          [Plain [Str "I",Space,Str "remember"]]
-                         ,Div ("",[],[])
-                          [Plain [Str "Those",Space,Str "are",Space,Str "pearls",Space,Str "that",Space,Str "were",Space,Str "his",Space,Str "eyes."]]
-                         ,Div ("wasteland-content.xhtml#ln126",[],[])
-                          [Plain [Str "\"Are",Space,Str "you",Space,Str "alive,",Space,Str "or",Space,Str "not?",Space,Str "Is",Space,Str "there",Space,Str "nothing",Space,Str "in",Space,Str "your",Space,Str "head?\"",Note [Para [Link ("",[],[]) [Str "126."] ("#wasteland-content.xhtml#ln126",""),Space,Str "Cf.",Space,Str "Part",Space,Str "I,",Space,Str "l.",Space,Str "37,",Space,Str "48."]]]
-                          ,Div ("",[],[])
-                           [Plain [Str "But"]]
-                          ,Div ("",[],[])
-                           [Plain [Str "O",Space,Str "O",Space,Str "O",Space,Str "O",Space,Str "that",Space,Str "Shakespeherian",Space,Str "Rag\8213"]]
-                          ,Div ("",[],[])
-                           [Plain [Str "It's",Space,Str "so",Space,Str "elegant"]]
-                          ,Div ("",[],[])
-                           [Plain [Str "So",Space,Str "intelligent",Span ("",["lnum"],[]) [Str "130"]]]
-                          ,Div ("",[],[])
-                           [Plain [Str "\"What",Space,Str "shall",Space,Str "I",Space,Str "do",Space,Str "now?",Space,Str "What",Space,Str "shall",Space,Str "I",Space,Str "do?\""]]
-                          ,Div ("",[],[])
-                           [Plain [Str "I",Space,Str "shall",Space,Str "rush",Space,Str "out",Space,Str "as",Space,Str "I",Space,Str "am,",Space,Str "and",Space,Str "walk",Space,Str "the",Space,Str "street"]]
-                          ,Div ("",[],[])
-                           [Plain [Str "\"With",Space,Str "my",Space,Str "hair",Space,Str "down,",Space,Str "so.",Space,Str "What",Space,Str "shall",Space,Str "we",Space,Str "do",Space,Str "to-morrow?"]]
-                          ,Div ("",[],[])
-                           [Plain [Str "\"What",Space,Str "shall",Space,Str "we",Space,Str "ever",Space,Str "do?\""]]
-                          ,Div ("",[],[])
-                           [Plain [Str "The",Space,Str "hot",Space,Str "water",Space,Str "at",Space,Str "ten."]]
-                          ,Div ("",[],[])
-                           [Plain [Str "And",Space,Str "if",Space,Str "it",Space,Str "rains,",Space,Str "a",Space,Str "closed",Space,Str "car",Space,Str "at",Space,Str "four."]]
-                          ,Div ("",[],[])
-                           [Plain [Str "And",Space,Str "we",Space,Str "shall",Space,Str "play",Space,Str "a",Space,Str "game",Space,Str "of",Space,Str "chess,"]]
-                          ,Div ("wasteland-content.xhtml#ln138",[],[])
-                           [Plain [Str "Pressing",Space,Str "lidless",Space,Str "eyes",Space,Str "and",Space,Str "waiting",Space,Str "for",Space,Str "a",Space,Str "knock",Space,Str "upon",Space,Str "the",Space,Str "door.",Note [Para [Link ("",[],[]) [Str "138."] ("#wasteland-content.xhtml#ln138",""),Space,Str "Cf.",Space,Str "the",Space,Str "game",Space,Str "of",Space,Str "chess",Space,Str "in",Space,Str "Middleton's",Space,Str "Women",Space,Str "beware",Space,Str "Women."]]]
-                           ,Div ("",["linegroup"],[])
-                            [Div ("",[],[])
-                             [Plain [Str "When",Space,Str "Lil's",Space,Str "husband",Space,Str "got",Space,Str "demobbed,",Space,Str "I",Space,Str "said",Space,Str "-"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "I",Space,Str "didn't",Space,Str "mince",Space,Str "my",Space,Str "words,",Space,Str "I",Space,Str "said",Space,Str "to",Space,Str "her",Space,Str "myself,",Span ("",["lnum"],[]) [Str "140"]]]
-                            ,Div ("",[],[])
-                             [Plain [Str "HURRY",Space,Str "UP",Space,Str "PLEASE",Space,Str "ITS",Space,Str "TIME"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "Now",Space,Str "Albert's",Space,Str "coming",Space,Str "back,",Space,Str "make",Space,Str "yourself",Space,Str "a",Space,Str "bit",Space,Str "smart."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "He'll",Space,Str "want",Space,Str "to",Space,Str "know",Space,Str "what",Space,Str "you",Space,Str "done",Space,Str "with",Space,Str "that",Space,Str "money",Space,Str "he",Space,Str "gave",SoftBreak,Str "you"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "To",Space,Str "get",Space,Str "yourself",Space,Str "some",Space,Str "teeth.",Space,Str "He",Space,Str "did,",Space,Str "I",Space,Str "was",Space,Str "there."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "You",Space,Str "have",Space,Str "them",Space,Str "all",Space,Str "out,",Space,Str "Lil,",Space,Str "and",Space,Str "get",Space,Str "a",Space,Str "nice",Space,Str "set,"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "He",Space,Str "said,",Space,Str "I",Space,Str "swear,",Space,Str "I",Space,Str "can't",Space,Str "bear",Space,Str "to",Space,Str "look",Space,Str "at",Space,Str "you."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "And",Space,Str "no",Space,Str "more",Space,Str "can't",Space,Str "I,",Space,Str "I",Space,Str "said,",Space,Str "and",Space,Str "think",Space,Str "of",Space,Str "poor",Space,Str "Albert,"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "He's",Space,Str "been",Space,Str "in",Space,Str "the",Space,Str "army",Space,Str "four",Space,Str "years,",Space,Str "he",Space,Str "wants",Space,Str "a",Space,Str "good",Space,Str "time,"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "And",Space,Str "if",Space,Str "you",Space,Str "don't",Space,Str "give",Space,Str "it",Space,Str "him,",Space,Str "there's",Space,Str "others",Space,Str "will,",Space,Str "I",SoftBreak,Str "said."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "Oh",Space,Str "is",Space,Str "there,",Space,Str "she",Space,Str "said.",Space,Str "Something",Space,Str "o'",Space,Str "that,",Space,Str "I",Space,Str "said.",Span ("",["lnum"],[]) [Str "150"]]]
-                            ,Div ("",[],[])
-                             [Plain [Str "Then",Space,Str "I'll",Space,Str "know",Space,Str "who",Space,Str "to",Space,Str "thank,",Space,Str "she",Space,Str "said,",Space,Str "and",Space,Str "give",Space,Str "me",Space,Str "a",Space,Str "straight",SoftBreak,Str "look."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "HURRY",Space,Str "UP",Space,Str "PLEASE",Space,Str "ITS",Space,Str "TIME"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "If",Space,Str "you",Space,Str "don't",Space,Str "like",Space,Str "it",Space,Str "you",Space,Str "can",Space,Str "get",Space,Str "on",Space,Str "with",Space,Str "it,",Space,Str "I",Space,Str "said."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "Others",Space,Str "can",Space,Str "pick",Space,Str "and",Space,Str "choose",Space,Str "if",Space,Str "you",Space,Str "can't."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "But",Space,Str "if",Space,Str "Albert",Space,Str "makes",Space,Str "off,",Space,Str "it",Space,Str "won't",Space,Str "be",Space,Str "for",Space,Str "lack",Space,Str "of",SoftBreak,Str "telling."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "You",Space,Str "ought",Space,Str "to",Space,Str "be",Space,Str "ashamed,",Space,Str "I",Space,Str "said,",Space,Str "to",Space,Str "look",Space,Str "so",Space,Str "antique."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "(And",Space,Str "her",Space,Str "only",Space,Str "thirty-one.)"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "I",Space,Str "can't",Space,Str "help",Space,Str "it,",Space,Str "she",Space,Str "said,",Space,Str "pulling",Space,Str "a",Space,Str "long",Space,Str "face,"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "It's",Space,Str "them",Space,Str "pills",Space,Str "I",Space,Str "took,",Space,Str "to",Space,Str "bring",Space,Str "it",Space,Str "off,",Space,Str "she",Space,Str "said."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "(She's",Space,Str "had",Space,Str "five",Space,Str "already,",Space,Str "and",Space,Str "nearly",Space,Str "died",Space,Str "of",Space,Str "young",Space,Str "George.)",Span ("",["lnum"],[]) [Str "160"]]]
-                            ,Div ("",[],[])
-                             [Plain [Str "The",Space,Str "chemist",Space,Str "said",Space,Str "it",Space,Str "would",Space,Str "be",Space,Str "all",Space,Str "right,",Space,Str "but",Space,Str "I've",Space,Str "never",Space,Str "been",Space,Str "the",SoftBreak,Str "same."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "You",Space,Emph [Str "are"],Space,Str "a",Space,Str "proper",Space,Str "fool,",Space,Str "I",Space,Str "said."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "Well,",Space,Str "if",Space,Str "Albert",Space,Str "won't",Space,Str "leave",Space,Str "you",Space,Str "alone,",Space,Str "there",Space,Str "it",Space,Str "is,",Space,Str "I",SoftBreak,Str "said,"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "What",Space,Str "you",Space,Str "get",Space,Str "married",Space,Str "for",Space,Str "if",Space,Str "you",Space,Str "don't",Space,Str "want",Space,Str "children?"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "HURRY",Space,Str "UP",Space,Str "PLEASE",Space,Str "ITS",Space,Str "TIME"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "Well,",Space,Str "that",Space,Str "Sunday",Space,Str "Albert",Space,Str "was",Space,Str "home,",Space,Str "they",Space,Str "had",Space,Str "a",Space,Str "hot",SoftBreak,Str "gammon,"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "And",Space,Str "they",Space,Str "asked",Space,Str "me",Space,Str "in",Space,Str "to",Space,Str "dinner,",Space,Str "to",Space,Str "get",Space,Str "the",Space,Str "beauty",Space,Str "of",Space,Str "it",SoftBreak,Str "hot\8213"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "HURRY",Space,Str "UP",Space,Str "PLEASE",Space,Str "ITS",Space,Str "TIME"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "HURRY",Space,Str "UP",Space,Str "PLEASE",Space,Str "ITS",Space,Str "TIME"]]
-                            ,Div ("",[],[])
-                             [Plain [Str "Goonight",Space,Str "Bill.",Space,Str "Goonight",Space,Str "Lou.",Space,Str "Goonight",Space,Str "May.",Space,Str "Goonight.",Span ("",["lnum"],[]) [Str "170"]]]
-                            ,Div ("",[],[])
-                             [Plain [Str "Ta",Space,Str "ta.",Space,Str "Goonight.",Space,Str "Goonight."]]
-                            ,Div ("",[],[])
-                             [Plain [Str "Good",Space,Str "night,",Space,Str "ladies,",Space,Str "good",Space,Str "night,",Space,Str "sweet",Space,Str "ladies,",Space,Str "good",Space,Str "night,",Space,Str "good",SoftBreak,Str "night."]]]
-                           ,RawBlock (Format "html") "</section>"
-                           ,Div ("wasteland-content.xhtml#ch3",["section"],[])
-                            [Header 2 ("",[],[]) [Str "III.",Space,Str "THE",Space,Str "FIRE",Space,Str "SERMON"]
-                            ,Div ("",["linegroup"],[])
-                             [Div ("",[],[])
-                              [Plain [Str "The",Space,Str "river's",Space,Str "tent",Space,Str "is",Space,Str "broken:",Space,Str "the",Space,Str "last",Space,Str "fingers",Space,Str "of",Space,Str "leaf"]]
-                             ,Div ("",[],[])
-                              [Plain [Str "Clutch",Space,Str "and",Space,Str "sink",Space,Str "into",Space,Str "the",Space,Str "wet",Space,Str "bank.",Space,Str "The",Space,Str "wind"]]
-                             ,Div ("",[],[])
-                              [Plain [Str "Crosses",Space,Str "the",Space,Str "brown",Space,Str "land,",Space,Str "unheard.",Space,Str "The",Space,Str "nymphs",Space,Str "are",SoftBreak,Str "departed."]]
-                             ,Div ("wasteland-content.xhtml#ln176",[],[])
-                              [Plain [Str "Sweet",Space,Str "Thames,",Space,Str "run",Space,Str "softly,",Space,Str "till",Space,Str "I",Space,Str "end",Space,Str "my",Space,Str "song.",Note [Para [Link ("",[],[]) [Str "176."] ("#wasteland-content.xhtml#ln176",""),Space,Str "V.",Space,Str "Spenser,",Space,Str "Prothalamion."]]]
-                              ,Div ("",[],[])
-                               [Plain [Str "The",Space,Str "river",Space,Str "bears",Space,Str "no",Space,Str "empty",Space,Str "bottles,",Space,Str "sandwich",Space,Str "papers,"]]
-                              ,Div ("",[],[])
-                               [Plain [Str "Silk",Space,Str "handkerchiefs,",Space,Str "cardboard",Space,Str "boxes,",Space,Str "cigarette",Space,Str "ends"]]
-                              ,Div ("",[],[])
-                               [Plain [Str "Or",Space,Str "other",Space,Str "testimony",Space,Str "of",Space,Str "summer",Space,Str "nights.",Space,Str "The",Space,Str "nymphs",Space,Str "are",SoftBreak,Str "departed."]]
-                              ,Div ("",[],[])
-                               [Plain [Str "And",Space,Str "their",Space,Str "friends,",Space,Str "the",Space,Str "loitering",Space,Str "heirs",Space,Str "of",Space,Str "city",Space,Str "directors;",Span ("",["lnum"],[]) [Str "180"]]]
-                              ,Div ("",[],[])
-                               [Plain [Str "Departed,",Space,Str "have",Space,Str "left",Space,Str "no",Space,Str "addresses."]]
-                              ,Div ("",[],[])
-                               [Plain [Str "By",Space,Str "the",Space,Str "waters",Space,Str "of",Space,Str "Leman",Space,Str "I",Space,Str "sat",Space,Str "down",Space,Str "and",Space,Str "wept",Space,Str ".",Space,Str ".",Space,Str "."]]
-                              ,Div ("",[],[])
-                               [Plain [Str "Sweet",Space,Str "Thames,",Space,Str "run",Space,Str "softly",Space,Str "till",Space,Str "I",Space,Str "end",Space,Str "my",Space,Str "song,"]]
-                              ,Div ("",[],[])
-                               [Plain [Str "Sweet",Space,Str "Thames,",Space,Str "run",Space,Str "softly,",Space,Str "for",Space,Str "I",Space,Str "speak",Space,Str "not",Space,Str "loud",Space,Str "or",Space,Str "long."]]
-                              ,Div ("",[],[])
-                               [Plain [Str "But",Space,Str "at",Space,Str "my",Space,Str "back",Space,Str "in",Space,Str "a",Space,Str "cold",Space,Str "blast",Space,Str "I",Space,Str "hear"]]
-                              ,Div ("",[],[])
-                               [Plain [Str "The",Space,Str "rattle",Space,Str "of",Space,Str "the",Space,Str "bones,",Space,Str "and",Space,Str "chuckle",Space,Str "spread",Space,Str "from",Space,Str "ear",Space,Str "to",SoftBreak,Str "ear."]]]
-                             ,Div ("",["linegroup"],[])
-                              [Div ("",[],[])
-                               [Plain [Str "A",Space,Str "rat",Space,Str "crept",Space,Str "softly",Space,Str "through",Space,Str "the",Space,Str "vegetation"]]
-                              ,Div ("",[],[])
-                               [Plain [Str "Dragging",Space,Str "its",Space,Str "slimy",Space,Str "belly",Space,Str "on",Space,Str "the",Space,Str "bank"]]
-                              ,Div ("",[],[])
-                               [Plain [Str "While",Space,Str "I",Space,Str "was",Space,Str "fishing",Space,Str "in",Space,Str "the",Space,Str "dull",Space,Str "canal"]]
-                              ,Div ("",[],[])
-                               [Plain [Str "On",Space,Str "a",Space,Str "winter",Space,Str "evening",Space,Str "round",Space,Str "behind",Space,Str "the",Space,Str "gashouse",Span ("",["lnum"],[]) [Str "190"]]]
-                              ,Div ("",[],[])
-                               [Plain [Str "Musing",Space,Str "upon",Space,Str "the",Space,Str "king",Space,Str "my",Space,Str "brother's",Space,Str "wreck"]]
-                              ,Div ("wasteland-content.xhtml#ln192",[],[])
-                               [Plain [Str "And",Space,Str "on",Space,Str "the",Space,Str "king",Space,Str "my",Space,Str "father's",Space,Str "death",Space,Str "before",Space,Str "him.",Note [Para [Link ("",[],[]) [Str "192."] ("#wasteland-content.xhtml#ln192",""),Space,Str "Cf.",Space,Str "The",Space,Str "Tempest,",Space,Str "I.",Space,Str "ii."]]]
-                               ,Div ("",[],[])
-                                [Plain [Str "White",Space,Str "bodies",Space,Str "naked",Space,Str "on",Space,Str "the",Space,Str "low",Space,Str "damp",Space,Str "ground"]]
-                               ,Div ("",[],[])
-                                [Plain [Str "And",Space,Str "bones",Space,Str "cast",Space,Str "in",Space,Str "a",Space,Str "little",Space,Str "low",Space,Str "dry",Space,Str "garret,"]]
-                               ,Div ("",[],[])
-                                [Plain [Str "Rattled",Space,Str "by",Space,Str "the",Space,Str "rat's",Space,Str "foot",Space,Str "only,",Space,Str "year",Space,Str "to",Space,Str "year."]]
-                               ,Div ("wasteland-content.xhtml#ln196",[],[])
-                                [Plain [Str "But",Space,Str "at",Space,Str "my",Space,Str "back",Space,Str "from",Space,Str "time",Space,Str "to",Space,Str "time",Space,Str "I",Space,Str "hear",Note [Para [Link ("",[],[]) [Str "196."] ("#wasteland-content.xhtml#ln196",""),Space,Str "Cf.",Space,Str "Marvell,",Space,Str "To",Space,Str "His",Space,Str "Coy",Space,Str "Mistress."]]]
-                                ,Div ("wasteland-content.xhtml#ln197",[],[])
-                                 [Plain [Str "The",Space,Str "sound",Space,Str "of",Space,Str "horns",Space,Str "and",Space,Str "motors,",Space,Str "which",Space,Str "shall",Space,Str "bring",Note [Para [Link ("",[],[]) [Str "197."] ("#wasteland-content.xhtml#ln197",""),Space,Str "Cf.",Space,Str "Day,",Space,Str "Parliament",Space,Str "of",Space,Str "Bees:"],BlockQuote [Div ("",[],[]) [Div ("",[],[]) [Plain [Str "\"When",Space,Str "of",Space,Str "the",Space,Str "sudden,",Space,Str "listening,",Space,Str "you",Space,Str "shall",SoftBreak,Str "hear,"]],Div ("",[],[]) [Plain [Str "\"A",Space,Str "noise",Space,Str "of",Space,Str "horns",Space,Str "and",Space,Str "hunting,",Space,Str "which",Space,Str "shall",SoftBreak,Str "bring"]],Div ("",[],[]) [Plain [Str "\"Actaeon",Space,Str "to",Space,Str "Diana",Space,Str "in",Space,Str "the",Space,Str "spring,"]],Div ("",[],[]) [Plain [Str "\"Where",Space,Str "all",Space,Str "shall",Space,Str "see",Space,Str "her",Space,Str "naked",Space,Str "skin",Space,Str ".",Space,Str ".",Space,Str ".\""]]]]]]
-                                 ,Div ("",[],[])
-                                  [Plain [Str "Sweeney",Space,Str "to",Space,Str "Mrs.",Space,Str "Porter",Space,Str "in",Space,Str "the",Space,Str "spring."]]
-                                 ,Div ("wasteland-content.xhtml#ln199",[],[])
-                                  [Plain [Str "O",Space,Str "the",Space,Str "moon",Space,Str "shone",Space,Str "bright",Space,Str "on",Space,Str "Mrs.",Space,Str "Porter",Note [Para [Link ("",[],[]) [Str "199."] ("#wasteland-content.xhtml#ln199",""),Space,Str "I",Space,Str "do",Space,Str "not",Space,Str "know",Space,Str "the",Space,Str "origin",Space,Str "of",Space,Str "the",Space,Str "ballad",Space,Str "from",Space,Str "which",Space,Str "these",Space,Str "lines",Space,Str "are",SoftBreak,Str "taken:",Space,Str "it",Space,Str "was",Space,Str "reported",Space,Str "to",Space,Str "me",Space,Str "from",Space,Str "Sydney,",Space,Str "Australia."]]]
-                                  ,Div ("",[],[])
-                                   [Plain [Str "And",Space,Str "on",Space,Str "her",Space,Str "daughter",Span ("",["lnum"],[]) [Str "200"]]]
-                                  ,Div ("",[],[])
-                                   [Plain [Str "They",Space,Str "wash",Space,Str "their",Space,Str "feet",Space,Str "in",Space,Str "soda",Space,Str "water"]]
-                                  ,Div ("wasteland-content.xhtml#ln202",[],[("lang","fr")])
-                                   [Plain [Emph [Str "Et",Space,Str "O",Space,Str "ces",Space,Str "voix",Space,Str "d'enfants,",Space,Str "chantant",Space,Str "dans",Space,Str "la",Space,Str "coupole"],Str "!",Note [Para [Link ("",[],[]) [Str "202."] ("#wasteland-content.xhtml#ln202",""),Space,Str "V.",Space,Str "Verlaine,",Space,Str "Parsifal."]]]
-                                   ,Div ("",["linegroup"],[])
-                                    [Div ("",[],[])
-                                     [Plain [Str "Twit",Space,Str "twit",Space,Str "twit"]]
-                                    ,Div ("",[],[])
-                                     [Plain [Str "Jug",Space,Str "jug",Space,Str "jug",Space,Str "jug",Space,Str "jug",Space,Str "jug"]]
-                                    ,Div ("",[],[])
-                                     [Plain [Str "So",Space,Str "rudely",Space,Str "forc'd."]]
-                                    ,Div ("",[],[])
-                                     [Plain [Str "Tereu"]]]
-                                   ,Div ("",["linegroup"],[])
-                                    [Div ("",[],[])
-                                     [Plain [Str "Unreal",Space,Str "City"]]
-                                    ,Div ("",[],[])
-                                     [Plain [Str "Under",Space,Str "the",Space,Str "brown",Space,Str "fog",Space,Str "of",Space,Str "a",Space,Str "winter",Space,Str "noon"]]
-                                    ,Div ("",[],[])
-                                     [Plain [Str "Mr.",Space,Str "Eugenides,",Space,Str "the",Space,Str "Smyrna",Space,Str "merchant"]]
-                                    ,Div ("wasteland-content.xhtml#ln210",[],[])
-                                     [Plain [Str "Unshaven,",Space,Str "with",Space,Str "a",Space,Str "pocket",Space,Str "full",Space,Str "of",Space,Str "currants",Note [Para [Link ("",[],[]) [Str "210."] ("#wasteland-content.xhtml#ln210",""),Space,Str "The",Space,Str "currants",Space,Str "were",Space,Str "quoted",Space,Str "at",Space,Str "a",Space,Str "price",Space,Str "\"cost",Space,Str "insurance",Space,Str "and",Space,Str "freight",Space,Str "to",SoftBreak,Str "London\";",Space,Str "and",Space,Str "the",Space,Str "Bill",Space,Str "of",Space,Str "Lading",Space,Str "etc.",Space,Str "were",Space,Str "to",Space,Str "be",Space,Str "handed",Space,Str "to",Space,Str "the",Space,Str "buyer",Space,Str "upon",SoftBreak,Str "payment",Space,Str "of",Space,Str "the",Space,Str "sight",Space,Str "draft."]]]
-                                     ,Div ("",[],[])
-                                      [Plain [Str "C.i.f.",Space,Str "London:",Space,Str "documents",Space,Str "at",Space,Str "sight,"]]
-                                     ,Div ("",[],[])
-                                      [Plain [Str "Asked",Space,Str "me",Space,Str "in",Space,Str "demotic",Space,Str "French"]]
-                                     ,Div ("",[],[])
-                                      [Plain [Str "To",Space,Str "luncheon",Space,Str "at",Space,Str "the",Space,Str "Cannon",Space,Str "Street",Space,Str "Hotel"]]
-                                     ,Div ("",[],[])
-                                      [Plain [Str "Followed",Space,Str "by",Space,Str "a",Space,Str "weekend",Space,Str "at",Space,Str "the",Space,Str "Metropole."]]]
-                                    ,Div ("",["linegroup"],[])
-                                     [Div ("",[],[])
-                                      [Plain [Str "At",Space,Str "the",Space,Str "violet",Space,Str "hour,",Space,Str "when",Space,Str "the",Space,Str "eyes",Space,Str "and",Space,Str "back"]]
-                                     ,Div ("",[],[])
-                                      [Plain [Str "Turn",Space,Str "upward",Space,Str "from",Space,Str "the",Space,Str "desk,",Space,Str "when",Space,Str "the",Space,Str "human",Space,Str "engine",Space,Str "waits"]]
-                                     ,Div ("",[],[])
-                                      [Plain [Str "Like",Space,Str "a",Space,Str "taxi",Space,Str "throbbing",Space,Str "waiting,"]]
-                                     ,Div ("wasteland-content.xhtml#ln218",[],[])
-                                      [Plain [Str "I",Space,Str "Tiresias,",Space,Str "though",Space,Str "blind,",Space,Str "throbbing",Space,Str "between",Space,Str "two",Space,Str "lives,",Note [Para [Link ("",[],[]) [Str "218."] ("#wasteland-content.xhtml#ln218",""),Space,Str "Tiresias,",Space,Str "although",Space,Str "a",Space,Str "mere",Space,Str "spectator",Space,Str "and",Space,Str "not",Space,Str "indeed",Space,Str "a",Space,Str "\"character,\"",Space,Str "is",SoftBreak,Str "yet",Space,Str "the",Space,Str "most",Space,Str "important",Space,Str "personage",Space,Str "in",Space,Str "the",Space,Str "poem,",Space,Str "uniting",Space,Str "all",Space,Str "the",Space,Str "rest.",Space,Str "Just",SoftBreak,Str "as",Space,Str "the",Space,Str "one-eyed",Space,Str "merchant,",Space,Str "seller",Space,Str "of",Space,Str "currants,",Space,Str "melts",Space,Str "into",Space,Str "the",Space,Str "Phoenician",SoftBreak,Str "Sailor,",Space,Str "and",Space,Str "the",Space,Str "latter",Space,Str "is",Space,Str "not",Space,Str "wholly",Space,Str "distinct",Space,Str "from",Space,Str "Ferdinand",Space,Str "Prince",Space,Str "of",SoftBreak,Str "Naples,",Space,Str "so",Space,Str "all",Space,Str "the",Space,Str "women",Space,Str "are",Space,Str "one",Space,Str "woman,",Space,Str "and",Space,Str "the",Space,Str "two",Space,Str "sexes",Space,Str "meet",Space,Str "in",SoftBreak,Str "Tiresias.",Space,Str "What",Space,Str "Tiresias",Space,Str "sees,",Space,Str "in",Space,Str "fact,",Space,Str "is",Space,Str "the",Space,Str "substance",Space,Str "of",Space,Str "the",Space,Str "poem.",Space,Str "The",SoftBreak,Str "whole",Space,Str "passage",Space,Str "from",Space,Str "Ovid",Space,Str "is",Space,Str "of",Space,Str "great",Space,Str "anthropological",Space,Str "interest:"],BlockQuote [Para [Str "'.",Space,Str ".",Space,Str ".",Space,Str "Cum",Space,Str "Iunone",Space,Str "iocos",Space,Str "et",Space,Str "maior",Space,Str "vestra",Space,Str "profecto",Space,Str "est",LineBreak,Str "Quam,",Space,Str "quae",SoftBreak,Str "contingit",Space,Str "maribus,'",Space,Str "dixisse,",Space,Str "'voluptas.'",LineBreak,Str "Illa",Space,Str "negat;",Space,Str "placuit",SoftBreak,Str "quae",Space,Str "sit",Space,Str "sententia",Space,Str "docti",LineBreak,Str "Quaerere",Space,Str "Tiresiae:",Space,Str "venus",Space,Str "huic",Space,Str "erat",SoftBreak,Str "utraque",Space,Str "nota.",LineBreak,Str "Nam",Space,Str "duo",Space,Str "magnorum",Space,Str "viridi",Space,Str "coeuntia",Space,Str "silva",LineBreak,Str "Corpora",Space,Str "serpentum",Space,Str "baculi",Space,Str "violaverat",Space,Str "ictu",LineBreak,Str "Deque",Space,Str "viro",Space,Str "factus,",SoftBreak,Str "mirabile,",Space,Str "femina",Space,Str "septem",LineBreak,Str "Egerat",Space,Str "autumnos;",Space,Str "octavo",Space,Str "rursus",SoftBreak,Str "eosdem",LineBreak,Str "Vidit",Space,Str "et",Space,Str "'est",Space,Str "vestrae",Space,Str "si",Space,Str "tanta",Space,Str "potentia",Space,Str "plagae,'",LineBreak,Str "Dixit",Space,Str "'ut",Space,Str "auctoris",Space,Str "sortem",Space,Str "in",Space,Str "contraria",Space,Str "mutet,",LineBreak,Str "Nunc",Space,Str "quoque",Space,Str "vos",SoftBreak,Str "feriam!'",Space,Str "percussis",Space,Str "anguibus",Space,Str "isdem",LineBreak,Str "Forma",Space,Str "prior",Space,Str "rediit",SoftBreak,Str "genetivaque",Space,Str "venit",Space,Str "imago.",LineBreak,Str "Arbiter",Space,Str "hic",Space,Str "igitur",Space,Str "sumptus",Space,Str "de",Space,Str "lite",SoftBreak,Str "iocosa",LineBreak,Str "Dicta",Space,Str "Iovis",Space,Str "firmat;",Space,Str "gravius",Space,Str "Saturnia",Space,Str "iusto",LineBreak,Str "Nec",SoftBreak,Str "pro",Space,Str "materia",Space,Str "fertur",Space,Str "doluisse",Space,Str "suique",LineBreak,Str "Iudicis",Space,Str "aeterna",Space,Str "damnavit",SoftBreak,Str "lumina",Space,Str "nocte,",LineBreak,Str "At",Space,Str "pater",Space,Str "omnipotens",Space,Str "(neque",Space,Str "enim",Space,Str "licet",Space,Str "inrita",SoftBreak,Str "cuiquam",LineBreak,Str "Facta",Space,Str "dei",Space,Str "fecisse",Space,Str "deo)",Space,Str "pro",Space,Str "lumine",Space,Str "adempto",LineBreak,Str "Scire",SoftBreak,Str "futura",Space,Str "dedit",Space,Str "poenamque",Space,Str "levavit",Space,Str "honore.",LineBreak]]]]
-                                      ,Div ("",[],[])
-                                       [Plain [Str "Old",Space,Str "man",Space,Str "with",Space,Str "wrinkled",Space,Str "female",Space,Str "breasts,",Space,Str "can",Space,Str "see"]]
-                                      ,Div ("",[],[])
-                                       [Plain [Str "At",Space,Str "the",Space,Str "violet",Space,Str "hour,",Space,Str "the",Space,Str "evening",Space,Str "hour",Space,Str "that",Space,Str "strives",Span ("",["lnum"],[]) [Str "220"]]]
-                                      ,Div ("wasteland-content.xhtml#ln221",[],[])
-                                       [Plain [Str "Homeward,",Space,Str "and",Space,Str "brings",Space,Str "the",Space,Str "sailor",Space,Str "home",Space,Str "from",Space,Str "sea,",Note [Para [Link ("",[],[]) [Str "221."] ("#wasteland-content.xhtml#ln221",""),Space,Str "This",Space,Str "may",Space,Str "not",Space,Str "appear",Space,Str "as",Space,Str "exact",Space,Str "as",Space,Str "Sappho's",Space,Str "lines,",Space,Str "but",Space,Str "I",Space,Str "had",Space,Str "in",Space,Str "mind",SoftBreak,Str "the",Space,Str "\"longshore\"",Space,Str "or",Space,Str "\"dory\"",Space,Str "fisherman,",Space,Str "who",Space,Str "returns",Space,Str "at",Space,Str "nightfall."]]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "The",Space,Str "typist",Space,Str "home",Space,Str "at",Space,Str "teatime,",Space,Str "clears",Space,Str "her",Space,Str "breakfast,",Space,Str "lights"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Her",Space,Str "stove,",Space,Str "and",Space,Str "lays",Space,Str "out",Space,Str "food",Space,Str "in",Space,Str "tins."]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Out",Space,Str "of",Space,Str "the",Space,Str "window",Space,Str "perilously",Space,Str "spread"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Her",Space,Str "drying",Space,Str "combinations",Space,Str "touched",Space,Str "by",Space,Str "the",Space,Str "sun's",Space,Str "last",Space,Str "rays,"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "On",Space,Str "the",Space,Str "divan",Space,Str "are",Space,Str "piled",Space,Str "(at",Space,Str "night",Space,Str "her",Space,Str "bed)"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Stockings,",Space,Str "slippers,",Space,Str "camisoles,",Space,Str "and",Space,Str "stays."]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "I",Space,Str "Tiresias,",Space,Str "old",Space,Str "man",Space,Str "with",Space,Str "wrinkled",Space,Str "dugs"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Perceived",Space,Str "the",Space,Str "scene,",Space,Str "and",Space,Str "foretold",Space,Str "the",Space,Str "rest",Space,Str "-"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "I",Space,Str "too",Space,Str "awaited",Space,Str "the",Space,Str "expected",Space,Str "guest.",Span ("",["lnum"],[]) [Str "230"]]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "He,",Space,Str "the",Space,Str "young",Space,Str "man",Space,Str "carbuncular,",Space,Str "arrives,"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "A",Space,Str "small",Space,Str "house",Space,Str "agent's",Space,Str "clerk,",Space,Str "with",Space,Str "one",Space,Str "bold",Space,Str "stare,"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "One",Space,Str "of",Space,Str "the",Space,Str "low",Space,Str "on",Space,Str "whom",Space,Str "assurance",Space,Str "sits"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "As",Space,Str "a",Space,Str "silk",Space,Str "hat",Space,Str "on",Space,Str "a",Space,Str "Bradford",Space,Str "millionaire."]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "The",Space,Str "time",Space,Str "is",Space,Str "now",Space,Str "propitious,",Space,Str "as",Space,Str "he",Space,Str "guesses,"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "The",Space,Str "meal",Space,Str "is",Space,Str "ended,",Space,Str "she",Space,Str "is",Space,Str "bored",Space,Str "and",Space,Str "tired,"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Endeavours",Space,Str "to",Space,Str "engage",Space,Str "her",Space,Str "in",Space,Str "caresses"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Which",Space,Str "still",Space,Str "are",Space,Str "unreproved,",Space,Str "if",Space,Str "undesired."]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Flushed",Space,Str "and",Space,Str "decided,",Space,Str "he",Space,Str "assaults",Space,Str "at",Space,Str "once;"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Exploring",Space,Str "hands",Space,Str "encounter",Space,Str "no",Space,Str "defence;",Span ("",["lnum"],[]) [Str "240"]]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "His",Space,Str "vanity",Space,Str "requires",Space,Str "no",Space,Str "response,"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "And",Space,Str "makes",Space,Str "a",Space,Str "welcome",Space,Str "of",Space,Str "indifference."]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "(And",Space,Str "I",Space,Str "Tiresias",Space,Str "have",Space,Str "foresuffered",Space,Str "all"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Enacted",Space,Str "on",Space,Str "this",Space,Str "same",Space,Str "divan",Space,Str "or",Space,Str "bed;"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "I",Space,Str "who",Space,Str "have",Space,Str "sat",Space,Str "by",Space,Str "Thebes",Space,Str "below",Space,Str "the",Space,Str "wall"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "And",Space,Str "walked",Space,Str "among",Space,Str "the",Space,Str "lowest",Space,Str "of",Space,Str "the",Space,Str "dead.)"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Bestows",Space,Str "one",Space,Str "final",Space,Str "patronising",Space,Str "kiss,"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "And",Space,Str "gropes",Space,Str "his",Space,Str "way,",Space,Str "finding",Space,Str "the",Space,Str "stairs",Space,Str "unlit",Space,Str ".",Space,Str ".",Space,Str "."]]]
-                                      ,Div ("",["linegroup"],[])
-                                       [Div ("",[],[])
-                                        [Plain [Str "She",Space,Str "turns",Space,Str "and",Space,Str "looks",Space,Str "a",Space,Str "moment",Space,Str "in",Space,Str "the",Space,Str "glass,"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Hardly",Space,Str "aware",Space,Str "of",Space,Str "her",Space,Str "departed",Space,Str "lover;",Span ("",["lnum"],[]) [Str "250"]]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "Her",Space,Str "brain",Space,Str "allows",Space,Str "one",Space,Str "half-formed",Space,Str "thought",Space,Str "to",Space,Str "pass:"]]
-                                       ,Div ("",[],[])
-                                        [Plain [Str "\"Well",Space,Str "now",Space,Str "that's",Space,Str "done:",Space,Str "and",Space,Str "I'm",Space,Str "glad",Space,Str "it's",Space,Str "over.\""]]
-                                       ,Div ("wasteland-content.xhtml#ln253",[],[])
-                                        [Plain [Str "When",Space,Str "lovely",Space,Str "woman",Space,Str "stoops",Space,Str "to",Space,Str "folly",Space,Str "and",Note [Para [Link ("",[],[]) [Str "253."] ("#wasteland-content.xhtml#ln253",""),Space,Str "V.",Space,Str "Goldsmith,",Space,Str "the",Space,Str "song",Space,Str "in",Space,Str "The",Space,Str "Vicar",Space,Str "of",Space,Str "Wakefield."]]]
-                                        ,Div ("",[],[])
-                                         [Plain [Str "Paces",Space,Str "about",Space,Str "her",Space,Str "room",Space,Str "again,",Space,Str "alone,"]]
-                                        ,Div ("",[],[])
-                                         [Plain [Str "She",Space,Str "smoothes",Space,Str "her",Space,Str "hair",Space,Str "with",Space,Str "automatic",Space,Str "hand,"]]
-                                        ,Div ("",[],[])
-                                         [Plain [Str "And",Space,Str "puts",Space,Str "a",Space,Str "record",Space,Str "on",Space,Str "the",Space,Str "gramophone."]]]
-                                       ,Div ("",["linegroup"],[])
-                                        [Div ("wasteland-content.xhtml#ln257",[],[])
-                                         [Plain [Str "\"This",Space,Str "music",Space,Str "crept",Space,Str "by",Space,Str "me",Space,Str "upon",Space,Str "the",Space,Str "waters\"",Note [Para [Link ("",[],[]) [Str "257."] ("#wasteland-content.xhtml#ln257",""),Space,Str "V.",Space,Str "The",Space,Str "Tempest,",Space,Str "as",Space,Str "above."]]]
-                                         ,Div ("",[],[])
-                                          [Plain [Str "And",Space,Str "along",Space,Str "the",Space,Str "Strand,",Space,Str "up",Space,Str "Queen",Space,Str "Victoria",Space,Str "Street."]]
-                                         ,Div ("",[],[])
-                                          [Plain [Str "O",Space,Str "City",Space,Str "city,",Space,Str "I",Space,Str "can",Space,Str "sometimes",Space,Str "hear"]]
-                                         ,Div ("",[],[])
-                                          [Plain [Str "Beside",Space,Str "a",Space,Str "public",Space,Str "bar",Space,Str "in",Space,Str "Lower",Space,Str "Thames",Space,Str "Street,",Span ("",["lnum"],[]) [Str "260"]]]
-                                         ,Div ("",[],[])
-                                          [Plain [Str "The",Space,Str "pleasant",Space,Str "whining",Space,Str "of",Space,Str "a",Space,Str "mandoline"]]
-                                         ,Div ("",[],[])
-                                          [Plain [Str "And",Space,Str "a",Space,Str "clatter",Space,Str "and",Space,Str "a",Space,Str "chatter",Space,Str "from",Space,Str "within"]]
-                                         ,Div ("",[],[])
-                                          [Plain [Str "Where",Space,Str "fishmen",Space,Str "lounge",Space,Str "at",Space,Str "noon:",Space,Str "where",Space,Str "the",Space,Str "walls"]]
-                                         ,Div ("wasteland-content.xhtml#ln264",[],[])
-                                          [Plain [Str "Of",Space,Str "Magnus",Space,Str "Martyr",Space,Str "hold",Note [Para [Link ("",[],[]) [Str "264."] ("#wasteland-content.xhtml#ln264",""),Space,Str "The",Space,Str "interior",Space,Str "of",Space,Str "St.",Space,Str "Magnus",Space,Str "Martyr",Space,Str "is",Space,Str "to",Space,Str "my",Space,Str "mind",Space,Str "one",Space,Str "of",Space,Str "the",Space,Str "finest",SoftBreak,Str "among",Space,Str "Wren's",Space,Str "interiors.",Space,Str "See",Space,Str "The",Space,Str "Proposed",Space,Str "Demolition",Space,Str "of",Space,Str "Nineteen",Space,Str "City",SoftBreak,Str "Churches",Space,Str "(P.",Space,Str "S.",Space,Str "King",Space,Str "&",Space,Str "Son,",Space,Str "Ltd.)."]]]
-                                          ,Div ("",[],[])
-                                           [Plain [Str "Inexplicable",Space,Str "splendour",Space,Str "of",Space,Str "Ionian",Space,Str "white",Space,Str "and",Space,Str "gold."]]]
-                                         ,Div ("",["linegroup","indent"],[])
-                                          [Div ("wasteland-content.xhtml#ln266",[],[])
-                                           [Plain [Str "The",Space,Str "river",Space,Str "sweats",Note [Para [Link ("",[],[]) [Str "266."] ("#wasteland-content.xhtml#ln266",""),Space,Str "The",Space,Str "Song",Space,Str "of",Space,Str "the",Space,Str "(three)",Space,Str "Thames-daughters",Space,Str "begins",Space,Str "here.",Space,Str "From",Space,Str "line",Space,Str "292",SoftBreak,Str "to",Space,Str "306",Space,Str "inclusive",Space,Str "they",Space,Str "speak",Space,Str "in",Space,Str "turn.",Space,Str "V.",Space,Str "Gutterdsammerung,",Space,Str "III.",Space,Str "i:",Space,Str "the",SoftBreak,Str "Rhine-daughters."]]]
-                                           ,Div ("",[],[])
-                                            [Plain [Str "Oil",Space,Str "and",Space,Str "tar"]]
-                                           ,Div ("",[],[])
-                                            [Plain [Str "The",Space,Str "barges",Space,Str "drift"]]
-                                           ,Div ("",[],[])
-                                            [Plain [Str "With",Space,Str "the",Space,Str "turning",Space,Str "tide"]]
-                                           ,Div ("",[],[])
-                                            [Plain [Str "Red",Space,Str "sails",Span ("",["lnum"],[]) [Str "270"]]]
-                                           ,Div ("",[],[])
-                                            [Plain [Str "Wide"]]
-                                           ,Div ("",[],[])
-                                            [Plain [Str "To",Space,Str "leeward,",Space,Str "swing",Space,Str "on",Space,Str "the",Space,Str "heavy",Space,Str "spar."]]
-                                           ,Div ("",[],[])
-                                            [Plain [Str "The",Space,Str "barges",Space,Str "wash"]]
-                                           ,Div ("",[],[])
-                                            [Plain [Str "Drifting",Space,Str "logs"]]
-                                           ,Div ("",[],[])
-                                            [Plain [Str "Down",Space,Str "Greenwich",Space,Str "reach"]]
-                                           ,Div ("",[],[])
-                                            [Plain [Str "Past",Space,Str "the",Space,Str "Isle",Space,Str "of",Space,Str "Dogs."]]
-                                           ,Div ("",["indent"],[])
-                                            [Plain [Str "Weialala",Space,Str "leia"]]
-                                           ,Div ("",["indent"],[])
-                                            [Plain [Str "Wallala",Space,Str "leialala"]]]
-                                          ,Div ("",["linegroup","indent"],[])
-                                           [Div ("wasteland-content.xhtml#ln279",[],[])
-                                            [Plain [Str "Elizabeth",Space,Str "and",Space,Str "Leicester",Note [Para [Link ("",[],[]) [Str "279."] ("#wasteland-content.xhtml#ln279",""),Space,Str "V.",Space,Str "Froude,",Space,Str "Elizabeth,",Space,Str "Vol.",Space,Str "I,",Space,Str "ch.",Space,Str "iv,",Space,Str "letter",Space,Str "of",Space,Str "De",Space,Str "Quadra",Space,Str "to",Space,Str "Philip",SoftBreak,Str "of",Space,Str "Spain:"],BlockQuote [Div ("",[],[]) [Div ("",[],[]) [Plain [Str "\"In",Space,Str "the",Space,Str "afternoon",Space,Str "we",Space,Str "were",Space,Str "in",Space,Str "a",Space,Str "barge,",Space,Str "watching",Space,Str "the",SoftBreak,Str "games",Space,Str "on",Space,Str "the",Space,Str "river."]],Div ("",[],[]) [Plain [Str "(The",Space,Str "queen)",Space,Str "was",Space,Str "alone",Space,Str "with",Space,Str "Lord",Space,Str "Robert",Space,Str "and",Space,Str "myself",SoftBreak,Str "on",Space,Str "the",Space,Str "poop,"]],Div ("",[],[]) [Plain [Str "when",Space,Str "they",Space,Str "began",Space,Str "to",Space,Str "talk",Space,Str "nonsense,",Space,Str "and",Space,Str "went",Space,Str "so",Space,Str "far",SoftBreak,Str "that",Space,Str "Lord",Space,Str "Robert"]],Div ("",[],[]) [Plain [Str "at",Space,Str "last",Space,Str "said,",Space,Str "as",Space,Str "I",Space,Str "was",Space,Str "on",Space,Str "the",Space,Str "spot",Space,Str "there",Space,Str "was",Space,Str "no",SoftBreak,Str "reason",Space,Str "why",Space,Str "they"]],Div ("",[],[]) [Plain [Str "should",Space,Str "not",Space,Str "be",Space,Str "married",Space,Str "if",Space,Str "the",Space,Str "queen",Space,Str "pleased.\""]]]]]]
-                                            ,Div ("",[],[])
-                                             [Plain [Str "Beating",Space,Str "oars",Span ("",["lnum"],[]) [Str "280"]]]
-                                            ,Div ("",[],[])
-                                             [Plain [Str "The",Space,Str "stern",Space,Str "was",Space,Str "formed"]]
-                                            ,Div ("",[],[])
-                                             [Plain [Str "A",Space,Str "gilded",Space,Str "shell"]]
-                                            ,Div ("",[],[])
-                                             [Plain [Str "Red",Space,Str "and",Space,Str "gold"]]
-                                            ,Div ("",[],[])
-                                             [Plain [Str "The",Space,Str "brisk",Space,Str "swell"]]
-                                            ,Div ("",[],[])
-                                             [Plain [Str "Rippled",Space,Str "both",Space,Str "shores"]]
-                                            ,Div ("",[],[])
-                                             [Plain [Str "Southwest",Space,Str "wind"]]
-                                            ,Div ("",[],[])
-                                             [Plain [Str "Carried",Space,Str "down",Space,Str "stream"]]
-                                            ,Div ("",[],[])
-                                             [Plain [Str "The",Space,Str "peal",Space,Str "of",Space,Str "bells"]]
-                                            ,Div ("",[],[])
-                                             [Plain [Str "White",Space,Str "towers"]]
-                                            ,Div ("",["indent"],[])
-                                             [Plain [Str "Weialala",Space,Str "leia",Span ("",["lnum"],[]) [Str "290"]]]
-                                            ,Div ("",["indent"],[])
-                                             [Plain [Str "Wallala",Space,Str "leialala"]]]
-                                           ,Div ("",["linegroup"],[])
-                                            [Div ("",[],[])
-                                             [Plain [Str "\"Trams",Space,Str "and",Space,Str "dusty",Space,Str "trees."]]
-                                            ,Div ("wasteland-content.xhtml#ln293",[],[])
-                                             [Plain [Str "Highbury",Space,Str "bore",Space,Str "me.",Space,Str "Richmond",Space,Str "and",Space,Str "Kew",Note [Para [Link ("",[],[]) [Str "293."] ("#wasteland-content.xhtml#ln293",""),Space,Str "Cf.",Space,Str "Purgatorio,",Space,Str "v.",Space,Str "133:"],BlockQuote [Para [Str "\"Ricorditi",Space,Str "di",Space,Str "me,",Space,Str "che",Space,Str "son",Space,Str "la",Space,Str "Pia;",LineBreak,Str "Siena",Space,Str "mi",Space,Str "fe',",Space,Str "disfecemi",SoftBreak,Str "Maremma.\""]]]]
-                                             ,Div ("",[],[])
-                                              [Plain [Str "Undid",Space,Str "me.",Space,Str "By",Space,Str "Richmond",Space,Str "I",Space,Str "raised",Space,Str "my",Space,Str "knees"]]
-                                             ,Div ("",[],[])
-                                              [Plain [Str "Supine",Space,Str "on",Space,Str "the",Space,Str "floor",Space,Str "of",Space,Str "a",Space,Str "narrow",Space,Str "canoe.\""]]]
-                                            ,Div ("",["linegroup"],[])
-                                             [Div ("",[],[])
-                                              [Plain [Str "\"My",Space,Str "feet",Space,Str "are",Space,Str "at",Space,Str "Moorgate,",Space,Str "and",Space,Str "my",Space,Str "heart"]]
-                                             ,Div ("",[],[])
-                                              [Plain [Str "Under",Space,Str "my",Space,Str "feet.",Space,Str "After",Space,Str "the",Space,Str "event"]]
-                                             ,Div ("",[],[])
-                                              [Plain [Str "He",Space,Str "wept.",Space,Str "He",Space,Str "promised",Space,Str "'a",Space,Str "new",Space,Str "start'."]]
-                                             ,Div ("",[],[])
-                                              [Plain [Str "I",Space,Str "made",Space,Str "no",Space,Str "comment.",Space,Str "What",Space,Str "should",Space,Str "I",Space,Str "resent?\""]]
-                                             ,Div ("",[],[])
-                                              [Plain [Str "\"On",Space,Str "Margate",Space,Str "Sands.",Span ("",["lnum"],[]) [Str "300"]]]
-                                             ,Div ("",[],[])
-                                              [Plain [Str "I",Space,Str "can",Space,Str "connect"]]
-                                             ,Div ("",[],[])
-                                              [Plain [Str "Nothing",Space,Str "with",Space,Str "nothing."]]
-                                             ,Div ("",[],[])
-                                              [Plain [Str "The",Space,Str "broken",Space,Str "fingernails",Space,Str "of",Space,Str "dirty",Space,Str "hands."]]
-                                             ,Div ("",[],[])
-                                              [Plain [Str "My",Space,Str "people",Space,Str "humble",Space,Str "people",Space,Str "who",Space,Str "expect"]]
-                                             ,Div ("",[],[])
-                                              [Plain [Str "Nothing.\""]]
-                                             ,Div ("",["indent"],[])
-                                              [Plain [Str "la",Space,Str "la"]]]
-                                            ,Div ("",["linegroup"],[])
-                                             [Div ("wasteland-content.xhtml#ln307",[],[])
-                                              [Plain [Str "To",Space,Str "Carthage",Space,Str "then",Space,Str "I",Space,Str "came",Note [Para [Link ("",[],[]) [Str "307."] ("#wasteland-content.xhtml#ln307",""),Space,Str "V.",Space,Str "St.",Space,Str "Augustine's",Space,Str "Confessions:",Space,Str "\"to",Space,Str "Carthage",Space,Str "then",Space,Str "I",Space,Str "came,",Space,Str "where",Space,Str "a",SoftBreak,Str "cauldron",Space,Str "of",Space,Str "unholy",Space,Str "loves",Space,Str "sang",Space,Str "all",Space,Str "about",Space,Str "mine",Space,Str "ears.\""]]]
-                                              ,Div ("",["linegroup"],[])
-                                               [Div ("wasteland-content.xhtml#ln308",[],[])
-                                                [Plain [Str "Burning",Space,Str "burning",Space,Str "burning",Space,Str "burning",Note [Para [Link ("",[],[]) [Str "308."] ("#wasteland-content.xhtml#ln308",""),Space,Str "The",Space,Str "complete",Space,Str "text",Space,Str "of",Space,Str "the",Space,Str "Buddha's",Space,Str "Fire",Space,Str "Sermon",Space,Str "(which",Space,Str "corresponds",Space,Str "in",SoftBreak,Str "importance",Space,Str "to",Space,Str "the",Space,Str "Sermon",Space,Str "on",Space,Str "the",Space,Str "Mount)",Space,Str "from",Space,Str "which",Space,Str "these",Space,Str "words",Space,Str "are",Space,Str "taken,",SoftBreak,Str "will",Space,Str "be",Space,Str "found",Space,Str "translated",Space,Str "in",Space,Str "the",Space,Str "late",Space,Str "Henry",Space,Str "Clarke",Space,Str "Warren's",Space,Str "Buddhism",Space,Str "in",SoftBreak,Str "Translation",Space,Str "(Harvard",Space,Str "Oriental",Space,Str "Series).",Space,Str "Mr.",Space,Str "Warren",Space,Str "was",Space,Str "one",Space,Str "of",Space,Str "the",Space,Str "great",SoftBreak,Str "pioneers",Space,Str "of",Space,Str "Buddhist",Space,Str "studies",Space,Str "in",Space,Str "the",Space,Str "Occident."]]]
-                                                ,Div ("wasteland-content.xhtml#ln309",[],[])
-                                                 [Plain [Str "O",Space,Str "Lord",Space,Str "Thou",Space,Str "pluckest",Space,Str "me",Space,Str "out",Note [Para [Link ("",[],[]) [Str "309."] ("#wasteland-content.xhtml#ln309",""),Space,Str "From",Space,Str "St.",Space,Str "Augustine's",Space,Str "Confessions",Space,Str "again.",Space,Str "The",Space,Str "collocation",Space,Str "of",Space,Str "these",Space,Str "two",SoftBreak,Str "representatives",Space,Str "of",Space,Str "eastern",Space,Str "and",Space,Str "western",Space,Str "asceticism,",Space,Str "as",Space,Str "the",Space,Str "culmination",Space,Str "of",SoftBreak,Str "this",Space,Str "part",Space,Str "of",Space,Str "the",Space,Str "poem,",Space,Str "is",Space,Str "not",Space,Str "an",Space,Str "accident."]]]
-                                                 ,Div ("",[],[])
-                                                  [Plain [Str "O",Space,Str "Lord",Space,Str "Thou",Space,Str "pluckest",Span ("",["lnum"],[]) [Str "310"]]]]
-                                                ,Div ("",["linegroup"],[])
-                                                 [Div ("",[],[])
-                                                  [Plain [Str "burning"]]]
-                                                ,RawBlock (Format "html") "</section>"
-                                                ,Div ("wasteland-content.xhtml#ch4",["section"],[])
-                                                 [Header 2 ("",[],[]) [Str "IV.",Space,Str "DEATH",Space,Str "BY",Space,Str "WATER"]
-                                                 ,Div ("",["linegroup"],[])
-                                                  [Div ("",[],[])
-                                                   [Plain [Str "Phlebas",Space,Str "the",Space,Str "Phoenician,",Space,Str "a",Space,Str "fortnight",Space,Str "dead,"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "Forgot",Space,Str "the",Space,Str "cry",Space,Str "of",Space,Str "gulls,",Space,Str "and",Space,Str "the",Space,Str "deep",Space,Str "sea",Space,Str "swell"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "And",Space,Str "the",Space,Str "profit",Space,Str "and",Space,Str "loss."]]]
-                                                 ,Div ("",["linegroup"],[])
-                                                  [Div ("",["indent2"],[])
-                                                   [Plain [Str "A",Space,Str "current",Space,Str "under",Space,Str "sea"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "Picked",Space,Str "his",Space,Str "bones",Space,Str "in",Space,Str "whispers.",Space,Str "As",Space,Str "he",Space,Str "rose",Space,Str "and",Space,Str "fell"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "He",Space,Str "passed",Space,Str "the",Space,Str "stages",Space,Str "of",Space,Str "his",Space,Str "age",Space,Str "and",Space,Str "youth"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "Entering",Space,Str "the",Space,Str "whirlpool."]]]
-                                                 ,Div ("",["linegroup"],[])
-                                                  [Div ("",["indent2"],[])
-                                                   [Plain [Str "Gentile",Space,Str "or",Space,Str "Jew"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "O",Space,Str "you",Space,Str "who",Space,Str "turn",Space,Str "the",Space,Str "wheel",Space,Str "and",Space,Str "look",Space,Str "to",Space,Str "windward,",Span ("",["lnum"],[]) [Str "320"]]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "Consider",Space,Str "Phlebas,",Space,Str "who",Space,Str "was",Space,Str "once",Space,Str "handsome",Space,Str "and",Space,Str "tall",Space,Str "as",Space,Str "you."]]]]
-                                                ,Div ("wasteland-content.xhtml#ch5",["section"],[])
-                                                 [Header 2 ("",[],[]) [Str "V.",Space,Str "WHAT",Space,Str "THE",Space,Str "THUNDER",Space,Str "SAID"]
-                                                 ,Div ("",["linegroup"],[])
-                                                  [Div ("",[],[])
-                                                   [Plain [Str "After",Space,Str "the",Space,Str "torchlight",Space,Str "red",Space,Str "on",Space,Str "sweaty",Space,Str "faces"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "After",Space,Str "the",Space,Str "frosty",Space,Str "silence",Space,Str "in",Space,Str "the",Space,Str "gardens"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "After",Space,Str "the",Space,Str "agony",Space,Str "in",Space,Str "stony",Space,Str "places"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "The",Space,Str "shouting",Space,Str "and",Space,Str "the",Space,Str "crying"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "Prison",Space,Str "and",Space,Str "palace",Space,Str "and",Space,Str "reverberation"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "Of",Space,Str "thunder",Space,Str "of",Space,Str "spring",Space,Str "over",Space,Str "distant",Space,Str "mountains"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "He",Space,Str "who",Space,Str "was",Space,Str "living",Space,Str "is",Space,Str "now",Space,Str "dead"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "We",Space,Str "who",Space,Str "were",Space,Str "living",Space,Str "are",Space,Str "now",Space,Str "dying"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "With",Space,Str "a",Space,Str "little",Space,Str "patience",Span ("",["lnum"],[]) [Str "330"]]]]
-                                                 ,Div ("",["linegroup"],[])
-                                                  [Div ("",[],[])
-                                                   [Plain [Str "Here",Space,Str "is",Space,Str "no",Space,Str "water",Space,Str "but",Space,Str "only",Space,Str "rock"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "Rock",Space,Str "and",Space,Str "no",Space,Str "water",Space,Str "and",Space,Str "the",Space,Str "sandy",Space,Str "road"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "The",Space,Str "road",Space,Str "winding",Space,Str "above",Space,Str "among",Space,Str "the",Space,Str "mountains"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "Which",Space,Str "are",Space,Str "mountains",Space,Str "of",Space,Str "rock",Space,Str "without",Space,Str "water"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "If",Space,Str "there",Space,Str "were",Space,Str "water",Space,Str "we",Space,Str "should",Space,Str "stop",Space,Str "and",Space,Str "drink"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "Amongst",Space,Str "the",Space,Str "rock",Space,Str "one",Space,Str "cannot",Space,Str "stop",Space,Str "or",Space,Str "think"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "Sweat",Space,Str "is",Space,Str "dry",Space,Str "and",Space,Str "feet",Space,Str "are",Space,Str "in",Space,Str "the",Space,Str "sand"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "If",Space,Str "there",Space,Str "were",Space,Str "only",Space,Str "water",Space,Str "amongst",Space,Str "the",Space,Str "rock"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "Dead",Space,Str "mountain",Space,Str "mouth",Space,Str "of",Space,Str "carious",Space,Str "teeth",Space,Str "that",Space,Str "cannot",Space,Str "spit"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "Here",Space,Str "one",Space,Str "can",Space,Str "neither",Space,Str "stand",Space,Str "nor",Space,Str "lie",Space,Str "nor",Space,Str "sit",Span ("",["lnum"],[]) [Str "340"]]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "There",Space,Str "is",Space,Str "not",Space,Str "even",Space,Str "silence",Space,Str "in",Space,Str "the",Space,Str "mountains"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "But",Space,Str "dry",Space,Str "sterile",Space,Str "thunder",Space,Str "without",Space,Str "rain"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "There",Space,Str "is",Space,Str "not",Space,Str "even",Space,Str "solitude",Space,Str "in",Space,Str "the",Space,Str "mountains"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "But",Space,Str "red",Space,Str "sullen",Space,Str "faces",Space,Str "sneer",Space,Str "and",Space,Str "snarl"]]
-                                                  ,Div ("",[],[])
-                                                   [Plain [Str "From",Space,Str "doors",Space,Str "of",Space,Str "mudcracked",Space,Str "houses"]]
-                                                  ,Div ("",["linegroup"],[])
-                                                   [Div ("",["indent2"],[])
-                                                    [Plain [Str "If",Space,Str "there",Space,Str "were",Space,Str "water"]]
-                                                   ,Div ("",[],[])
-                                                    [Plain [Str "And",Space,Str "no",Space,Str "rock"]]
-                                                   ,Div ("",[],[])
-                                                    [Plain [Str "If",Space,Str "there",Space,Str "were",Space,Str "rock"]]
-                                                   ,Div ("",[],[])
-                                                    [Plain [Str "And",Space,Str "also",Space,Str "water"]]
-                                                   ,Div ("",[],[])
-                                                    [Plain [Str "And",Space,Str "water",Span ("",["lnum"],[]) [Str "350"]]]
-                                                   ,Div ("",[],[])
-                                                    [Plain [Str "A",Space,Str "spring"]]
-                                                   ,Div ("",[],[])
-                                                    [Plain [Str "A",Space,Str "pool",Space,Str "among",Space,Str "the",Space,Str "rock"]]
-                                                   ,Div ("",[],[])
-                                                    [Plain [Str "If",Space,Str "there",Space,Str "were",Space,Str "the",Space,Str "sound",Space,Str "of",Space,Str "water",Space,Str "only"]]
-                                                   ,Div ("",[],[])
-                                                    [Plain [Str "Not",Space,Str "the",Space,Str "cicada"]]
-                                                   ,Div ("",[],[])
-                                                    [Plain [Str "And",Space,Str "dry",Space,Str "grass",Space,Str "singing"]]
-                                                   ,Div ("",[],[])
-                                                    [Plain [Str "But",Space,Str "sound",Space,Str "of",Space,Str "water",Space,Str "over",Space,Str "a",Space,Str "rock"]]
-                                                   ,Div ("wasteland-content.xhtml#ln357",[],[])
-                                                    [Plain [Str "Where",Space,Str "the",Space,Str "hermit-thrush",Space,Str "sings",Space,Str "in",Space,Str "the",Space,Str "pine",Space,Str "trees",Note [Para [Link ("",[],[]) [Str "357."] ("#wasteland-content.xhtml#ln357",""),Space,Str "This",Space,Str "is",Space,Str "Turdus",Space,Str "aonalaschkae",Space,Str "pallasii,",Space,Str "the",Space,Str "hermit-thrush",Space,Str "which",Space,Str "I",Space,Str "have",SoftBreak,Str "heard",Space,Str "in",Space,Str "Quebec",Space,Str "County.",Space,Str "Chapman",Space,Str "says",Space,Str "(Handbook",Space,Str "of",Space,Str "Birds",Space,Str "of",Space,Str "Eastern",Space,Str "North",SoftBreak,Str "America)",Space,Str "\"it",Space,Str "is",Space,Str "most",Space,Str "at",Space,Str "home",Space,Str "in",Space,Str "secluded",Space,Str "woodland",Space,Str "and",Space,Str "thickety",Space,Str "retreats.",SoftBreak,Str ".",Space,Str ".",Space,Str ".",Space,Str "Its",Space,Str "notes",Space,Str "are",Space,Str "not",Space,Str "remarkable",Space,Str "for",Space,Str "variety",Space,Str "or",Space,Str "volume,",Space,Str "but",Space,Str "in",Space,Str "purity",SoftBreak,Str "and",Space,Str "sweetness",Space,Str "of",Space,Str "tone",Space,Str "and",Space,Str "exquisite",Space,Str "modulation",Space,Str "they",Space,Str "are",Space,Str "unequalled.\"",Space,Str "Its",SoftBreak,Str "\"water-dripping",Space,Str "song\"",Space,Str "is",Space,Str "justly",Space,Str "celebrated."]]]
-                                                    ,Div ("",[],[])
-                                                     [Plain [Str "Drip",Space,Str "drop",Space,Str "drip",Space,Str "drop",Space,Str "drop",Space,Str "drop",Space,Str "drop"]]
-                                                    ,Div ("",[],[])
-                                                     [Plain [Str "But",Space,Str "there",Space,Str "is",Space,Str "no",Space,Str "water"]]]]
-                                                  ,Div ("",["linegroup"],[])
-                                                   [Div ("wasteland-content.xhtml#ln360",[],[])
-                                                    [Plain [Str "Who",Space,Str "is",Space,Str "the",Space,Str "third",Space,Str "who",Space,Str "walks",Space,Str "always",Space,Str "beside",Space,Str "you?",Note [Para [Link ("",[],[]) [Str "360."] ("#wasteland-content.xhtml#ln360",""),Space,Str "The",Space,Str "following",Space,Str "lines",Space,Str "were",Space,Str "stimulated",Space,Str "by",Space,Str "the",Space,Str "account",Space,Str "of",Space,Str "one",Space,Str "of",Space,Str "the",SoftBreak,Str "Antarctic",Space,Str "expeditions",Space,Str "(I",Space,Str "forget",Space,Str "which,",Space,Str "but",Space,Str "I",Space,Str "think",Space,Str "one",Space,Str "of",Space,Str "Shackleton's):",SoftBreak,Str "it",Space,Str "was",Space,Str "related",Space,Str "that",Space,Str "the",Space,Str "party",Space,Str "of",Space,Str "explorers,",Space,Str "at",Space,Str "the",Space,Str "extremity",Space,Str "of",Space,Str "their",SoftBreak,Str "strength,",Space,Str "had",Space,Str "the",Space,Str "constant",Space,Str "delusion",Space,Str "that",Space,Str "there",Space,Str "was",Space,Str "one",Space,Str "more",Space,Str "member",Space,Str "than",SoftBreak,Str "could",Space,Str "actually",Space,Str "be",Space,Str "counted."]]]
-                                                    ,Div ("",[],[])
-                                                     [Plain [Str "When",Space,Str "I",Space,Str "count,",Space,Str "there",Space,Str "are",Space,Str "only",Space,Str "you",Space,Str "and",Space,Str "I",Space,Str "together"]]
-                                                    ,Div ("",[],[])
-                                                     [Plain [Str "But",Space,Str "when",Space,Str "I",Space,Str "look",Space,Str "ahead",Space,Str "up",Space,Str "the",Space,Str "white",Space,Str "road"]]
-                                                    ,Div ("",[],[])
-                                                     [Plain [Str "There",Space,Str "is",Space,Str "always",Space,Str "another",Space,Str "one",Space,Str "walking",Space,Str "beside",Space,Str "you"]]
-                                                    ,Div ("",[],[])
-                                                     [Plain [Str "Gliding",Space,Str "wrapt",Space,Str "in",Space,Str "a",Space,Str "brown",Space,Str "mantle,",Space,Str "hooded"]]
-                                                    ,Div ("",[],[])
-                                                     [Plain [Str "I",Space,Str "do",Space,Str "not",Space,Str "know",Space,Str "whether",Space,Str "a",Space,Str "man",Space,Str "or",Space,Str "a",Space,Str "woman"]]
-                                                    ,Div ("wasteland-content.xhtml#ln367",[],[])
-                                                     [Plain [Str "\8213But",Space,Str "who",Space,Str "is",Space,Str "that",Space,Str "on",Space,Str "the",Space,Str "other",Space,Str "side",Space,Str "of",Space,Str "you?",Note [Para [Link ("",[],[]) [Str "367-77."] ("#wasteland-content.xhtml#ln367",""),Space,Str "Cf.",Space,Str "Hermann",Space,Str "Hesse,",Space,Str "Blick",Space,Str "ins",Space,Str "Chaos:"],BlockQuote [Para [Str "\"Schon",Space,Str "ist",Space,Str "halb",Space,Str "Europa,",Space,Str "schon",Space,Str "ist",Space,Str "zumindest",Space,Str "der",Space,Str "halbe",Space,Str "Osten",Space,Str "Europas",SoftBreak,Str "auf",Space,Str "dem",LineBreak,Str "Wege",Space,Str "zum",Space,Str "Chaos,",Space,Str "fhrt",Space,Str "betrunken",Space,Str "im",Space,Str "heiligem",Space,Str "Wahn",Space,Str "am",SoftBreak,Str "Abgrund",Space,Str "entlang",LineBreak,Str "und",Space,Str "singt",Space,Str "dazu,",Space,Str "singt",Space,Str "betrunken",Space,Str "und",Space,Str "hymnisch",SoftBreak,Str "wie",Space,Str "Dmitri",Space,Str "Karamasoff",Space,Str "sang.",LineBreak,Str "Ueber",Space,Str "diese",Space,Str "Lieder",Space,Str "lacht",Space,Str "der",SoftBreak,Str "Bsrger",Space,Str "beleidigt,",Space,Str "der",Space,Str "Heilige",LineBreak,Str "und",Space,Str "Seher",Space,Str "hrt",Space,Str "sie",Space,Str "mit",SoftBreak,Str "Trvnen.\""]]]]
-                                                     ,Div ("",["linegroup"],[])
-                                                      [Div ("",[],[])
-                                                       [Plain [Str "What",Space,Str "is",Space,Str "that",Space,Str "sound",Space,Str "high",Space,Str "in",Space,Str "the",Space,Str "air"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Murmur",Space,Str "of",Space,Str "maternal",Space,Str "lamentation"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Who",Space,Str "are",Space,Str "those",Space,Str "hooded",Space,Str "hordes",Space,Str "swarming"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Over",Space,Str "endless",Space,Str "plains,",Space,Str "stumbling",Space,Str "in",Space,Str "cracked",Space,Str "earth",Span ("",["lnum"],[]) [Str "370"]]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Ringed",Space,Str "by",Space,Str "the",Space,Str "flat",Space,Str "horizon",Space,Str "only"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "What",Space,Str "is",Space,Str "the",Space,Str "city",Space,Str "over",Space,Str "the",Space,Str "mountains"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Cracks",Space,Str "and",Space,Str "reforms",Space,Str "and",Space,Str "bursts",Space,Str "in",Space,Str "the",Space,Str "violet",Space,Str "air"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Falling",Space,Str "towers"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Jerusalem",Space,Str "Athens",Space,Str "Alexandria"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Vienna",Space,Str "London"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Unreal"]]]
-                                                     ,Div ("",["linegroup"],[])
-                                                      [Div ("",[],[])
-                                                       [Plain [Str "A",Space,Str "woman",Space,Str "drew",Space,Str "her",Space,Str "long",Space,Str "black",Space,Str "hair",Space,Str "out",Space,Str "tight"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "And",Space,Str "fiddled",Space,Str "whisper",Space,Str "music",Space,Str "on",Space,Str "those",Space,Str "strings"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "And",Space,Str "bats",Space,Str "with",Space,Str "baby",Space,Str "faces",Space,Str "in",Space,Str "the",Space,Str "violet",Space,Str "light",Span ("",["lnum"],[]) [Str "380"]]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Whistled,",Space,Str "and",Space,Str "beat",Space,Str "their",Space,Str "wings"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "And",Space,Str "crawled",Space,Str "head",Space,Str "downward",Space,Str "down",Space,Str "a",Space,Str "blackened",Space,Str "wall"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "And",Space,Str "upside",Space,Str "down",Space,Str "in",Space,Str "air",Space,Str "were",Space,Str "towers"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Tolling",Space,Str "reminiscent",Space,Str "bells,",Space,Str "that",Space,Str "kept",Space,Str "the",Space,Str "hours"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "And",Space,Str "voices",Space,Str "singing",Space,Str "out",Space,Str "of",Space,Str "empty",Space,Str "cisterns",Space,Str "and",Space,Str "exhausted",SoftBreak,Str "wells."]]]
-                                                     ,Div ("",["linegroup"],[])
-                                                      [Div ("",[],[])
-                                                       [Plain [Str "In",Space,Str "this",Space,Str "decayed",Space,Str "hole",Space,Str "among",Space,Str "the",Space,Str "mountains"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "In",Space,Str "the",Space,Str "faint",Space,Str "moonlight,",Space,Str "the",Space,Str "grass",Space,Str "is",Space,Str "singing"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Over",Space,Str "the",Space,Str "tumbled",Space,Str "graves,",Space,Str "about",Space,Str "the",Space,Str "chapel"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "There",Space,Str "is",Space,Str "the",Space,Str "empty",Space,Str "chapel,",Space,Str "only",Space,Str "the",Space,Str "wind's",Space,Str "home."]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "It",Space,Str "has",Space,Str "no",Space,Str "windows,",Space,Str "and",Space,Str "the",Space,Str "door",Space,Str "swings,",Span ("",["lnum"],[]) [Str "390"]]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Dry",Space,Str "bones",Space,Str "can",Space,Str "harm",Space,Str "no",Space,Str "one."]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Only",Space,Str "a",Space,Str "cock",Space,Str "stood",Space,Str "on",Space,Str "the",Space,Str "rooftree"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Co",Space,Str "co",Space,Str "rico",Space,Str "co",Space,Str "co",Space,Str "rico"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "In",Space,Str "a",Space,Str "flash",Space,Str "of",Space,Str "lightning.",Space,Str "Then",Space,Str "a",Space,Str "damp",Space,Str "gust"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Bringing",Space,Str "rain"]]]
-                                                     ,Div ("",["linegroup"],[])
-                                                      [Div ("",[],[])
-                                                       [Plain [Str "Ganga",Space,Str "was",Space,Str "sunken,",Space,Str "and",Space,Str "the",Space,Str "limp",Space,Str "leaves"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Waited",Space,Str "for",Space,Str "rain,",Space,Str "while",Space,Str "the",Space,Str "black",Space,Str "clouds"]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Gathered",Space,Str "far",Space,Str "distant,",Space,Str "over",Space,Str "Himavant."]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "The",Space,Str "jungle",Space,Str "crouched,",Space,Str "humped",Space,Str "in",Space,Str "silence."]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "Then",Space,Str "spoke",Space,Str "the",Space,Str "thunder",Span ("",["lnum"],[]) [Str "400"]]]
-                                                      ,Div ("",[],[])
-                                                       [Plain [Str "DA"]]
-                                                      ,Div ("wasteland-content.xhtml#ln402",[],[])
-                                                       [Plain [Span ("",[],[("lang","sa")]) [Str "Datta"],Str ":",Space,Str "what",Space,Str "have",Space,Str "we",Space,Str "given?",Note [Para [Link ("",[],[]) [Str "402."] ("#wasteland-content.xhtml#ln402",""),Space,Quoted DoubleQuote [Str "\"Datta,",Space,Str "dayadhvam,",Space,Str "damyata\""],Space,Str "(Give,",Space,Str "sympathize,",SoftBreak,Str "control).",Space,Str "The",Space,Str "fable",Space,Str "of",Space,Str "the",Space,Str "meaning",Space,Str "of",Space,Str "the",Space,Str "Thunder",Space,Str "is",Space,Str "found",Space,Str "in",Space,Str "the",SoftBreak,Str "Brihadaranyaka-Upanishad,",Space,Str "5,",Space,Str "1.",Space,Str "A",Space,Str "translation",Space,Str "is",Space,Str "found",Space,Str "in",Space,Str "Deussen's",SoftBreak,Str "Sechzig",Space,Str "Upanishads",Space,Str "des",Space,Str "Veda,",Space,Str "p.",Space,Str "489."]]]
-                                                       ,Div ("",[],[])
-                                                        [Plain [Str "My",Space,Str "friend,",Space,Str "blood",Space,Str "shaking",Space,Str "my",Space,Str "heart"]]
-                                                       ,Div ("",[],[])
-                                                        [Plain [Str "The",Space,Str "awful",Space,Str "daring",Space,Str "of",Space,Str "a",Space,Str "moment's",Space,Str "surrender"]]
-                                                       ,Div ("",[],[])
-                                                        [Plain [Str "Which",Space,Str "an",Space,Str "age",Space,Str "of",Space,Str "prudence",Space,Str "can",Space,Str "never",Space,Str "retract"]]
-                                                       ,Div ("",[],[])
-                                                        [Plain [Str "By",Space,Str "this,",Space,Str "and",Space,Str "this",Space,Str "only,",Space,Str "we",Space,Str "have",Space,Str "existed"]]
-                                                       ,Div ("",[],[])
-                                                        [Plain [Str "Which",Space,Str "is",Space,Str "not",Space,Str "to",Space,Str "be",Space,Str "found",Space,Str "in",Space,Str "our",Space,Str "obituaries"]]
-                                                       ,Div ("wasteland-content.xhtml#ln408",[],[])
-                                                        [Plain [Str "Or",Space,Str "in",Space,Str "memories",Space,Str "draped",Space,Str "by",Space,Str "the",Space,Str "beneficent",Space,Str "spider",Note [Para [Link ("",[],[]) [Str "408."] ("#wasteland-content.xhtml#ln408",""),Space,Str "Cf.",Space,Str "Webster,",Space,Str "The",Space,Str "White",Space,Str "Devil,",Space,Str "v.",Space,Str "vi:"],BlockQuote [Para [Str "\".",Space,Str ".",Space,Str ".",Space,Str "they'll",Space,Str "remarry",LineBreak,Str "Ere",Space,Str "the",Space,Str "worm",Space,Str "pierce",Space,Str "your",Space,Str "winding-sheet,",SoftBreak,Str "ere",Space,Str "the",Space,Str "spider",LineBreak,Str "Make",Space,Str "a",Space,Str "thin",Space,Str "curtain",Space,Str "for",Space,Str "your",Space,Str "epitaphs.\""]]]]
-                                                        ,Div ("",[],[])
-                                                         [Plain [Str "Or",Space,Str "under",Space,Str "seals",Space,Str "broken",Space,Str "by",Space,Str "the",Space,Str "lean",Space,Str "solicitor"]]
-                                                        ,Div ("",[],[])
-                                                         [Plain [Str "In",Space,Str "our",Space,Str "empty",Space,Str "rooms",Span ("",["lnum"],[]) [Str "410"]]]
-                                                        ,Div ("",[],[])
-                                                         [Plain [Str "DA"]]
-                                                        ,Div ("wasteland-content.xhtml#ln412",[],[])
-                                                         [Plain [Span ("",[],[("lang","sa")]) [Str "Dayadhvam"],Str ":",Space,Str "I",Space,Str "have",Space,Str "heard",Space,Str "the",Space,Str "key",Note [Para [Link ("",[],[]) [Str "412."] ("#wasteland-content.xhtml#ln412",""),Space,Str "Cf.",Space,Str "Inferno,",Space,Str "xxxiii.",Space,Str "46:"],BlockQuote [Para [Str "\"ed",Space,Str "io",Space,Str "sentii",Space,Str "chiavar",Space,Str "l'uscio",Space,Str "di",Space,Str "sotto",LineBreak,Str "all'orribile",Space,Str "torre.\""]],Para [Str "Also",Space,Str "F.",Space,Str "H.",Space,Str "Bradley,",Space,Str "Appearance",Space,Str "and",Space,Str "Reality,",Space,Str "p.",Space,Str "346:"],BlockQuote [Para [Str "\"My",Space,Str "external",Space,Str "sensations",Space,Str "are",Space,Str "no",Space,Str "less",Space,Str "private",Space,Str "to",Space,Str "myself",Space,Str "than",Space,Str "are",Space,Str "my",SoftBreak,Str "thoughts",Space,Str "or",Space,Str "my",Space,Str "feelings.",Space,Str "In",Space,Str "either",Space,Str "case",Space,Str "my",Space,Str "experience",Space,Str "falls",Space,Str "within",SoftBreak,Str "my",Space,Str "own",Space,Str "circle,",Space,Str "a",Space,Str "circle",Space,Str "closed",Space,Str "on",Space,Str "the",Space,Str "outside;",Space,Str "and,",Space,Str "with",Space,Str "all",Space,Str "its",SoftBreak,Str "elements",Space,Str "alike,",Space,Str "every",Space,Str "sphere",Space,Str "is",Space,Str "opaque",Space,Str "to",Space,Str "the",Space,Str "others",Space,Str "which",Space,Str "surround",SoftBreak,Str "it.",Space,Str ".",Space,Str ".",Space,Str ".",Space,Str "In",Space,Str "brief,",Space,Str "regarded",Space,Str "as",Space,Str "an",Space,Str "existence",Space,Str "which",Space,Str "appears",Space,Str "in",Space,Str "a",SoftBreak,Str "soul,",Space,Str "the",Space,Str "whole",Space,Str "world",Space,Str "for",Space,Str "each",Space,Str "is",Space,Str "peculiar",Space,Str "and",Space,Str "private",Space,Str "to",Space,Str "that",SoftBreak,Str "soul.\""]]]]
-                                                         ,Div ("",[],[])
-                                                          [Plain [Str "Turn",Space,Str "in",Space,Str "the",Space,Str "door",Space,Str "once",Space,Str "and",Space,Str "turn",Space,Str "once",Space,Str "only"]]
-                                                         ,Div ("",[],[])
-                                                          [Plain [Str "We",Space,Str "think",Space,Str "of",Space,Str "the",Space,Str "key,",Space,Str "each",Space,Str "in",Space,Str "his",Space,Str "prison"]]
-                                                         ,Div ("",[],[])
-                                                          [Plain [Str "Thinking",Space,Str "of",Space,Str "the",Space,Str "key,",Space,Str "each",Space,Str "confirms",Space,Str "a",Space,Str "prison"]]
-                                                         ,Div ("",[],[])
-                                                          [Plain [Str "Only",Space,Str "at",Space,Str "nightfall,",Space,Str "aetherial",Space,Str "rumours"]]
-                                                         ,Div ("",[],[])
-                                                          [Plain [Str "Revive",Space,Str "for",Space,Str "a",Space,Str "moment",Space,Str "a",Space,Str "broken",Space,Str "Coriolanus"]]
-                                                         ,Div ("",[],[])
-                                                          [Plain [Str "DA"]]
-                                                         ,Div ("",[],[])
-                                                          [Plain [Span ("",[],[("lang","sa")]) [Str "Damyata"],Str ":",Space,Str "The",Space,Str "boat",Space,Str "responded"]]
-                                                         ,Div ("",[],[])
-                                                          [Plain [Str "Gaily,",Space,Str "to",Space,Str "the",Space,Str "hand",Space,Str "expert",Space,Str "with",Space,Str "sail",Space,Str "and",Space,Str "oar",Span ("",["lnum"],[]) [Str "420"]]]
-                                                         ,Div ("",[],[])
-                                                          [Plain [Str "The",Space,Str "sea",Space,Str "was",Space,Str "calm,",Space,Str "your",Space,Str "heart",Space,Str "would",Space,Str "have",Space,Str "responded"]]
-                                                         ,Div ("",[],[])
-                                                          [Plain [Str "Gaily,",Space,Str "when",Space,Str "invited,",Space,Str "beating",Space,Str "obedient"]]
-                                                         ,Div ("",[],[])
-                                                          [Plain [Str "To",Space,Str "controlling",Space,Str "hands"]]]
-                                                        ,Div ("",["linegroup"],[])
-                                                         [Div ("",["indent"],[])
-                                                          [Plain [Str "I",Space,Str "sat",Space,Str "upon",Space,Str "the",Space,Str "shore"]]
-                                                         ,Div ("wasteland-content.xhtml#ln425",[],[])
-                                                          [Plain [Str "Fishing,",Space,Str "with",Space,Str "the",Space,Str "arid",Space,Str "plain",Space,Str "behind",Space,Str "me",Note [Para [Link ("",[],[]) [Str "425."] ("#wasteland-content.xhtml#ln425",""),Space,Str "V.",Space,Str "Weston,",Space,Str "From",Space,Str "Ritual",Space,Str "to",Space,Str "Romance;",Space,Str "chapter",Space,Str "on",Space,Str "the",Space,Str "Fisher",Space,Str "King."]]]
-                                                          ,Div ("",[],[])
-                                                           [Plain [Str "Shall",Space,Str "I",Space,Str "at",Space,Str "least",Space,Str "set",Space,Str "my",Space,Str "lands",Space,Str "in",Space,Str "order?"]]
-                                                          ,Div ("",[],[])
-                                                           [Plain [Str "London",Space,Str "Bridge",Space,Str "is",Space,Str "falling",Space,Str "down",Space,Str "falling",Space,Str "down",Space,Str "falling",Space,Str "down"]]
-                                                          ,Div ("wasteland-content.xhtml#ln428",[],[("lang","it")])
-                                                           [Plain [Emph [Str "Poi",Space,Str "s'ascose",Space,Str "nel",Space,Str "foco",Space,Str "che",Space,Str "gli",Space,Str "affina"],SoftBreak,Note [Para [Link ("",[],[]) [Str "428."] ("#wasteland-content.xhtml#ln428",""),Space,Str "V.",Space,Str "Purgatorio,",Space,Str "xxvi.",Space,Str "148."],BlockQuote [Para [Str "\"'Ara",Space,Str "vos",Space,Str "prec",Space,Str "per",Space,Str "aquella",Space,Str "valor",LineBreak,Str "'que",Space,Str "vos",Space,Str "guida",Space,Str "al",Space,Str "som",Space,Str "de",SoftBreak,Str "l'escalina,",LineBreak,Str "'sovegna",Space,Str "vos",Space,Str "a",Space,Str "temps",Space,Str "de",Space,Str "ma",Space,Str "dolor.'",LineBreak,Str "Poi",SoftBreak,Str "s'ascose",Space,Str "nel",Space,Str "foco",Space,Str "che",Space,Str "gli",Space,Str "affina.\""]]]]
-                                                           ,Div ("wasteland-content.xhtml#ln429",[],[])
-                                                            [Plain [Span ("",[],[("lang","it")]) [SoftBreak,Emph [Str "Quando",Space,Str "fiam",Space,Str "ceu",Space,Str "chelidon"],SoftBreak],Space,Str "-",Space,Str "O",Space,Str "swallow",Space,Str "swallow",Note [Para [Link ("",[],[]) [Str "429."] ("#wasteland-content.xhtml#ln429",""),Space,Str "V.",Space,Str "Pervigilium",Space,Str "Veneris.",Space,Str "Cf.",Space,Str "Philomela",Space,Str "in",Space,Str "Parts",Space,Str "II",Space,Str "and",Space,Str "III."]]]
-                                                            ,Div ("wasteland-content.xhtml#ln430",[],[("lang","fr")])
-                                                             [Plain [Emph [Str "Le",Space,Str "Prince",Space,Str "d'Aquitaine",Space,Str "a",Space,Str "la",Space,Str "tour",Space,Str "abolie"],SoftBreak,Note [Para [Link ("",[],[]) [Str "430."] ("#wasteland-content.xhtml#ln430",""),Space,Str "V.",Space,Str "Gerard",Space,Str "de",Space,Str "Nerval,",Space,Str "Sonnet",Space,Str "El",Space,Str "Desdichado."]]]
-                                                             ,Div ("",[],[])
-                                                              [Plain [Str "These",Space,Str "fragments",Space,Str "I",Space,Str "have",Space,Str "shored",Space,Str "against",Space,Str "my",Space,Str "ruins"]]
-                                                             ,Div ("wasteland-content.xhtml#ln432",[],[])
-                                                              [Plain [Str "Why",Space,Str "then",Space,Str "Ile",Space,Str "fit",Space,Str "you.",Space,Str "Hieronymo's",Space,Str "mad",Space,Str "againe.",Note [Para [Link ("",[],[]) [Str "432."] ("#wasteland-content.xhtml#ln432",""),Space,Str "V.",Space,Str "Kyd's",Space,Str "Spanish",Space,Str "Tragedy."]]]
-                                                              ,Div ("",[],[("lang","sa")])
-                                                               [Plain [Str "Datta.",Space,Str "Dayadhvam.",Space,Str "Damyata."]]
-                                                              ,Div ("wasteland-content.xhtml#ln434",["linegroup","indent"],[])
-                                                               [Plain [Span ("",[],[("lang","sa")]) [Str "Shantih",Space,Str "shantih",Space,Str "shantih",Note [Para [Link ("",[],[]) [Str "434."] ("#wasteland-content.xhtml#ln434",""),Space,Str "Shantih.",Space,Str "Repeated",Space,Str "as",Space,Str "here,",Space,Str "a",Space,Str "formal",Space,Str "ending",Space,Str "to",Space,Str "an",Space,Str "Upanishad.",Space,Str "'The",SoftBreak,Str "Peace",Space,Str "which",Space,Str "passeth",Space,Str "understanding'",Space,Str "is",Space,Str "a",Space,Str "feeble",Space,Str "translation",Space,Str "of",Space,Str "the",SoftBreak,Str "content",Space,Str "of",Space,Str "this",Space,Str "word."]]]]
-                                                               ,Div ("wasteland-content.xhtml#backmatter",["section"],[("type","backmatter")])
-                                                                [Div ("wasteland-content.xhtml#rearnotes",["section"],[("type","rearnotes")])
-                                                                 [Header 2 ("",[],[]) [Str "NOTES",Space,Str "ON",Space,Str "\"THE",Space,Str "WASTE",Space,Str "LAND\""]
-                                                                 ,Para [Str "Not",Space,Str "only",Space,Str "the",Space,Str "title,",Space,Str "but",Space,Str "the",Space,Str "plan",Space,Str "and",Space,Str "a",Space,Str "good",Space,Str "deal",Space,Str "of",Space,Str "the",Space,Str "incidental",Space,Str "symbolism",Space,Str "of",SoftBreak,Str "the",Space,Str "poem",Space,Str "were",Space,Str "suggested",Space,Str "by",Space,Str "Miss",Space,Str "Jessie",Space,Str "L.",Space,Str "Weston's",Space,Str "book",Space,Str "on",Space,Str "the",Space,Str "Grail",Space,Str "legend:",SoftBreak,Str "From",Space,Str "Ritual",Space,Str "to",Space,Str "Romance"]
-                                                                 ,Para [Str "Indeed,",Space,Str "so",Space,Str "deeply",Space,Str "am",Space,Str "I",Space,Str "indebted,",Space,Str "Miss",Space,Str "Weston's",Space,Str "book",Space,Str "will",Space,Str "elucidate",Space,Str "the",SoftBreak,Str "difficulties",Space,Str "of",Space,Str "the",Space,Str "poem",Space,Str "much",Space,Str "better",Space,Str "than",Space,Str "my",Space,Str "notes",Space,Str "can",Space,Str "do;",Space,Str "and",Space,Str "I",Space,Str "recommend",Space,Str "it",SoftBreak,Str "(apart",Space,Str "from",Space,Str "the",Space,Str "great",Space,Str "interest",Space,Str "of",Space,Str "the",Space,Str "book",Space,Str "itself)",Space,Str "to",Space,Str "any",Space,Str "who",Space,Str "think",Space,Str "such",SoftBreak,Str "elucidation",Space,Str "of",Space,Str "the",Space,Str "poem",Space,Str "worth",Space,Str "the",Space,Str "trouble.",Space,Str "To",Space,Str "another",Space,Str "work",Space,Str "of",Space,Str "anthropology",Space,Str "I",Space,Str "am",SoftBreak,Str "indebted",Space,Str "in",Space,Str "general,",Space,Str "one",Space,Str "which",Space,Str "has",Space,Str "influenced",Space,Str "our",Space,Str "generation",Space,Str "profoundly;",Space,Str "I",Space,Str "mean",SoftBreak,Str "The",Space,Str "Golden",Space,Str "Bough;",Space,Str "I",Space,Str "have",Space,Str "used",Space,Str "especially",Space,Str "the",Space,Str "two",Space,Str "volumes",Space,Str "Adonis,",Space,Str "Attis,",Space,Str "Osiris.",SoftBreak,Str "Anyone",Space,Str "who",Space,Str "is",Space,Str "acquainted",Space,Str "with",Space,Str "these",Space,Str "works",Space,Str "will",Space,Str "immediately",Space,Str "recognise",Space,Str "in",Space,Str "the",Space,Str "poem",SoftBreak,Str "certain",Space,Str "references",Space,Str "to",Space,Str "vegetation",Space,Str "ceremonies."]
-                                                                 ,Div ("",["section"],[])
-                                                                  [Header 3 ("",[],[]) [Str "I.",Space,Str "THE",Space,Str "BURIAL",Space,Str "OF",Space,Str "THE",Space,Str "DEAD"]]
-                                                                 ,Div ("",["section"],[])
-                                                                  [Header 3 ("",[],[]) [Str "II.",Space,Str "A",Space,Str "GAME",Space,Str "OF",Space,Str "CHESS"]]
-                                                                 ,Div ("",["section"],[])
-                                                                  [Header 3 ("",[],[]) [Str "III.",Space,Str "THE",Space,Str "FIRE",Space,Str "SERMON"]]
-                                                                 ,Div ("",["section"],[])
-                                                                  [Header 3 ("",[],[]) [Str "V.",Space,Str "WHAT",Space,Str "THE",Space,Str "THUNDER",Space,Str "SAID"]
-                                                                  ,Para [Str "In",Space,Str "the",Space,Str "first",Space,Str "part",Space,Str "of",Space,Str "Part",Space,Str "V",Space,Str "three",Space,Str "themes",Space,Str "are",Space,Str "employed:",Space,Str "the",Space,Str "journey",Space,Str "to",Space,Str "Emmaus,",SoftBreak,Str "the",Space,Str "approach",Space,Str "to",Space,Str "the",Space,Str "Chapel",Space,Str "Perilous",Space,Str "(see",Space,Str "Miss",Space,Str "Weston's",Space,Str "book)",Space,Str "and",Space,Str "the",Space,Str "present",SoftBreak,Str "decay",Space,Str "of",Space,Str "eastern",Space,Str "Europe."]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
+    [Plain [Str "Out",Space,Str "of",Space,Str "this",Space,Str "stony",Space,Str "rubbish?",Space,Str "Son",Space,Str "of",Space,Str "man,",Note [Para [Link ("",[],[]) [Str "Line",Space,Str "20."] ("#wasteland-content.xhtml#ln20",""),Space,Str "Cf.",Space,Str "Ezekiel",Space,Str "2:1."]],Span ("",["lnum"],[]) [Str "20"]]]
+   ,Div ("",[],[])
+    [Plain [Str "You",Space,Str "cannot",Space,Str "say,",Space,Str "or",Space,Str "guess,",Space,Str "for",Space,Str "you",Space,Str "know",Space,Str "only"]]
+   ,Div ("",[],[])
+    [Plain [Str "A",Space,Str "heap",Space,Str "of",Space,Str "broken",Space,Str "images,",Space,Str "where",Space,Str "the",Space,Str "sun",Space,Str "beats,"]]
+   ,Div ("wasteland-content.xhtml#ln23",[],[])
+    [Plain [Str "And",Space,Str "the",Space,Str "dead",Space,Str "tree",Space,Str "gives",Space,Str "no",Space,Str "shelter,",Space,Str "the",Space,Str "cricket",Space,Str "no",Space,Str "relief,",Note [Para [Link ("",[],[]) [Str "23."] ("#wasteland-content.xhtml#ln23",""),Space,Str "Cf.",Space,Str "Ecclesiastes",Space,Str "12:5."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "the",Space,Str "dry",Space,Str "stone",Space,Str "no",Space,Str "sound",Space,Str "of",Space,Str "water.",Space,Str "Only"]]
+   ,Div ("",[],[])
+    [Plain [Str "There",Space,Str "is",Space,Str "shadow",Space,Str "under",Space,Str "this",Space,Str "red",Space,Str "rock,"]]
+   ,Div ("",[],[])
+    [Plain [Str "(Come",Space,Str "in",Space,Str "under",Space,Str "the",Space,Str "shadow",Space,Str "of",Space,Str "this",Space,Str "red",Space,Str "rock),"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "I",Space,Str "will",Space,Str "show",Space,Str "you",Space,Str "something",Space,Str "different",Space,Str "from",Space,Str "either"]]
+   ,Div ("",[],[])
+    [Plain [Str "Your",Space,Str "shadow",Space,Str "at",Space,Str "morning",Space,Str "striding",Space,Str "behind",Space,Str "you"]]
+   ,Div ("",[],[])
+    [Plain [Str "Or",Space,Str "your",Space,Str "shadow",Space,Str "at",Space,Str "evening",Space,Str "rising",Space,Str "to",Space,Str "meet",Space,Str "you;"]]
+   ,Div ("",[],[])
+    [Plain [Str "I",Space,Str "will",Space,Str "show",Space,Str "you",Space,Str "fear",Space,Str "in",Space,Str "a",Space,Str "handful",Space,Str "of",Space,Str "dust.",Span ("",["lnum"],[]) [Str "30"]]]
+   ,BlockQuote
+    [Div ("",[],[])
+     [Div ("wasteland-content.xhtml#ln31",[],[])
+      [Plain [Str "Frisch",Space,Str "weht",Space,Str "der",Space,Str "Wind",Note [Para [Link ("",[],[]) [Str "31."] ("#wasteland-content.xhtml#ln31",""),Space,Str "V.",Space,Str "Tristan",Space,Str "und",Space,Str "Isolde,",Space,Str "i,",Space,Str "verses",Space,Str "5-8."]]]]
+     ,Div ("",[],[])
+      [Plain [Str "Der",Space,Str "Heimat",Space,Str "zu"]]
+     ,Div ("",[],[])
+      [Plain [Str "Mein",Space,Str "Irisch",Space,Str "Kind,"]]
+     ,Div ("",[],[])
+      [Plain [Str "Wo",Space,Str "weilest",Space,Str "du?"]]]]
+   ,Div ("",[],[])
+    [Plain [Str "\"You",Space,Str "gave",Space,Str "me",Space,Str "hyacinths",Space,Str "first",Space,Str "a",Space,Str "year",Space,Str "ago;"]]
+   ,Div ("",[],[])
+    [Plain [Str "\"They",Space,Str "called",Space,Str "me",Space,Str "the",Space,Str "hyacinth",Space,Str "girl.\""]]
+   ,Div ("",[],[])
+    [Plain [Str "\8213Yet",Space,Str "when",Space,Str "we",Space,Str "came",Space,Str "back,",Space,Str "late,",Space,Str "from",Space,Str "the",Space,Str "Hyacinth",SoftBreak,Str "garden,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Your",Space,Str "arms",Space,Str "full,",Space,Str "and",Space,Str "your",Space,Str "hair",Space,Str "wet,",Space,Str "I",Space,Str "could",Space,Str "not"]]
+   ,Div ("",[],[])
+    [Plain [Str "Speak,",Space,Str "and",Space,Str "my",Space,Str "eyes",Space,Str "failed,",Space,Str "I",Space,Str "was",Space,Str "neither"]]
+   ,Div ("",[],[])
+    [Plain [Str "Living",Space,Str "nor",Space,Str "dead,",Space,Str "and",Space,Str "I",Space,Str "knew",Space,Str "nothing,",Span ("",["lnum"],[]) [Str "40"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Looking",Space,Str "into",Space,Str "the",Space,Str "heart",Space,Str "of",Space,Str "light,",Space,Str "the",Space,Str "silence."]]
+   ,Div ("wasteland-content.xhtml#ln42",[],[("lang","de")])
+    [Plain [Emph [Str "Od'",Space,Str "und",Space,Str "leer",Space,Str "das",Space,Str "Meer"],Str ".",Note [Para [Link ("",[],[]) [Str "42."] ("#wasteland-content.xhtml#ln42",""),Space,Str "Id.",Space,Str "iii,",Space,Str "verse",Space,Str "24."]]]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "Madame",Space,Str "Sosostris,",Space,Str "famous",Space,Str "clairvoyante,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Had",Space,Str "a",Space,Str "bad",Space,Str "cold,",Space,Str "nevertheless"]]
+   ,Div ("",[],[])
+    [Plain [Str "Is",Space,Str "known",Space,Str "to",Space,Str "be",Space,Str "the",Space,Str "wisest",Space,Str "woman",Space,Str "in",Space,Str "Europe,"]]
+   ,Div ("wasteland-content.xhtml#ln46",[],[])
+    [Plain [Str "With",Space,Str "a",Space,Str "wicked",Space,Str "pack",Space,Str "of",Space,Str "cards.",Space,Str "Here,",Space,Str "said",Space,Str "she,",Note [Para [Link ("",[],[]) [Str "46."] ("#wasteland-content.xhtml#ln46",""),Space,Str "I",Space,Str "am",Space,Str "not",Space,Str "familiar",Space,Str "with",Space,Str "the",Space,Str "exact",Space,Str "constitution",Space,Str "of",Space,Str "the",Space,Str "Tarot",Space,Str "pack",Space,Str "of",SoftBreak,Str "cards,",Space,Str "from",Space,Str "which",Space,Str "I",Space,Str "have",Space,Str "obviously",Space,Str "departed",Space,Str "to",Space,Str "suit",Space,Str "my",Space,Str "own",Space,Str "convenience.",SoftBreak,Str "The",Space,Str "Hanged",Space,Str "Man,",Space,Str "a",Space,Str "member",Space,Str "of",Space,Str "the",Space,Str "traditional",Space,Str "pack,",Space,Str "fits",Space,Str "my",Space,Str "purpose",Space,Str "in",Space,Str "two",SoftBreak,Str "ways:",Space,Str "because",Space,Str "he",Space,Str "is",Space,Str "associated",Space,Str "in",Space,Str "my",Space,Str "mind",Space,Str "with",Space,Str "the",Space,Str "Hanged",Space,Str "God",Space,Str "of",Space,Str "Frazer,",SoftBreak,Str "and",Space,Str "because",Space,Str "I",Space,Str "associate",Space,Str "him",Space,Str "with",Space,Str "the",Space,Str "hooded",Space,Str "figure",Space,Str "in",Space,Str "the",Space,Str "passage",Space,Str "of",Space,Str "the",SoftBreak,Str "disciples",Space,Str "to",Space,Str "Emmaus",Space,Str "in",Space,Str "Part",Space,Str "V.",Space,Str "The",Space,Str "Phoenician",Space,Str "Sailor",Space,Str "and",Space,Str "the",Space,Str "Merchant",SoftBreak,Str "appear",Space,Str "later;",Space,Str "also",Space,Str "the",Space,Str "\"crowds",Space,Str "of",Space,Str "people,\"",Space,Str "and",Space,Str "Death",Space,Str "by",Space,Str "Water",Space,Str "is",SoftBreak,Str "executed",Space,Str "in",Space,Str "Part",Space,Str "IV.",Space,Str "The",Space,Str "Man",Space,Str "with",Space,Str "Three",Space,Str "Staves",Space,Str "(an",Space,Str "authentic",Space,Str "member",Space,Str "of",SoftBreak,Str "the",Space,Str "Tarot",Space,Str "pack)",Space,Str "I",Space,Str "associate,",Space,Str "quite",Space,Str "arbitrarily,",Space,Str "with",Space,Str "the",Space,Str "Fisher",Space,Str "King",SoftBreak,Str "himself."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Is",Space,Str "your",Space,Str "card,",Space,Str "the",Space,Str "drowned",Space,Str "Phoenician",Space,Str "Sailor,"]]
+   ,Div ("",[],[])
+    [Plain [Str "(Those",Space,Str "are",Space,Str "pearls",Space,Str "that",Space,Str "were",Space,Str "his",Space,Str "eyes.",Space,Str "Look!)"]]
+   ,Div ("",[],[])
+    [Plain [Str "Here",Space,Str "is",Space,Str "Belladonna,",Space,Str "the",Space,Str "Lady",Space,Str "of",Space,Str "the",Space,Str "Rocks,"]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "lady",Space,Str "of",Space,Str "situations.",Span ("",["lnum"],[]) [Str "50"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Here",Space,Str "is",Space,Str "the",Space,Str "man",Space,Str "with",Space,Str "three",Space,Str "staves,",Space,Str "and",Space,Str "here",Space,Str "the",Space,Str "Wheel,"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "here",Space,Str "is",Space,Str "the",Space,Str "one-eyed",Space,Str "merchant,",Space,Str "and",Space,Str "this",Space,Str "card,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Which",Space,Str "is",Space,Str "blank,",Space,Str "is",Space,Str "something",Space,Str "he",Space,Str "carries",Space,Str "on",Space,Str "his",Space,Str "back,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Which",Space,Str "I",Space,Str "am",Space,Str "forbidden",Space,Str "to",Space,Str "see.",Space,Str "I",Space,Str "do",Space,Str "not",Space,Str "find"]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "Hanged",Space,Str "Man.",Space,Str "Fear",Space,Str "death",Space,Str "by",Space,Str "water."]]
+   ,Div ("",[],[])
+    [Plain [Str "I",Space,Str "see",Space,Str "crowds",Space,Str "of",Space,Str "people,",Space,Str "walking",Space,Str "round",Space,Str "in",Space,Str "a",Space,Str "ring."]]
+   ,Div ("",[],[])
+    [Plain [Str "Thank",Space,Str "you.",Space,Str "If",Space,Str "you",Space,Str "see",Space,Str "dear",Space,Str "Mrs.",Space,Str "Equitone,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Tell",Space,Str "her",Space,Str "I",Space,Str "bring",Space,Str "the",Space,Str "horoscope",Space,Str "myself:"]]
+   ,Div ("",[],[])
+    [Plain [Str "One",Space,Str "must",Space,Str "be",Space,Str "so",Space,Str "careful",Space,Str "these",Space,Str "days."]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("wasteland-content.xhtml#ln60",[],[])
+    [Plain [Str "Unreal",Space,Str "City,",Note [Para [Link ("",[],[]) [Str "60."] ("#wasteland-content.xhtml#ln60",""),Space,Str "Cf.",Space,Str "Baudelaire:"],BlockQuote [Para [Str "\"Fourmillante",Space,Str "cite;,",Space,Str "cite;",Space,Str "pleine",Space,Str "de",Space,Str "reves,",LineBreak,Str "Ou",Space,Str "le",Space,Str "spectre",Space,Str "en",SoftBreak,Str "plein",Space,Str "jour",Space,Str "raccroche",Space,Str "le",Space,Str "passant.\""]]],Span ("",["lnum"],[]) [Str "60"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Under",Space,Str "the",Space,Str "brown",Space,Str "fog",Space,Str "of",Space,Str "a",Space,Str "winter",Space,Str "dawn,"]]
+   ,Div ("",[],[])
+    [Plain [Str "A",Space,Str "crowd",Space,Str "flowed",Space,Str "over",Space,Str "London",Space,Str "Bridge,",Space,Str "so",Space,Str "many,"]]
+   ,Div ("wasteland-content.xhtml#ln63",[],[])
+    [Plain [Str "I",Space,Str "had",Space,Str "not",Space,Str "thought",Space,Str "death",Space,Str "had",Space,Str "undone",Space,Str "so",Space,Str "many.",Note [Para [Link ("",[],[]) [Str "63."] ("#wasteland-content.xhtml#ln63",""),Space,Str "Cf.",Space,Str "Inferno,",Space,Str "iii.",Space,Str "55-7."],BlockQuote [Para [Str "\"si",Space,Str "lunga",Space,Str "tratta",LineBreak,Str "di",Space,Str "gente,",Space,Str "ch'io",Space,Str "non",Space,Str "avrei",Space,Str "mai",Space,Str "creduto",LineBreak,Str "che",SoftBreak,Str "morte",Space,Str "tanta",Space,Str "n'avesse",Space,Str "disfatta.\""]]]]]
+   ,Div ("wasteland-content.xhtml#ln64",[],[])
+    [Plain [Str "Sighs,",Space,Str "short",Space,Str "and",Space,Str "infrequent,",Space,Str "were",Space,Str "exhaled,",Note [Para [Link ("",[],[]) [Str "64."] ("#wasteland-content.xhtml#ln64",""),Space,Str "Cf.",Space,Str "Inferno,",Space,Str "iv.",Space,Str "25-7:"],BlockQuote [Para [Str "\"Quivi,",Space,Str "secondo",Space,Str "che",Space,Str "per",Space,Str "ascoltahre,",LineBreak,Str "\"non",Space,Str "avea",Space,Str "pianto,",Space,Str "ma'",Space,Str "che",Space,Str "di",SoftBreak,Str "sospiri,",LineBreak,Str "\"che",Space,Str "l'aura",Space,Str "eterna",Space,Str "facevan",Space,Str "tremare.\""]]]]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "each",Space,Str "man",Space,Str "fixed",Space,Str "his",Space,Str "eyes",Space,Str "before",Space,Str "his",Space,Str "feet."]]
+   ,Div ("",[],[])
+    [Plain [Str "Flowed",Space,Str "up",Space,Str "the",Space,Str "hill",Space,Str "and",Space,Str "down",Space,Str "King",Space,Str "William",Space,Str "Street,"]]
+   ,Div ("",[],[])
+    [Plain [Str "To",Space,Str "where",Space,Str "Saint",Space,Str "Mary",Space,Str "Woolnoth",Space,Str "kept",Space,Str "the",Space,Str "hours"]]
+   ,Div ("wasteland-content.xhtml#ln68",[],[])
+    [Plain [Str "With",Space,Str "a",Space,Str "dead",Space,Str "sound",Space,Str "on",Space,Str "the",Space,Str "final",Space,Str "stroke",Space,Str "of",Space,Str "nine.",Note [Para [Link ("",[],[]) [Str "68."] ("#wasteland-content.xhtml#ln68",""),Space,Str "A",Space,Str "phenomenon",Space,Str "which",Space,Str "I",Space,Str "have",Space,Str "often",Space,Str "noticed."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "There",Space,Str "I",Space,Str "saw",Space,Str "one",Space,Str "I",Space,Str "knew,",Space,Str "and",Space,Str "stopped",Space,Str "him,",Space,Str "crying",SoftBreak,Str "\"Stetson!"]]
+   ,Div ("",[],[])
+    [Plain [Str "\"You",Space,Str "who",Space,Str "were",Space,Str "with",Space,Str "me",Space,Str "in",Space,Str "the",Space,Str "ships",Space,Str "at",Space,Str "Mylae!",Span ("",["lnum"],[]) [Str "70"]]]
+   ,Div ("",[],[])
+    [Plain [Str "\"That",Space,Str "corpse",Space,Str "you",Space,Str "planted",Space,Str "last",Space,Str "year",Space,Str "in",Space,Str "your",Space,Str "garden,"]]
+   ,Div ("",[],[])
+    [Plain [Str "\"Has",Space,Str "it",Space,Str "begun",Space,Str "to",Space,Str "sprout?",Space,Str "Will",Space,Str "it",Space,Str "bloom",Space,Str "this",Space,Str "year?"]]
+   ,Div ("",[],[])
+    [Plain [Str "\"Or",Space,Str "has",Space,Str "the",Space,Str "sudden",Space,Str "frost",Space,Str "disturbed",Space,Str "its",Space,Str "bed?"]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("wasteland-content.xhtml#ln74",[],[])
+    [Plain [Str "\"Oh",Space,Str "keep",Space,Str "the",Space,Str "Dog",Space,Str "far",Space,Str "hence,",Space,Str "that's",Space,Str "friend",Space,Str "to",Space,Str "men,",Note [Para [Link ("",[],[]) [Str "74."] ("#wasteland-content.xhtml#ln74",""),Space,Str "Cf.",Space,Str "the",Space,Str "Dirge",Space,Str "in",Space,Str "Webster's",Space,Str "White",Space,Str "Devil",Space,Str "."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "\"Or",Space,Str "with",Space,Str "his",Space,Str "nails",Space,Str "he'll",Space,Str "dig",Space,Str "it",Space,Str "up",Space,Str "again!"]]
+   ,Div ("wasteland-content.xhtml#ln76",[],[])
+    [Plain [Str "\"You!",Space,Span ("",[],[("lang","fr")]) [Str "hypocrite",Space,Str "lecteur!",Space,Str "-",Space,Str "mon",Space,Str "semblable,",Space,Str "-",SoftBreak,Str "mon",Space,Str "frere"],Space,Str "!\"",Note [Para [Link ("",[],[]) [Str "76."] ("#wasteland-content.xhtml#ln76",""),Space,Str "V.",Space,Str "Baudelaire,",Space,Str "Preface",Space,Str "to",Space,Str "Fleurs",Space,Str "du",Space,Str "Mal."]]]]]]
+ ,Div ("wasteland-content.xhtml#ch2",["section"],[])
+  [Header 2 ("",[],[]) [Str "II.",Space,Str "A",Space,Str "GAME",Space,Str "OF",Space,Str "CHESS"]
+  ,Div ("",["linegroup"],[])
+   [Div ("wasteland-content.xhtml#ln77",[],[])
+    [Plain [Str "The",Space,Str "Chair",Space,Str "she",Space,Str "sat",Space,Str "in,",Space,Str "like",Space,Str "a",Space,Str "burnished",Space,Str "throne,",Note [Para [Link ("",[],[]) [Str "77."] ("#wasteland-content.xhtml#ln77",""),Space,Str "Cf.",Space,Str "Antony",Space,Str "and",Space,Str "Cleopatra,",Space,Str "II.",Space,Str "ii.,",Space,Str "l.",Space,Str "190."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Glowed",Space,Str "on",Space,Str "the",Space,Str "marble,",Space,Str "where",Space,Str "the",Space,Str "glass"]]
+   ,Div ("",[],[])
+    [Plain [Str "Held",Space,Str "up",Space,Str "by",Space,Str "standards",Space,Str "wrought",Space,Str "with",Space,Str "fruited",Space,Str "vines"]]
+   ,Div ("",[],[])
+    [Plain [Str "From",Space,Str "which",Space,Str "a",Space,Str "golden",Space,Str "Cupidon",Space,Str "peeped",Space,Str "out",Span ("",["lnum"],[]) [Str "80"]]]
+   ,Div ("",[],[])
+    [Plain [Str "(Another",Space,Str "hid",Space,Str "his",Space,Str "eyes",Space,Str "behind",Space,Str "his",Space,Str "wing)"]]
+   ,Div ("",[],[])
+    [Plain [Str "Doubled",Space,Str "the",Space,Str "flames",Space,Str "of",Space,Str "sevenbranched",Space,Str "candelabra"]]
+   ,Div ("",[],[])
+    [Plain [Str "Reflecting",Space,Str "light",Space,Str "upon",Space,Str "the",Space,Str "table",Space,Str "as"]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "glitter",Space,Str "of",Space,Str "her",Space,Str "jewels",Space,Str "rose",Space,Str "to",Space,Str "meet",Space,Str "it,"]]
+   ,Div ("",[],[])
+    [Plain [Str "From",Space,Str "satin",Space,Str "cases",Space,Str "poured",Space,Str "in",Space,Str "rich",Space,Str "profusion;"]]
+   ,Div ("",[],[])
+    [Plain [Str "In",Space,Str "vials",Space,Str "of",Space,Str "ivory",Space,Str "and",Space,Str "coloured",Space,Str "glass"]]
+   ,Div ("",[],[])
+    [Plain [Str "Unstoppered,",Space,Str "lurked",Space,Str "her",Space,Str "strange",Space,Str "synthetic",Space,Str "perfumes,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Unguent,",Space,Str "powdered,",Space,Str "or",Space,Str "liquid",Space,Str "-",Space,Str "troubled,",Space,Str "confused"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "drowned",Space,Str "the",Space,Str "sense",Space,Str "in",Space,Str "odours;",Space,Str "stirred",Space,Str "by",Space,Str "the",Space,Str "air"]]
+   ,Div ("",[],[])
+    [Plain [Str "That",Space,Str "freshened",Space,Str "from",Space,Str "the",Space,Str "window,",Space,Str "these",Space,Str "ascended",Span ("",["lnum"],[]) [Str "90"]]]
+   ,Div ("",[],[])
+    [Plain [Str "In",Space,Str "fattening",Space,Str "the",Space,Str "prolonged",Space,Str "candle-flames,"]]
+   ,Div ("wasteland-content.xhtml#ln92",[],[])
+    [Plain [Str "Flung",Space,Str "their",Space,Str "smoke",Space,Str "into",Space,Str "the",Space,Str "laquearia,",Note [Para [Link ("",[],[]) [Str "92."] ("#wasteland-content.xhtml#ln92",""),Space,Str "Laquearia.",Space,Str "V.",Space,Str "Aeneid,",Space,Str "I.",Space,Str "726:"],BlockQuote [Para [Str "dependent",Space,Str "lychni",Space,Str "laquearibus",Space,Str "aureis",Space,Str "incensi,",Space,Str "et",Space,Str "noctem",SoftBreak,Str "flammis",LineBreak,Str "funalia",Space,Str "vincunt."]]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Stirring",Space,Str "the",Space,Str "pattern",Space,Str "on",Space,Str "the",Space,Str "coffered",Space,Str "ceiling."]]
+   ,Div ("",[],[])
+    [Plain [Str "Huge",Space,Str "sea-wood",Space,Str "fed",Space,Str "with",Space,Str "copper"]]
+   ,Div ("",[],[])
+    [Plain [Str "Burned",Space,Str "green",Space,Str "and",Space,Str "orange,",Space,Str "framed",Space,Str "by",Space,Str "the",Space,Str "coloured",Space,Str "stone,"]]
+   ,Div ("",[],[])
+    [Plain [Str "In",Space,Str "which",Space,Str "sad",Space,Str "light",Space,Str "a",Space,Str "carved",Space,Str "dolphin",Space,Str "swam."]]
+   ,Div ("",[],[])
+    [Plain [Str "Above",Space,Str "the",Space,Str "antique",Space,Str "mantel",Space,Str "was",Space,Str "displayed"]]
+   ,Div ("wasteland-content.xhtml#ln98",[],[])
+    [Plain [Str "As",Space,Str "though",Space,Str "a",Space,Str "window",Space,Str "gave",Space,Str "upon",Space,Str "the",Space,Str "sylvan",Space,Str "scene",Note [Para [Link ("",[],[]) [Str "98."] ("#wasteland-content.xhtml#ln98",""),Space,Str "Sylvan",Space,Str "scene.",Space,Str "V.",Space,Str "Milton,",Space,Str "Paradise",Space,Str "Lost,",Space,Str "iv.",Space,Str "140."]]]]
+   ,Div ("wasteland-content.xhtml#ln99",[],[])
+    [Plain [Str "The",Space,Str "change",Space,Str "of",Space,Str "Philomel,",Space,Str "by",Space,Str "the",Space,Str "barbarous",Space,Str "king",Note [Para [Link ("",[],[]) [Str "99."] ("#wasteland-content.xhtml#ln99",""),Space,Str "V.",Space,Str "Ovid,",Space,Str "Metamorphoses,",Space,Str "vi,",Space,Str "Philomela."]]]]
+   ,Div ("wasteland-content.xhtml#ln100",[],[])
+    [Plain [Str "So",Space,Str "rudely",Space,Str "forced;",Space,Str "yet",Space,Str "there",Space,Str "the",Space,Str "nightingale",Note [Para [Link ("",[],[]) [Str "100."] ("#wasteland-content.xhtml#ln100",""),Space,Str "Cf.",Space,Str "Part",Space,Str "III,",Space,Str "l.",Space,Str "204."]],SoftBreak,Span ("",["lnum"],[]) [Str "100"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Filled",Space,Str "all",Space,Str "the",Space,Str "desert",Space,Str "with",Space,Str "inviolable",Space,Str "voice"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "still",Space,Str "she",Space,Str "cried,",Space,Str "and",Space,Str "still",Space,Str "the",Space,Str "world",Space,Str "pursues,"]]
+   ,Div ("",[],[])
+    [Plain [Str "\"Jug",Space,Str "Jug\"",Space,Str "to",Space,Str "dirty",Space,Str "ears."]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "other",Space,Str "withered",Space,Str "stumps",Space,Str "of",Space,Str "time"]]
+   ,Div ("",[],[])
+    [Plain [Str "Were",Space,Str "told",Space,Str "upon",Space,Str "the",Space,Str "walls;",Space,Str "staring",Space,Str "forms"]]
+   ,Div ("",[],[])
+    [Plain [Str "Leaned",Space,Str "out,",Space,Str "leaning,",Space,Str "hushing",Space,Str "the",Space,Str "room",Space,Str "enclosed."]]
+   ,Div ("",[],[])
+    [Plain [Str "Footsteps",Space,Str "shuffled",Space,Str "on",Space,Str "the",Space,Str "stair."]]
+   ,Div ("",[],[])
+    [Plain [Str "Under",Space,Str "the",Space,Str "firelight,",Space,Str "under",Space,Str "the",Space,Str "brush,",Space,Str "her",Space,Str "hair"]]
+   ,Div ("",[],[])
+    [Plain [Str "Spread",Space,Str "out",Space,Str "in",Space,Str "fiery",Space,Str "points"]]
+   ,Div ("",[],[])
+    [Plain [Str "Glowed",Space,Str "into",Space,Str "words,",Space,Str "then",Space,Str "would",Space,Str "be",Space,Str "savagely",Space,Str "still.",Span ("",["lnum"],[]) [Str "110"]]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",["linegroup"],[])
+    [Div ("",[],[])
+     [Plain [Str "\"My",Space,Str "nerves",Space,Str "are",Space,Str "bad",Space,Str "to-night.",Space,Str "Yes,",Space,Str "bad.",Space,Str "Stay",Space,Str "with",Space,Str "me."]]
+    ,Div ("",[],[])
+     [Plain [Str "\"Speak",Space,Str "to",Space,Str "me.",Space,Str "Why",Space,Str "do",Space,Str "you",Space,Str "never",Space,Str "speak.",Space,Str "Speak."]]
+    ,Div ("",[],[])
+     [Plain [Str "\"What",Space,Str "are",Space,Str "you",Space,Str "thinking",Space,Str "of?",Space,Str "What",Space,Str "thinking?",Space,Str "What?"]]
+    ,Div ("",[],[])
+     [Plain [Str "\"I",Space,Str "never",Space,Str "know",Space,Str "what",Space,Str "you",Space,Str "are",Space,Str "thinking.",Space,Str "Think.\""]]]
+   ,Div ("",["linegroup"],[])
+    [Div ("wasteland-content.xhtml#ln115",[],[])
+     [Plain [Str "I",Space,Str "think",Space,Str "we",Space,Str "are",Space,Str "in",Space,Str "rats'",Space,Str "alley",Note [Para [Link ("",[],[]) [Str "115."] ("#wasteland-content.xhtml#ln115",""),Space,Str "Cf.",Space,Str "Part",Space,Str "III,",Space,Str "l.",Space,Str "195."]]]]
+    ,Div ("",[],[])
+     [Plain [Str "Where",Space,Str "the",Space,Str "dead",Space,Str "men",Space,Str "lost",Space,Str "their",Space,Str "bones."]]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "\"What",Space,Str "is",Space,Str "that",Space,Str "noise?\""]]
+   ,Div ("wasteland-content.xhtml#ln118",["indent"],[])
+    [Plain [Str "The",Space,Str "wind",Space,Str "under",Space,Str "the",Space,Str "door.",Note [Para [Link ("",[],[]) [Str "118."] ("#wasteland-content.xhtml#ln118",""),Space,Str "Cf.",Space,Str "Webster:"],BlockQuote [Para [Str "\"Is",Space,Str "the",Space,Str "wind",Space,Str "in",Space,Str "that",Space,Str "door",Space,Str "still?\""]]]]]
+   ,Div ("",[],[])
+    [Plain [Str "\"What",Space,Str "is",Space,Str "that",Space,Str "noise",Space,Str "now?",Space,Str "What",Space,Str "is",Space,Str "the",Space,Str "wind",Space,Str "doing?\""]]
+   ,Div ("",["indent"],[])
+    [Plain [Str "Nothing",Space,Str "again",Space,Str "nothing.",Span ("",["lnum"],[]) [Str "120"]]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "\"Do"]]
+   ,Div ("",[],[])
+    [Plain [Str "\"You",Space,Str "know",Space,Str "nothing?",Space,Str "Do",Space,Str "you",Space,Str "see",Space,Str "nothing?",Space,Str "Do",Space,Str "you",Space,Str "remember"]]
+   ,Div ("",[],[])
+    [Plain [Str "\"Nothing?\""]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "I",Space,Str "remember"]]
+   ,Div ("",[],[])
+    [Plain [Str "Those",Space,Str "are",Space,Str "pearls",Space,Str "that",Space,Str "were",Space,Str "his",Space,Str "eyes."]]
+   ,Div ("wasteland-content.xhtml#ln126",[],[])
+    [Plain [Str "\"Are",Space,Str "you",Space,Str "alive,",Space,Str "or",Space,Str "not?",Space,Str "Is",Space,Str "there",Space,Str "nothing",Space,Str "in",Space,Str "your",Space,Str "head?\"",Note [Para [Link ("",[],[]) [Str "126."] ("#wasteland-content.xhtml#ln126",""),Space,Str "Cf.",Space,Str "Part",Space,Str "I,",Space,Str "l.",Space,Str "37,",Space,Str "48."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "But"]]
+   ,Div ("",[],[])
+    [Plain [Str "O",Space,Str "O",Space,Str "O",Space,Str "O",Space,Str "that",Space,Str "Shakespeherian",Space,Str "Rag\8213"]]
+   ,Div ("",[],[])
+    [Plain [Str "It's",Space,Str "so",Space,Str "elegant"]]
+   ,Div ("",[],[])
+    [Plain [Str "So",Space,Str "intelligent",Span ("",["lnum"],[]) [Str "130"]]]
+   ,Div ("",[],[])
+    [Plain [Str "\"What",Space,Str "shall",Space,Str "I",Space,Str "do",Space,Str "now?",Space,Str "What",Space,Str "shall",Space,Str "I",Space,Str "do?\""]]
+   ,Div ("",[],[])
+    [Plain [Str "I",Space,Str "shall",Space,Str "rush",Space,Str "out",Space,Str "as",Space,Str "I",Space,Str "am,",Space,Str "and",Space,Str "walk",Space,Str "the",Space,Str "street"]]
+   ,Div ("",[],[])
+    [Plain [Str "\"With",Space,Str "my",Space,Str "hair",Space,Str "down,",Space,Str "so.",Space,Str "What",Space,Str "shall",Space,Str "we",Space,Str "do",Space,Str "to-morrow?"]]
+   ,Div ("",[],[])
+    [Plain [Str "\"What",Space,Str "shall",Space,Str "we",Space,Str "ever",Space,Str "do?\""]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "hot",Space,Str "water",Space,Str "at",Space,Str "ten."]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "if",Space,Str "it",Space,Str "rains,",Space,Str "a",Space,Str "closed",Space,Str "car",Space,Str "at",Space,Str "four."]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "we",Space,Str "shall",Space,Str "play",Space,Str "a",Space,Str "game",Space,Str "of",Space,Str "chess,"]]
+   ,Div ("wasteland-content.xhtml#ln138",[],[])
+    [Plain [Str "Pressing",Space,Str "lidless",Space,Str "eyes",Space,Str "and",Space,Str "waiting",Space,Str "for",Space,Str "a",Space,Str "knock",Space,Str "upon",Space,Str "the",Space,Str "door.",Note [Para [Link ("",[],[]) [Str "138."] ("#wasteland-content.xhtml#ln138",""),Space,Str "Cf.",Space,Str "the",Space,Str "game",Space,Str "of",Space,Str "chess",Space,Str "in",Space,Str "Middleton's",Space,Str "Women",Space,Str "beware",Space,Str "Women."]]]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "When",Space,Str "Lil's",Space,Str "husband",Space,Str "got",Space,Str "demobbed,",Space,Str "I",Space,Str "said",Space,Str "-"]]
+   ,Div ("",[],[])
+    [Plain [Str "I",Space,Str "didn't",Space,Str "mince",Space,Str "my",Space,Str "words,",Space,Str "I",Space,Str "said",Space,Str "to",Space,Str "her",Space,Str "myself,",Span ("",["lnum"],[]) [Str "140"]]]
+   ,Div ("",[],[])
+    [Plain [Str "HURRY",Space,Str "UP",Space,Str "PLEASE",Space,Str "ITS",Space,Str "TIME"]]
+   ,Div ("",[],[])
+    [Plain [Str "Now",Space,Str "Albert's",Space,Str "coming",Space,Str "back,",Space,Str "make",Space,Str "yourself",Space,Str "a",Space,Str "bit",Space,Str "smart."]]
+   ,Div ("",[],[])
+    [Plain [Str "He'll",Space,Str "want",Space,Str "to",Space,Str "know",Space,Str "what",Space,Str "you",Space,Str "done",Space,Str "with",Space,Str "that",Space,Str "money",Space,Str "he",Space,Str "gave",SoftBreak,Str "you"]]
+   ,Div ("",[],[])
+    [Plain [Str "To",Space,Str "get",Space,Str "yourself",Space,Str "some",Space,Str "teeth.",Space,Str "He",Space,Str "did,",Space,Str "I",Space,Str "was",Space,Str "there."]]
+   ,Div ("",[],[])
+    [Plain [Str "You",Space,Str "have",Space,Str "them",Space,Str "all",Space,Str "out,",Space,Str "Lil,",Space,Str "and",Space,Str "get",Space,Str "a",Space,Str "nice",Space,Str "set,"]]
+   ,Div ("",[],[])
+    [Plain [Str "He",Space,Str "said,",Space,Str "I",Space,Str "swear,",Space,Str "I",Space,Str "can't",Space,Str "bear",Space,Str "to",Space,Str "look",Space,Str "at",Space,Str "you."]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "no",Space,Str "more",Space,Str "can't",Space,Str "I,",Space,Str "I",Space,Str "said,",Space,Str "and",Space,Str "think",Space,Str "of",Space,Str "poor",Space,Str "Albert,"]]
+   ,Div ("",[],[])
+    [Plain [Str "He's",Space,Str "been",Space,Str "in",Space,Str "the",Space,Str "army",Space,Str "four",Space,Str "years,",Space,Str "he",Space,Str "wants",Space,Str "a",Space,Str "good",Space,Str "time,"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "if",Space,Str "you",Space,Str "don't",Space,Str "give",Space,Str "it",Space,Str "him,",Space,Str "there's",Space,Str "others",Space,Str "will,",Space,Str "I",SoftBreak,Str "said."]]
+   ,Div ("",[],[])
+    [Plain [Str "Oh",Space,Str "is",Space,Str "there,",Space,Str "she",Space,Str "said.",Space,Str "Something",Space,Str "o'",Space,Str "that,",Space,Str "I",Space,Str "said.",Span ("",["lnum"],[]) [Str "150"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Then",Space,Str "I'll",Space,Str "know",Space,Str "who",Space,Str "to",Space,Str "thank,",Space,Str "she",Space,Str "said,",Space,Str "and",Space,Str "give",Space,Str "me",Space,Str "a",Space,Str "straight",SoftBreak,Str "look."]]
+   ,Div ("",[],[])
+    [Plain [Str "HURRY",Space,Str "UP",Space,Str "PLEASE",Space,Str "ITS",Space,Str "TIME"]]
+   ,Div ("",[],[])
+    [Plain [Str "If",Space,Str "you",Space,Str "don't",Space,Str "like",Space,Str "it",Space,Str "you",Space,Str "can",Space,Str "get",Space,Str "on",Space,Str "with",Space,Str "it,",Space,Str "I",Space,Str "said."]]
+   ,Div ("",[],[])
+    [Plain [Str "Others",Space,Str "can",Space,Str "pick",Space,Str "and",Space,Str "choose",Space,Str "if",Space,Str "you",Space,Str "can't."]]
+   ,Div ("",[],[])
+    [Plain [Str "But",Space,Str "if",Space,Str "Albert",Space,Str "makes",Space,Str "off,",Space,Str "it",Space,Str "won't",Space,Str "be",Space,Str "for",Space,Str "lack",Space,Str "of",SoftBreak,Str "telling."]]
+   ,Div ("",[],[])
+    [Plain [Str "You",Space,Str "ought",Space,Str "to",Space,Str "be",Space,Str "ashamed,",Space,Str "I",Space,Str "said,",Space,Str "to",Space,Str "look",Space,Str "so",Space,Str "antique."]]
+   ,Div ("",[],[])
+    [Plain [Str "(And",Space,Str "her",Space,Str "only",Space,Str "thirty-one.)"]]
+   ,Div ("",[],[])
+    [Plain [Str "I",Space,Str "can't",Space,Str "help",Space,Str "it,",Space,Str "she",Space,Str "said,",Space,Str "pulling",Space,Str "a",Space,Str "long",Space,Str "face,"]]
+   ,Div ("",[],[])
+    [Plain [Str "It's",Space,Str "them",Space,Str "pills",Space,Str "I",Space,Str "took,",Space,Str "to",Space,Str "bring",Space,Str "it",Space,Str "off,",Space,Str "she",Space,Str "said."]]
+   ,Div ("",[],[])
+    [Plain [Str "(She's",Space,Str "had",Space,Str "five",Space,Str "already,",Space,Str "and",Space,Str "nearly",Space,Str "died",Space,Str "of",Space,Str "young",Space,Str "George.)",Span ("",["lnum"],[]) [Str "160"]]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "chemist",Space,Str "said",Space,Str "it",Space,Str "would",Space,Str "be",Space,Str "all",Space,Str "right,",Space,Str "but",Space,Str "I've",Space,Str "never",Space,Str "been",Space,Str "the",SoftBreak,Str "same."]]
+   ,Div ("",[],[])
+    [Plain [Str "You",Space,Emph [Str "are"],Space,Str "a",Space,Str "proper",Space,Str "fool,",Space,Str "I",Space,Str "said."]]
+   ,Div ("",[],[])
+    [Plain [Str "Well,",Space,Str "if",Space,Str "Albert",Space,Str "won't",Space,Str "leave",Space,Str "you",Space,Str "alone,",Space,Str "there",Space,Str "it",Space,Str "is,",Space,Str "I",SoftBreak,Str "said,"]]
+   ,Div ("",[],[])
+    [Plain [Str "What",Space,Str "you",Space,Str "get",Space,Str "married",Space,Str "for",Space,Str "if",Space,Str "you",Space,Str "don't",Space,Str "want",Space,Str "children?"]]
+   ,Div ("",[],[])
+    [Plain [Str "HURRY",Space,Str "UP",Space,Str "PLEASE",Space,Str "ITS",Space,Str "TIME"]]
+   ,Div ("",[],[])
+    [Plain [Str "Well,",Space,Str "that",Space,Str "Sunday",Space,Str "Albert",Space,Str "was",Space,Str "home,",Space,Str "they",Space,Str "had",Space,Str "a",Space,Str "hot",SoftBreak,Str "gammon,"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "they",Space,Str "asked",Space,Str "me",Space,Str "in",Space,Str "to",Space,Str "dinner,",Space,Str "to",Space,Str "get",Space,Str "the",Space,Str "beauty",Space,Str "of",Space,Str "it",SoftBreak,Str "hot\8213"]]
+   ,Div ("",[],[])
+    [Plain [Str "HURRY",Space,Str "UP",Space,Str "PLEASE",Space,Str "ITS",Space,Str "TIME"]]
+   ,Div ("",[],[])
+    [Plain [Str "HURRY",Space,Str "UP",Space,Str "PLEASE",Space,Str "ITS",Space,Str "TIME"]]
+   ,Div ("",[],[])
+    [Plain [Str "Goonight",Space,Str "Bill.",Space,Str "Goonight",Space,Str "Lou.",Space,Str "Goonight",Space,Str "May.",Space,Str "Goonight.",Span ("",["lnum"],[]) [Str "170"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Ta",Space,Str "ta.",Space,Str "Goonight.",Space,Str "Goonight."]]
+   ,Div ("",[],[])
+    [Plain [Str "Good",Space,Str "night,",Space,Str "ladies,",Space,Str "good",Space,Str "night,",Space,Str "sweet",Space,Str "ladies,",Space,Str "good",Space,Str "night,",Space,Str "good",SoftBreak,Str "night."]]]]
+ ,Div ("wasteland-content.xhtml#ch3",["section"],[])
+  [Header 2 ("",[],[]) [Str "III.",Space,Str "THE",Space,Str "FIRE",Space,Str "SERMON"]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "The",Space,Str "river's",Space,Str "tent",Space,Str "is",Space,Str "broken:",Space,Str "the",Space,Str "last",Space,Str "fingers",Space,Str "of",Space,Str "leaf"]]
+   ,Div ("",[],[])
+    [Plain [Str "Clutch",Space,Str "and",Space,Str "sink",Space,Str "into",Space,Str "the",Space,Str "wet",Space,Str "bank.",Space,Str "The",Space,Str "wind"]]
+   ,Div ("",[],[])
+    [Plain [Str "Crosses",Space,Str "the",Space,Str "brown",Space,Str "land,",Space,Str "unheard.",Space,Str "The",Space,Str "nymphs",Space,Str "are",SoftBreak,Str "departed."]]
+   ,Div ("wasteland-content.xhtml#ln176",[],[])
+    [Plain [Str "Sweet",Space,Str "Thames,",Space,Str "run",Space,Str "softly,",Space,Str "till",Space,Str "I",Space,Str "end",Space,Str "my",Space,Str "song.",Note [Para [Link ("",[],[]) [Str "176."] ("#wasteland-content.xhtml#ln176",""),Space,Str "V.",Space,Str "Spenser,",Space,Str "Prothalamion."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "river",Space,Str "bears",Space,Str "no",Space,Str "empty",Space,Str "bottles,",Space,Str "sandwich",Space,Str "papers,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Silk",Space,Str "handkerchiefs,",Space,Str "cardboard",Space,Str "boxes,",Space,Str "cigarette",Space,Str "ends"]]
+   ,Div ("",[],[])
+    [Plain [Str "Or",Space,Str "other",Space,Str "testimony",Space,Str "of",Space,Str "summer",Space,Str "nights.",Space,Str "The",Space,Str "nymphs",Space,Str "are",SoftBreak,Str "departed."]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "their",Space,Str "friends,",Space,Str "the",Space,Str "loitering",Space,Str "heirs",Space,Str "of",Space,Str "city",Space,Str "directors;",Span ("",["lnum"],[]) [Str "180"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Departed,",Space,Str "have",Space,Str "left",Space,Str "no",Space,Str "addresses."]]
+   ,Div ("",[],[])
+    [Plain [Str "By",Space,Str "the",Space,Str "waters",Space,Str "of",Space,Str "Leman",Space,Str "I",Space,Str "sat",Space,Str "down",Space,Str "and",Space,Str "wept",Space,Str ".",Space,Str ".",Space,Str "."]]
+   ,Div ("",[],[])
+    [Plain [Str "Sweet",Space,Str "Thames,",Space,Str "run",Space,Str "softly",Space,Str "till",Space,Str "I",Space,Str "end",Space,Str "my",Space,Str "song,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Sweet",Space,Str "Thames,",Space,Str "run",Space,Str "softly,",Space,Str "for",Space,Str "I",Space,Str "speak",Space,Str "not",Space,Str "loud",Space,Str "or",Space,Str "long."]]
+   ,Div ("",[],[])
+    [Plain [Str "But",Space,Str "at",Space,Str "my",Space,Str "back",Space,Str "in",Space,Str "a",Space,Str "cold",Space,Str "blast",Space,Str "I",Space,Str "hear"]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "rattle",Space,Str "of",Space,Str "the",Space,Str "bones,",Space,Str "and",Space,Str "chuckle",Space,Str "spread",Space,Str "from",Space,Str "ear",Space,Str "to",SoftBreak,Str "ear."]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "A",Space,Str "rat",Space,Str "crept",Space,Str "softly",Space,Str "through",Space,Str "the",Space,Str "vegetation"]]
+   ,Div ("",[],[])
+    [Plain [Str "Dragging",Space,Str "its",Space,Str "slimy",Space,Str "belly",Space,Str "on",Space,Str "the",Space,Str "bank"]]
+   ,Div ("",[],[])
+    [Plain [Str "While",Space,Str "I",Space,Str "was",Space,Str "fishing",Space,Str "in",Space,Str "the",Space,Str "dull",Space,Str "canal"]]
+   ,Div ("",[],[])
+    [Plain [Str "On",Space,Str "a",Space,Str "winter",Space,Str "evening",Space,Str "round",Space,Str "behind",Space,Str "the",Space,Str "gashouse",Span ("",["lnum"],[]) [Str "190"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Musing",Space,Str "upon",Space,Str "the",Space,Str "king",Space,Str "my",Space,Str "brother's",Space,Str "wreck"]]
+   ,Div ("wasteland-content.xhtml#ln192",[],[])
+    [Plain [Str "And",Space,Str "on",Space,Str "the",Space,Str "king",Space,Str "my",Space,Str "father's",Space,Str "death",Space,Str "before",Space,Str "him.",Note [Para [Link ("",[],[]) [Str "192."] ("#wasteland-content.xhtml#ln192",""),Space,Str "Cf.",Space,Str "The",Space,Str "Tempest,",Space,Str "I.",Space,Str "ii."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "White",Space,Str "bodies",Space,Str "naked",Space,Str "on",Space,Str "the",Space,Str "low",Space,Str "damp",Space,Str "ground"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "bones",Space,Str "cast",Space,Str "in",Space,Str "a",Space,Str "little",Space,Str "low",Space,Str "dry",Space,Str "garret,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Rattled",Space,Str "by",Space,Str "the",Space,Str "rat's",Space,Str "foot",Space,Str "only,",Space,Str "year",Space,Str "to",Space,Str "year."]]
+   ,Div ("wasteland-content.xhtml#ln196",[],[])
+    [Plain [Str "But",Space,Str "at",Space,Str "my",Space,Str "back",Space,Str "from",Space,Str "time",Space,Str "to",Space,Str "time",Space,Str "I",Space,Str "hear",Note [Para [Link ("",[],[]) [Str "196."] ("#wasteland-content.xhtml#ln196",""),Space,Str "Cf.",Space,Str "Marvell,",Space,Str "To",Space,Str "His",Space,Str "Coy",Space,Str "Mistress."]]]]
+   ,Div ("wasteland-content.xhtml#ln197",[],[])
+    [Plain [Str "The",Space,Str "sound",Space,Str "of",Space,Str "horns",Space,Str "and",Space,Str "motors,",Space,Str "which",Space,Str "shall",Space,Str "bring",Note [Para [Link ("",[],[]) [Str "197."] ("#wasteland-content.xhtml#ln197",""),Space,Str "Cf.",Space,Str "Day,",Space,Str "Parliament",Space,Str "of",Space,Str "Bees:"],BlockQuote [Div ("",[],[]) [Div ("",[],[]) [Plain [Str "\"When",Space,Str "of",Space,Str "the",Space,Str "sudden,",Space,Str "listening,",Space,Str "you",Space,Str "shall",SoftBreak,Str "hear,"]],Div ("",[],[]) [Plain [Str "\"A",Space,Str "noise",Space,Str "of",Space,Str "horns",Space,Str "and",Space,Str "hunting,",Space,Str "which",Space,Str "shall",SoftBreak,Str "bring"]],Div ("",[],[]) [Plain [Str "\"Actaeon",Space,Str "to",Space,Str "Diana",Space,Str "in",Space,Str "the",Space,Str "spring,"]],Div ("",[],[]) [Plain [Str "\"Where",Space,Str "all",Space,Str "shall",Space,Str "see",Space,Str "her",Space,Str "naked",Space,Str "skin",Space,Str ".",Space,Str ".",Space,Str ".\""]]]]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Sweeney",Space,Str "to",Space,Str "Mrs.",Space,Str "Porter",Space,Str "in",Space,Str "the",Space,Str "spring."]]
+   ,Div ("wasteland-content.xhtml#ln199",[],[])
+    [Plain [Str "O",Space,Str "the",Space,Str "moon",Space,Str "shone",Space,Str "bright",Space,Str "on",Space,Str "Mrs.",Space,Str "Porter",Note [Para [Link ("",[],[]) [Str "199."] ("#wasteland-content.xhtml#ln199",""),Space,Str "I",Space,Str "do",Space,Str "not",Space,Str "know",Space,Str "the",Space,Str "origin",Space,Str "of",Space,Str "the",Space,Str "ballad",Space,Str "from",Space,Str "which",Space,Str "these",Space,Str "lines",Space,Str "are",SoftBreak,Str "taken:",Space,Str "it",Space,Str "was",Space,Str "reported",Space,Str "to",Space,Str "me",Space,Str "from",Space,Str "Sydney,",Space,Str "Australia."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "on",Space,Str "her",Space,Str "daughter",Span ("",["lnum"],[]) [Str "200"]]]
+   ,Div ("",[],[])
+    [Plain [Str "They",Space,Str "wash",Space,Str "their",Space,Str "feet",Space,Str "in",Space,Str "soda",Space,Str "water"]]
+   ,Div ("wasteland-content.xhtml#ln202",[],[("lang","fr")])
+    [Plain [Emph [Str "Et",Space,Str "O",Space,Str "ces",Space,Str "voix",Space,Str "d'enfants,",Space,Str "chantant",Space,Str "dans",Space,Str "la",Space,Str "coupole"],Str "!",Note [Para [Link ("",[],[]) [Str "202."] ("#wasteland-content.xhtml#ln202",""),Space,Str "V.",Space,Str "Verlaine,",Space,Str "Parsifal."]]]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "Twit",Space,Str "twit",Space,Str "twit"]]
+   ,Div ("",[],[])
+    [Plain [Str "Jug",Space,Str "jug",Space,Str "jug",Space,Str "jug",Space,Str "jug",Space,Str "jug"]]
+   ,Div ("",[],[])
+    [Plain [Str "So",Space,Str "rudely",Space,Str "forc'd."]]
+   ,Div ("",[],[])
+    [Plain [Str "Tereu"]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "Unreal",Space,Str "City"]]
+   ,Div ("",[],[])
+    [Plain [Str "Under",Space,Str "the",Space,Str "brown",Space,Str "fog",Space,Str "of",Space,Str "a",Space,Str "winter",Space,Str "noon"]]
+   ,Div ("",[],[])
+    [Plain [Str "Mr.",Space,Str "Eugenides,",Space,Str "the",Space,Str "Smyrna",Space,Str "merchant"]]
+   ,Div ("wasteland-content.xhtml#ln210",[],[])
+    [Plain [Str "Unshaven,",Space,Str "with",Space,Str "a",Space,Str "pocket",Space,Str "full",Space,Str "of",Space,Str "currants",Note [Para [Link ("",[],[]) [Str "210."] ("#wasteland-content.xhtml#ln210",""),Space,Str "The",Space,Str "currants",Space,Str "were",Space,Str "quoted",Space,Str "at",Space,Str "a",Space,Str "price",Space,Str "\"cost",Space,Str "insurance",Space,Str "and",Space,Str "freight",Space,Str "to",SoftBreak,Str "London\";",Space,Str "and",Space,Str "the",Space,Str "Bill",Space,Str "of",Space,Str "Lading",Space,Str "etc.",Space,Str "were",Space,Str "to",Space,Str "be",Space,Str "handed",Space,Str "to",Space,Str "the",Space,Str "buyer",Space,Str "upon",SoftBreak,Str "payment",Space,Str "of",Space,Str "the",Space,Str "sight",Space,Str "draft."]],SoftBreak,Span ("",["lnum"],[]) [Str "210"]]]
+   ,Div ("",[],[])
+    [Plain [Str "C.i.f.",Space,Str "London:",Space,Str "documents",Space,Str "at",Space,Str "sight,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Asked",Space,Str "me",Space,Str "in",Space,Str "demotic",Space,Str "French"]]
+   ,Div ("",[],[])
+    [Plain [Str "To",Space,Str "luncheon",Space,Str "at",Space,Str "the",Space,Str "Cannon",Space,Str "Street",Space,Str "Hotel"]]
+   ,Div ("",[],[])
+    [Plain [Str "Followed",Space,Str "by",Space,Str "a",Space,Str "weekend",Space,Str "at",Space,Str "the",Space,Str "Metropole."]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "At",Space,Str "the",Space,Str "violet",Space,Str "hour,",Space,Str "when",Space,Str "the",Space,Str "eyes",Space,Str "and",Space,Str "back"]]
+   ,Div ("",[],[])
+    [Plain [Str "Turn",Space,Str "upward",Space,Str "from",Space,Str "the",Space,Str "desk,",Space,Str "when",Space,Str "the",Space,Str "human",Space,Str "engine",Space,Str "waits"]]
+   ,Div ("",[],[])
+    [Plain [Str "Like",Space,Str "a",Space,Str "taxi",Space,Str "throbbing",Space,Str "waiting,"]]
+   ,Div ("wasteland-content.xhtml#ln218",[],[])
+    [Plain [Str "I",Space,Str "Tiresias,",Space,Str "though",Space,Str "blind,",Space,Str "throbbing",Space,Str "between",Space,Str "two",Space,Str "lives,",Note [Para [Link ("",[],[]) [Str "218."] ("#wasteland-content.xhtml#ln218",""),Space,Str "Tiresias,",Space,Str "although",Space,Str "a",Space,Str "mere",Space,Str "spectator",Space,Str "and",Space,Str "not",Space,Str "indeed",Space,Str "a",Space,Str "\"character,\"",Space,Str "is",SoftBreak,Str "yet",Space,Str "the",Space,Str "most",Space,Str "important",Space,Str "personage",Space,Str "in",Space,Str "the",Space,Str "poem,",Space,Str "uniting",Space,Str "all",Space,Str "the",Space,Str "rest.",Space,Str "Just",SoftBreak,Str "as",Space,Str "the",Space,Str "one-eyed",Space,Str "merchant,",Space,Str "seller",Space,Str "of",Space,Str "currants,",Space,Str "melts",Space,Str "into",Space,Str "the",Space,Str "Phoenician",SoftBreak,Str "Sailor,",Space,Str "and",Space,Str "the",Space,Str "latter",Space,Str "is",Space,Str "not",Space,Str "wholly",Space,Str "distinct",Space,Str "from",Space,Str "Ferdinand",Space,Str "Prince",Space,Str "of",SoftBreak,Str "Naples,",Space,Str "so",Space,Str "all",Space,Str "the",Space,Str "women",Space,Str "are",Space,Str "one",Space,Str "woman,",Space,Str "and",Space,Str "the",Space,Str "two",Space,Str "sexes",Space,Str "meet",Space,Str "in",SoftBreak,Str "Tiresias.",Space,Str "What",Space,Str "Tiresias",Space,Str "sees,",Space,Str "in",Space,Str "fact,",Space,Str "is",Space,Str "the",Space,Str "substance",Space,Str "of",Space,Str "the",Space,Str "poem.",Space,Str "The",SoftBreak,Str "whole",Space,Str "passage",Space,Str "from",Space,Str "Ovid",Space,Str "is",Space,Str "of",Space,Str "great",Space,Str "anthropological",Space,Str "interest:"],BlockQuote [Para [Str "'.",Space,Str ".",Space,Str ".",Space,Str "Cum",Space,Str "Iunone",Space,Str "iocos",Space,Str "et",Space,Str "maior",Space,Str "vestra",Space,Str "profecto",Space,Str "est",LineBreak,Str "Quam,",Space,Str "quae",SoftBreak,Str "contingit",Space,Str "maribus,'",Space,Str "dixisse,",Space,Str "'voluptas.'",LineBreak,Str "Illa",Space,Str "negat;",Space,Str "placuit",SoftBreak,Str "quae",Space,Str "sit",Space,Str "sententia",Space,Str "docti",LineBreak,Str "Quaerere",Space,Str "Tiresiae:",Space,Str "venus",Space,Str "huic",Space,Str "erat",SoftBreak,Str "utraque",Space,Str "nota.",LineBreak,Str "Nam",Space,Str "duo",Space,Str "magnorum",Space,Str "viridi",Space,Str "coeuntia",Space,Str "silva",LineBreak,Str "Corpora",Space,Str "serpentum",Space,Str "baculi",Space,Str "violaverat",Space,Str "ictu",LineBreak,Str "Deque",Space,Str "viro",Space,Str "factus,",SoftBreak,Str "mirabile,",Space,Str "femina",Space,Str "septem",LineBreak,Str "Egerat",Space,Str "autumnos;",Space,Str "octavo",Space,Str "rursus",SoftBreak,Str "eosdem",LineBreak,Str "Vidit",Space,Str "et",Space,Str "'est",Space,Str "vestrae",Space,Str "si",Space,Str "tanta",Space,Str "potentia",Space,Str "plagae,'",LineBreak,Str "Dixit",Space,Str "'ut",Space,Str "auctoris",Space,Str "sortem",Space,Str "in",Space,Str "contraria",Space,Str "mutet,",LineBreak,Str "Nunc",Space,Str "quoque",Space,Str "vos",SoftBreak,Str "feriam!'",Space,Str "percussis",Space,Str "anguibus",Space,Str "isdem",LineBreak,Str "Forma",Space,Str "prior",Space,Str "rediit",SoftBreak,Str "genetivaque",Space,Str "venit",Space,Str "imago.",LineBreak,Str "Arbiter",Space,Str "hic",Space,Str "igitur",Space,Str "sumptus",Space,Str "de",Space,Str "lite",SoftBreak,Str "iocosa",LineBreak,Str "Dicta",Space,Str "Iovis",Space,Str "firmat;",Space,Str "gravius",Space,Str "Saturnia",Space,Str "iusto",LineBreak,Str "Nec",SoftBreak,Str "pro",Space,Str "materia",Space,Str "fertur",Space,Str "doluisse",Space,Str "suique",LineBreak,Str "Iudicis",Space,Str "aeterna",Space,Str "damnavit",SoftBreak,Str "lumina",Space,Str "nocte,",LineBreak,Str "At",Space,Str "pater",Space,Str "omnipotens",Space,Str "(neque",Space,Str "enim",Space,Str "licet",Space,Str "inrita",SoftBreak,Str "cuiquam",LineBreak,Str "Facta",Space,Str "dei",Space,Str "fecisse",Space,Str "deo)",Space,Str "pro",Space,Str "lumine",Space,Str "adempto",LineBreak,Str "Scire",SoftBreak,Str "futura",Space,Str "dedit",Space,Str "poenamque",Space,Str "levavit",Space,Str "honore.",LineBreak]]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Old",Space,Str "man",Space,Str "with",Space,Str "wrinkled",Space,Str "female",Space,Str "breasts,",Space,Str "can",Space,Str "see"]]
+   ,Div ("",[],[])
+    [Plain [Str "At",Space,Str "the",Space,Str "violet",Space,Str "hour,",Space,Str "the",Space,Str "evening",Space,Str "hour",Space,Str "that",Space,Str "strives",Span ("",["lnum"],[]) [Str "220"]]]
+   ,Div ("wasteland-content.xhtml#ln221",[],[])
+    [Plain [Str "Homeward,",Space,Str "and",Space,Str "brings",Space,Str "the",Space,Str "sailor",Space,Str "home",Space,Str "from",Space,Str "sea,",Note [Para [Link ("",[],[]) [Str "221."] ("#wasteland-content.xhtml#ln221",""),Space,Str "This",Space,Str "may",Space,Str "not",Space,Str "appear",Space,Str "as",Space,Str "exact",Space,Str "as",Space,Str "Sappho's",Space,Str "lines,",Space,Str "but",Space,Str "I",Space,Str "had",Space,Str "in",Space,Str "mind",SoftBreak,Str "the",Space,Str "\"longshore\"",Space,Str "or",Space,Str "\"dory\"",Space,Str "fisherman,",Space,Str "who",Space,Str "returns",Space,Str "at",Space,Str "nightfall."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "typist",Space,Str "home",Space,Str "at",Space,Str "teatime,",Space,Str "clears",Space,Str "her",Space,Str "breakfast,",Space,Str "lights"]]
+   ,Div ("",[],[])
+    [Plain [Str "Her",Space,Str "stove,",Space,Str "and",Space,Str "lays",Space,Str "out",Space,Str "food",Space,Str "in",Space,Str "tins."]]
+   ,Div ("",[],[])
+    [Plain [Str "Out",Space,Str "of",Space,Str "the",Space,Str "window",Space,Str "perilously",Space,Str "spread"]]
+   ,Div ("",[],[])
+    [Plain [Str "Her",Space,Str "drying",Space,Str "combinations",Space,Str "touched",Space,Str "by",Space,Str "the",Space,Str "sun's",Space,Str "last",Space,Str "rays,"]]
+   ,Div ("",[],[])
+    [Plain [Str "On",Space,Str "the",Space,Str "divan",Space,Str "are",Space,Str "piled",Space,Str "(at",Space,Str "night",Space,Str "her",Space,Str "bed)"]]
+   ,Div ("",[],[])
+    [Plain [Str "Stockings,",Space,Str "slippers,",Space,Str "camisoles,",Space,Str "and",Space,Str "stays."]]
+   ,Div ("",[],[])
+    [Plain [Str "I",Space,Str "Tiresias,",Space,Str "old",Space,Str "man",Space,Str "with",Space,Str "wrinkled",Space,Str "dugs"]]
+   ,Div ("",[],[])
+    [Plain [Str "Perceived",Space,Str "the",Space,Str "scene,",Space,Str "and",Space,Str "foretold",Space,Str "the",Space,Str "rest",Space,Str "-"]]
+   ,Div ("",[],[])
+    [Plain [Str "I",Space,Str "too",Space,Str "awaited",Space,Str "the",Space,Str "expected",Space,Str "guest.",Span ("",["lnum"],[]) [Str "230"]]]
+   ,Div ("",[],[])
+    [Plain [Str "He,",Space,Str "the",Space,Str "young",Space,Str "man",Space,Str "carbuncular,",Space,Str "arrives,"]]
+   ,Div ("",[],[])
+    [Plain [Str "A",Space,Str "small",Space,Str "house",Space,Str "agent's",Space,Str "clerk,",Space,Str "with",Space,Str "one",Space,Str "bold",Space,Str "stare,"]]
+   ,Div ("",[],[])
+    [Plain [Str "One",Space,Str "of",Space,Str "the",Space,Str "low",Space,Str "on",Space,Str "whom",Space,Str "assurance",Space,Str "sits"]]
+   ,Div ("",[],[])
+    [Plain [Str "As",Space,Str "a",Space,Str "silk",Space,Str "hat",Space,Str "on",Space,Str "a",Space,Str "Bradford",Space,Str "millionaire."]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "time",Space,Str "is",Space,Str "now",Space,Str "propitious,",Space,Str "as",Space,Str "he",Space,Str "guesses,"]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "meal",Space,Str "is",Space,Str "ended,",Space,Str "she",Space,Str "is",Space,Str "bored",Space,Str "and",Space,Str "tired,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Endeavours",Space,Str "to",Space,Str "engage",Space,Str "her",Space,Str "in",Space,Str "caresses"]]
+   ,Div ("",[],[])
+    [Plain [Str "Which",Space,Str "still",Space,Str "are",Space,Str "unreproved,",Space,Str "if",Space,Str "undesired."]]
+   ,Div ("",[],[])
+    [Plain [Str "Flushed",Space,Str "and",Space,Str "decided,",Space,Str "he",Space,Str "assaults",Space,Str "at",Space,Str "once;"]]
+   ,Div ("",[],[])
+    [Plain [Str "Exploring",Space,Str "hands",Space,Str "encounter",Space,Str "no",Space,Str "defence;",Span ("",["lnum"],[]) [Str "240"]]]
+   ,Div ("",[],[])
+    [Plain [Str "His",Space,Str "vanity",Space,Str "requires",Space,Str "no",Space,Str "response,"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "makes",Space,Str "a",Space,Str "welcome",Space,Str "of",Space,Str "indifference."]]
+   ,Div ("",[],[])
+    [Plain [Str "(And",Space,Str "I",Space,Str "Tiresias",Space,Str "have",Space,Str "foresuffered",Space,Str "all"]]
+   ,Div ("",[],[])
+    [Plain [Str "Enacted",Space,Str "on",Space,Str "this",Space,Str "same",Space,Str "divan",Space,Str "or",Space,Str "bed;"]]
+   ,Div ("",[],[])
+    [Plain [Str "I",Space,Str "who",Space,Str "have",Space,Str "sat",Space,Str "by",Space,Str "Thebes",Space,Str "below",Space,Str "the",Space,Str "wall"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "walked",Space,Str "among",Space,Str "the",Space,Str "lowest",Space,Str "of",Space,Str "the",Space,Str "dead.)"]]
+   ,Div ("",[],[])
+    [Plain [Str "Bestows",Space,Str "one",Space,Str "final",Space,Str "patronising",Space,Str "kiss,"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "gropes",Space,Str "his",Space,Str "way,",Space,Str "finding",Space,Str "the",Space,Str "stairs",Space,Str "unlit",Space,Str ".",Space,Str ".",Space,Str "."]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "She",Space,Str "turns",Space,Str "and",Space,Str "looks",Space,Str "a",Space,Str "moment",Space,Str "in",Space,Str "the",Space,Str "glass,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Hardly",Space,Str "aware",Space,Str "of",Space,Str "her",Space,Str "departed",Space,Str "lover;",Span ("",["lnum"],[]) [Str "250"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Her",Space,Str "brain",Space,Str "allows",Space,Str "one",Space,Str "half-formed",Space,Str "thought",Space,Str "to",Space,Str "pass:"]]
+   ,Div ("",[],[])
+    [Plain [Str "\"Well",Space,Str "now",Space,Str "that's",Space,Str "done:",Space,Str "and",Space,Str "I'm",Space,Str "glad",Space,Str "it's",Space,Str "over.\""]]
+   ,Div ("wasteland-content.xhtml#ln253",[],[])
+    [Plain [Str "When",Space,Str "lovely",Space,Str "woman",Space,Str "stoops",Space,Str "to",Space,Str "folly",Space,Str "and",Note [Para [Link ("",[],[]) [Str "253."] ("#wasteland-content.xhtml#ln253",""),Space,Str "V.",Space,Str "Goldsmith,",Space,Str "the",Space,Str "song",Space,Str "in",Space,Str "The",Space,Str "Vicar",Space,Str "of",Space,Str "Wakefield."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Paces",Space,Str "about",Space,Str "her",Space,Str "room",Space,Str "again,",Space,Str "alone,"]]
+   ,Div ("",[],[])
+    [Plain [Str "She",Space,Str "smoothes",Space,Str "her",Space,Str "hair",Space,Str "with",Space,Str "automatic",Space,Str "hand,"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "puts",Space,Str "a",Space,Str "record",Space,Str "on",Space,Str "the",Space,Str "gramophone."]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("wasteland-content.xhtml#ln257",[],[])
+    [Plain [Str "\"This",Space,Str "music",Space,Str "crept",Space,Str "by",Space,Str "me",Space,Str "upon",Space,Str "the",Space,Str "waters\"",Note [Para [Link ("",[],[]) [Str "257."] ("#wasteland-content.xhtml#ln257",""),Space,Str "V.",Space,Str "The",Space,Str "Tempest,",Space,Str "as",Space,Str "above."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "along",Space,Str "the",Space,Str "Strand,",Space,Str "up",Space,Str "Queen",Space,Str "Victoria",Space,Str "Street."]]
+   ,Div ("",[],[])
+    [Plain [Str "O",Space,Str "City",Space,Str "city,",Space,Str "I",Space,Str "can",Space,Str "sometimes",Space,Str "hear"]]
+   ,Div ("",[],[])
+    [Plain [Str "Beside",Space,Str "a",Space,Str "public",Space,Str "bar",Space,Str "in",Space,Str "Lower",Space,Str "Thames",Space,Str "Street,",Span ("",["lnum"],[]) [Str "260"]]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "pleasant",Space,Str "whining",Space,Str "of",Space,Str "a",Space,Str "mandoline"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "a",Space,Str "clatter",Space,Str "and",Space,Str "a",Space,Str "chatter",Space,Str "from",Space,Str "within"]]
+   ,Div ("",[],[])
+    [Plain [Str "Where",Space,Str "fishmen",Space,Str "lounge",Space,Str "at",Space,Str "noon:",Space,Str "where",Space,Str "the",Space,Str "walls"]]
+   ,Div ("wasteland-content.xhtml#ln264",[],[])
+    [Plain [Str "Of",Space,Str "Magnus",Space,Str "Martyr",Space,Str "hold",Note [Para [Link ("",[],[]) [Str "264."] ("#wasteland-content.xhtml#ln264",""),Space,Str "The",Space,Str "interior",Space,Str "of",Space,Str "St.",Space,Str "Magnus",Space,Str "Martyr",Space,Str "is",Space,Str "to",Space,Str "my",Space,Str "mind",Space,Str "one",Space,Str "of",Space,Str "the",Space,Str "finest",SoftBreak,Str "among",Space,Str "Wren's",Space,Str "interiors.",Space,Str "See",Space,Str "The",Space,Str "Proposed",Space,Str "Demolition",Space,Str "of",Space,Str "Nineteen",Space,Str "City",SoftBreak,Str "Churches",Space,Str "(P.",Space,Str "S.",Space,Str "King",Space,Str "&",Space,Str "Son,",Space,Str "Ltd.)."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Inexplicable",Space,Str "splendour",Space,Str "of",Space,Str "Ionian",Space,Str "white",Space,Str "and",Space,Str "gold."]]]
+  ,Div ("",["linegroup","indent"],[])
+   [Div ("wasteland-content.xhtml#ln266",[],[])
+    [Plain [Str "The",Space,Str "river",Space,Str "sweats",Note [Para [Link ("",[],[]) [Str "266."] ("#wasteland-content.xhtml#ln266",""),Space,Str "The",Space,Str "Song",Space,Str "of",Space,Str "the",Space,Str "(three)",Space,Str "Thames-daughters",Space,Str "begins",Space,Str "here.",Space,Str "From",Space,Str "line",Space,Str "292",SoftBreak,Str "to",Space,Str "306",Space,Str "inclusive",Space,Str "they",Space,Str "speak",Space,Str "in",Space,Str "turn.",Space,Str "V.",Space,Str "Gutterdsammerung,",Space,Str "III.",Space,Str "i:",Space,Str "the",SoftBreak,Str "Rhine-daughters."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Oil",Space,Str "and",Space,Str "tar"]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "barges",Space,Str "drift"]]
+   ,Div ("",[],[])
+    [Plain [Str "With",Space,Str "the",Space,Str "turning",Space,Str "tide"]]
+   ,Div ("",[],[])
+    [Plain [Str "Red",Space,Str "sails",Span ("",["lnum"],[]) [Str "270"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Wide"]]
+   ,Div ("",[],[])
+    [Plain [Str "To",Space,Str "leeward,",Space,Str "swing",Space,Str "on",Space,Str "the",Space,Str "heavy",Space,Str "spar."]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "barges",Space,Str "wash"]]
+   ,Div ("",[],[])
+    [Plain [Str "Drifting",Space,Str "logs"]]
+   ,Div ("",[],[])
+    [Plain [Str "Down",Space,Str "Greenwich",Space,Str "reach"]]
+   ,Div ("",[],[])
+    [Plain [Str "Past",Space,Str "the",Space,Str "Isle",Space,Str "of",Space,Str "Dogs."]]
+   ,Div ("",["indent"],[])
+    [Plain [Str "Weialala",Space,Str "leia"]]
+   ,Div ("",["indent"],[])
+    [Plain [Str "Wallala",Space,Str "leialala"]]]
+  ,Div ("",["linegroup","indent"],[])
+   [Div ("wasteland-content.xhtml#ln279",[],[])
+    [Plain [Str "Elizabeth",Space,Str "and",Space,Str "Leicester",Note [Para [Link ("",[],[]) [Str "279."] ("#wasteland-content.xhtml#ln279",""),Space,Str "V.",Space,Str "Froude,",Space,Str "Elizabeth,",Space,Str "Vol.",Space,Str "I,",Space,Str "ch.",Space,Str "iv,",Space,Str "letter",Space,Str "of",Space,Str "De",Space,Str "Quadra",Space,Str "to",Space,Str "Philip",SoftBreak,Str "of",Space,Str "Spain:"],BlockQuote [Div ("",[],[]) [Div ("",[],[]) [Plain [Str "\"In",Space,Str "the",Space,Str "afternoon",Space,Str "we",Space,Str "were",Space,Str "in",Space,Str "a",Space,Str "barge,",Space,Str "watching",Space,Str "the",SoftBreak,Str "games",Space,Str "on",Space,Str "the",Space,Str "river."]],Div ("",[],[]) [Plain [Str "(The",Space,Str "queen)",Space,Str "was",Space,Str "alone",Space,Str "with",Space,Str "Lord",Space,Str "Robert",Space,Str "and",Space,Str "myself",SoftBreak,Str "on",Space,Str "the",Space,Str "poop,"]],Div ("",[],[]) [Plain [Str "when",Space,Str "they",Space,Str "began",Space,Str "to",Space,Str "talk",Space,Str "nonsense,",Space,Str "and",Space,Str "went",Space,Str "so",Space,Str "far",SoftBreak,Str "that",Space,Str "Lord",Space,Str "Robert"]],Div ("",[],[]) [Plain [Str "at",Space,Str "last",Space,Str "said,",Space,Str "as",Space,Str "I",Space,Str "was",Space,Str "on",Space,Str "the",Space,Str "spot",Space,Str "there",Space,Str "was",Space,Str "no",SoftBreak,Str "reason",Space,Str "why",Space,Str "they"]],Div ("",[],[]) [Plain [Str "should",Space,Str "not",Space,Str "be",Space,Str "married",Space,Str "if",Space,Str "the",Space,Str "queen",Space,Str "pleased.\""]]]]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Beating",Space,Str "oars",Span ("",["lnum"],[]) [Str "280"]]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "stern",Space,Str "was",Space,Str "formed"]]
+   ,Div ("",[],[])
+    [Plain [Str "A",Space,Str "gilded",Space,Str "shell"]]
+   ,Div ("",[],[])
+    [Plain [Str "Red",Space,Str "and",Space,Str "gold"]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "brisk",Space,Str "swell"]]
+   ,Div ("",[],[])
+    [Plain [Str "Rippled",Space,Str "both",Space,Str "shores"]]
+   ,Div ("",[],[])
+    [Plain [Str "Southwest",Space,Str "wind"]]
+   ,Div ("",[],[])
+    [Plain [Str "Carried",Space,Str "down",Space,Str "stream"]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "peal",Space,Str "of",Space,Str "bells"]]
+   ,Div ("",[],[])
+    [Plain [Str "White",Space,Str "towers"]]
+   ,Div ("",["indent"],[])
+    [Plain [Str "Weialala",Space,Str "leia",Span ("",["lnum"],[]) [Str "290"]]]
+   ,Div ("",["indent"],[])
+    [Plain [Str "Wallala",Space,Str "leialala"]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "\"Trams",Space,Str "and",Space,Str "dusty",Space,Str "trees."]]
+   ,Div ("wasteland-content.xhtml#ln293",[],[])
+    [Plain [Str "Highbury",Space,Str "bore",Space,Str "me.",Space,Str "Richmond",Space,Str "and",Space,Str "Kew",Note [Para [Link ("",[],[]) [Str "293."] ("#wasteland-content.xhtml#ln293",""),Space,Str "Cf.",Space,Str "Purgatorio,",Space,Str "v.",Space,Str "133:"],BlockQuote [Para [Str "\"Ricorditi",Space,Str "di",Space,Str "me,",Space,Str "che",Space,Str "son",Space,Str "la",Space,Str "Pia;",LineBreak,Str "Siena",Space,Str "mi",Space,Str "fe',",Space,Str "disfecemi",SoftBreak,Str "Maremma.\""]]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Undid",Space,Str "me.",Space,Str "By",Space,Str "Richmond",Space,Str "I",Space,Str "raised",Space,Str "my",Space,Str "knees"]]
+   ,Div ("",[],[])
+    [Plain [Str "Supine",Space,Str "on",Space,Str "the",Space,Str "floor",Space,Str "of",Space,Str "a",Space,Str "narrow",Space,Str "canoe.\""]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "\"My",Space,Str "feet",Space,Str "are",Space,Str "at",Space,Str "Moorgate,",Space,Str "and",Space,Str "my",Space,Str "heart"]]
+   ,Div ("",[],[])
+    [Plain [Str "Under",Space,Str "my",Space,Str "feet.",Space,Str "After",Space,Str "the",Space,Str "event"]]
+   ,Div ("",[],[])
+    [Plain [Str "He",Space,Str "wept.",Space,Str "He",Space,Str "promised",Space,Str "'a",Space,Str "new",Space,Str "start'."]]
+   ,Div ("",[],[])
+    [Plain [Str "I",Space,Str "made",Space,Str "no",Space,Str "comment.",Space,Str "What",Space,Str "should",Space,Str "I",Space,Str "resent?\""]]
+   ,Div ("",[],[])
+    [Plain [Str "\"On",Space,Str "Margate",Space,Str "Sands.",Span ("",["lnum"],[]) [Str "300"]]]
+   ,Div ("",[],[])
+    [Plain [Str "I",Space,Str "can",Space,Str "connect"]]
+   ,Div ("",[],[])
+    [Plain [Str "Nothing",Space,Str "with",Space,Str "nothing."]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "broken",Space,Str "fingernails",Space,Str "of",Space,Str "dirty",Space,Str "hands."]]
+   ,Div ("",[],[])
+    [Plain [Str "My",Space,Str "people",Space,Str "humble",Space,Str "people",Space,Str "who",Space,Str "expect"]]
+   ,Div ("",[],[])
+    [Plain [Str "Nothing.\""]]
+   ,Div ("",["indent"],[])
+    [Plain [Str "la",Space,Str "la"]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("wasteland-content.xhtml#ln307",[],[])
+    [Plain [Str "To",Space,Str "Carthage",Space,Str "then",Space,Str "I",Space,Str "came",Note [Para [Link ("",[],[]) [Str "307."] ("#wasteland-content.xhtml#ln307",""),Space,Str "V.",Space,Str "St.",Space,Str "Augustine's",Space,Str "Confessions:",Space,Str "\"to",Space,Str "Carthage",Space,Str "then",Space,Str "I",Space,Str "came,",Space,Str "where",Space,Str "a",SoftBreak,Str "cauldron",Space,Str "of",Space,Str "unholy",Space,Str "loves",Space,Str "sang",Space,Str "all",Space,Str "about",Space,Str "mine",Space,Str "ears.\""]]]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("wasteland-content.xhtml#ln308",[],[])
+    [Plain [Str "Burning",Space,Str "burning",Space,Str "burning",Space,Str "burning",Note [Para [Link ("",[],[]) [Str "308."] ("#wasteland-content.xhtml#ln308",""),Space,Str "The",Space,Str "complete",Space,Str "text",Space,Str "of",Space,Str "the",Space,Str "Buddha's",Space,Str "Fire",Space,Str "Sermon",Space,Str "(which",Space,Str "corresponds",Space,Str "in",SoftBreak,Str "importance",Space,Str "to",Space,Str "the",Space,Str "Sermon",Space,Str "on",Space,Str "the",Space,Str "Mount)",Space,Str "from",Space,Str "which",Space,Str "these",Space,Str "words",Space,Str "are",Space,Str "taken,",SoftBreak,Str "will",Space,Str "be",Space,Str "found",Space,Str "translated",Space,Str "in",Space,Str "the",Space,Str "late",Space,Str "Henry",Space,Str "Clarke",Space,Str "Warren's",Space,Str "Buddhism",Space,Str "in",SoftBreak,Str "Translation",Space,Str "(Harvard",Space,Str "Oriental",Space,Str "Series).",Space,Str "Mr.",Space,Str "Warren",Space,Str "was",Space,Str "one",Space,Str "of",Space,Str "the",Space,Str "great",SoftBreak,Str "pioneers",Space,Str "of",Space,Str "Buddhist",Space,Str "studies",Space,Str "in",Space,Str "the",Space,Str "Occident."]]]]
+   ,Div ("wasteland-content.xhtml#ln309",[],[])
+    [Plain [Str "O",Space,Str "Lord",Space,Str "Thou",Space,Str "pluckest",Space,Str "me",Space,Str "out",Note [Para [Link ("",[],[]) [Str "309."] ("#wasteland-content.xhtml#ln309",""),Space,Str "From",Space,Str "St.",Space,Str "Augustine's",Space,Str "Confessions",Space,Str "again.",Space,Str "The",Space,Str "collocation",Space,Str "of",Space,Str "these",Space,Str "two",SoftBreak,Str "representatives",Space,Str "of",Space,Str "eastern",Space,Str "and",Space,Str "western",Space,Str "asceticism,",Space,Str "as",Space,Str "the",Space,Str "culmination",Space,Str "of",SoftBreak,Str "this",Space,Str "part",Space,Str "of",Space,Str "the",Space,Str "poem,",Space,Str "is",Space,Str "not",Space,Str "an",Space,Str "accident."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "O",Space,Str "Lord",Space,Str "Thou",Space,Str "pluckest",Span ("",["lnum"],[]) [Str "310"]]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "burning"]]]]
+ ,Div ("wasteland-content.xhtml#ch4",["section"],[])
+  [Header 2 ("",[],[]) [Str "IV.",Space,Str "DEATH",Space,Str "BY",Space,Str "WATER"]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "Phlebas",Space,Str "the",Space,Str "Phoenician,",Space,Str "a",Space,Str "fortnight",Space,Str "dead,"]]
+   ,Div ("",[],[])
+    [Plain [Str "Forgot",Space,Str "the",Space,Str "cry",Space,Str "of",Space,Str "gulls,",Space,Str "and",Space,Str "the",Space,Str "deep",Space,Str "sea",Space,Str "swell"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "the",Space,Str "profit",Space,Str "and",Space,Str "loss."]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",["indent2"],[])
+    [Plain [Str "A",Space,Str "current",Space,Str "under",Space,Str "sea"]]
+   ,Div ("",[],[])
+    [Plain [Str "Picked",Space,Str "his",Space,Str "bones",Space,Str "in",Space,Str "whispers.",Space,Str "As",Space,Str "he",Space,Str "rose",Space,Str "and",Space,Str "fell"]]
+   ,Div ("",[],[])
+    [Plain [Str "He",Space,Str "passed",Space,Str "the",Space,Str "stages",Space,Str "of",Space,Str "his",Space,Str "age",Space,Str "and",Space,Str "youth"]]
+   ,Div ("",[],[])
+    [Plain [Str "Entering",Space,Str "the",Space,Str "whirlpool."]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",["indent2"],[])
+    [Plain [Str "Gentile",Space,Str "or",Space,Str "Jew"]]
+   ,Div ("",[],[])
+    [Plain [Str "O",Space,Str "you",Space,Str "who",Space,Str "turn",Space,Str "the",Space,Str "wheel",Space,Str "and",Space,Str "look",Space,Str "to",Space,Str "windward,",Span ("",["lnum"],[]) [Str "320"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Consider",Space,Str "Phlebas,",Space,Str "who",Space,Str "was",Space,Str "once",Space,Str "handsome",Space,Str "and",Space,Str "tall",Space,Str "as",Space,Str "you."]]]]
+ ,Div ("wasteland-content.xhtml#ch5",["section"],[])
+  [Header 2 ("",[],[]) [Str "V.",Space,Str "WHAT",Space,Str "THE",Space,Str "THUNDER",Space,Str "SAID"]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "After",Space,Str "the",Space,Str "torchlight",Space,Str "red",Space,Str "on",Space,Str "sweaty",Space,Str "faces"]]
+   ,Div ("",[],[])
+    [Plain [Str "After",Space,Str "the",Space,Str "frosty",Space,Str "silence",Space,Str "in",Space,Str "the",Space,Str "gardens"]]
+   ,Div ("",[],[])
+    [Plain [Str "After",Space,Str "the",Space,Str "agony",Space,Str "in",Space,Str "stony",Space,Str "places"]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "shouting",Space,Str "and",Space,Str "the",Space,Str "crying"]]
+   ,Div ("",[],[])
+    [Plain [Str "Prison",Space,Str "and",Space,Str "palace",Space,Str "and",Space,Str "reverberation"]]
+   ,Div ("",[],[])
+    [Plain [Str "Of",Space,Str "thunder",Space,Str "of",Space,Str "spring",Space,Str "over",Space,Str "distant",Space,Str "mountains"]]
+   ,Div ("",[],[])
+    [Plain [Str "He",Space,Str "who",Space,Str "was",Space,Str "living",Space,Str "is",Space,Str "now",Space,Str "dead"]]
+   ,Div ("",[],[])
+    [Plain [Str "We",Space,Str "who",Space,Str "were",Space,Str "living",Space,Str "are",Space,Str "now",Space,Str "dying"]]
+   ,Div ("",[],[])
+    [Plain [Str "With",Space,Str "a",Space,Str "little",Space,Str "patience",Span ("",["lnum"],[]) [Str "330"]]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "Here",Space,Str "is",Space,Str "no",Space,Str "water",Space,Str "but",Space,Str "only",Space,Str "rock"]]
+   ,Div ("",[],[])
+    [Plain [Str "Rock",Space,Str "and",Space,Str "no",Space,Str "water",Space,Str "and",Space,Str "the",Space,Str "sandy",Space,Str "road"]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "road",Space,Str "winding",Space,Str "above",Space,Str "among",Space,Str "the",Space,Str "mountains"]]
+   ,Div ("",[],[])
+    [Plain [Str "Which",Space,Str "are",Space,Str "mountains",Space,Str "of",Space,Str "rock",Space,Str "without",Space,Str "water"]]
+   ,Div ("",[],[])
+    [Plain [Str "If",Space,Str "there",Space,Str "were",Space,Str "water",Space,Str "we",Space,Str "should",Space,Str "stop",Space,Str "and",Space,Str "drink"]]
+   ,Div ("",[],[])
+    [Plain [Str "Amongst",Space,Str "the",Space,Str "rock",Space,Str "one",Space,Str "cannot",Space,Str "stop",Space,Str "or",Space,Str "think"]]
+   ,Div ("",[],[])
+    [Plain [Str "Sweat",Space,Str "is",Space,Str "dry",Space,Str "and",Space,Str "feet",Space,Str "are",Space,Str "in",Space,Str "the",Space,Str "sand"]]
+   ,Div ("",[],[])
+    [Plain [Str "If",Space,Str "there",Space,Str "were",Space,Str "only",Space,Str "water",Space,Str "amongst",Space,Str "the",Space,Str "rock"]]
+   ,Div ("",[],[])
+    [Plain [Str "Dead",Space,Str "mountain",Space,Str "mouth",Space,Str "of",Space,Str "carious",Space,Str "teeth",Space,Str "that",Space,Str "cannot",Space,Str "spit"]]
+   ,Div ("",[],[])
+    [Plain [Str "Here",Space,Str "one",Space,Str "can",Space,Str "neither",Space,Str "stand",Space,Str "nor",Space,Str "lie",Space,Str "nor",Space,Str "sit",Span ("",["lnum"],[]) [Str "340"]]]
+   ,Div ("",[],[])
+    [Plain [Str "There",Space,Str "is",Space,Str "not",Space,Str "even",Space,Str "silence",Space,Str "in",Space,Str "the",Space,Str "mountains"]]
+   ,Div ("",[],[])
+    [Plain [Str "But",Space,Str "dry",Space,Str "sterile",Space,Str "thunder",Space,Str "without",Space,Str "rain"]]
+   ,Div ("",[],[])
+    [Plain [Str "There",Space,Str "is",Space,Str "not",Space,Str "even",Space,Str "solitude",Space,Str "in",Space,Str "the",Space,Str "mountains"]]
+   ,Div ("",[],[])
+    [Plain [Str "But",Space,Str "red",Space,Str "sullen",Space,Str "faces",Space,Str "sneer",Space,Str "and",Space,Str "snarl"]]
+   ,Div ("",[],[])
+    [Plain [Str "From",Space,Str "doors",Space,Str "of",Space,Str "mudcracked",Space,Str "houses"]]
+   ,Div ("",["linegroup"],[])
+    [Div ("",["indent2"],[])
+     [Plain [Str "If",Space,Str "there",Space,Str "were",Space,Str "water"]]
+    ,Div ("",[],[])
+     [Plain [Str "And",Space,Str "no",Space,Str "rock"]]
+    ,Div ("",[],[])
+     [Plain [Str "If",Space,Str "there",Space,Str "were",Space,Str "rock"]]
+    ,Div ("",[],[])
+     [Plain [Str "And",Space,Str "also",Space,Str "water"]]
+    ,Div ("",[],[])
+     [Plain [Str "And",Space,Str "water",Span ("",["lnum"],[]) [Str "350"]]]
+    ,Div ("",[],[])
+     [Plain [Str "A",Space,Str "spring"]]
+    ,Div ("",[],[])
+     [Plain [Str "A",Space,Str "pool",Space,Str "among",Space,Str "the",Space,Str "rock"]]
+    ,Div ("",[],[])
+     [Plain [Str "If",Space,Str "there",Space,Str "were",Space,Str "the",Space,Str "sound",Space,Str "of",Space,Str "water",Space,Str "only"]]
+    ,Div ("",[],[])
+     [Plain [Str "Not",Space,Str "the",Space,Str "cicada"]]
+    ,Div ("",[],[])
+     [Plain [Str "And",Space,Str "dry",Space,Str "grass",Space,Str "singing"]]
+    ,Div ("",[],[])
+     [Plain [Str "But",Space,Str "sound",Space,Str "of",Space,Str "water",Space,Str "over",Space,Str "a",Space,Str "rock"]]
+    ,Div ("wasteland-content.xhtml#ln357",[],[])
+     [Plain [Str "Where",Space,Str "the",Space,Str "hermit-thrush",Space,Str "sings",Space,Str "in",Space,Str "the",Space,Str "pine",Space,Str "trees",Note [Para [Link ("",[],[]) [Str "357."] ("#wasteland-content.xhtml#ln357",""),Space,Str "This",Space,Str "is",Space,Str "Turdus",Space,Str "aonalaschkae",Space,Str "pallasii,",Space,Str "the",Space,Str "hermit-thrush",Space,Str "which",Space,Str "I",Space,Str "have",SoftBreak,Str "heard",Space,Str "in",Space,Str "Quebec",Space,Str "County.",Space,Str "Chapman",Space,Str "says",Space,Str "(Handbook",Space,Str "of",Space,Str "Birds",Space,Str "of",Space,Str "Eastern",Space,Str "North",SoftBreak,Str "America)",Space,Str "\"it",Space,Str "is",Space,Str "most",Space,Str "at",Space,Str "home",Space,Str "in",Space,Str "secluded",Space,Str "woodland",Space,Str "and",Space,Str "thickety",Space,Str "retreats.",SoftBreak,Str ".",Space,Str ".",Space,Str ".",Space,Str "Its",Space,Str "notes",Space,Str "are",Space,Str "not",Space,Str "remarkable",Space,Str "for",Space,Str "variety",Space,Str "or",Space,Str "volume,",Space,Str "but",Space,Str "in",Space,Str "purity",SoftBreak,Str "and",Space,Str "sweetness",Space,Str "of",Space,Str "tone",Space,Str "and",Space,Str "exquisite",Space,Str "modulation",Space,Str "they",Space,Str "are",Space,Str "unequalled.\"",Space,Str "Its",SoftBreak,Str "\"water-dripping",Space,Str "song\"",Space,Str "is",Space,Str "justly",Space,Str "celebrated."]]]]
+    ,Div ("",[],[])
+     [Plain [Str "Drip",Space,Str "drop",Space,Str "drip",Space,Str "drop",Space,Str "drop",Space,Str "drop",Space,Str "drop"]]
+    ,Div ("",[],[])
+     [Plain [Str "But",Space,Str "there",Space,Str "is",Space,Str "no",Space,Str "water"]]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("wasteland-content.xhtml#ln360",[],[])
+    [Plain [Str "Who",Space,Str "is",Space,Str "the",Space,Str "third",Space,Str "who",Space,Str "walks",Space,Str "always",Space,Str "beside",Space,Str "you?",Note [Para [Link ("",[],[]) [Str "360."] ("#wasteland-content.xhtml#ln360",""),Space,Str "The",Space,Str "following",Space,Str "lines",Space,Str "were",Space,Str "stimulated",Space,Str "by",Space,Str "the",Space,Str "account",Space,Str "of",Space,Str "one",Space,Str "of",Space,Str "the",SoftBreak,Str "Antarctic",Space,Str "expeditions",Space,Str "(I",Space,Str "forget",Space,Str "which,",Space,Str "but",Space,Str "I",Space,Str "think",Space,Str "one",Space,Str "of",Space,Str "Shackleton's):",SoftBreak,Str "it",Space,Str "was",Space,Str "related",Space,Str "that",Space,Str "the",Space,Str "party",Space,Str "of",Space,Str "explorers,",Space,Str "at",Space,Str "the",Space,Str "extremity",Space,Str "of",Space,Str "their",SoftBreak,Str "strength,",Space,Str "had",Space,Str "the",Space,Str "constant",Space,Str "delusion",Space,Str "that",Space,Str "there",Space,Str "was",Space,Str "one",Space,Str "more",Space,Str "member",Space,Str "than",SoftBreak,Str "could",Space,Str "actually",Space,Str "be",Space,Str "counted."]],SoftBreak,Span ("",["lnum"],[]) [Str "360"]]]
+   ,Div ("",[],[])
+    [Plain [Str "When",Space,Str "I",Space,Str "count,",Space,Str "there",Space,Str "are",Space,Str "only",Space,Str "you",Space,Str "and",Space,Str "I",Space,Str "together"]]
+   ,Div ("",[],[])
+    [Plain [Str "But",Space,Str "when",Space,Str "I",Space,Str "look",Space,Str "ahead",Space,Str "up",Space,Str "the",Space,Str "white",Space,Str "road"]]
+   ,Div ("",[],[])
+    [Plain [Str "There",Space,Str "is",Space,Str "always",Space,Str "another",Space,Str "one",Space,Str "walking",Space,Str "beside",Space,Str "you"]]
+   ,Div ("",[],[])
+    [Plain [Str "Gliding",Space,Str "wrapt",Space,Str "in",Space,Str "a",Space,Str "brown",Space,Str "mantle,",Space,Str "hooded"]]
+   ,Div ("",[],[])
+    [Plain [Str "I",Space,Str "do",Space,Str "not",Space,Str "know",Space,Str "whether",Space,Str "a",Space,Str "man",Space,Str "or",Space,Str "a",Space,Str "woman"]]
+   ,Div ("wasteland-content.xhtml#ln367",[],[])
+    [Plain [Str "\8213But",Space,Str "who",Space,Str "is",Space,Str "that",Space,Str "on",Space,Str "the",Space,Str "other",Space,Str "side",Space,Str "of",Space,Str "you?",Note [Para [Link ("",[],[]) [Str "367-77."] ("#wasteland-content.xhtml#ln367",""),Space,Str "Cf.",Space,Str "Hermann",Space,Str "Hesse,",Space,Str "Blick",Space,Str "ins",Space,Str "Chaos:"],BlockQuote [Para [Str "\"Schon",Space,Str "ist",Space,Str "halb",Space,Str "Europa,",Space,Str "schon",Space,Str "ist",Space,Str "zumindest",Space,Str "der",Space,Str "halbe",Space,Str "Osten",Space,Str "Europas",SoftBreak,Str "auf",Space,Str "dem",LineBreak,Str "Wege",Space,Str "zum",Space,Str "Chaos,",Space,Str "fhrt",Space,Str "betrunken",Space,Str "im",Space,Str "heiligem",Space,Str "Wahn",Space,Str "am",SoftBreak,Str "Abgrund",Space,Str "entlang",LineBreak,Str "und",Space,Str "singt",Space,Str "dazu,",Space,Str "singt",Space,Str "betrunken",Space,Str "und",Space,Str "hymnisch",SoftBreak,Str "wie",Space,Str "Dmitri",Space,Str "Karamasoff",Space,Str "sang.",LineBreak,Str "Ueber",Space,Str "diese",Space,Str "Lieder",Space,Str "lacht",Space,Str "der",SoftBreak,Str "Bsrger",Space,Str "beleidigt,",Space,Str "der",Space,Str "Heilige",LineBreak,Str "und",Space,Str "Seher",Space,Str "hrt",Space,Str "sie",Space,Str "mit",SoftBreak,Str "Trvnen.\""]]]]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "What",Space,Str "is",Space,Str "that",Space,Str "sound",Space,Str "high",Space,Str "in",Space,Str "the",Space,Str "air"]]
+   ,Div ("",[],[])
+    [Plain [Str "Murmur",Space,Str "of",Space,Str "maternal",Space,Str "lamentation"]]
+   ,Div ("",[],[])
+    [Plain [Str "Who",Space,Str "are",Space,Str "those",Space,Str "hooded",Space,Str "hordes",Space,Str "swarming"]]
+   ,Div ("",[],[])
+    [Plain [Str "Over",Space,Str "endless",Space,Str "plains,",Space,Str "stumbling",Space,Str "in",Space,Str "cracked",Space,Str "earth",Span ("",["lnum"],[]) [Str "370"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Ringed",Space,Str "by",Space,Str "the",Space,Str "flat",Space,Str "horizon",Space,Str "only"]]
+   ,Div ("",[],[])
+    [Plain [Str "What",Space,Str "is",Space,Str "the",Space,Str "city",Space,Str "over",Space,Str "the",Space,Str "mountains"]]
+   ,Div ("",[],[])
+    [Plain [Str "Cracks",Space,Str "and",Space,Str "reforms",Space,Str "and",Space,Str "bursts",Space,Str "in",Space,Str "the",Space,Str "violet",Space,Str "air"]]
+   ,Div ("",[],[])
+    [Plain [Str "Falling",Space,Str "towers"]]
+   ,Div ("",[],[])
+    [Plain [Str "Jerusalem",Space,Str "Athens",Space,Str "Alexandria"]]
+   ,Div ("",[],[])
+    [Plain [Str "Vienna",Space,Str "London"]]
+   ,Div ("",[],[])
+    [Plain [Str "Unreal"]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "A",Space,Str "woman",Space,Str "drew",Space,Str "her",Space,Str "long",Space,Str "black",Space,Str "hair",Space,Str "out",Space,Str "tight"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "fiddled",Space,Str "whisper",Space,Str "music",Space,Str "on",Space,Str "those",Space,Str "strings"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "bats",Space,Str "with",Space,Str "baby",Space,Str "faces",Space,Str "in",Space,Str "the",Space,Str "violet",Space,Str "light",Span ("",["lnum"],[]) [Str "380"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Whistled,",Space,Str "and",Space,Str "beat",Space,Str "their",Space,Str "wings"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "crawled",Space,Str "head",Space,Str "downward",Space,Str "down",Space,Str "a",Space,Str "blackened",Space,Str "wall"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "upside",Space,Str "down",Space,Str "in",Space,Str "air",Space,Str "were",Space,Str "towers"]]
+   ,Div ("",[],[])
+    [Plain [Str "Tolling",Space,Str "reminiscent",Space,Str "bells,",Space,Str "that",Space,Str "kept",Space,Str "the",Space,Str "hours"]]
+   ,Div ("",[],[])
+    [Plain [Str "And",Space,Str "voices",Space,Str "singing",Space,Str "out",Space,Str "of",Space,Str "empty",Space,Str "cisterns",Space,Str "and",Space,Str "exhausted",SoftBreak,Str "wells."]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "In",Space,Str "this",Space,Str "decayed",Space,Str "hole",Space,Str "among",Space,Str "the",Space,Str "mountains"]]
+   ,Div ("",[],[])
+    [Plain [Str "In",Space,Str "the",Space,Str "faint",Space,Str "moonlight,",Space,Str "the",Space,Str "grass",Space,Str "is",Space,Str "singing"]]
+   ,Div ("",[],[])
+    [Plain [Str "Over",Space,Str "the",Space,Str "tumbled",Space,Str "graves,",Space,Str "about",Space,Str "the",Space,Str "chapel"]]
+   ,Div ("",[],[])
+    [Plain [Str "There",Space,Str "is",Space,Str "the",Space,Str "empty",Space,Str "chapel,",Space,Str "only",Space,Str "the",Space,Str "wind's",Space,Str "home."]]
+   ,Div ("",[],[])
+    [Plain [Str "It",Space,Str "has",Space,Str "no",Space,Str "windows,",Space,Str "and",Space,Str "the",Space,Str "door",Space,Str "swings,",Span ("",["lnum"],[]) [Str "390"]]]
+   ,Div ("",[],[])
+    [Plain [Str "Dry",Space,Str "bones",Space,Str "can",Space,Str "harm",Space,Str "no",Space,Str "one."]]
+   ,Div ("",[],[])
+    [Plain [Str "Only",Space,Str "a",Space,Str "cock",Space,Str "stood",Space,Str "on",Space,Str "the",Space,Str "rooftree"]]
+   ,Div ("",[],[])
+    [Plain [Str "Co",Space,Str "co",Space,Str "rico",Space,Str "co",Space,Str "co",Space,Str "rico"]]
+   ,Div ("",[],[])
+    [Plain [Str "In",Space,Str "a",Space,Str "flash",Space,Str "of",Space,Str "lightning.",Space,Str "Then",Space,Str "a",Space,Str "damp",Space,Str "gust"]]
+   ,Div ("",[],[])
+    [Plain [Str "Bringing",Space,Str "rain"]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",[],[])
+    [Plain [Str "Ganga",Space,Str "was",Space,Str "sunken,",Space,Str "and",Space,Str "the",Space,Str "limp",Space,Str "leaves"]]
+   ,Div ("",[],[])
+    [Plain [Str "Waited",Space,Str "for",Space,Str "rain,",Space,Str "while",Space,Str "the",Space,Str "black",Space,Str "clouds"]]
+   ,Div ("",[],[])
+    [Plain [Str "Gathered",Space,Str "far",Space,Str "distant,",Space,Str "over",Space,Str "Himavant."]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "jungle",Space,Str "crouched,",Space,Str "humped",Space,Str "in",Space,Str "silence."]]
+   ,Div ("",[],[])
+    [Plain [Str "Then",Space,Str "spoke",Space,Str "the",Space,Str "thunder",Span ("",["lnum"],[]) [Str "400"]]]
+   ,Div ("",[],[])
+    [Plain [Str "DA"]]
+   ,Div ("wasteland-content.xhtml#ln402",[],[])
+    [Plain [Span ("",[],[("lang","sa")]) [Str "Datta"],Str ":",Space,Str "what",Space,Str "have",Space,Str "we",Space,Str "given?",Note [Para [Link ("",[],[]) [Str "402."] ("#wasteland-content.xhtml#ln402",""),Space,Quoted DoubleQuote [Str "\"Datta,",Space,Str "dayadhvam,",Space,Str "damyata\""],Space,Str "(Give,",Space,Str "sympathize,",SoftBreak,Str "control).",Space,Str "The",Space,Str "fable",Space,Str "of",Space,Str "the",Space,Str "meaning",Space,Str "of",Space,Str "the",Space,Str "Thunder",Space,Str "is",Space,Str "found",Space,Str "in",Space,Str "the",SoftBreak,Str "Brihadaranyaka-Upanishad,",Space,Str "5,",Space,Str "1.",Space,Str "A",Space,Str "translation",Space,Str "is",Space,Str "found",Space,Str "in",Space,Str "Deussen's",SoftBreak,Str "Sechzig",Space,Str "Upanishads",Space,Str "des",Space,Str "Veda,",Space,Str "p.",Space,Str "489."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "My",Space,Str "friend,",Space,Str "blood",Space,Str "shaking",Space,Str "my",Space,Str "heart"]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "awful",Space,Str "daring",Space,Str "of",Space,Str "a",Space,Str "moment's",Space,Str "surrender"]]
+   ,Div ("",[],[])
+    [Plain [Str "Which",Space,Str "an",Space,Str "age",Space,Str "of",Space,Str "prudence",Space,Str "can",Space,Str "never",Space,Str "retract"]]
+   ,Div ("",[],[])
+    [Plain [Str "By",Space,Str "this,",Space,Str "and",Space,Str "this",Space,Str "only,",Space,Str "we",Space,Str "have",Space,Str "existed"]]
+   ,Div ("",[],[])
+    [Plain [Str "Which",Space,Str "is",Space,Str "not",Space,Str "to",Space,Str "be",Space,Str "found",Space,Str "in",Space,Str "our",Space,Str "obituaries"]]
+   ,Div ("wasteland-content.xhtml#ln408",[],[])
+    [Plain [Str "Or",Space,Str "in",Space,Str "memories",Space,Str "draped",Space,Str "by",Space,Str "the",Space,Str "beneficent",Space,Str "spider",Note [Para [Link ("",[],[]) [Str "408."] ("#wasteland-content.xhtml#ln408",""),Space,Str "Cf.",Space,Str "Webster,",Space,Str "The",Space,Str "White",Space,Str "Devil,",Space,Str "v.",Space,Str "vi:"],BlockQuote [Para [Str "\".",Space,Str ".",Space,Str ".",Space,Str "they'll",Space,Str "remarry",LineBreak,Str "Ere",Space,Str "the",Space,Str "worm",Space,Str "pierce",Space,Str "your",Space,Str "winding-sheet,",SoftBreak,Str "ere",Space,Str "the",Space,Str "spider",LineBreak,Str "Make",Space,Str "a",Space,Str "thin",Space,Str "curtain",Space,Str "for",Space,Str "your",Space,Str "epitaphs.\""]]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Or",Space,Str "under",Space,Str "seals",Space,Str "broken",Space,Str "by",Space,Str "the",Space,Str "lean",Space,Str "solicitor"]]
+   ,Div ("",[],[])
+    [Plain [Str "In",Space,Str "our",Space,Str "empty",Space,Str "rooms",Span ("",["lnum"],[]) [Str "410"]]]
+   ,Div ("",[],[])
+    [Plain [Str "DA"]]
+   ,Div ("wasteland-content.xhtml#ln412",[],[])
+    [Plain [Span ("",[],[("lang","sa")]) [Str "Dayadhvam"],Str ":",Space,Str "I",Space,Str "have",Space,Str "heard",Space,Str "the",Space,Str "key",Note [Para [Link ("",[],[]) [Str "412."] ("#wasteland-content.xhtml#ln412",""),Space,Str "Cf.",Space,Str "Inferno,",Space,Str "xxxiii.",Space,Str "46:"],BlockQuote [Para [Str "\"ed",Space,Str "io",Space,Str "sentii",Space,Str "chiavar",Space,Str "l'uscio",Space,Str "di",Space,Str "sotto",LineBreak,Str "all'orribile",Space,Str "torre.\""]],Para [Str "Also",Space,Str "F.",Space,Str "H.",Space,Str "Bradley,",Space,Str "Appearance",Space,Str "and",Space,Str "Reality,",Space,Str "p.",Space,Str "346:"],BlockQuote [Para [Str "\"My",Space,Str "external",Space,Str "sensations",Space,Str "are",Space,Str "no",Space,Str "less",Space,Str "private",Space,Str "to",Space,Str "myself",Space,Str "than",Space,Str "are",Space,Str "my",SoftBreak,Str "thoughts",Space,Str "or",Space,Str "my",Space,Str "feelings.",Space,Str "In",Space,Str "either",Space,Str "case",Space,Str "my",Space,Str "experience",Space,Str "falls",Space,Str "within",SoftBreak,Str "my",Space,Str "own",Space,Str "circle,",Space,Str "a",Space,Str "circle",Space,Str "closed",Space,Str "on",Space,Str "the",Space,Str "outside;",Space,Str "and,",Space,Str "with",Space,Str "all",Space,Str "its",SoftBreak,Str "elements",Space,Str "alike,",Space,Str "every",Space,Str "sphere",Space,Str "is",Space,Str "opaque",Space,Str "to",Space,Str "the",Space,Str "others",Space,Str "which",Space,Str "surround",SoftBreak,Str "it.",Space,Str ".",Space,Str ".",Space,Str ".",Space,Str "In",Space,Str "brief,",Space,Str "regarded",Space,Str "as",Space,Str "an",Space,Str "existence",Space,Str "which",Space,Str "appears",Space,Str "in",Space,Str "a",SoftBreak,Str "soul,",Space,Str "the",Space,Str "whole",Space,Str "world",Space,Str "for",Space,Str "each",Space,Str "is",Space,Str "peculiar",Space,Str "and",Space,Str "private",Space,Str "to",Space,Str "that",SoftBreak,Str "soul.\""]]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Turn",Space,Str "in",Space,Str "the",Space,Str "door",Space,Str "once",Space,Str "and",Space,Str "turn",Space,Str "once",Space,Str "only"]]
+   ,Div ("",[],[])
+    [Plain [Str "We",Space,Str "think",Space,Str "of",Space,Str "the",Space,Str "key,",Space,Str "each",Space,Str "in",Space,Str "his",Space,Str "prison"]]
+   ,Div ("",[],[])
+    [Plain [Str "Thinking",Space,Str "of",Space,Str "the",Space,Str "key,",Space,Str "each",Space,Str "confirms",Space,Str "a",Space,Str "prison"]]
+   ,Div ("",[],[])
+    [Plain [Str "Only",Space,Str "at",Space,Str "nightfall,",Space,Str "aetherial",Space,Str "rumours"]]
+   ,Div ("",[],[])
+    [Plain [Str "Revive",Space,Str "for",Space,Str "a",Space,Str "moment",Space,Str "a",Space,Str "broken",Space,Str "Coriolanus"]]
+   ,Div ("",[],[])
+    [Plain [Str "DA"]]
+   ,Div ("",[],[])
+    [Plain [Span ("",[],[("lang","sa")]) [Str "Damyata"],Str ":",Space,Str "The",Space,Str "boat",Space,Str "responded"]]
+   ,Div ("",[],[])
+    [Plain [Str "Gaily,",Space,Str "to",Space,Str "the",Space,Str "hand",Space,Str "expert",Space,Str "with",Space,Str "sail",Space,Str "and",Space,Str "oar",Span ("",["lnum"],[]) [Str "420"]]]
+   ,Div ("",[],[])
+    [Plain [Str "The",Space,Str "sea",Space,Str "was",Space,Str "calm,",Space,Str "your",Space,Str "heart",Space,Str "would",Space,Str "have",Space,Str "responded"]]
+   ,Div ("",[],[])
+    [Plain [Str "Gaily,",Space,Str "when",Space,Str "invited,",Space,Str "beating",Space,Str "obedient"]]
+   ,Div ("",[],[])
+    [Plain [Str "To",Space,Str "controlling",Space,Str "hands"]]]
+  ,Div ("",["linegroup"],[])
+   [Div ("",["indent"],[])
+    [Plain [Str "I",Space,Str "sat",Space,Str "upon",Space,Str "the",Space,Str "shore"]]
+   ,Div ("wasteland-content.xhtml#ln425",[],[])
+    [Plain [Str "Fishing,",Space,Str "with",Space,Str "the",Space,Str "arid",Space,Str "plain",Space,Str "behind",Space,Str "me",Note [Para [Link ("",[],[]) [Str "425."] ("#wasteland-content.xhtml#ln425",""),Space,Str "V.",Space,Str "Weston,",Space,Str "From",Space,Str "Ritual",Space,Str "to",Space,Str "Romance;",Space,Str "chapter",Space,Str "on",Space,Str "the",Space,Str "Fisher",Space,Str "King."]]]]
+   ,Div ("",[],[])
+    [Plain [Str "Shall",Space,Str "I",Space,Str "at",Space,Str "least",Space,Str "set",Space,Str "my",Space,Str "lands",Space,Str "in",Space,Str "order?"]]
+   ,Div ("",[],[])
+    [Plain [Str "London",Space,Str "Bridge",Space,Str "is",Space,Str "falling",Space,Str "down",Space,Str "falling",Space,Str "down",Space,Str "falling",Space,Str "down"]]
+   ,Div ("wasteland-content.xhtml#ln428",[],[("lang","it")])
+    [Plain [Emph [Str "Poi",Space,Str "s'ascose",Space,Str "nel",Space,Str "foco",Space,Str "che",Space,Str "gli",Space,Str "affina"],SoftBreak,Note [Para [Link ("",[],[]) [Str "428."] ("#wasteland-content.xhtml#ln428",""),Space,Str "V.",Space,Str "Purgatorio,",Space,Str "xxvi.",Space,Str "148."],BlockQuote [Para [Str "\"'Ara",Space,Str "vos",Space,Str "prec",Space,Str "per",Space,Str "aquella",Space,Str "valor",LineBreak,Str "'que",Space,Str "vos",Space,Str "guida",Space,Str "al",Space,Str "som",Space,Str "de",SoftBreak,Str "l'escalina,",LineBreak,Str "'sovegna",Space,Str "vos",Space,Str "a",Space,Str "temps",Space,Str "de",Space,Str "ma",Space,Str "dolor.'",LineBreak,Str "Poi",SoftBreak,Str "s'ascose",Space,Str "nel",Space,Str "foco",Space,Str "che",Space,Str "gli",Space,Str "affina.\""]]]]]
+   ,Div ("wasteland-content.xhtml#ln429",[],[])
+    [Plain [Span ("",[],[("lang","it")]) [SoftBreak,Emph [Str "Quando",Space,Str "fiam",Space,Str "ceu",Space,Str "chelidon"],SoftBreak],Space,Str "-",Space,Str "O",Space,Str "swallow",Space,Str "swallow",Note [Para [Link ("",[],[]) [Str "429."] ("#wasteland-content.xhtml#ln429",""),Space,Str "V.",Space,Str "Pervigilium",Space,Str "Veneris.",Space,Str "Cf.",Space,Str "Philomela",Space,Str "in",Space,Str "Parts",Space,Str "II",Space,Str "and",Space,Str "III."]]]]
+   ,Div ("wasteland-content.xhtml#ln430",[],[("lang","fr")])
+    [Plain [Emph [Str "Le",Space,Str "Prince",Space,Str "d'Aquitaine",Space,Str "a",Space,Str "la",Space,Str "tour",Space,Str "abolie"],SoftBreak,Note [Para [Link ("",[],[]) [Str "430."] ("#wasteland-content.xhtml#ln430",""),Space,Str "V.",Space,Str "Gerard",Space,Str "de",Space,Str "Nerval,",Space,Str "Sonnet",Space,Str "El",Space,Str "Desdichado."]],SoftBreak,Span ("",["lnum"],[]) [Str "430"]]]
+   ,Div ("",[],[])
+    [Plain [Str "These",Space,Str "fragments",Space,Str "I",Space,Str "have",Space,Str "shored",Space,Str "against",Space,Str "my",Space,Str "ruins"]]
+   ,Div ("wasteland-content.xhtml#ln432",[],[])
+    [Plain [Str "Why",Space,Str "then",Space,Str "Ile",Space,Str "fit",Space,Str "you.",Space,Str "Hieronymo's",Space,Str "mad",Space,Str "againe.",Note [Para [Link ("",[],[]) [Str "432."] ("#wasteland-content.xhtml#ln432",""),Space,Str "V.",Space,Str "Kyd's",Space,Str "Spanish",Space,Str "Tragedy."]]]]
+   ,Div ("",[],[("lang","sa")])
+    [Plain [Str "Datta.",Space,Str "Dayadhvam.",Space,Str "Damyata."]]
+   ,Div ("wasteland-content.xhtml#ln434",["linegroup","indent"],[])
+    [Plain [Span ("",[],[("lang","sa")]) [Str "Shantih",Space,Str "shantih",Space,Str "shantih",Note [Para [Link ("",[],[]) [Str "434."] ("#wasteland-content.xhtml#ln434",""),Space,Str "Shantih.",Space,Str "Repeated",Space,Str "as",Space,Str "here,",Space,Str "a",Space,Str "formal",Space,Str "ending",Space,Str "to",Space,Str "an",Space,Str "Upanishad.",Space,Str "'The",SoftBreak,Str "Peace",Space,Str "which",Space,Str "passeth",Space,Str "understanding'",Space,Str "is",Space,Str "a",Space,Str "feeble",Space,Str "translation",Space,Str "of",Space,Str "the",SoftBreak,Str "content",Space,Str "of",Space,Str "this",Space,Str "word."]],SoftBreak]]]]]]
+,Div ("wasteland-content.xhtml#backmatter",["section"],[("type","backmatter")])
+ [Div ("wasteland-content.xhtml#rearnotes",["section"],[("type","rearnotes")])
+  [Header 2 ("",[],[]) [Str "NOTES",Space,Str "ON",Space,Str "\"THE",Space,Str "WASTE",Space,Str "LAND\""]
+  ,Para [Str "Not",Space,Str "only",Space,Str "the",Space,Str "title,",Space,Str "but",Space,Str "the",Space,Str "plan",Space,Str "and",Space,Str "a",Space,Str "good",Space,Str "deal",Space,Str "of",Space,Str "the",Space,Str "incidental",Space,Str "symbolism",Space,Str "of",SoftBreak,Str "the",Space,Str "poem",Space,Str "were",Space,Str "suggested",Space,Str "by",Space,Str "Miss",Space,Str "Jessie",Space,Str "L.",Space,Str "Weston's",Space,Str "book",Space,Str "on",Space,Str "the",Space,Str "Grail",Space,Str "legend:",SoftBreak,Str "From",Space,Str "Ritual",Space,Str "to",Space,Str "Romance"]
+  ,Para [Str "Indeed,",Space,Str "so",Space,Str "deeply",Space,Str "am",Space,Str "I",Space,Str "indebted,",Space,Str "Miss",Space,Str "Weston's",Space,Str "book",Space,Str "will",Space,Str "elucidate",Space,Str "the",SoftBreak,Str "difficulties",Space,Str "of",Space,Str "the",Space,Str "poem",Space,Str "much",Space,Str "better",Space,Str "than",Space,Str "my",Space,Str "notes",Space,Str "can",Space,Str "do;",Space,Str "and",Space,Str "I",Space,Str "recommend",Space,Str "it",SoftBreak,Str "(apart",Space,Str "from",Space,Str "the",Space,Str "great",Space,Str "interest",Space,Str "of",Space,Str "the",Space,Str "book",Space,Str "itself)",Space,Str "to",Space,Str "any",Space,Str "who",Space,Str "think",Space,Str "such",SoftBreak,Str "elucidation",Space,Str "of",Space,Str "the",Space,Str "poem",Space,Str "worth",Space,Str "the",Space,Str "trouble.",Space,Str "To",Space,Str "another",Space,Str "work",Space,Str "of",Space,Str "anthropology",Space,Str "I",Space,Str "am",SoftBreak,Str "indebted",Space,Str "in",Space,Str "general,",Space,Str "one",Space,Str "which",Space,Str "has",Space,Str "influenced",Space,Str "our",Space,Str "generation",Space,Str "profoundly;",Space,Str "I",Space,Str "mean",SoftBreak,Str "The",Space,Str "Golden",Space,Str "Bough;",Space,Str "I",Space,Str "have",Space,Str "used",Space,Str "especially",Space,Str "the",Space,Str "two",Space,Str "volumes",Space,Str "Adonis,",Space,Str "Attis,",Space,Str "Osiris.",SoftBreak,Str "Anyone",Space,Str "who",Space,Str "is",Space,Str "acquainted",Space,Str "with",Space,Str "these",Space,Str "works",Space,Str "will",Space,Str "immediately",Space,Str "recognise",Space,Str "in",Space,Str "the",Space,Str "poem",SoftBreak,Str "certain",Space,Str "references",Space,Str "to",Space,Str "vegetation",Space,Str "ceremonies."]
+  ,Div ("",["section"],[])
+   [Header 3 ("",[],[]) [Str "I.",Space,Str "THE",Space,Str "BURIAL",Space,Str "OF",Space,Str "THE",Space,Str "DEAD"]]
+  ,Div ("",["section"],[])
+   [Header 3 ("",[],[]) [Str "II.",Space,Str "A",Space,Str "GAME",Space,Str "OF",Space,Str "CHESS"]]
+  ,Div ("",["section"],[])
+   [Header 3 ("",[],[]) [Str "III.",Space,Str "THE",Space,Str "FIRE",Space,Str "SERMON"]]
+  ,Div ("",["section"],[])
+   [Header 3 ("",[],[]) [Str "V.",Space,Str "WHAT",Space,Str "THE",Space,Str "THUNDER",Space,Str "SAID"]
+   ,Para [Str "In",Space,Str "the",Space,Str "first",Space,Str "part",Space,Str "of",Space,Str "Part",Space,Str "V",Space,Str "three",Space,Str "themes",Space,Str "are",Space,Str "employed:",Space,Str "the",Space,Str "journey",Space,Str "to",Space,Str "Emmaus,",SoftBreak,Str "the",Space,Str "approach",Space,Str "to",Space,Str "the",Space,Str "Chapel",Space,Str "Perilous",Space,Str "(see",Space,Str "Miss",Space,Str "Weston's",Space,Str "book)",Space,Str "and",Space,Str "the",Space,Str "present",SoftBreak,Str "decay",Space,Str "of",Space,Str "eastern",Space,Str "Europe."]]]]]
diff --git a/test/fb2/basic.fb2 b/test/fb2/basic.fb2
--- a/test/fb2/basic.fb2
+++ b/test/fb2/basic.fb2
@@ -55,9 +55,7 @@
 <empty-line />
 <p>
 <strikethrough>Strikeout</strikethrough> is Pandoc’s extension.
-Superscript and subscripts too: H<sub>2</sub>O is a liquid<a l:href="#n1" type="note">
-<sup>[1]</sup>
-</a>.
+Superscript and subscripts too: H<sub>2</sub>O is a liquid<a l:href="#n1" type="note">[1]</a>.
 2<sup>10</sup> is 1024.</p>
 <p>Math is another Pandoc extension: <code>E = m c^2</code>.</p>
 </section>
diff --git a/test/fb2/reader/notes.fb2 b/test/fb2/reader/notes.fb2
new file mode 100644
--- /dev/null
+++ b/test/fb2/reader/notes.fb2
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
+	<body>
+		<section>
+			<p>Note <a l:href="#n1" type="note">1</a>.</p>
+			<p>Second note <a l:href="#n2" type="note">2</a>.</p>
+		</section>
+	</body>
+	<body name="notes">
+		<section id="n1">
+			<title><p>1</p></title>
+			<p>Note contents</p>
+		</section>
+		<section id="n2">
+			<title><p>2</p></title>
+			<p>Second note contents.</p>
+		</section>
+	</body>
+</FictionBook>
diff --git a/test/fb2/reader/notes.native b/test/fb2/reader/notes.native
new file mode 100644
--- /dev/null
+++ b/test/fb2/reader/notes.native
@@ -0,0 +1,4 @@
+Pandoc (Meta {unMeta = fromList []})
+[Div ("",["section"],[])
+ [Para [Str "Note",Space,Note [Para [Str "Note",Space,Str "contents"]],Str "."]
+ ,Para [Str "Second",Space,Str "note",Space,Note [Para [Str "Second",Space,Str "note",Space,Str "contents."]],Str "."]]]
diff --git a/test/html-reader.native b/test/html-reader.native
--- a/test/html-reader.native
+++ b/test/html-reader.native
@@ -415,7 +415,7 @@
   ,[Plain [Str "5"]]
   ,[Plain [Str "6"]]]]
 ,HorizontalRule
-,Table [] [AlignDefault,AlignDefault,AlignDefault] [0.3333333333333333,0.3333333333333333,0.3333333333333333]
+,Table [] [AlignDefault,AlignDefault,AlignDefault] [0.0,0.0,0.0]
  [[Plain [Str "X"]]
  ,[Plain [Str "Y"]]
  ,[Plain [Str "Z"]]]
diff --git a/test/lhs-test.html b/test/lhs-test.html
--- a/test/lhs-test.html
+++ b/test/lhs-test.html
@@ -12,9 +12,9 @@
       div.column{display: inline-block; vertical-align: top; width: 50%;}
   </style>
   <style>
-a.sourceLine { display: inline-block; line-height: 1.25; }
-a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
-a.sourceLine:empty { height: 1.2em; }
+code.sourceCode > span { display: inline-block; line-height: 1.25; }
+code.sourceCode > span { color: inherit; text-decoration: inherit; }
+code.sourceCode > span:empty { height: 1.2em; }
 .sourceCode { overflow: visible; }
 code.sourceCode { white-space: pre; position: relative; }
 div.sourceCode { margin: 1em 0; }
@@ -24,14 +24,16 @@
 }
 @media print {
 code.sourceCode { white-space: pre-wrap; }
-a.sourceLine { text-indent: -1em; padding-left: 1em; }
+code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
 }
-pre.numberSource a.sourceLine
-  { position: relative; left: -4em; }
-pre.numberSource a.sourceLine::before
-  { content: attr(title);
+pre.numberSource code
+  { counter-reset: source-line 0; }
+pre.numberSource code > span
+  { position: relative; left: -4em; counter-increment: source-line; }
+pre.numberSource code > span > a:first-child::before
+  { content: counter(source-line);
     position: relative; left: -1em; text-align: right; vertical-align: baseline;
-    border: none; pointer-events: all; display: inline-block;
+    border: none; display: inline-block;
     -webkit-touch-callout: none; -webkit-user-select: none;
     -khtml-user-select: none; -moz-user-select: none;
     -ms-user-select: none; user-select: none;
@@ -40,9 +42,9 @@
   }
 pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
 div.sourceCode
-  {  }
+  {   }
 @media screen {
-a.sourceLine::before { text-decoration: underline; }
+code.sourceCode > span > a:first-child::before { text-decoration: underline; }
 }
 code span.al { color: #ff0000; font-weight: bold; } /* Alert */
 code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
@@ -82,9 +84,9 @@
 <h1 id="lhs-test">lhs test</h1>
 <p><code>unsplit</code> is an arrow that takes a pair of values and combines them to
 return a single value:</p>
-<div class="sourceCode" id="cb1"><pre class="sourceCode haskell literate"><code class="sourceCode haskell"><a class="sourceLine" id="cb1-1" title="1"><span class="ot">unsplit ::</span> (<span class="dt">Arrow</span> a) <span class="ot">=&gt;</span> (b <span class="ot">-&gt;</span> c <span class="ot">-&gt;</span> d) <span class="ot">-&gt;</span> a (b, c) d</a>
-<a class="sourceLine" id="cb1-2" title="2">unsplit <span class="ot">=</span> arr <span class="op">.</span> <span class="fu">uncurry</span></a>
-<a class="sourceLine" id="cb1-3" title="3">          <span class="co">-- arr (\op (x,y) -&gt; x `op` y)</span></a></code></pre></div>
+<div class="sourceCode" id="cb1"><pre class="sourceCode haskell literate"><code class="sourceCode haskell"><span id="cb1-1"><a href="#cb1-1"></a><span class="ot">unsplit ::</span> (<span class="dt">Arrow</span> a) <span class="ot">=&gt;</span> (b <span class="ot">-&gt;</span> c <span class="ot">-&gt;</span> d) <span class="ot">-&gt;</span> a (b, c) d</span>
+<span id="cb1-2"><a href="#cb1-2"></a>unsplit <span class="ot">=</span> arr <span class="op">.</span> <span class="fu">uncurry</span></span>
+<span id="cb1-3"><a href="#cb1-3"></a>          <span class="co">-- arr (\op (x,y) -&gt; x `op` y)</span></span></code></pre></div>
 <p><code>(***)</code> combines two arrows into a new arrow by running the two arrows on a
 pair of values (one arrow on the first item of the pair and one arrow on the
 second item of the pair).</p>
diff --git a/test/lhs-test.html+lhs b/test/lhs-test.html+lhs
--- a/test/lhs-test.html+lhs
+++ b/test/lhs-test.html+lhs
@@ -12,9 +12,9 @@
       div.column{display: inline-block; vertical-align: top; width: 50%;}
   </style>
   <style>
-a.sourceLine { display: inline-block; line-height: 1.25; }
-a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
-a.sourceLine:empty { height: 1.2em; }
+code.sourceCode > span { display: inline-block; line-height: 1.25; }
+code.sourceCode > span { color: inherit; text-decoration: inherit; }
+code.sourceCode > span:empty { height: 1.2em; }
 .sourceCode { overflow: visible; }
 code.sourceCode { white-space: pre; position: relative; }
 div.sourceCode { margin: 1em 0; }
@@ -24,14 +24,16 @@
 }
 @media print {
 code.sourceCode { white-space: pre-wrap; }
-a.sourceLine { text-indent: -1em; padding-left: 1em; }
+code.sourceCode > span { text-indent: -5em; padding-left: 5em; }
 }
-pre.numberSource a.sourceLine
-  { position: relative; left: -4em; }
-pre.numberSource a.sourceLine::before
-  { content: attr(title);
+pre.numberSource code
+  { counter-reset: source-line 0; }
+pre.numberSource code > span
+  { position: relative; left: -4em; counter-increment: source-line; }
+pre.numberSource code > span > a:first-child::before
+  { content: counter(source-line);
     position: relative; left: -1em; text-align: right; vertical-align: baseline;
-    border: none; pointer-events: all; display: inline-block;
+    border: none; display: inline-block;
     -webkit-touch-callout: none; -webkit-user-select: none;
     -khtml-user-select: none; -moz-user-select: none;
     -ms-user-select: none; user-select: none;
@@ -40,9 +42,9 @@
   }
 pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  padding-left: 4px; }
 div.sourceCode
-  {  }
+  {   }
 @media screen {
-a.sourceLine::before { text-decoration: underline; }
+code.sourceCode > span > a:first-child::before { text-decoration: underline; }
 }
 code span.al { color: #ff0000; font-weight: bold; } /* Alert */
 code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
@@ -82,9 +84,9 @@
 <h1 id="lhs-test">lhs test</h1>
 <p><code>unsplit</code> is an arrow that takes a pair of values and combines them to
 return a single value:</p>
-<div class="sourceCode" id="cb1"><pre class="sourceCode literatehaskell literate"><code class="sourceCode literatehaskell"><a class="sourceLine" id="cb1-1" title="1"><span class="ot">&gt; unsplit ::</span> (<span class="dt">Arrow</span> a) <span class="ot">=&gt;</span> (b <span class="ot">-&gt;</span> c <span class="ot">-&gt;</span> d) <span class="ot">-&gt;</span> a (b, c) d</a>
-<a class="sourceLine" id="cb1-2" title="2"><span class="ot">&gt;</span> unsplit <span class="ot">=</span> arr <span class="op">.</span> <span class="fu">uncurry</span></a>
-<a class="sourceLine" id="cb1-3" title="3"><span class="ot">&gt;</span>           <span class="co">-- arr (\op (x,y) -&gt; x `op` y)</span></a></code></pre></div>
+<div class="sourceCode" id="cb1"><pre class="sourceCode literatehaskell literate"><code class="sourceCode literatehaskell"><span id="cb1-1"><a href="#cb1-1"></a><span class="ot">&gt; unsplit ::</span> (<span class="dt">Arrow</span> a) <span class="ot">=&gt;</span> (b <span class="ot">-&gt;</span> c <span class="ot">-&gt;</span> d) <span class="ot">-&gt;</span> a (b, c) d</span>
+<span id="cb1-2"><a href="#cb1-2"></a><span class="ot">&gt;</span> unsplit <span class="ot">=</span> arr <span class="op">.</span> <span class="fu">uncurry</span></span>
+<span id="cb1-3"><a href="#cb1-3"></a><span class="ot">&gt;</span>           <span class="co">-- arr (\op (x,y) -&gt; x `op` y)</span></span></code></pre></div>
 <p><code>(***)</code> combines two arrows into a new arrow by running the two arrows on a
 pair of values (one arrow on the first item of the pair and one arrow on the
 second item of the pair).</p>
diff --git a/test/lua/module/pandoc-mediabag.lua b/test/lua/module/pandoc-mediabag.lua
new file mode 100644
--- /dev/null
+++ b/test/lua/module/pandoc-mediabag.lua
@@ -0,0 +1,72 @@
+local tasty = require 'tasty'
+
+local test = tasty.test_case
+local group = tasty.test_group
+local assert = tasty.assert
+
+local mediabag = require 'pandoc.mediabag'
+
+return {
+  group 'insert' {
+    test('insert adds an item to the mediabag', function ()
+      local fp = "media/hello.txt"
+      local mt = "text/plain"
+      local contents = "Hello, World!"
+      assert.are_same(mediabag.list(), {})
+      mediabag.insert(fp, mt, contents)
+      assert.are_same(
+        mediabag.list(),
+        {{['path'] = fp, ['type'] = mt, ['length'] = 13}}
+      )
+      mediabag.empty() -- clean up
+    end),
+    test('is idempotent', function ()
+      local fp = "media/hello.txt"
+      local mt = "text/plain"
+      local contents = "Hello, World!"
+      mediabag.insert(fp, mt, contents)
+      mediabag.insert(fp, mt, contents)
+      assert.are_same(
+        mediabag.list(),
+        {{['path'] = fp, ['type'] = mt, ['length'] = 13}}
+      )
+      mediabag.empty() -- clean up
+    end),
+  },
+
+  group 'delete' {
+    test('removes an item', function ()
+      assert.are_same(mediabag.list(), {})
+      mediabag.insert('test.html', 'text/html', '<aside>Who cares?</aside>')
+      mediabag.insert('test.css', 'text/plain', 'aside { color: red; }')
+      assert.are_equal(#mediabag.list(), 2)
+      mediabag.delete('test.html')
+      assert.are_same(
+        mediabag.list(),
+        {{['path'] = 'test.css', ['type'] = 'text/plain', ['length'] = 21}}
+      )
+      mediabag.empty() -- clean up
+    end),
+  },
+
+  group 'items' {
+    test('iterates over all items', function ()
+      local input_items = {
+        ['test.html'] = {'text/html', '<aside>Really?</aside>'},
+        ['test.css'] = {'text/plain', 'aside { color: red; }'},
+        ['test.js'] = {'application/javascript', 'alert("HI MOM!")'}
+      }
+      -- fill mediabag
+      for name, v in pairs(input_items) do
+        mediabag.insert(name, v[1], v[2])
+      end
+
+      local seen_items = {}
+      for fp, mt, c in mediabag.items() do
+        seen_items[fp] = {mt, c}
+      end
+      assert.are_same(seen_items, input_items)
+      mediabag.empty() -- clean up
+    end)
+  }
+}
diff --git a/test/lua/module/pandoc-types.lua b/test/lua/module/pandoc-types.lua
new file mode 100644
--- /dev/null
+++ b/test/lua/module/pandoc-types.lua
@@ -0,0 +1,112 @@
+local tasty = require 'tasty'
+local types = require 'pandoc.types'
+local Version = types.Version
+
+local assert = tasty.assert
+local test = tasty.test_case
+local group = tasty.test_group
+
+return {
+  group 'Version' {
+
+    group 'constructor' {
+      test('has type `userdata`', function ()
+        assert.are_same(type(Version {2}), 'userdata')
+      end),
+      test('accepts list of integers', function ()
+        assert.are_same(type(Version {2, 7, 3}), 'userdata')
+      end),
+      test('accepts a single integer', function ()
+        assert.are_same(Version(5), Version {5})
+      end),
+      test('accepts version as string', function ()
+        assert.are_same(
+          Version '4.45.1',
+          Version {4, 45, 1}
+        )
+      end),
+      test('non-version string is rejected', function ()
+        assert.error_matches(
+          function () Version '11friends' end,
+          '11friends'
+        )
+      end)
+    },
+
+    group 'comparison' {
+      test('smaller (equal) than', function ()
+        assert.is_truthy(Version {2, 58, 3} < Version {2, 58, 4})
+        assert.is_falsy(Version {2, 60, 1} < Version {2, 59, 2})
+        assert.is_truthy(Version {0, 14, 3} < Version {0, 14, 3, 1})
+        assert.is_truthy(Version {3, 58, 3} <= Version {4})
+        assert.is_truthy(Version {0, 14, 3} <= Version {0, 14, 3, 1})
+      end),
+      test('larger (equal) than', function ()
+        assert.is_truthy(Version{2,58,3} > Version {2, 57, 4})
+        assert.is_truthy(Version{2,58,3} > Version {2, 58, 2})
+        assert.is_truthy(Version {0, 8} >= Version {0, 8})
+        assert.is_falsy(Version {0, 8} >= Version {0, 8, 2})
+      end),
+      test('equality', function ()
+        assert.is_truthy(Version '8.8', Version {8, 8})
+      end),
+      test('second argument can be a version string', function ()
+        assert.is_truthy(Version '8' < '9.1')
+        assert.is_falsy(Version '8.8' < '8.7')
+      end),
+    },
+
+    group 'list-like behavior' {
+      test('can access version component numbers', function ()
+        local version = Version '2.7.3'
+        assert.is_nil(version[0])
+        assert.are_equal(version[1], 2)
+        assert.are_equal(version[2], 7)
+        assert.are_equal(version[3], 3)
+      end),
+      test('can be iterated over', function ()
+        local version_list = {2, 7, 3}
+        local final_index = 0
+        for i, v in pairs(Version(version_list)) do
+          assert.are_equal(v, version_list[i])
+          final_index = i
+        end
+        assert.are_equal(final_index, 3)
+      end),
+      test('length is the number of components', function ()
+        assert.are_equal(#(Version '0'), 1)
+        assert.are_equal(#(Version '1.6'), 2)
+        assert.are_equal(#(Version '8.7.5'), 3)
+        assert.are_equal(#(Version '2.9.1.5'), 4)
+      end)
+    },
+
+    group 'conversion to string' {
+      test('converting from and to string is a noop', function ()
+        local version_string = '1.19.4'
+        assert.are_equal(tostring(Version(version_string)), version_string)
+      end)
+    },
+
+    group 'convenience functions' {
+      test('throws error if version is too old', function ()
+        local actual = Version {2, 8}
+        local expected = Version {2, 9}
+        assert.error_matches(
+          function () actual:must_be_at_least(expected) end,
+          'expected version 2.9 or newer, got 2.8'
+        )
+      end),
+      test('does nothing if expected version is older than actual', function ()
+        local actual = Version '2.9'
+        local expected = Version '2.8'
+        actual:must_be_at_least(expected)
+      end),
+      test('does nothing if expected version equals to actual', function ()
+        local actual = Version '2.8'
+        local expected = Version '2.8'
+        actual:must_be_at_least(expected)
+      end)
+    }
+  }
+}
diff --git a/test/lua/module/pandoc-utils.lua b/test/lua/module/pandoc-utils.lua
new file mode 100644
--- /dev/null
+++ b/test/lua/module/pandoc-utils.lua
@@ -0,0 +1,96 @@
+local tasty = require 'tasty'
+local utils = require 'pandoc.utils'
+
+local assert = tasty.assert
+local test = tasty.test_case
+local group = tasty.test_group
+
+return {
+  group 'blocks_to_inlines' {
+    test('default separator', function ()
+      local blocks = {
+        pandoc.Para { pandoc.Str 'Paragraph1' },
+        pandoc.Para { pandoc.Emph { pandoc.Str 'Paragraph2' } }
+      }
+      local expected = {
+        pandoc.Str 'Paragraph1',
+        pandoc.Space(), pandoc.Str '¶', pandoc.Space(),
+        pandoc.Emph { pandoc.Str 'Paragraph2' }
+      }
+      assert.are_same(
+        expected,
+        utils.blocks_to_inlines(blocks)
+      )
+    end),
+    test('custom separator', function ()
+      local blocks = {
+        pandoc.Para{ pandoc.Str 'Paragraph1' },
+        pandoc.Para{ pandoc.Emph 'Paragraph2' }
+      }
+      local expected = {
+        pandoc.Str 'Paragraph1',
+        pandoc.LineBreak(),
+        pandoc.Emph { pandoc.Str 'Paragraph2' }
+      }
+      assert.are_same(
+        expected,
+        utils.blocks_to_inlines(blocks, { pandoc.LineBreak() })
+      )
+    end)
+  },
+
+  group 'hierarchicalize' {
+    test('sanity check', function ()
+      local blks = {
+        pandoc.Header(1, {pandoc.Str 'First'}),
+        pandoc.Header(2, {pandoc.Str 'Second'}),
+        pandoc.Header(2, {pandoc.Str 'Third'}),
+      }
+      local hblks = utils.hierarchicalize(blks)
+      -- cannot create Elements directly; performing only an approximate
+      -- sanity checking instead of a full equality comparison.
+      assert.are_equal('Sec', hblks[1].t)
+      assert.are_equal('Sec', hblks[1].contents[1].t)
+      assert.are_equal(1, hblks[1].contents[2].numbering[1])
+      assert.are_equal(2, hblks[1].contents[2].numbering[2])
+    end)
+  },
+
+  group 'normalize_date' {
+    test('09 Nov 1989', function ()
+      assert.are_equal('1989-11-09', utils.normalize_date '09 Nov 1989')
+    end),
+    test('12/31/2017', function ()
+      assert.are_equal('2017-12-31', utils.normalize_date '12/31/2017')
+    end),
+  },
+
+  group 'sha1' {
+    test('hashing', function ()
+      local ref_hash = '0a0a9f2a6772942557ab5355d76af442f8f65e01'
+      assert.are_equal(ref_hash, utils.sha1 'Hello, World!')
+    end)
+  },
+
+  group 'stringify' {
+    test('inlines', function ()
+      local inline = pandoc.Emph{
+        pandoc.Str 'Cogito',
+        pandoc.Space(),
+        pandoc.Str 'ergo',
+        pandoc.Space(),
+        pandoc.Str 'sum.',
+      }
+      assert.are_equal('Cogito ergo sum.', utils.stringify(inline))
+    end)
+  },
+
+  group 'to_roman_numeral' {
+    test('convertes number', function ()
+      assert.are_equal('MDCCCLXXXVIII', utils.to_roman_numeral(1888))
+    end),
+    test('fails on non-convertible argument', function ()
+      assert.is_falsy(pcall(utils.to_roman_numeral, 'not a number'))
+    end)
+  },
+}
diff --git a/test/lua/module/pandoc.lua b/test/lua/module/pandoc.lua
new file mode 100644
--- /dev/null
+++ b/test/lua/module/pandoc.lua
@@ -0,0 +1,136 @@
+local tasty = require 'tasty'
+
+local test = tasty.test_case
+local group = tasty.test_group
+local assert = tasty.assert
+
+function os_is_windows ()
+  return package.config:sub(1,1) == '\\'
+end
+
+return {
+  group 'Attr' {
+    group 'Constructor' {
+      test('returns null-Attr if no arguments are given', function ()
+        local attr = pandoc.Attr()
+        assert.are_equal(attr.identifier, '')
+        assert.are_same(attr.classes, {})
+        assert.are_same(attr.attributes, {})
+      end),
+      test(
+        'accepts string-indexed table or list of pairs as attributes',
+        function ()
+          local attributes_list = pandoc.List:new {{'one', '1'}, {'two', '2'}}
+          local attr_from_list = pandoc.Attr('', {}, attributes_list:clone())
+
+          assert.are_same(
+            pandoc.List:new(attr_from_list.attributes),
+            attributes_list
+          )
+
+          local attributes_table = {one = '1', two = '2'}
+          local attr_from_table = pandoc.Attr('', {}, attributes_table)
+
+          local assoc_list_from_table =
+            pandoc.List:new(attr_from_table.attributes)
+          -- won't work in general, but does in this special case
+          table.sort(assoc_list_from_table, function(x, y) return x[1]<y[1] end)
+          assert.are_same(
+            assoc_list_from_table,
+            attributes_list
+          )
+        end
+      )
+    },
+    group 'AttributeList' {
+      test('allows access via fields', function ()
+        local attributes = pandoc.Attr('', {}, {{'a', '1'}, {'b', '2'}}).attributes
+        assert.are_equal(attributes.a, '1')
+        assert.are_equal(attributes.b, '2')
+      end),
+      test('allows access to pairs via numerical indexing', function ()
+        local attributes = pandoc.Attr('', {}, {{'a', '1'}, {'b', '2'}}).attributes
+        assert.are_same(attributes[1], {'a', '1'})
+        assert.are_same(attributes[2], {'b', '2'})
+      end),
+      test('adds entries by field name', function ()
+        local attributes = pandoc.Attr('',{}, {{'c', '1'}, {'d', '2'}}).attributes
+        attributes.e = '3'
+        assert.are_same(
+          -- checking the full AttributeList would "duplicate" entries
+          setmetatable(attributes, nil),
+          {{'c', '1'}, {'d', '2'}, {'e', '3'}}
+        )
+      end),
+      test('deletes entries by field name', function ()
+        local attributes = pandoc.Attr('',{}, {a = '1', b = '2'}).attributes
+        attributes.a = nil
+        assert.is_nil(attributes.a)
+        local assoc_list = setmetatable(attributes, nil)
+        assert.are_same(assoc_list, {{'b', '2'}})
+      end),
+      test('remains unchanged if deleted key did not exist', function ()
+        local assoc_list = pandoc.List:new {{'alpha', 'x'}, {'beta', 'y'}}
+        local attributes = pandoc.Attr('', {}, assoc_list:clone()).attributes
+        attributes.a = nil
+        assert.are_same(pandoc.List:new(attributes), assoc_list)
+      end),
+      test('gives key-value pairs when iterated-over', function ()
+        local attributes = {width = '11', height = '22', name = 'test'}
+        local attr = pandoc.Attr('', {}, attributes)
+        local count = 0
+        for k, v in pairs(attr.attributes) do
+          assert.are_equal(attributes[k], v)
+          count = count + 1
+        end
+        assert.are_equal(count, 3)
+      end)
+    },
+  },
+  group 'pipe' {
+    test('external string processing', function ()
+      if os_is_windows() then
+        local pipe_result = pandoc.pipe('find', {'hi'}, 'hi')
+        assert.are_equal('hi', pipe_result:match '%a+')
+      else
+        local pipe_result = pandoc.pipe('tr', {'a', 'b'}, 'abc')
+        assert.are_equal('bbc', pipe_result:match '%a+')
+      end
+    end),
+    test('failing pipe', function ()
+      if os_is_windows() then
+        local success, err = pcall(pandoc.pipe, 'find', {'/a'}, 'hi')
+        assert.is_falsy(success)
+        assert.are_equal('find', err.command)
+        assert.is_truthy(err.error_code ~= 0)
+      else
+        local success, err = pcall(pandoc.pipe, 'false', {}, 'abc')
+        assert.is_falsy(success)
+        assert.are_equal('false', err.command)
+        assert.are_equal(1, err.error_code)
+        assert.are_equal('', err.output)
+      end
+    end)
+  },
+
+  group 'read' {
+    test('Markdown', function ()
+      local valid_markdown = '*Hello*, World!\n'
+      local expected = pandoc.Pandoc({
+          pandoc.Para {
+            pandoc.Emph { pandoc.Str 'Hello' },
+            pandoc.Str ',',
+            pandoc.Space(),
+            pandoc.Str 'World!'
+          }
+      })
+      assert.are_same(expected, pandoc.read(valid_markdown))
+    end),
+    test('failing read', function ()
+      assert.error_matches(
+        function () pandoc.read('foo', 'nosuchreader') end,
+        'Unknown reader: nosuchreader'
+      )
+    end)
+  },
+}
diff --git a/test/lua/test-pandoc-utils.lua b/test/lua/test-pandoc-utils.lua
deleted file mode 100644
--- a/test/lua/test-pandoc-utils.lua
+++ /dev/null
@@ -1,138 +0,0 @@
-utils = require 'pandoc.utils'
-
--- Squash blocks to inlines
-------------------------------------------------------------------------
-function test_blocks_to_inlines ()
-  local blocks = {
-    pandoc.Para{ pandoc.Str 'Paragraph1' },
-    pandoc.Para{ pandoc.Emph 'Paragraph2' }
-  }
-  local inlines = utils.blocks_to_inlines(blocks, {pandoc.LineBreak()})
-  return #inlines == 3
-    and inlines[1].text == "Paragraph1"
-    and inlines[2].t == 'LineBreak'
-    and inlines[3].content[1].text == "Paragraph2"
-end
-
--- hierarchicalize
-------------------------------------------------------------------------
-function test_hierarchicalize ()
-  local blks = {
-    pandoc.Header(1, {pandoc.Str 'First'}),
-    pandoc.Header(2, {pandoc.Str 'Second'}),
-    pandoc.Header(2, {pandoc.Str 'Third'}),
-  }
-  local hblks = utils.hierarchicalize(blks)
-  return hblks[1].t == "Sec"
-    and hblks[1].contents[1].t == "Sec"
-    and hblks[1].contents[2].numbering[1] == 1
-    and hblks[1].contents[2].numbering[2] == 2
-end
-
--- SHA1
-------------------------------------------------------------------------
-function test_sha1 ()
-  local ref_hash = '0a0a9f2a6772942557ab5355d76af442f8f65e01'
-  local hash = utils.sha1 'Hello, World!'
-  return hash == ref_hash
-end
-
--- Pipe
-------------------------------------------------------------------------
-function file_exists (filename)
-  local fh = io.open(filename, 'r')
-  return fh ~= nil and (fh:close() or true)
-end
-
-function warn (...) io.stderr:write(...) end
-
-function os_is_windows ()
-  return package.config:sub(1,1) == '\\'
-end
-
-function test_pipe ()
-  if os_is_windows() then
-    local pipe_result = pandoc.pipe('find', {'hi'}, 'hi')
-    return pipe_result:match("%a+") == 'hi'
-  else
-    local pipe_result = pandoc.pipe('tr', {'a', 'b'}, 'abc')
-    return pipe_result:match("%a+") == 'bbc'
-  end
-end
-
-function test_failing_pipe ()
-  if os_is_windows() then
-    local res, err = pcall(pandoc.pipe, 'find', {'/a'}, 'hi')
-    return not res and
-      err.command == 'find' and
-      err.error_code ~= 0
-  else
-    local res, err = pcall(pandoc.pipe, 'false', {}, 'abc')
-    return not res and
-      err.command == 'false' and
-      err.error_code == 1 and
-      err.output == ''
-  end
-end
-
--- Read
-------------------------------------------------------------------------
-function test_read ()
-  local valid_markdown = '*Hello*, World!\n'
-  local res = pandoc.read(valid_markdown).blocks[1].content
-  return res[1].t == 'Emph' and res[3].t == 'Space' and res[4].t == 'Str'
-end
-
-function test_failing_read ()
-  local res, err = pcall(pandoc.read, 'foo', 'nosuchreader')
-  return not res and err:match 'Unknown reader: nosuchreader'
-end
-
--- Stringify
-------------------------------------------------------------------------
-function test_stringify ()
-  local inline = pandoc.Emph{
-    pandoc.Str 'Cogito',
-    pandoc.Space(),
-    pandoc.Str 'ergo',
-    pandoc.Space(),
-    pandoc.Str 'sum.',
-  }
-  return utils.stringify(inline) == 'Cogito ergo sum.'
-end
-
--- to_roman_numeral
-------------------------------------------------------------------------
-function test_to_roman_numeral ()
-  return utils.to_roman_numeral(1888) == 'MDCCCLXXXVIII'
-    -- calling with a string fails
-    and not pcall(utils.to_roman_numeral, 'not a number')
-end
-
--- normalize_date
-------------------------------------------------------------------------
-function test_normalize_date ()
-  return utils.normalize_date("12/31/2017") == '2017-12-31'
-    and utils.normalize_date("pandoc") == nil
-end
-
--- Return result
-------------------------------------------------------------------------
-function run(fn)
-  return fn() and "OK" or "FAIL"
-end
-
-function Para (el)
-  return {
-    pandoc.Plain{pandoc.Str("blocks_to_inlines: " .. run(test_blocks_to_inlines))},
-    pandoc.Plain{pandoc.Str("hierarchicalize: " .. run(test_hierarchicalize))},
-    pandoc.Plain{pandoc.Str("normalize_date: " .. run(test_normalize_date))},
-    pandoc.Plain{pandoc.Str("pipe: " .. run(test_pipe))},
-    pandoc.Plain{pandoc.Str("failing pipe: " .. run(test_failing_pipe))},
-    pandoc.Plain{pandoc.Str("read: " .. run(test_read))},
-    pandoc.Plain{pandoc.Str("failing read: " .. run(test_failing_read))},
-    pandoc.Plain{pandoc.Str("sha1: " .. run(test_sha1))},
-    pandoc.Plain{pandoc.Str("stringify: " .. run(test_stringify))},
-    pandoc.Plain{pandoc.Str("to_roman_numeral: " .. run(test_to_roman_numeral))},
-  }
-end
diff --git a/test/tables.jira b/test/tables.jira
new file mode 100644
--- /dev/null
+++ b/test/tables.jira
@@ -0,0 +1,44 @@
+Simple table with caption:
+
+||Right||Left||Center||Default||
+|12|12|12|12|
+|123|123|123|123|
+|1|1|1|1|
+
+Simple table without caption:
+
+||Right||Left||Center||Default||
+|12|12|12|12|
+|123|123|123|123|
+|1|1|1|1|
+
+Simple table indented two spaces:
+
+||Right||Left||Center||Default||
+|12|12|12|12|
+|123|123|123|123|
+|1|1|1|1|
+
+Multiline table with caption:
+
+||Centered Header||Left Aligned||Right Aligned||Default aligned||
+|First|row|12.0|Example of a row that spans multiple lines.|
+|Second|row|5.0|Here's another one. Note the blank line between rows.|
+
+Multiline table without caption:
+
+||Centered Header||Left Aligned||Right Aligned||Default aligned||
+|First|row|12.0|Example of a row that spans multiple lines.|
+|Second|row|5.0|Here's another one. Note the blank line between rows.|
+
+Table without column headers:
+
+|12|12|12|12|
+|123|123|123|123|
+|1|1|1|1|
+
+Multiline table without column headers:
+
+|First|row|12.0|Example of a row that spans multiple lines.|
+|Second|row|5.0|Here's another one. Note the blank line between rows.|
+
diff --git a/test/tables.opendocument b/test/tables.opendocument
--- a/test/tables.opendocument
+++ b/test/tables.opendocument
@@ -63,8 +63,8 @@
     </table:table-cell>
   </table:table-row>
 </table:table>
-<text:p text:style-name="Table">Table <text:sequence text:ref-name="refTable0" text:name="Table" text:formula="ooow:Table+1" style:num-format="1">1</text:sequence>: Demonstration
-of simple table syntax.</text:p>
+<text:p text:style-name="TableCaption">Demonstration of simple table
+syntax.</text:p>
 <text:p text:style-name="First_20_paragraph">Simple table without
 caption:</text:p>
 <table:table table:name="Table2" table:style-name="Table2">
@@ -197,8 +197,8 @@
     </table:table-cell>
   </table:table-row>
 </table:table>
-<text:p text:style-name="Table">Table <text:sequence text:ref-name="refTable1" text:name="Table" text:formula="ooow:Table+1" style:num-format="1">2</text:sequence>: Demonstration
-of simple table syntax.</text:p>
+<text:p text:style-name="TableCaption">Demonstration of simple table
+syntax.</text:p>
 <text:p text:style-name="First_20_paragraph">Multiline table with
 caption:</text:p>
 <table:table table:name="Table4" table:style-name="Table4">
@@ -253,8 +253,8 @@
     </table:table-cell>
   </table:table-row>
 </table:table>
-<text:p text:style-name="Table">Table <text:sequence text:ref-name="refTable2" text:name="Table" text:formula="ooow:Table+1" style:num-format="1">3</text:sequence>: Here’s
-the caption. It may span multiple lines.</text:p>
+<text:p text:style-name="TableCaption">Here’s the caption. It may span
+multiple lines.</text:p>
 <text:p text:style-name="First_20_paragraph">Multiline table without
 caption:</text:p>
 <table:table table:name="Table5" table:style-name="Table5">
diff --git a/test/tables.xwiki b/test/tables.xwiki
new file mode 100644
--- /dev/null
+++ b/test/tables.xwiki
@@ -0,0 +1,46 @@
+Simple table with caption:
+
+|=Right |=Left |=Center |=Default
+|12 |12 |12 |12
+|123 |123 |123 |123
+|1 |1 |1 |1
+
+Simple table without caption:
+
+|=Right |=Left |=Center |=Default
+|12 |12 |12 |12
+|123 |123 |123 |123
+|1 |1 |1 |1
+
+Simple table indented two spaces:
+
+|=Right |=Left |=Center |=Default
+|12 |12 |12 |12
+|123 |123 |123 |123
+|1 |1 |1 |1
+
+Multiline table with caption:
+
+|=Centered Header |=Left Aligned |=Right Aligned |=Default aligned
+|First |row |12.0 |Example of a row that spans multiple lines.
+|Second |row |5.0 |Here’s another one. Note the blank line between rows.
+
+Multiline table without caption:
+
+|=Centered Header |=Left Aligned |=Right Aligned |=Default aligned
+|First |row |12.0 |Example of a row that spans multiple lines.
+|Second |row |5.0 |Here’s another one. Note the blank line between rows.
+
+Table without column headers:
+
+|= |= |= |=
+|12 |12 |12 |12
+|123 |123 |123 |123
+|1 |1 |1 |1
+
+Multiline table without column headers:
+
+|= |= |= |=
+|First |row |12.0 |Example of a row that spans multiple lines.
+|Second |row |5.0 |Here’s another one. Note the blank line between rows.
+
diff --git a/test/test-pandoc.hs b/test/test-pandoc.hs
--- a/test/test-pandoc.hs
+++ b/test/test-pandoc.hs
@@ -8,6 +8,7 @@
 import Test.Tasty
 import qualified Tests.Command
 import qualified Tests.Lua
+import qualified Tests.Lua.Module
 import qualified Tests.Old
 import qualified Tests.Readers.Creole
 import qualified Tests.Readers.Docx
@@ -84,7 +85,10 @@
           , testGroup "FB2" Tests.Readers.FB2.tests
           , testGroup "DokuWiki" Tests.Readers.DokuWiki.tests
           ]
-        , testGroup "Lua filters" Tests.Lua.tests
+        , testGroup "Lua"
+          [ testGroup "Lua filters" Tests.Lua.tests
+          , testGroup "Lua modules" Tests.Lua.Module.tests
+          ]
         ]
 
 main :: IO ()
diff --git a/test/writer.asciidoc b/test/writer.asciidoc
--- a/test/writer.asciidoc
+++ b/test/writer.asciidoc
@@ -423,7 +423,7 @@
 
 So is *_this_* word.
 
-This is code: `>`, `$`, `\`, `\$`, `<html>`.
+This is code: `+>+`, `+$+`, `+\+`, `+\$+`, `+<html>+`.
 
 [line-through]*This is _strikeout_.*
 
@@ -446,7 +446,7 @@
 
 `He said, ``I want to go.''' Were you alive in the 70’s?
 
-Here is some quoted ``code`' and a ``http://example.com/?foo=1&bar=2[quoted
+Here is some quoted ``+code+`' and a ``http://example.com/?foo=1&bar=2[quoted
 link]''.
 
 Some dashes: one—two — three—four — five.
@@ -476,11 +476,11 @@
 
 These shouldn’t be math:
 
-* To get the famous equation, write `$e = mc^2$`.
+* To get the famous equation, write `+$e = mc^2$+`.
 * $22,000 is a _lot_ of money. So is $34,000. (It worked if ``lot'' is
 emphasized.)
 * Shoes ($20) and socks ($5).
-* Escaped `$`: $73 _this should be emphasized_ 23$.
+* Escaped `+$+`: $73 _this should be emphasized_ 23$.
 
 Here’s a LaTeX table:
 
@@ -610,7 +610,7 @@
 Blockquoted: http://example.com/
 ____
 
-Auto-links should not occur here: `<http://example.com/>`
+Auto-links should not occur here: `+<http://example.com/>+`
 
 ....
 or here: <http://example.com/>
@@ -635,7 +635,7 @@
 document.] and another.[multiblock footnote omitted] This should _not_ be a
 footnote reference, because it contains a space.[^my note] Here is an inline
 note.footnote:[This is _easier_ to type. Inline notes may contain
-http://google.com[links] and `]` verbatim characters, as well as [bracketed
+http://google.com[links] and `+]+` verbatim characters, as well as [bracketed
 text].]
 
 ____
diff --git a/test/writer.fb2 b/test/writer.fb2
--- a/test/writer.fb2
+++ b/test/writer.fb2
@@ -696,25 +696,15 @@
 <title>
 <p>Footnotes</p>
 </title>
-<p>Here is a footnote reference,<a l:href="#n1" type="note">
-<sup>[1]</sup>
-</a> and another.<a l:href="#n2" type="note">
-<sup>[2]</sup>
-</a>
+<p>Here is a footnote reference,<a l:href="#n1" type="note">[1]</a> and another.<a l:href="#n2" type="note">[2]</a>
 This should <emphasis>not</emphasis> be a footnote reference, because it
-contains a space.[^my note] Here is an inline note.<a l:href="#n3" type="note">
-<sup>[3]</sup>
-</a>
+contains a space.[^my note] Here is an inline note.<a l:href="#n3" type="note">[3]</a>
 </p>
 <cite>
-<p>Notes can go in quotes.<a l:href="#n4" type="note">
-<sup>[4]</sup>
-</a>
+<p>Notes can go in quotes.<a l:href="#n4" type="note">[4]</a>
 </p>
 </cite>
-<p>1. And in list items.<a l:href="#n5" type="note">
-<sup>[5]</sup>
-</a>
+<p>1. And in list items.<a l:href="#n5" type="note">[5]</a>
 </p>
 <p>This paragraph should not be part of the note, as it is not indented.</p>
 </section>
diff --git a/test/writer.html4 b/test/writer.html4
--- a/test/writer.html4
+++ b/test/writer.html4
@@ -518,7 +518,7 @@
 <h1 id="images">Images</h1>
 <p>From “Voyage dans la Lune” by Georges Melies (1902):</p>
 <div class="figure">
-<img src="lalune.jpg" title="Voyage dans la Lune" alt="lalune" />
+<img src="lalune.jpg" title="Voyage dans la Lune" alt="" />
 <p class="caption">lalune</p>
 </div>
 <p>Here is a movie <img src="movie.jpg" alt="movie" /> icon.</p>
@@ -535,14 +535,14 @@
 <div class="footnotes">
 <hr />
 <ol>
-<li id="fn1"><p>Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.<a href="#fnref1" class="footnote-back">↩</a></p></li>
+<li id="fn1"><p>Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.<a href="#fnref1" class="footnote-back">↩︎</a></p></li>
 <li id="fn2"><p>Here’s the long note. This one contains multiple blocks.</p>
 <p>Subsequent blocks are indented to show that they belong to the footnote (as with list items).</p>
 <pre><code>  { &lt;code&gt; }</code></pre>
-<p>If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.<a href="#fnref2" class="footnote-back">↩</a></p></li>
-<li id="fn3"><p>This is <em>easier</em> to type. Inline notes may contain <a href="http://google.com">links</a> and <code>]</code> verbatim characters, as well as [bracketed text].<a href="#fnref3" class="footnote-back">↩</a></p></li>
-<li id="fn4"><p>In quote.<a href="#fnref4" class="footnote-back">↩</a></p></li>
-<li id="fn5"><p>In list.<a href="#fnref5" class="footnote-back">↩</a></p></li>
+<p>If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.<a href="#fnref2" class="footnote-back">↩︎</a></p></li>
+<li id="fn3"><p>This is <em>easier</em> to type. Inline notes may contain <a href="http://google.com">links</a> and <code>]</code> verbatim characters, as well as [bracketed text].<a href="#fnref3" class="footnote-back">↩︎</a></p></li>
+<li id="fn4"><p>In quote.<a href="#fnref4" class="footnote-back">↩︎</a></p></li>
+<li id="fn5"><p>In list.<a href="#fnref5" class="footnote-back">↩︎</a></p></li>
 </ol>
 </div>
 </body>
diff --git a/test/writer.html5 b/test/writer.html5
--- a/test/writer.html5
+++ b/test/writer.html5
@@ -521,7 +521,7 @@
 <h1 id="images">Images</h1>
 <p>From “Voyage dans la Lune” by Georges Melies (1902):</p>
 <figure>
-<img src="lalune.jpg" title="Voyage dans la Lune" alt="lalune" /><figcaption>lalune</figcaption>
+<img src="lalune.jpg" title="Voyage dans la Lune" alt="" /><figcaption>lalune</figcaption>
 </figure>
 <p>Here is a movie <img src="movie.jpg" alt="movie" /> icon.</p>
 <hr />
@@ -537,14 +537,14 @@
 <section class="footnotes" role="doc-endnotes">
 <hr />
 <ol>
-<li id="fn1" role="doc-endnote"><p>Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.<a href="#fnref1" class="footnote-back" role="doc-backlink">↩</a></p></li>
+<li id="fn1" role="doc-endnote"><p>Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.<a href="#fnref1" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
 <li id="fn2" role="doc-endnote"><p>Here’s the long note. This one contains multiple blocks.</p>
 <p>Subsequent blocks are indented to show that they belong to the footnote (as with list items).</p>
 <pre><code>  { &lt;code&gt; }</code></pre>
-<p>If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.<a href="#fnref2" class="footnote-back" role="doc-backlink">↩</a></p></li>
-<li id="fn3" role="doc-endnote"><p>This is <em>easier</em> to type. Inline notes may contain <a href="http://google.com">links</a> and <code>]</code> verbatim characters, as well as [bracketed text].<a href="#fnref3" class="footnote-back" role="doc-backlink">↩</a></p></li>
-<li id="fn4" role="doc-endnote"><p>In quote.<a href="#fnref4" class="footnote-back" role="doc-backlink">↩</a></p></li>
-<li id="fn5" role="doc-endnote"><p>In list.<a href="#fnref5" class="footnote-back" role="doc-backlink">↩</a></p></li>
+<p>If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.<a href="#fnref2" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
+<li id="fn3" role="doc-endnote"><p>This is <em>easier</em> to type. Inline notes may contain <a href="http://google.com">links</a> and <code>]</code> verbatim characters, as well as [bracketed text].<a href="#fnref3" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
+<li id="fn4" role="doc-endnote"><p>In quote.<a href="#fnref4" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
+<li id="fn5" role="doc-endnote"><p>In list.<a href="#fnref5" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
 </ol>
 </section>
 </body>
diff --git a/test/writer.jats b/test/writer.jats
--- a/test/writer.jats
+++ b/test/writer.jats
@@ -16,18 +16,16 @@
 </title-group>
 <contrib-group>
 <contrib contrib-type="author">
-<name>
 <string-name>John MacFarlane</string-name>
-</name>
 </contrib>
 <contrib contrib-type="author">
-<name>
 <string-name>Anonymous</string-name>
-</name>
 </contrib>
 </contrib-group>
-<pub-date pub-type="epub">
-<string-date>July 17, 2006</string-date>
+<pub-date pub-type="epub" iso-8601-date="2006-07-17">
+<day>17</day>
+<month>7</month>
+<year>2006</year>
 </pub-date>
 </article-meta>
 </front>
@@ -72,7 +70,8 @@
   item. Because a hard-wrapped line in the middle of a paragraph looked like a
   list item.</p>
   <p>Here’s one with a bullet. * criminey.</p>
-  <p>There should be a hard line break<break />here.</p>
+  <p>There should be a hard line break
+  here.</p>
 </sec>
 <sec id="block-quotes">
   <title>Block Quotes</title>
@@ -498,10 +497,14 @@
       <term><italic>orange</italic></term>
       <def>
         <p>orange fruit</p>
-        <preformat>{ orange code block }</preformat>
-        <disp-quote>
-          <p>orange block quote</p>
-        </disp-quote>
+        <p specific-use="wrapper">
+          <preformat>{ orange code block }</preformat>
+        </p>
+        <p specific-use="wrapper">
+          <disp-quote>
+            <p>orange block quote</p>
+          </disp-quote>
+        </p>
       </def>
     </def-item>
   </def-list>
@@ -552,14 +555,16 @@
       <term>orange</term>
       <def>
         <p>orange fruit</p>
-        <list list-type="order">
-          <list-item>
-            <p>sublist</p>
-          </list-item>
-          <list-item>
-            <p>sublist</p>
-          </list-item>
-        </list>
+        <p specific-use="wrapper">
+          <list list-type="order">
+            <list-item>
+              <p>sublist</p>
+            </list-item>
+            <list-item>
+              <p>sublist</p>
+            </list-item>
+          </list>
+        </p>
       </def>
     </def-item>
   </def-list>
@@ -844,38 +849,50 @@
 </sec>
 <sec id="footnotes">
   <title>Footnotes</title>
-  <p>Here is a footnote reference,<fn>
+  <p>Here is a footnote reference,<xref ref-type="fn" rid="fn1">1</xref> and
+  another.<xref ref-type="fn" rid="fn2">2</xref> This should
+  <italic>not</italic> be a footnote reference, because it contains a
+  space.[^my note] Here is an inline
+  note.<xref ref-type="fn" rid="fn3">3</xref></p>
+  <disp-quote>
+    <p>Notes can go in quotes.<xref ref-type="fn" rid="fn4">4</xref></p>
+  </disp-quote>
+  <list list-type="order">
+    <list-item>
+      <p>And in list items.<xref ref-type="fn" rid="fn5">5</xref></p>
+    </list-item>
+  </list>
+  <p>This paragraph should not be part of the note, as it is not indented.</p>
+</sec>
+</body>
+<back>
+<fn-group>
+  <fn id="fn1">
     <p>Here is the footnote. It can go anywhere after the footnote reference.
     It need not be placed at the end of the document.</p>
-  </fn> and another.<fn>
+  </fn>
+  <fn id="fn2">
     <p>Here’s the long note. This one contains multiple blocks.</p>
     <p>Subsequent blocks are indented to show that they belong to the footnote
     (as with list items).</p>
-    <preformat>  { &lt;code&gt; }</preformat>
+    <p specific-use="wrapper">
+      <preformat>  { &lt;code&gt; }</preformat>
+    </p>
     <p>If you want, you can indent every line, but you can also be lazy and
     just indent the first line of each block.</p>
-  </fn> This should <italic>not</italic> be a footnote reference, because it
-  contains a space.[^my note] Here is an inline note.<fn>
+  </fn>
+  <fn id="fn3">
     <p>This is <italic>easier</italic> to type. Inline notes may contain
     <ext-link ext-link-type="uri" xlink:href="http://google.com">links</ext-link>
     and <monospace>]</monospace> verbatim characters, as well as [bracketed
     text].</p>
-  </fn></p>
-  <disp-quote>
-    <p>Notes can go in quotes.<fn>
-      <p>In quote.</p>
-    </fn></p>
-  </disp-quote>
-  <list list-type="order">
-    <list-item>
-      <p>And in list items.<fn>
-        <p>In list.</p>
-      </fn></p>
-    </list-item>
-  </list>
-  <p>This paragraph should not be part of the note, as it is not indented.</p>
-</sec>
-</body>
-<back>
+  </fn>
+  <fn id="fn4">
+    <p>In quote.</p>
+  </fn>
+  <fn id="fn5">
+    <p>In list.</p>
+  </fn>
+</fn-group>
 </back>
 </article>
diff --git a/test/writer.jira b/test/writer.jira
new file mode 100644
--- /dev/null
+++ b/test/writer.jira
@@ -0,0 +1,630 @@
+This is a set of tests for pandoc. Most of them are adapted from John Gruber's markdown test suite.
+
+----
+
+h1. {anchor:headers}Headers
+
+h2. {anchor:level-2-with-an-embedded-link}Level 2 with an [embedded link|/url]
+
+h3. {anchor:level-3-with-emphasis}Level 3 with _emphasis_
+
+h4. {anchor:level-4}Level 4
+
+h5. {anchor:level-5}Level 5
+
+h1. {anchor:level-1}Level 1
+
+h2. {anchor:level-2-with-emphasis}Level 2 with _emphasis_
+
+h3. {anchor:level-3}Level 3
+
+with no blank line
+
+h2. {anchor:level-2}Level 2
+
+with no blank line
+
+----
+
+h1. {anchor:paragraphs}Paragraphs
+
+Here's a regular paragraph.
+
+In Markdown 1.0.0 and earlier. Version 8. This line turns into a list item. Because a hard&hyphen;wrapped line in the middle of a paragraph looked like a list item.
+
+Here's one with a bullet. &ast; criminey.
+
+There should be a hard line break
+here.
+
+----
+
+h1. {anchor:block-quotes}Block Quotes
+
+E&hyphen;mail style:
+
+bq. This is a block quote. It is pretty short.
+
+
+{quote}
+Code in a block quote:
+
+{code}
+sub status \{
+    print &quot;working&quot;;
+}
+{code}
+
+A list:
+
+# item one
+# item two
+
+Nested block quotes:
+
+bq. nested
+
+
+bq. nested
+
+
+{quote}
+
+This should not be a block quote: 2 &gt; 1.
+
+And a following paragraph.
+
+----
+
+h1. {anchor:code-blocks}Code Blocks
+
+Code:
+
+{code}
+&hyphen;&hyphen;&hyphen;&hyphen; (should be four hyphens)
+
+sub status \{
+    print &quot;working&quot;;
+}
+
+this code block is indented by one tab
+{code}
+
+And:
+
+{code}
+    this code block is indented by two tabs
+
+These should not be escaped:  \$ \\ \&gt; \[ \\{
+{code}
+
+----
+
+h1. {anchor:lists}Lists
+
+h2. {anchor:unordered}Unordered
+
+Asterisks tight:
+
+* asterisk 1
+* asterisk 2
+* asterisk 3
+
+Asterisks loose:
+
+* asterisk 1
+* asterisk 2
+* asterisk 3
+
+Pluses tight:
+
+* Plus 1
+* Plus 2
+* Plus 3
+
+Pluses loose:
+
+* Plus 1
+* Plus 2
+* Plus 3
+
+Minuses tight:
+
+* Minus 1
+* Minus 2
+* Minus 3
+
+Minuses loose:
+
+* Minus 1
+* Minus 2
+* Minus 3
+
+h2. {anchor:ordered}Ordered
+
+Tight:
+
+# First
+# Second
+# Third
+
+and:
+
+# One
+# Two
+# Three
+
+Loose using tabs:
+
+# First
+# Second
+# Third
+
+and using spaces:
+
+# One
+# Two
+# Three
+
+Multiple paragraphs:
+
+# Item 1, graf one.
+Item 1. graf two. The quick brown fox jumped over the lazy dog's back.
+# Item 2.
+# Item 3.
+
+h2. {anchor:nested}Nested
+
+* Tab
+** Tab
+*** Tab
+
+Here's another:
+
+# First
+# Second:
+#* Fee
+#* Fie
+#* Foe
+# Third
+
+Same thing but with paragraphs:
+
+# First
+# Second:
+#* Fee
+#* Fie
+#* Foe
+# Third
+
+h2. {anchor:tabs-and-spaces}Tabs and spaces
+
+* this is a list item indented with tabs
+* this is a list item indented with spaces
+** this is an example list item indented with tabs
+** this is an example list item indented with spaces
+
+h2. {anchor:fancy-list-markers}Fancy list markers
+
+# begins with 2
+# and now 3
+with a continuation
+## sublist with roman numerals, starting with 4
+## more items
+### a subsublist
+### a subsublist
+
+Nesting:
+
+# Upper Alpha
+## Upper Roman.
+### Decimal start with 6
+#### Lower alpha with paren
+
+Autonumbering:
+
+# Autonumber.
+# More.
+## Nested.
+
+Should not be a list item:
+
+M.A. 2007
+
+B. Williams
+
+----
+
+h1. {anchor:definition-lists}Definition Lists
+
+Tight using spaces:
+
+* *apple*
+red fruit
+* *orange*
+orange fruit
+* *banana*
+yellow fruit
+
+Tight using tabs:
+
+* *apple*
+red fruit
+* *orange*
+orange fruit
+* *banana*
+yellow fruit
+
+Loose:
+
+* *apple*
+red fruit
+* *orange*
+orange fruit
+* *banana*
+yellow fruit
+
+Multiple blocks with italics:
+
+* *_apple_*
+red fruit
+contains seeds, crisp, pleasant to taste
+* *_orange_*
+orange fruit
+{code}
+\{ orange code block }
+{code}
+bq. orange block quote
+
+Multiple definitions, tight:
+
+* *apple*
+red fruit
+computer
+* *orange*
+orange fruit
+bank
+
+Multiple definitions, loose:
+
+* *apple*
+red fruit
+computer
+* *orange*
+orange fruit
+bank
+
+Blank line after term, indented marker, alternate markers:
+
+* *apple*
+red fruit
+computer
+* *orange*
+orange fruit
+*# sublist
+*# sublist
+
+h1. {anchor:html-blocks}HTML Blocks
+
+Simple block on one line:
+
+foo
+And nested without indentation:
+
+foo
+
+bar
+Interpreted markdown in a table:
+
+
+
+
+This is _emphasized_
+
+
+And this is *strong*
+
+
+
+
+Here's a simple block:
+
+foo
+
+This should be a code block, though:
+
+{code}
+&lt;div&gt;
+    foo
+&lt;/div&gt;
+{code}
+
+As should this:
+
+{code}
+&lt;div&gt;foo&lt;/div&gt;
+{code}
+
+Now, nested:
+
+foo
+This should just be an HTML comment:
+
+
+Multiline:
+
+
+
+Code block:
+
+{code}
+&lt;!&hyphen;&hyphen; Comment &hyphen;&hyphen;&gt;
+{code}
+
+Just plain comment, with trailing spaces on the line:
+
+
+Code:
+
+{code}
+&lt;hr /&gt;
+{code}
+
+Hr's:
+
+
+
+
+
+
+
+
+
+
+----
+
+h1. {anchor:inline-markup}Inline Markup
+
+This is _emphasized_, and so _is this_.
+
+This is *strong*, and so *is this*.
+
+An _[emphasized link|/url]_.
+
+*_This is strong and em._*
+
+So is *_this_* word.
+
+*_This is strong and em._*
+
+So is *_this_* word.
+
+This is code: {{&gt;}}, {{$}}, {{\}}, {{\$}}, {{&lt;html&gt;}}.
+
+-This is _strikeout_.-
+
+Superscripts: a{^bc^}d a{^_hello_^} a{^hello there^}.
+
+Subscripts: H{~2~}O, H{~23~}O, H{~many of them~}O.
+
+These should not be superscripts or subscripts, because of the unescaped spaces: a^b c^d, a~b c~d.
+
+----
+
+h1. {anchor:smart-quotes-ellipses-dashes}Smart quotes, ellipses, dashes
+
+"Hello," said the spider. "'Shelob' is my name."
+
+'A', 'B', and 'C' are letters.
+
+'Oak,' 'elm,' and 'beech' are names of trees. So is 'pine.'
+
+'He said, "I want to go."' Were you alive in the 70's?
+
+Here is some quoted '{{code}}' and a "[quoted link|http://example.com/?foo=1&bar=2]".
+
+Some dashes: one -- two  --  three -- four  --  five.
+
+Dashes between numbers: 5 - 7, 255 - 66, 1987 - 1999.
+
+Ellipses...and...and....
+
+----
+
+h1. {anchor:latex}LaTeX
+
+* 
+* 2 &plus; 2 = 4
+* _x_ ∈ _y_
+* _α_ ∧ _ω_
+* 223
+* _p_&hyphen;Tree
+* Here's some display math: \\$$\frac\{d}\{dx}f(x)=\lim&lowbar;\{h\to 0}\frac\{f(x&plus;h)&hyphen;f(x)}\{h}$$\\
+* Here's one that has a line break in it: _α_ &plus; _ω_ × _x_{^2^}.
+
+These shouldn't be math:
+
+* To get the famous equation, write {{$e = mc^2$}}.
+* $22,000 is a _lot_ of money. So is $34,000. (It worked if "lot" is emphasized.)
+* Shoes ($20) and socks ($5).
+* Escaped {{$}}: $73 _this should be emphasized_ 23$.
+
+Here's a LaTeX table:
+
+
+----
+
+h1. {anchor:special-characters}Special Characters
+
+Here is some unicode:
+
+* I hat: Î
+* o umlaut: ö
+* section: §
+* set membership: ∈
+* copyright: ©
+
+AT&amp;T has an ampersand in their name.
+
+AT&amp;T is another way to write it.
+
+This &amp; that.
+
+4 &lt; 5.
+
+6 &gt; 5.
+
+Backslash: \
+
+Backtick: `
+
+Asterisk: &ast;
+
+Underscore: &lowbar;
+
+Left brace: \{
+
+Right brace: }
+
+Left bracket: [
+
+Right bracket: ]
+
+Left paren: (
+
+Right paren: )
+
+Greater&hyphen;than: &gt;
+
+Hash: #
+
+Period: .
+
+Bang: !
+
+Plus: &plus;
+
+Minus: &hyphen;
+
+----
+
+h1. {anchor:links}Links
+
+h2. {anchor:explicit}Explicit
+
+Just a [URL|/url/].
+
+[URL and title|/url/].
+
+[URL and title|/url/].
+
+[URL and title|/url/].
+
+[URL and title|/url/]
+
+[URL and title|/url/]
+
+[with&lowbar;underscore|/url/with_underscore]
+
+[Email link|mailto:nobody@nowhere.net]
+
+[Empty|].
+
+h2. {anchor:reference}Reference
+
+Foo [bar|/url/].
+
+With [embedded [brackets]|/url/].
+
+[b|/url/] by itself should be a link.
+
+Indented [once|/url].
+
+Indented [twice|/url].
+
+Indented [thrice|/url].
+
+This should [not][] be a link.
+
+{code}
+[not]: /url
+{code}
+
+Foo [bar|/url/].
+
+Foo [biz|/url/].
+
+h2. {anchor:with-ampersands}With ampersands
+
+Here's a [link with an ampersand in the URL|http://example.com/?foo=1&bar=2].
+
+Here's a link with an amersand in the link text: [AT&amp;T|http://att.com/].
+
+Here's an [inline link|/script?foo=1&bar=2].
+
+Here's an [inline link in pointy braces|/script?foo=1&bar=2].
+
+h2. {anchor:autolinks}Autolinks
+
+With an ampersand: [http://example.com/?foo=1&amp;bar=2|http://example.com/?foo=1&bar=2]
+
+* In a list?
+* [http://example.com/|http://example.com/]
+* It should.
+
+An e&hyphen;mail address: [nobody&commat;nowhere.net|mailto:nobody@nowhere.net]
+
+bq. Blockquoted: [http://example.com/|http://example.com/]
+
+
+Auto&hyphen;links should not occur here: {{&lt;http://example.com/&gt;}}
+
+{code}
+or here: &lt;http://example.com/&gt;
+{code}
+
+----
+
+h1. {anchor:images}Images
+
+From "Voyage dans la Lune" by Georges Melies (1902):
+
+!lalune.jpg!
+
+Here is a movie !movie.jpg! icon.
+
+----
+
+h1. {anchor:footnotes}Footnotes
+
+Here is a footnote reference,[1] and another.[2] This should _not_ be a footnote reference, because it contains a space.[^my note] Here is an inline note.[3]
+
+bq. Notes can go in quotes.[4]
+
+
+# And in list items.[5]
+
+This paragraph should not be part of the note, as it is not indented.
+
+
+[1] Here is the footnote. It can go anywhere after the footnote reference. It need not be placed at the end of the document.
+
+
+[2] Here's the long note. This one contains multiple blocks.
+
+Subsequent blocks are indented to show that they belong to the footnote (as with list items).
+
+{code}
+  \{ &lt;code&gt; }
+{code}
+
+If you want, you can indent every line, but you can also be lazy and just indent the first line of each block.
+
+
+[3] This is _easier_ to type. Inline notes may contain [links|http://google.com] and {{]}} verbatim characters, as well as [bracketed text].
+
+
+[4] In quote.
+
+
+[5] In list.
diff --git a/test/writer.opendocument b/test/writer.opendocument
--- a/test/writer.opendocument
+++ b/test/writer.opendocument
@@ -1879,7 +1879,7 @@
 <text:p text:style-name="First_20_paragraph">From “Voyage dans la Lune” by
 Georges Melies (1902):</text:p>
 <text:p text:style-name="FigureWithCaption"><draw:frame draw:name="img1"><draw:image xlink:href="lalune.jpg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" /></draw:frame></text:p>
-<text:p text:style-name="FigureCaption">Figure <text:sequence text:ref-name="refIllustration0" text:name="Illustration" text:formula="ooow:Illustration+1" style:num-format="1">1</text:sequence>: lalune</text:p>
+<text:p text:style-name="FigureCaption">lalune</text:p>
 <text:p text:style-name="Text_20_body">Here is a movie
 <draw:frame draw:name="img2"><draw:image xlink:href="movie.jpg" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" /></draw:frame>
 icon.</text:p>
diff --git a/test/writer.org b/test/writer.org
--- a/test/writer.org
+++ b/test/writer.org
@@ -92,9 +92,9 @@
   Code in a block quote:
 
   #+BEGIN_EXAMPLE
-      sub status {
-          print "working";
-      }
+    sub status {
+        print "working";
+    }
   #+END_EXAMPLE
 
   A list:
@@ -127,21 +127,21 @@
 Code:
 
 #+BEGIN_EXAMPLE
-    ---- (should be four hyphens)
+  ---- (should be four hyphens)
 
-    sub status {
-        print "working";
-    }
+  sub status {
+      print "working";
+  }
 
-    this code block is indented by one tab
+  this code block is indented by one tab
 #+END_EXAMPLE
 
 And:
 
 #+BEGIN_EXAMPLE
-        this code block is indented by two tabs
+      this code block is indented by two tabs
 
-    These should not be escaped:  \$ \\ \> \[ \{
+  These should not be escaped:  \$ \\ \> \[ \{
 #+END_EXAMPLE
 
 --------------
@@ -364,7 +364,7 @@
 - /orange/ :: orange fruit
 
   #+BEGIN_EXAMPLE
-      { orange code block }
+    { orange code block }
   #+END_EXAMPLE
 
   #+BEGIN_QUOTE
@@ -463,15 +463,15 @@
 This should be a code block, though:
 
 #+BEGIN_EXAMPLE
-    <div>
-        foo
-    </div>
+  <div>
+      foo
+  </div>
 #+END_EXAMPLE
 
 As should this:
 
 #+BEGIN_EXAMPLE
-    <div>foo</div>
+  <div>foo</div>
 #+END_EXAMPLE
 
 Now, nested:
@@ -502,7 +502,7 @@
 Code block:
 
 #+BEGIN_EXAMPLE
-    <!-- Comment -->
+  <!-- Comment -->
 #+END_EXAMPLE
 
 Just plain comment, with trailing spaces on the line:
@@ -514,7 +514,7 @@
 Code:
 
 #+BEGIN_EXAMPLE
-    <hr />
+  <hr />
 #+END_EXAMPLE
 
 Hr's:
@@ -751,7 +751,7 @@
 This should [not][] be a link.
 
 #+BEGIN_EXAMPLE
-    [not]: /url
+  [not]: /url
 #+END_EXAMPLE
 
 Foo [[/url/][bar]].
@@ -792,7 +792,7 @@
 Auto-links should not occur here: =<http://example.com/>=
 
 #+BEGIN_EXAMPLE
-    or here: <http://example.com/>
+  or here: <http://example.com/>
 #+END_EXAMPLE
 
 --------------
@@ -837,7 +837,7 @@
        (as with list items).
 
        #+BEGIN_EXAMPLE
-             { <code> }
+           { <code> }
        #+END_EXAMPLE
 
        If you want, you can indent every line, but you can also be lazy and
diff --git a/test/writer.textile b/test/writer.textile
--- a/test/writer.textile
+++ b/test/writer.textile
@@ -523,13 +523,13 @@
 h1(#latex). LaTeX
 
 * 
-* <span class="math">2+2=4</math>
-* <span class="math">x \in y</math>
-* <span class="math">\alpha \wedge \omega</math>
-* <span class="math">223</math>
-* <span class="math">p</math>&#45;Tree
-* Here's some display math: <span class="math">\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}</math>
-* Here's one that has a line break in it: <span class="math">\alpha + \omega \times x^2</math>.
+* <span class="math">2+2=4</span>
+* <span class="math">x \in y</span>
+* <span class="math">\alpha \wedge \omega</span>
+* <span class="math">223</span>
+* <span class="math">p</span>&#45;Tree
+* Here's some display math: <span class="math">\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}</span>
+* Here's one that has a line break in it: <span class="math">\alpha + \omega \times x^2</span>.
 
 These shouldn't be math:
 
diff --git a/test/writers-lang-and-dir.latex b/test/writers-lang-and-dir.latex
--- a/test/writers-lang-and-dir.latex
+++ b/test/writers-lang-and-dir.latex
@@ -37,6 +37,7 @@
 \IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
 \IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
 \hypersetup{
+  pdflang={en},
   hidelinks,
   pdfcreator={LaTeX via pandoc}}
 \urlstyle{same} % disable monospaced font for URLs
diff --git a/trypandoc/index.html b/trypandoc/index.html
--- a/trypandoc/index.html
+++ b/trypandoc/index.html
@@ -137,6 +137,7 @@
         <option value="html5" selected>HTML 5</option>
         <option value="icml">ICML</option>
         <option value="jats">JATS</option>
+        <option value="jira">Jira</option>
         <option value="json">JSON</option>
         <option value="ipynb">Jupyter Notebook (ipynb)</option>
         <option value="latex">LaTeX</option>
