Index: BOOK/stylesheets/lfs.css
===================================================================
--- BOOK/stylesheets/lfs.css	(revision bd709ec77b5f1af78d11c3673a5946fb833ff442)
+++ BOOK/stylesheets/lfs.css	(revision 8a84f0d1f8d59a8dd88a0e863471e7b978a0d75b)
@@ -173,4 +173,8 @@
 }
 
+div.important tt.literal, div.warning tt.literal, div.caution tt.literal {
+  font-weight: normal;
+}
+
 /* variablelist & segmentedlist */
 dl {
@@ -214,4 +218,7 @@
 div.variablelist dd p {
   margin-top: 0px;
+  margin-bottom: 0px;
+  padding-top: 0px;
+  padding-bottom: 0px;
 }
 
@@ -226,11 +233,21 @@
 }
 
-div.package span.segtitle {
+div.package span.segtitle, div.appendix span.segtitle {
   float: left;
 }
 
-div.package span.seg {
+div.package span.seg, div.appendix span.seg {
   display: block;
   padding-left: 14em;
+}
+
+div.appendix div.segmentedlist {
+  padding-left: 1em;
+}
+
+div.appendix h2 {
+  font-size: 133%;
+  margin-top: 1em;
+  margin-bottom: 0.2em;
 }
 
@@ -254,4 +271,18 @@
 div.itemizedlist {
   margin-left: 1em;
+}
+
+ul[compact="compact"] {
+  list-style: none;
+}
+
+ul[compact="compact"] li {
+  margin: 0em;
+  padding: 0em;
+}
+
+ul[compact="compact"] li p {
+  padding: 0.3em;
+  margin: 0em;
 }
 
Index: BOOK/stylesheets/patcheslist.xsl
===================================================================
--- BOOK/stylesheets/patcheslist.xsl	(revision bd709ec77b5f1af78d11c3673a5946fb833ff442)
+++ BOOK/stylesheets/patcheslist.xsl	(revision 8a84f0d1f8d59a8dd88a0e863471e7b978a0d75b)
@@ -16,19 +16,31 @@
 
   <xsl:template match="/">
-    <xsl:text>#! /bin/bash&#x0a;&#x0a;</xsl:text>
-    <xsl:text>  umask 002&#x0a;&#x0a;</xsl:text>
+    <xsl:text>#! /bin/bash
+
+function copy
+{
+  cp $1 $2 >>copyerrs 2>&amp;1
+}
+
+umask 002 &#x0a;&#x0a;</xsl:text>
+               
       <!-- Create dest.dir if it don't exist -->
-    <xsl:text>  install -d -m 775 -g lfswww </xsl:text>
+    <xsl:text>install -d -m 775 -g lfswww </xsl:text>
     <xsl:value-of select="$dest.dir"/>
     <xsl:text> &amp;&amp;&#x0a;</xsl:text>
-    <xsl:text>  cd </xsl:text>
+    <xsl:text>cd </xsl:text>
     <xsl:value-of select="$dest.dir"/>
     <xsl:text> &amp;&amp;&#x0a;&#x0a;</xsl:text>
-      <!-- Touch a dummy patch to prevent fails if dest dir is empty, then remove old patches -->
-    <xsl:text>  touch dummy.patch &amp;&amp;&#x0a;  rm -f *.patch &amp;&amp;&#x0a;&#x0a;</xsl:text>
+      <!-- Remove old patches -->
+    <xsl:text>rm -f *.patch copyerrs &amp;&amp; &#x0a;&#x0a;</xsl:text>
     <xsl:apply-templates/>
       <!-- Ensure correct owneship -->
-    <xsl:text>&#x0a;  chgrp lfswww *.patch &amp;&amp;&#x0a;</xsl:text>
-    <xsl:text>&#x0a;  exit&#x0a;</xsl:text>
+    <xsl:text>&#x0a;chgrp lfswww *.patch &amp;&amp;&#x0a;</xsl:text>
+    <xsl:text>
+if [ `wc -l copyerrs | sed 's/ *//' | cut -f1 -d' '` -gt 0 ]; then
+  mail -s "Missing LFS patches" lfs-book@linuxfromscratch.org &lt; copyerrs
+fi&#x0a;&#x0a;</xsl:text>
+          
+    <xsl:text>exit&#x0a;</xsl:text>
   </xsl:template>
 
@@ -47,5 +59,5 @@
         <xsl:value-of select="$cut"/>
       </xsl:variable>
-      <xsl:text>  cp /home/httpd/www.linuxfromscratch.org/patches/downloads/</xsl:text>
+      <xsl:text>copy /home/httpd/www.linuxfromscratch.org/patches/downloads/</xsl:text>
           <xsl:value-of select="substring-before($patch.name2, '-0')"/>
       <xsl:text>/</xsl:text>
Index: BOOK/stylesheets/pdf/lfs-mixed.xsl
===================================================================
--- BOOK/stylesheets/pdf/lfs-mixed.xsl	(revision bd709ec77b5f1af78d11c3673a5946fb833ff442)
+++ BOOK/stylesheets/pdf/lfs-mixed.xsl	(revision 8a84f0d1f8d59a8dd88a0e863471e7b978a0d75b)
@@ -13,5 +13,6 @@
   </xsl:template>
 
-    <!-- Allow forced line breaks inside paragraphs emulating literallayout. -->
+    <!-- Allow forced line breaks inside paragraphs emulating literallayout
+    and to remove vertical space in pachages and patches pages. -->
  <xsl:template match="para">
     <xsl:choose>
@@ -22,4 +23,13 @@
                     text-align="start"
                     linefeed-treatment="preserve">
+          <xsl:call-template name="anchor"/>
+          <xsl:apply-templates/>
+        </fo:block>
+      </xsl:when>
+      <xsl:when test="ancestor::variablelist/@role = 'materials'">
+        <fo:block>
+          <xsl:attribute name="space-before.optimum">0.1em</xsl:attribute>
+          <xsl:attribute name="space-before.minimum">0em</xsl:attribute>
+          <xsl:attribute name="space-before.maximum">0.2em</xsl:attribute>
           <xsl:call-template name="anchor"/>
           <xsl:apply-templates/>
Index: BOOK/stylesheets/xhtml/lfs-sections.xsl
===================================================================
--- BOOK/stylesheets/xhtml/lfs-sections.xsl	(revision bd709ec77b5f1af78d11c3673a5946fb833ff442)
+++ BOOK/stylesheets/xhtml/lfs-sections.xsl	(revision 8a84f0d1f8d59a8dd88a0e863471e7b978a0d75b)
@@ -54,5 +54,43 @@
   <xsl:param name="section.label.includes.component.label" select="1"/>
 
-    <!-- Skip numeraration for sections with empty title -->
+    <!-- Use lowercase roman numbers for sect1 in preface -->
+  <xsl:template match="sect1" mode="label.markup">
+    <!-- if the parent is a component, maybe label that too -->
+    <xsl:variable name="parent.is.component">
+      <xsl:call-template name="is.component">
+        <xsl:with-param name="node" select=".."/>
+      </xsl:call-template>
+    </xsl:variable>
+    <xsl:variable name="component.label">
+      <xsl:if test="$section.label.includes.component.label != 0
+                    and $parent.is.component != 0">
+        <xsl:variable name="parent.label">
+          <xsl:apply-templates select=".." mode="label.markup"/>
+        </xsl:variable>
+        <xsl:if test="$parent.label != ''">
+          <xsl:apply-templates select=".." mode="label.markup"/>
+          <xsl:apply-templates select=".." mode="intralabel.punctuation"/>
+        </xsl:if>
+      </xsl:if>
+    </xsl:variable>
+    <xsl:choose>
+      <xsl:when test="@label">
+        <xsl:value-of select="@label"/>
+      </xsl:when>
+      <xsl:when test="$section.autolabel != 0">
+        <xsl:copy-of select="$component.label"/>
+        <xsl:choose>
+          <xsl:when test="ancestor::preface">
+            <xsl:number format="i" count="sect1"/>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:number format="1" count="sect1"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:when>
+    </xsl:choose>
+  </xsl:template>
+
+    <!-- Skip numeration for sect2 with empty title -->
   <xsl:template match="sect2|sect3|sect4|sect5" mode="label.markup">
     <xsl:if test="string-length(title) > 0">
Index: BOOK/stylesheets/xhtml/lfs-titles.xsl
===================================================================
--- BOOK/stylesheets/xhtml/lfs-titles.xsl	(revision bd709ec77b5f1af78d11c3673a5946fb833ff442)
+++ BOOK/stylesheets/xhtml/lfs-titles.xsl	(revision 8a84f0d1f8d59a8dd88a0e863471e7b978a0d75b)
@@ -79,6 +79,8 @@
           </xsl:if>
           <h2 class="{name(.)}">
-            <xsl:apply-templates select="." mode="label.markup"/>
-            <xsl:text>. </xsl:text>
+            <xsl:if test="not(ancestor::preface)">
+              <xsl:apply-templates select="." mode="label.markup"/>
+              <xsl:text>. </xsl:text>
+            </xsl:if>
             <xsl:value-of select="title"/>
           </h2>
