+log 0, 're-styling dedication, preface and introduction authors'
+xml.css('dedication').each do |ded|
+# Take content out of the quote marks, and into the blockquote
+ quote = ded.css('quote').first
+ auth = ded.css('itemizedlist').first
+ quote_c = quote.content
+ auth_c = auth.content
+ # Styling the attribution (including the introducing hyphen) should
+ # be left to the following layers
+ auth_c.gsub!(/\s+/, ' ')
+ c = ded.css('quote').first.content
+ quote.parent.remove # remove the '<para>' containing the quote
+ auth.remove
+ ded.last_element_child.after('<blockquote><attribution>%s</attribution><para>%s</para></blockquote>' %
+ [auth_c, quote_c])
+end
+
+%w(preface#foreword preface#introduction).each do |spec|
+ sect = xml.css(spec)[0]
+ paras = sect.css('para emphasis')
+ auth = '<blockquote><attribution>'
+ auth += paras.map{|p| p.content}.join(', <?latex \newline ?>')
+ auth += '</attribution><para/></blockquote>'
+ sect.last_element_child.after(auth)
+ paras.each {|i| i.parent.remove} # Remove both the 'emphasis' and its parent 'para'
+end
+
+auth = xml.css('chapter')[0].css('para')[0]
+auth.content =~ /^\s*Paul Stacey\s*$/ or
+ raise RuntimeError, 'Error finding author name in chapter 1 -- ' + auth.content
+auth.before('<blockquote><attribution>Paul Stacey</attribution><para/></blockquote>')
+auth.remove
+
+auth = xml.css('chapter')[1].css('para')[0]
+auth.content =~ /^\s*Sarah Hinchliff Pearson.*$/ or
+ raise RuntimeError, 'Error finding author name in chapter 2 -- ' + auth.content
+auth.before('<blockquote><attribution>Sarah Hinchliff Pearson</attribution><para/></blockquote>')
+auth.remove
+