PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grafiken nicht gefunden - TEXINPUTS?



Olaf Möller
20-07-2011, 00:04
Latex meldet den Fehler, dass er die Grafiken nicht finden kann.

Ich habe die Grafiken in einem separaten Ordner im Home-Verzeichnis
nach ihren Suffix in verschiedenen Ordnern sortiert.

Unter Kile konnte ich im Editor unter TEXINPUTS folgendes eintragen, damit es funktionierte:


~/texlive/2010/texmf-home//

Nun arbeite ich unter Ubuntu 11.4 mit Texmaker und frage mich, was ggf. unter
.profile eingetragen sein muss, damit LaTeX wieder meine Bilder findet.

So etwas wie (bin jetzt auf texlive 2011 umgestiegen)


export TEXINPUTS=/home/olaf/texlive/2011/texmf-home//

funktioniert nicht.

Bin für jede Hilfe dankbar! \graphicspath{} will ich definitiv vermeiden!

Grüße Olaf, der den Wald vor Bäumen nicht findet ...

Schweinebacke
20-07-2011, 09:16
Am einfachsten legst Du die Grafiken im richtigen Verzeichnis in TEXMFHOME ab. Vorausgesetzt
kpsewhich -var-value=TEXMFHOME gibt etwas nicht leeres aus, kannst Du Dein jetziges Grafikverzeichnis beispielsweise in TEXMFHOME mit
mkdir -p `kpsewhich -var-value=TEXMFHOME`/tex/generic ein passendes Verzeichnis anlegen und dorthin dann mit
cp -r FOO `kpsewhich -var-value=TEXMFHOME`/tex/generic/ Dein Grafikverzeichnis dort hin kopieren. Bitte FOO durch Dein Grafikverzeichnis ersetzen! Statt generic kann man auch latex verwenden. In dem Fall sind die Grafiken dann eben nur für LaTeX und nicht bei Verwendung von plainTeX oder ConTeXt oder einem anderen Format ebenfalls vorgesehen. Da die Grafiken selbst etwas eher allgemeines sind, würde ich generic empfehlen.

Näheres zum Aufbau der Verzeichnisstrukturen ist der tds-Doku zu entnehmen. Da ich diese in TeXLive 2010 nicht finden kann, hier der der Link auf die Anleitung auf CTAN: http://mirror.ctan.org/tds/tds.pdf. Näheres zu den unterschiedlichen TEXMF-Variablen ist
texdoc kpathsea zu entnehmen. Darin ist auch TEXINPUTS erklärt.

Ansonsten:
export TEXINPUTS="FOO:`kpsewhich -var-value=TEXINPUTS`".profile wird übrigens normalerweise nur von einer login shell ausgeführt. Bei einer normalen bash ist beispielsweise .bashrc zuständig. Aber das ist dann eine Frage für das Linux-Forum …

Olaf Möller
20-07-2011, 10:53
Danke für deine Anregungen!

1) die .profile scheint zu funktionieren, da latex ja ausgeführt wird.
Zudem habe ich mich hier an die Ausführungen von Rolf Niepraschk aus der
Dante-Ausgabe 2009/2 zur texlive-Installation gehalten; womit die texlive 2010
für mich auch in Gänze installierbar war -- bis auf das Setzen der Umgebungsvariablen, was für mich wie oben bereits beschrieben Kile übernommen hat.

2) Deine Ausführungen klingen plausibel, nur möchte ich auch den Suchmechanismus
von kpathsea verstehen. Daher sollte auch so etwas wie


TEXINPUTS=/home/olaf/texlive/2011/texmf-home// möglich sein.
(Verwende die Dokumentation von Uwe Ziegenhagen zur texlive 2011)

3) kpsewich zeigt auch auf dieses Verzeichnis, wie von Dir angedeutet.

4) Habe festegestellt, dass beim Erstellen von ls-R-Datenbanken durch mktexlsr, der Pfad
/home/olaf/texlive/2011/texmf-home/ nicht berücksichtigt wurde.

Für mich bleibt die Sache noch ungeklar ...

An versch. Stellen habe ich hier im Forum zu TEXINPUTS was lesen können, aber nie richtg konkret.

Oder soll ich doch Einträge in der texmf.cnf vornehmen?

Schweinebacke
20-07-2011, 16:02
Wenn Du TEXINPUTS nur auf ein einziges Verzeichnis setzt, wird auch nur darin (bzw. in dessen Unterverzeichnissen) gesucht. In dem Fall wird nicht einmal mehr, das aktuelle Verzeichnis nach den Dateien durchsucht. Deshalb solltest Du TEXINPUTS, beispielsweise wie von mir gezeigt, besser erweitern. Näheres steht in der von mir bereits erwähnten kpathsea-Anleitung, die Du lesen solltest, wenn Du kpathsea verstehen willst.

Die Original-Voreinstellung von TEXNPUTS für latex kannst Du übrigens den texm.cnf-Dateien entnehmen, die bei Dir eingebunden werden:
kpsewhich -a texmf.cnfDass bestimmte TEXMF-Bäume nicht per lsr-Datei erfasst werden, ist gewollt. Sozusagen, um es etwas narrensicherer zu machen, ist TEXMFHOME in texmf.cnf üblicherweise so definiert, dass der entsprechende Ast des Baums immer komplett durchsucht wird, statt in ihm nur per lsr zu suchen. Wie man das macht, ist ebenfalls in den von mir angegebenen Anleitungen dokumentiert.

Olaf Möller
20-07-2011, 20:23
... das ist schon richtig!

Nun steht in der Anleitung auch, dass die lsR-Datenbanken statt einer rekursiven Abfrage
schneller sind. Eine Einschränkung für den TEXMFHOME-Zweig ist mir nicht bekannt
und ich meine mich daran zu erinnern, dass ich damals unter Suse 10.0 die
lsR-Datenbanken auch unter dem obigen HOME-Zweig erstellen konnte.

Folgendes hat die Lösung gebracht: Neben den üblichen (drei) Eintragungen in der .profile habe ich


export TEXINPUTS=/home/olaf/texlive/2011/texmf-home//:$TEXINPUTS

eingetragen, womit nun meine dortligen Unterverzeichnisse ebenfalls abgesucht werden.

Ich danke nochmals, da die Anregungen mich auf die richtige Idee gebracht haben.

Herzliche Grüße

Olaf

Schweinebacke
21-07-2011, 08:39
Nun steht in der Anleitung auch, dass die lsR-Datenbanken statt einer rekursiven Abfrage
schneller sind.
Logisch. Du kannst auch eine lsr-Datei für TEXMFHOME erstellen, nur ist das normalerweise nicht voreingestellt und wird deshalb nur dann gemacht, wenn Du das Verzeichnis bei texhash explizit angibst. Siehe dazu die texmf.cnf-Dateien Deines Systems und die bereits mehrfach angegebenen Dokus, die die Einstellungen in dieser Datei erklären.



export TEXINPUTS=/home/olaf/texlive/2011/texmf-home//:$TEXINPUTS
Da fehlen die Anführungszeichen für den Fall, dass in TEXINPUTS bereits Leerzeichen enthalten sind. Siehe dazu noch einmal meinen ersten Kommentar.

BTW: Mit dieser Änderung wird das aktuelle Arbeitsverzeichnis nach /home/olaf/texlive/2011/texmf-home// durchsucht. Du solltest dieses also ggf. noch einmal vorne dran stellen.