Index: modules/book/book.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.module,v
retrieving revision 1.403
diff -u -p -r1.403 book.module
--- modules/book/book.module	30 Nov 2006 02:04:31 -0000	1.403
+++ modules/book/book.module	24 Dec 2006 05:02:21 -0000
@@ -778,19 +778,25 @@ function book_recurse($nid = 0, $depth =
  *   - the HTML generated for the given node.
  */
 function book_node_visitor_html_pre($node, $depth, $nid) {
-  // Output the content:
-  if (node_hook($node, 'content')) {
-    $node = node_invoke($node, 'content');
+  // Remove the delimiter (if any) that separates the teaser from the body.
+  $node->body = str_replace('<break>', '', $node->body);
+
+  // The 'view' hook can be implemented to overwrite the default function
+  // to display nodes.
+  if (node_hook($node, 'view')) {
+    $node = node_invoke($node, 'view', FALSE, FALSE);
+  }
+  else {
+    $node = node_prepare($node, FALSE);
   }
-  // Allow modules to change $node->body before viewing.
-  node_invoke_nodeapi($node, 'print', $node->body, FALSE);
+
+  // Allow modules to make their own additions to the node.
+  node_invoke_nodeapi($node, 'print');
 
   $output .= "<div id=\"node-". $node->nid ."\" class=\"section-$depth\">\n";
   $output .= "<h1 class=\"book-heading\">". check_plain($node->title) ."</h1>\n";
+  $output .= drupal_render($node->content);
 
-  if ($node->body) {
-    $output .= drupal_render($node->content);
-  }
   return $output;
 }
 
