LaTeX-Escaping: gewisse Formen von »no line to end here« vermeiden
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 26 Jun 2018 11:57:04 +0000 (13:57 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 26 Jun 2018 12:00:16 +0000 (14:00 +0200)
Passiert, wenn im HTML so ein Konstrukt existert:

…Text</p><p>&nbsp;<br>

Das wird zu einem Paragraphen, einem Leerzeichen und einem forcierten
Zeilenumbruch:

----schipp----
Text

 \newline
----schipp----

Durch die Leerzeile fängt für LaTeX dann dort ein neuer Absatz an. Der
ist soweit leer. Das Leerzeichen am Anfang der Zeile ist kein
Inhalt. Also gibt es aus Sicht von LaTeX dann keinen Zeileninhalt,
sobald es das `\newline` trifft.

SL/Template/LaTeX.pm

index ba310a9..130a424 100644 (file)
@@ -98,6 +98,8 @@ sub _format_html {
   $content =~ s{ ^ ( \\newline \  )+ }{ _lb_to_space($1) }gxe;                              # convert line breaks at the start of the text to vertical space
   $content =~ s{ ( \n\n+ ) ( \\newline \  )+ }{ $1 . _lb_to_space($2) }gxe;                 # convert line breaks at the start of a paragraph to vertical space
   $content =~ s{ ( \\end\{ [^\}]+ \} \h* ) ( \\newline \  )+ }{ $1 . _lb_to_space($2) }gxe; # convert line breaks after LaTeX environments like lists to vertical space
+  $content =~ s{ ^ \h+ \\newline }{\\newline}gmx;
+  $content =~ s{ \n\n \h* \\newline \h* }{\n\n}gmx;
 
   return $content;
 }