LaTeX: openin_any weniger restriktiv
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 16 Jul 2019 12:26:29 +0000 (14:26 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 16 Jul 2019 12:31:29 +0000 (14:31 +0200)
Die Einstellung openin_any aus texmf.cnf (oder der Umgebungsvariable
gleichen Namens) kontrolliert, aus welchen Pfaden (PDF)LaTeX
Quelldateien liest: a = any liest aus beliebigen Verzeichnissen, r =
restricted nicht aus Dot-Verzeichnissen und p = paranoid nur aus
dem Ausgabeverzeichnis und seinen Unterverzeichnissen.

Bei kivitendo ist das Ausgabeverzeichnis …/users, die Vorlagen liegen
in …/templates/…, sind also keine Unterverzeichnisse. Aktuelle
LaTeX-Versionen (zumindest ab TeXLive 2019.5…) wenden das nun strikt
an, was dazu führt, dass z.B. das Einbinden von Bildern nicht möglich
ist, wenn die Bilder in …/templates/… anstelle von …/users liegen —
sogar obwohl …/templates/… in $TEXINPUTS enthalten ist.

An dieser Stelle ist zu viel Sicherheit falsch bzw. für unser
aktuelles Layout falsch.

Eine andere mögliche Variante wäre, die LaTeX-Abhandlung direkt in
…/templates anstelle von …/users uz machen. Das erfordert aber
potenziell Eingriff durch den SysAdmin, um Verzeichnisrechte anders zu
setzen. Daher wird das erst mal nicht gemacht.

SL/Template/LaTeX.pm

index 130a424..6a5d8e4 100644 (file)
@@ -495,7 +495,7 @@ sub convert_to_postscript {
   my $old_home = $ENV{HOME};
   my $old_openin_any = $ENV{openin_any};
   $ENV{HOME}   = $userspath =~ m|^/| ? $userspath : getcwd();
-  $ENV{openin_any} = "p";
+  $ENV{openin_any} = "r";
 
   for (my $run = 1; $run <= 2; $run++) {
     if (system("${latex} --interaction=nonstopmode $form->{tmpfile} " .
@@ -549,7 +549,7 @@ sub convert_to_pdf {
   my $old_home = $ENV{HOME};
   my $old_openin_any = $ENV{openin_any};
   $ENV{HOME}   = $userspath =~ m|^/| ? $userspath : getcwd();
-  $ENV{openin_any} = "p";
+  $ENV{openin_any} = "r";
 
   for (my $run = 1; $run <= 2; $run++) {
     if (system("${latex} --interaction=nonstopmode $form->{tmpfile} " .