diff --git a/src/calibre/ebooks/fb2/fb2ml.py b/src/calibre/ebooks/fb2/fb2ml.py index b846d76a95..fad89612c7 100644 --- a/src/calibre/ebooks/fb2/fb2ml.py +++ b/src/calibre/ebooks/fb2/fb2ml.py @@ -355,10 +355,17 @@ class FB2MLizer(object): # Ensure what we are converting is not a string and that the fist tag is part of the XHTML namespace. if not isinstance(elem_tree.tag, basestring) or namespace(elem_tree.tag) != XHTML_NS: + p = elem.getparent() + if p is not None and isinstance(p.tag, basestring) and namespace(p.tag) == XHTML_NS \ + and elem.tail: + return [elem.tail] return [] style = stylizer.style(elem_tree) - if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') or style['visibility'] == 'hidden': + if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') \ + or style['visibility'] == 'hidden': + if hasattr(elem, 'tail') and elem.tail: + return [elem.tail] return [] # FB2 generated output. diff --git a/src/calibre/ebooks/pml/pmlml.py b/src/calibre/ebooks/pml/pmlml.py index b04aaacaec..506e18654e 100644 --- a/src/calibre/ebooks/pml/pmlml.py +++ b/src/calibre/ebooks/pml/pmlml.py @@ -220,8 +220,11 @@ class PMLMLizer(object): def dump_text(self, elem, stylizer, page, tag_stack=[]): from calibre.ebooks.oeb.base import XHTML_NS, barename, namespace - if not isinstance(elem.tag, basestring) \ - or namespace(elem.tag) != XHTML_NS: + if not isinstance(elem_tree.tag, basestring) or namespace(elem_tree.tag) != XHTML_NS: + p = elem.getparent() + if p is not None and isinstance(p.tag, basestring) and namespace(p.tag) == XHTML_NS \ + and elem.tail: + return [elem.tail] return [] text = [] @@ -230,6 +233,8 @@ class PMLMLizer(object): if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') \ or style['visibility'] == 'hidden': + if hasattr(elem, 'tail') and elem.tail: + return [elem.tail] return [] tag = barename(elem.tag) diff --git a/src/calibre/ebooks/rb/rbml.py b/src/calibre/ebooks/rb/rbml.py index 8cf63e334c..c5b110c679 100644 --- a/src/calibre/ebooks/rb/rbml.py +++ b/src/calibre/ebooks/rb/rbml.py @@ -142,8 +142,11 @@ class RBMLizer(object): def dump_text(self, elem, stylizer, page, tag_stack=[]): from calibre.ebooks.oeb.base import XHTML_NS, barename, namespace - if not isinstance(elem.tag, basestring) \ - or namespace(elem.tag) != XHTML_NS: + if not isinstance(elem_tree.tag, basestring) or namespace(elem_tree.tag) != XHTML_NS: + p = elem.getparent() + if p is not None and isinstance(p.tag, basestring) and namespace(p.tag) == XHTML_NS \ + and elem.tail: + return [elem.tail] return [u''] text = [u''] @@ -151,6 +154,8 @@ class RBMLizer(object): if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') \ or style['visibility'] == 'hidden': + if hasattr(elem, 'tail') and elem.tail: + return [elem.tail] return [u''] tag = barename(elem.tag) diff --git a/src/calibre/ebooks/rtf/rtfml.py b/src/calibre/ebooks/rtf/rtfml.py index 7f0a1856e4..40a2490fed 100644 --- a/src/calibre/ebooks/rtf/rtfml.py +++ b/src/calibre/ebooks/rtf/rtfml.py @@ -229,6 +229,8 @@ class RTFMLizer(object): if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') \ or style['visibility'] == 'hidden': + if hasattr(elem, 'tail') and elem.tail: + return elem.tail return u'' tag = barename(elem.tag) diff --git a/src/calibre/ebooks/snb/snbml.py b/src/calibre/ebooks/snb/snbml.py index a501de1ff0..1913c6f790 100644 --- a/src/calibre/ebooks/snb/snbml.py +++ b/src/calibre/ebooks/snb/snbml.py @@ -212,6 +212,10 @@ class SNBMLizer(object): if not isinstance(elem.tag, basestring) \ or namespace(elem.tag) != XHTML_NS: + p = elem.getparent() + if p is not None and isinstance(p.tag, basestring) and namespace(p.tag) == XHTML_NS \ + and elem.tail: + return [elem.tail] return [''] @@ -225,6 +229,8 @@ class SNBMLizer(object): if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') \ or style['visibility'] == 'hidden': + if hasattr(elem, 'tail') and elem.tail: + return [elem.tail] return [''] tag = barename(elem.tag) diff --git a/src/calibre/ebooks/txt/markdownml.py b/src/calibre/ebooks/txt/markdownml.py index 79cfabf65e..39e3e08ec9 100644 --- a/src/calibre/ebooks/txt/markdownml.py +++ b/src/calibre/ebooks/txt/markdownml.py @@ -127,6 +127,8 @@ class MarkdownMLizer(OEB2HTML): # Ignore anything that is set to not be displayed. if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') \ or style['visibility'] == 'hidden': + if hasattr(elem, 'tail') and elem.tail: + return [elem.tail] return [''] # Soft scene breaks. diff --git a/src/calibre/ebooks/txt/textileml.py b/src/calibre/ebooks/txt/textileml.py index 9b63386741..817ff01ad2 100644 --- a/src/calibre/ebooks/txt/textileml.py +++ b/src/calibre/ebooks/txt/textileml.py @@ -241,6 +241,8 @@ class TextileMLizer(OEB2HTML): # Ignore anything that is set to not be displayed. if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') \ or style['visibility'] == 'hidden': + if hasattr(elem, 'tail') and elem.tail: + return [elem.tail] return [''] # Soft scene breaks. diff --git a/src/calibre/ebooks/txt/txtml.py b/src/calibre/ebooks/txt/txtml.py index 2320fbbbc7..155d21d77d 100644 --- a/src/calibre/ebooks/txt/txtml.py +++ b/src/calibre/ebooks/txt/txtml.py @@ -200,6 +200,8 @@ class TXTMLizer(object): if style['display'] in ('none', 'oeb-page-head', 'oeb-page-foot') \ or style['visibility'] == 'hidden': + if hasattr(elem, 'tail') and elem.tail: + return [elem.tail] return [''] tag = barename(elem.tag)