diff --git a/src/calibre/ebooks/pml/input.py b/src/calibre/ebooks/pml/input.py
index 2475e40c34..ead6c988f4 100644
--- a/src/calibre/ebooks/pml/input.py
+++ b/src/calibre/ebooks/pml/input.py
@@ -43,23 +43,9 @@ class PMLInput(InputFormatPlugin):
if self.options.input_encoding:
ienc = self.options.input_encoding
- style = '''
-
-'''
self.log.debug('Converting PML to HTML...')
html = pml_to_html(pml_stream.read().decode(ienc))
- html_stream.write('
%s' % style)
- html_stream.write(html.encode('utf-8', 'replace'))
- html_stream.write('')
+ html_stream.write('%s' % html.encode('utf-8', 'replace'))
if pclose:
pml_stream.close()
diff --git a/src/calibre/ebooks/pml/pmlconverter.py b/src/calibre/ebooks/pml/pmlconverter.py
index 1b42f99cc1..140317c9df 100644
--- a/src/calibre/ebooks/pml/pmlconverter.py
+++ b/src/calibre/ebooks/pml/pmlconverter.py
@@ -25,27 +25,27 @@ PML_HTML_RULES = [
# (and also makes sure we DO honor \\\x as \ followed by \x).
(re.compile(r'\\(.)'), lambda match: '\' if match.group(1) == '\\' else '\\' + match.group(1)),
- (re.compile(r'\\p'), lambda match: '
'),
- (re.compile(r'\\x(?P.*?)\\x', re.DOTALL), lambda match: '%s
' % match.group('text') if match.group('text') else ''),
+ (re.compile(r'\\p'), lambda match: '
'),
+ (re.compile(r'\\x(?P.*?)\\x', re.DOTALL), lambda match: '%s
' % match.group('text') if match.group('text') else ''),
(re.compile(r'\\X(?P[0-4])(?P.*?)\\X[0-4]', re.DOTALL), lambda match: '%s' % (int(match.group('val')) + 1, match.group('text'), int(match.group('val')) + 1) if match.group('text') else ''),
(re.compile(r'\\C\d=".+?"'), lambda match: ''), # This should be made to create a TOC entry
- (re.compile(r'\\c(?P.*?)\\c', re.DOTALL), lambda match: '%s
' % match.group('text') if match.group('text') else ''),
- (re.compile(r'\\r(?P.*?)\\r', re.DOTALL), lambda match: '%s
' % match.group('text') if match.group('text') else ''),
+ (re.compile(r'\\c(?P.*?)\\c', re.DOTALL), lambda match: '%s
' % match.group('text') if match.group('text') else ''),
+ (re.compile(r'\\r(?P.*?)\\r', re.DOTALL), lambda match: '%s
' % match.group('text') if match.group('text') else ''),
(re.compile(r'\\i(?P.*?)\\i', re.DOTALL), lambda match: '%s' % match.group('text') if match.group('text') else ''),
(re.compile(r'\\u(?P.*?)\\u', re.DOTALL), lambda match: '%s' % match.group('text') if match.group('text') else ''),
(re.compile(r'\\o(?P.*?)\\o', re.DOTALL), lambda match: '%s' % match.group('text') if match.group('text') else ''),
(re.compile(r'\\v(?P.*?)\\v', re.DOTALL), lambda match: '' % match.group('text') if match.group('text') else ''),
- (re.compile(r'\\t(?P.*?)\\t', re.DOTALL), lambda match: '%s
' % match.group('text') if match.group('text') else ''),
+ (re.compile(r'\\t(?P.*?)\\t', re.DOTALL), lambda match: '%s
' % match.group('text') if match.group('text') else ''),
(re.compile(r'\\T="(?P\d+)%*"(?P.*?)$', re.MULTILINE), lambda match: r'%s
' % (match.group('val'), match.group('text')) if match.group('text') else ''),
(re.compile(r'\\w="(?P\d+)%"'), lambda match: '
' % match.group('val')),
(re.compile(r'\\n'), lambda match: ''),
- (re.compile(r'\\s(?P.*?)\\s', re.DOTALL), lambda match: '%s' % match.group('text') if match.group('text') else ''),
+ (re.compile(r'\\s(?P.*?)\\s', re.DOTALL), lambda match: '%s' % match.group('text') if match.group('text') else ''),
(re.compile(r'\\b(?P.*?)\\b', re.DOTALL), lambda match: '%s' % match.group('text') if match.group('text') else ''), # \b is deprecated; \B should be used instead.
- (re.compile(r'\\l(?P.*?)\\l', re.DOTALL), lambda match: '%s' % match.group('text') if match.group('text') else ''),
+ (re.compile(r'\\l(?P.*?)\\l', re.DOTALL), lambda match: '%s' % match.group('text') if match.group('text') else ''),
(re.compile(r'\\B(?P.*?)\\B', re.DOTALL), lambda match: '%s' % match.group('text') if match.group('text') else ''),
(re.compile(r'\\Sp(?P.*?)\\Sp', re.DOTALL), lambda match: '%s' % match.group('text') if match.group('text') else ''),
(re.compile(r'\\Sb(?P.*?)\\Sb', re.DOTALL), lambda match: '%s' % match.group('text') if match.group('text') else ''),
- (re.compile(r'\\k(?P.*?)\\k', re.DOTALL), lambda match: '%s' % match.group('text').upper() if match.group('text') else ''),
+ (re.compile(r'\\k(?P.*?)\\k', re.DOTALL), lambda match: '%s' % match.group('text').upper() if match.group('text') else ''),
(re.compile(r'\\a(?P\d{3})'), lambda match: '%s;' % match.group('num')),
(re.compile(r'\\U(?P[0-9a-f]{4})'), lambda match: '%s' % my_unichr(int(match.group('num'), 16))),
(re.compile(r'\\m="(?P.+?)"'), lambda match: '
' % image_name(match.group('name')).strip('\x00')),