From ea32f94d4ea8a8fd505fbd3eead7ae44dbc22f06 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Tue, 11 Jan 2022 15:09:45 +0100 Subject: [PATCH] KiviLatex-Plugin: HTML-zu-LaTeX-Wandlung aus SL::Template::LaTeX verwenden MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Die Umwandlung von HTML zu LaTeX ist komplex. Es gibt viele Randfälle, in denen ein falsch platziertes \newline übrig bleibt, über das LaTeX dann stolpert. Bisher gab es zwei Implementationen dieses Codes: 1. Im Modul für alte Vorlagen, SL::Template::LaTeX::_format_html 2. Im Modul für neue Vorlagen (inklusive Pflichtenheft), SL::Template::Plugin::KiviLatex::filter_html Erstere war deutlich besser getestet und hat deutlich mehr Randfälle abgedeckt. Mit dieser Änderung gibt es nur noch eine Implementation in SL::Template::LaTeX. Diese wird auch von SL::Template::Plugin::KiviLatex direkt aufgerufen. --- SL/Template/Plugin/KiviLatex.pm | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/SL/Template/Plugin/KiviLatex.pm b/SL/Template/Plugin/KiviLatex.pm index ca40971ce..920dee49b 100644 --- a/SL/Template/Plugin/KiviLatex.pm +++ b/SL/Template/Plugin/KiviLatex.pm @@ -3,6 +3,8 @@ package SL::Template::Plugin::KiviLatex; use strict; use parent qw( Template::Plugin::Filter ); +use SL::Template::LaTeX; + my $cached_instance; sub new { @@ -55,22 +57,7 @@ my %html_replace = ( sub filter_html { my ($self, $text, $args) = @_; - $text =~ s{ \r+ }{}gx; - $text =~ s{ \n+ }{ }gx; - $text =~ s{ (?:\ |\s)+ }{ }gx; - $text =~ s{ |
    \s*
}{}gx; # Remove lists without items. Can happen with copy & paste from e.g. LibreOffice. - - my @parts = map { - if (substr($_, 0, 1) eq '<') { - s{ +}{}g; - $html_replace{$_} || ''; - - } else { - $::locale->quote_special_chars('Template/LaTeX', HTML::Entities::decode_entities($_)); - } - } split(m{(<.*?>)}x, $text); - - return join('', @parts); + return SL::Template::LaTeX->new->_format_html($text); } sub required_packages_for_html { -- 2.20.1