Revision 64450411
Von Moritz Bunkus vor fast 14 Jahren hinzugefügt
SL/Template/LaTeX.pm | ||
---|---|---|
292 | 292 |
my $self = shift; |
293 | 293 |
my $lines = shift; |
294 | 294 |
|
295 |
my (%used_packages, $document_start_line); |
|
295 |
my (%used_packages, $document_start_line, $last_usepackage_line);
|
|
296 | 296 |
|
297 | 297 |
foreach my $i (0 .. scalar @{ $lines } - 1) { |
298 | 298 |
if ($lines->[$i] =~ m/\\usepackage[^\{]*{(.*?)}/) { |
299 | 299 |
$used_packages{$1} = 1; |
300 |
$last_usepackage_line = $i; |
|
300 | 301 |
|
301 | 302 |
} elsif ($lines->[$i] =~ m/\\begin{document}/) { |
302 | 303 |
$document_start_line = $i; |
... | ... | |
305 | 306 |
} |
306 | 307 |
} |
307 | 308 |
|
308 |
$document_start_line = scalar @{ $lines } - 1 if (!defined $document_start_line); |
|
309 |
my $insertion_point = defined($document_start_line) ? $document_start_line |
|
310 |
: defined($last_usepackage_line) ? $last_usepackage_line |
|
311 |
: scalar @{ $lines } - 1; |
|
309 | 312 |
|
310 |
if (!$used_packages{textcomp}) { |
|
311 |
splice @{ $lines }, $document_start_line, 0, "\\usepackage{textcomp}\n"; |
|
312 |
$document_start_line++; |
|
313 |
foreach my $package (qw(textcomp)) { |
|
314 |
next if $used_packages{$package}; |
|
315 |
splice @{ $lines }, $insertion_point, 0, "\\usepackage{${package}}\n"; |
|
316 |
$insertion_point++; |
|
313 | 317 |
} |
314 | 318 |
} |
315 | 319 |
|
Auch abrufbar als: Unified diff
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.