diff --git a/modules/bibformat/lib/elements/bfe_abstract.py b/modules/bibformat/lib/elements/bfe_abstract.py
index 20fc4247e..1942eed5f 100644
--- a/modules/bibformat/lib/elements/bfe_abstract.py
+++ b/modules/bibformat/lib/elements/bfe_abstract.py
@@ -1,165 +1,171 @@
 # -*- coding: utf-8 -*-
 ##
 ## $Id$
 ##
 ## This file is part of CDS Invenio.
 ## Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 CERN.
 ##
 ## CDS Invenio is free software; you can redistribute it and/or
 ## modify it under the terms of the GNU General Public License as
 ## published by the Free Software Foundation; either version 2 of the
 ## License, or (at your option) any later version.
 ##
 ## CDS Invenio is distributed in the hope that it will be useful, but
 ## WITHOUT ANY WARRANTY; without even the implied warranty of
 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 ## General Public License for more details.
 ##
 ## You should have received a copy of the GNU General Public License
 ## along with CDS Invenio; if not, write to the Free Software Foundation, Inc.,
 ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
 """BibFormat element - Prints English and French abstract.
 """
 
 __revision__ = "$Id$"
 
 #import cgi
 from invenio import bibformat_utils
 from urllib import quote
 from invenio.config import CFG_SITE_URL
 import re
 
 def format(bfo, prefix_en, prefix_fr, suffix_en, suffix_fr, limit, max_chars,
            extension_en="[...] ",extension_fr="[...] ", contextual="no",
            highlight='no', print_lang='en,fr', escape="3",
            separator_en="<br/>", separator_fr="<br/>"):
     """ Prints the abstract of a record in HTML. By default prints English and French versions.
 
     Printed languages can be chosen with the 'print_lang' parameter.
 
     @param prefix_en a prefix for english abstract (printed only if english abstract exists)
     @param prefix_fr a prefix for french abstract (printed only if french abstract exists)
     @param limit the maximum number of sentences of the abstract to display (for each language)
     @param max_chars the maximum number of chars of the abstract to display (for each language)
     @param extension_en a text printed after english abstracts longer than parameter 'limit'
     @param extension_fr a text printed after french abstracts longer than parameter 'limit'
     @param suffix_en a suffix for english abstract(printed only if english abstract exists)
     @param suffix_fr a suffix for french abstract(printed only if french abstract exists)
     @parmm contextual if 'yes' prints sentences the most relative to user search keyword (if limit < abstract)
     @param highlight if 'yes' highlights words from user search keyword
     @param print_lang the comma-separated list of languages to print. Now restricted to 'en' and 'fr'
     @param escape escaping method
     @param separator_en a separator between each english abstract
     @param separator_fr a separator between each french abstract
     """
     out = ''
 
     if print_lang == 'auto':
         print_lang = bfo.lang
     languages = print_lang.split(',')
 
     abstract_en = bfo.fields('520__a', escape=int(escape))
     abstract_en.extend(bfo.fields('520__b', escape=int(escape)))
     #abstract_en = [cgi.escape(val) for val in abstract_en]
     abstract_en = separator_en.join(abstract_en)
 
     abstract_fr = bfo.fields('590__a', escape=int(escape))
     abstract_fr.extend(bfo.fields('590__b', escape=int(escape)))
     #abstract_fr = [cgi.escape(val) for val in abstract_fr]
     abstract_fr = separator_fr.join(abstract_fr)
 
     if contextual == 'yes' and limit != "" and \
            limit.isdigit() and int(limit) > 0:
         context_en = bibformat_utils.get_contextual_content(abstract_en,
                                                             bfo.search_pattern,
                                                             max_lines=int(limit))
         #FIXME add something like [...] before and after
         #contextual sentences when not at beginning/end of abstract
         #if not abstract_en.strip().startswith(context_en[0].strip()):
         #    out += '[...]'
         abstract_en = "<br/>".join(context_en)
 
         context_fr = bibformat_utils.get_contextual_content(abstract_fr,
                                                             bfo.search_pattern,
                                                             max_lines=int(limit))
         abstract_fr = "<br/>".join(context_fr)
 
     if len(abstract_en) > 0 and 'en' in languages:
 
         out += prefix_en
         print_extension = False
 
         if max_chars != "" and max_chars.isdigit() and \
                int(max_chars) < len(abstract_en):
             print_extension = True
             abstract_en = abstract_en[:int(max_chars)]
 
         if limit != "" and limit.isdigit():
-            s_abstract = abstract_en.split(".")
+            s_abstract = abstract_en.split(". ") # Split around
+                                                 # DOTSPACE so that we
+                                                 # don't split html
+                                                 # links
 
             if int(limit) < len(s_abstract):
                 print_extension = True
                 s_abstract = s_abstract[:int(limit)]
 
             #for sentence in s_abstract:
             #    out += sentence + "."
-            out = '.'.join(s_abstract)
+            out = '. '.join(s_abstract)
 
             # Add final dot if needed
             if abstract_en.endswith('.'):
                 out += '.'
 
             if print_extension:
                 out += " " + extension_en
 
         else:
             out += abstract_en
 
         out += suffix_en
 
     if len(abstract_fr) > 0 and 'fr' in languages:
 
         out += prefix_fr
 
         print_extension = False
 
         if max_chars != "" and max_chars.isdigit() and \
                int(max_chars) < len(abstract_fr):
             print_extension = True
             abstract_fr = abstract_fr[:int(max_chars)]
 
         if limit != "" and limit.isdigit():
-            s_abstract = abstract_fr.split(".")
+            s_abstract = abstract_fr.split(". ") # Split around
+                                                 # DOTSPACE so that we
+                                                 # don't split html
+                                                 # links
 
             if int(limit) < len(s_abstract):
                 print_extension = True
                 s_abstract = s_abstract[:int(limit)]
 
             #for sentence in s_abstract:
             #    out += sentence + "."
-            out = '.'.join(s_abstract)
+            out = '. '.join(s_abstract)
 
             # Add final dot if needed
             if abstract_fr.endswith('.'):
                 out += '.'
 
             if print_extension:
                 out += " "+extension_fr
 
         else:
             out += abstract_fr
 
         out += suffix_fr
 
     if highlight == 'yes':
         out = bibformat_utils.highlight(out, bfo.search_pattern)
 
     return out
 
 
 def escape_values(bfo):
     """
     Called by BibFormat in order to check if output of this element
     should be escaped.
     """
     return 0