From: Moritz Bunkus Date: Mon, 27 Dec 2010 12:17:06 +0000 (+0100) Subject: Benötigte LaTeX-Pakete nach letztem \usepackage oder vor \begin{document} einbinden X-Git-Tag: release-2.6.2beta1~64^2~41 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=644504117346e1ae8f2bafa9493cccfdba4f656b;p=kivitendo-erp.git Benötigte LaTeX-Pakete nach letztem \usepackage oder vor \begin{document} einbinden Erst, wenn weder das Eine noch das Andere gefunden wurde, werden die benötigten Zeilen am Ende angefügt. Fix für Bug 1414. --- diff --git a/SL/Template/LaTeX.pm b/SL/Template/LaTeX.pm index 6b18ad038..d1c208018 100644 --- a/SL/Template/LaTeX.pm +++ b/SL/Template/LaTeX.pm @@ -292,11 +292,12 @@ sub _force_mandatory_packages { my $self = shift; my $lines = shift; - my (%used_packages, $document_start_line); + my (%used_packages, $document_start_line, $last_usepackage_line); foreach my $i (0 .. scalar @{ $lines } - 1) { if ($lines->[$i] =~ m/\\usepackage[^\{]*{(.*?)}/) { $used_packages{$1} = 1; + $last_usepackage_line = $i; } elsif ($lines->[$i] =~ m/\\begin{document}/) { $document_start_line = $i; @@ -305,11 +306,14 @@ sub _force_mandatory_packages { } } - $document_start_line = scalar @{ $lines } - 1 if (!defined $document_start_line); + my $insertion_point = defined($document_start_line) ? $document_start_line + : defined($last_usepackage_line) ? $last_usepackage_line + : scalar @{ $lines } - 1; - if (!$used_packages{textcomp}) { - splice @{ $lines }, $document_start_line, 0, "\\usepackage{textcomp}\n"; - $document_start_line++; + foreach my $package (qw(textcomp)) { + next if $used_packages{$package}; + splice @{ $lines }, $insertion_point, 0, "\\usepackage{${package}}\n"; + $insertion_point++; } }