diff -u -r pyslide-0.4-orig/Pyslide/Items/ItemText.py pyslide-0.4/Pyslide/Items/ItemText.py
--- pyslide-0.4-orig/Pyslide/Items/ItemText.py	2004-02-29 16:33:54.000000000 -0500
+++ pyslide-0.4/Pyslide/Items/ItemText.py	2007-11-02 20:02:38.795641590 -0400
@@ -40,6 +40,8 @@
         self.font_file = None
         self.font = None
         self.interspace = 0
+        self.join_lines = True
+        self.delete_first_blank = True
 
         Item.__init__(self, parent, text, *k)
 
@@ -74,11 +76,27 @@
                     raise misc.PyslideError, 'Invalid interspace value: ' + val
 
                 self.interspace = CS.map_units(y = interspace)
+            elif key == 'join-lines':
+                cval = val.lower()
+                if cval == 'true' or cval == 't' or cval == 'yes' or cval == '1':
+                    self.join_lines = True
+                elif cval == 'false' or cval == 'f' or cval == 'no' or cval == '0':
+                    self.join_lines = False
+                else:
+                    raise misc.PyslideError, 'Invalid join-lines value: ' + val
+            elif key == 'delete-first-blank':
+                cval = val.lower()
+                if cval == 'true' or cval == 't' or cval == 'yes' or cval == '1':
+                    self.delete_first_blank = True
+                elif cval == 'false' or cval == 'f' or cval == 'no' or cval == '0':
+                    self.delete_first_blank = False
+                else:
+                    raise misc.PyslideError, 'Invalid delete-first-blank value: ' + val
 
-    def make_item(self):
+    def make_item(self, margin=0):
         'See Item.make_image for info.'
 
-        return self.drawstring(self.text)
+        return self.drawstring(self.text, margin=margin)
 
     def getfont(self, fontfile, fontsize):
         try:
@@ -86,8 +104,7 @@
         except (IOError, RuntimeError), e:
             raise misc.PyslideError, 'loading font (%s): %s' %(fontfile, e)
 
-    def drawstring(self, text, font_size = None):
-
+    def drawstring(self, text, font_size = None, margin=0):
         if font_size is None:
             font_size = self.font_size
 
@@ -95,7 +112,7 @@
         if self.shadow is not None:
             colors.append(self.shadow)
 
-        max_width = CS.width - self.orig_x
+        max_width = CS.width - (self.orig_x + margin)
         font = self.getfont(self.font_file, font_size)
 
 
@@ -103,16 +120,22 @@
 
         texts = []
         current_line = None
-        line = text.replace('\r', ' ')  # HTML style
-        for word in line.split():
-            if current_line is None:
-                current_line = word
-            else:
-                if font.size(current_line + ' ' + word)[0] > max_width:
-                    texts.append(current_line)
+        if self.join_lines:
+            line = text.replace('\r', ' ')  # HTML style
+            for word in line.split():
+                if current_line is None:
                     current_line = word
                 else:
-                    current_line += ' ' + word
+                    if font.size(current_line + ' ' + word)[0] > max_width:
+                        texts.append(current_line)
+                        current_line = word
+                    else:
+                        current_line += ' ' + word
+        else:
+            texts = text.split('\n')
+
+        if len(texts) > 0 and self.delete_first_blank and texts[0] == '':
+            del texts[0]
 
         if current_line:
             texts.append(current_line)
diff -u -r pyslide-0.4-orig/Pyslide/Presentation/base.py pyslide-0.4/Pyslide/Presentation/base.py
--- pyslide-0.4-orig/Pyslide/Presentation/base.py	2004-03-06 11:35:02.000000000 -0500
+++ pyslide-0.4/Pyslide/Presentation/base.py	2007-11-02 20:01:58.993373388 -0400
@@ -52,6 +52,7 @@
         self.start_page = None
         self.current_page = pygame.sprite.RenderUpdates()
         self.special_sprites = pygame.sprite.RenderUpdates()
+        self.number_pressed = 0
 
         CurrentSurface.set_surface(win)
 
@@ -81,6 +82,10 @@
     def addpage (self, page):
         self.pages.append (page)
 
+    def goto_page (self, n):
+        if n > 0 and n < len(self.pages):
+            self.set_page(self.number_pressed)
+
     def next_page (self):
         if self.num_page < len(self.pages)-1:
             self.set_page(self.num_page + 1)
@@ -269,6 +274,12 @@
                         print '%d items:' % len(s)
                         import pprint; pprint.pprint(s)
                         print 'keep-always: %d\n' % len([0 for x in s if x.keep_always])
+                    elif event.key in (K_0, K_1, K_2, K_3, K_4, K_5, K_6, K_7, K_8, K_9):
+                        self.number_pressed = self.number_pressed * 10
+                        self.number_pressed = self.number_pressed + (event.key - K_0)
+                    elif event.key == K_RETURN:
+                        self.goto_page(self.number_pressed)
+                        self.number_pressed = 0
 
             if page.ttl is not None:
                 if time.time() - self.page_start_time >= page.ttl:

