Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 64450411

Von Moritz Bunkus vor fast 14 Jahren hinzugefügt

  • ID 644504117346e1ae8f2bafa9493cccfdba4f656b
  • Vorgänger ce2cccd9
  • Nachfolger 8eb972fd

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.

Unterschiede anzeigen:

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