Dateipfade Wiki .:. goLaTeX - Mein LaTeX-Forum


goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum

goLaTeX.de - Wiki
 


Dateipfade

(Unterschied zwischen Versionen)
Version vom 17:00, 27. Aug. 2010 (bearbeiten)
KOMA (Diskussion | Beiträge)
(Suche nach Dateien)
← Zum vorherigen Versionsunterschied
Version vom 17:01, 27. Aug. 2010 (bearbeiten) (rückgängig)
KOMA (Diskussion | Beiträge)

Zum nächsten Versionsunterschied →
Zeile 92: Zeile 92:
Sowohl TeX Live als auch MiKTeX durchsuchen bestimmte Verzeichnisse bzw. Verzeichnisbäume nicht tatsächlich. Bei einigen Tausend Dateien in den TEXMF-Bäumen wäre dies sehr ineffektiv. Stattdessen gibt es Datenbankdateien, die zu einem Dateinamen sehr schnell dessen Ort im jeweiligen Verzeichnisbaum ergeben. Aus diesem Grund ist es wichtig, bei Installation von Dateien diese Datenbanken aktuell zu halten. Unter TeX Live kann die Datenbank eines oder aller Verzeichnisbäume mit Hilfe von [[texhash]] aktualisiert werden. Unter MiKTeX geschieht dies einfach mit einem Knopf im MiKTeX-Options-Dialog. Erfolgt die Installation neuer Pakete über den jeweiligen Paketmanager, so führt dieser eine Aktualisierung bei Bedarf selbst durch. Sowohl TeX Live als auch MiKTeX durchsuchen bestimmte Verzeichnisse bzw. Verzeichnisbäume nicht tatsächlich. Bei einigen Tausend Dateien in den TEXMF-Bäumen wäre dies sehr ineffektiv. Stattdessen gibt es Datenbankdateien, die zu einem Dateinamen sehr schnell dessen Ort im jeweiligen Verzeichnisbaum ergeben. Aus diesem Grund ist es wichtig, bei Installation von Dateien diese Datenbanken aktuell zu halten. Unter TeX Live kann die Datenbank eines oder aller Verzeichnisbäume mit Hilfe von [[texhash]] aktualisiert werden. Unter MiKTeX geschieht dies einfach mit einem Knopf im MiKTeX-Options-Dialog. Erfolgt die Installation neuer Pakete über den jeweiligen Paketmanager, so führt dieser eine Aktualisierung bei Bedarf selbst durch.
 +
 +==Schreiben von Dateien==
==Abweichung von obigen Regeln== ==Abweichung von obigen Regeln==

Version vom 17:01, 27. Aug. 2010

In diesem Beitrag wird erklärt, wie (La)TeX Dateinamen interpretiert und die Suche nach Dateien verläuft.

Inhaltsverzeichnis

Begriffserklärung

  • Unter dem Basisnamen einer Datei wird der reine Name einer Datei innerhalb eines Verzeichnisses ohne irgendwelche Pfadangaben oder Dateiendungen verstanden. Ein Beispiel für einen solchen Basisnamen wäre foo.
  • Unter der Dateiendung wird der Teil des Namens einer Datei nach dem ersten oder letzten Punkt verstanden, der in vielen Fällen die Art der Datei repräsentiert. Ein Beispiel für eine Dateiendung wäre .tex.
  • Unter dem reinen Dateinamen wird eine Kombination aus Basisnamen und Dateiendung verstanden. Ein Beispiel für einen reinen Dateinamen wäre foo.tex.
  • Unter einem relativen Pfad wird die Position eines Verzeichnisses relativ zu einem anderen Verzeichnis angegeben. Pfadangaben sind bei TeX von der Implementierung (siehe unten) abhängig.
  • Unter einem absoluten Pfad wird die Position eines Verzeichnisses relativ zur Wurzel des gesamten Dateisystems verstanden. Pfadangaben sind bei TeX von der Implementierung (siehe unten) abhängig.
  • Unter einem Pfad wird ein relativer Pfad oder ein absoluter Pfad verstanden. Pfadangaben sind bei TeX von der Implementierung (siehe unten) abhängig.
  • Mit dem Begriff Verzeichnispfad wird verdeutlicht, dass das Ziel eines Pfads ein Verzeichnis und nicht etwa eine Datei ist. Genau genommen sind Verzeichnispfad und Pfad synonym.
  • Unter dem Dateipfad wird ein um einen Pfad erweiterter reiner Dateinamen verstanden. Entsprechend gibt es auch einen relativen Dateipfad und einen absoluten Dateipfad.
  • Unter einem Dateinamen kann ein reiner Dateinamen oder auch ein Dateipfad verstanden werden.

TeX-Festlegungen für Dateinamen

TeX selbst macht bezüglich Dateinamen nur eine Festlegung: Ein Dateinamen endet beim ersten Space-Token, also in der Regel beim ersten Leerzeichen oder Zeilenende. Zuvor werden Makros in Dateinamen so weit wie möglich expandiert. Das kann beispielsweise dazu führen, dass Umlaute zerbrechen und stattdessen durch ihre interne Repräsentation ersetzt werden.

Daraus ergeben sich, die von der TeX-Implementierung unabhängigen Regeln:

Regel 1:

Innerhalb von Dateipfaden sind keine Leerzeichen möglich.

Regel 2:

Innerhalb von Dateipfaden kann \ nicht als Verzeichnistrenner verwendet werden.

Regel 3:

Umlaute und andere Sonderzeichen, die in TeX u. U. durch aktive Zeichen realisiert sind, sollten in Dateinamen vermieden werden.

Pfadangaben abhängig von der TeX-Implementierung

Pfade sind innerhalb von TeX selbst nicht spezifiziert und damit von der jeweiligen TeX-Implementierung abhängig. Für alle modernen TeX-Implementierung gilt derzeit:

  • Verzeichnistrennzeichen ist der Schrägstrich von links unten nach rechts oben, Slash: /
  • Das aktuelle Verzeichnis wird von einem einzelnen Punkt repräsentiert: .
  • Das nächst höhere Verzeichnis, auch Elternverzeichnis genannt, wird durch zwei Punkte repräsentiert: .
  • Ein relativer Pfad ist damit ein Pfad, in dem min. einmal "/./" oder "/../" enthalten ist oder der mit "/." oder "/.." endet oder nicht mit "/" beginnt.
  • Ein relativer Pfad, der direkt mit einem Verzeichnisname beginnt, ist relativ zum aktuellen Arbeitsverzeichnis.
  • Aktuelles Arbeitsverzeichnis ist während des Einlesens der Hauptdatei das Verzeichnis, aus dem (La)TeX gestartet wurde. In der Regel ist dies das Verzeichnis der Hauptdatei selbst. Während des Einlesens einer Unterdatei mit \input oder \include ist das aktuelle Arbeitsverzeichnis in der Regel das Verzeichnis der Datei, die gerade eingelesen wird.

Für Unix, Linux, Mac OS X, BSD ergibt sich außerdem:

  • Ein absoluter Pfad beginnt immer mit einem "/" und enthält kein "/./" oder "/../" und endet nicht mit "/." oder "/..".

Für Windows ergibt sich außerdem:

  • Ein absoluter Pfad auf einem Laufwerk mit Laufwerksbuchstaben beginnt mit "X:/" und enthält kein "/./" oder "/../" und endet nicht mit "/." oder "/..". X steht dabei für den Laufwerksbuchstaben des Laufwerks.
  • Ein absoluter Pfad auf einem Netzlaufwerk (oder einem anderen Laufwerk mit Laufwerksnamen statt Laufwerksbuchstabe) beginnt mit "//LAUFWERKSNAME/" und enthält kein "/./" oder "/../" und endet nicht mit "/." oder "/..". LAUFWERKSNAME steht dabei für den Name des Laufwerks, der ggf. auch den Rechnername des Zielrechnern enthält.

Da es von dem verwendeten Dateisystem abhängig, ob die Groß-/Kleinschreibung eine Rolle spielt, gilt außerdem folgende Regel:

Bei früheren TeX-Implementierungen galten u. a. für Verzeichnistrennzeichen auch ganz andere Regeln beispielsweise bei OzTeX für ältere Mac-Systeme. Für Systeme, bei denen Dateinamen auf 8 Zeichen vor und 3 Zeichen nach dem Punkt beschränkt waren, sogenannte 8.3-Dateinamen, gab es teilweise spezielle Behandlungen von langen Dateinamen. Dabei wurden für den Dateinamen die ersten 5 und die letzten 3 Zeichen vor dem ersten Punkt und für die Dateiendung die ersten drei Zeichen nach dem ersten Punkt verwendet. Man sprach von der 5+3.3-Regel bzw. von 5+3.3-Dateinamen oder verkürzt auch von 5+3-Dateinamen. Statt der Datei "Hauptdatei.tex" wäre also tatsächlich die Datei "Haupttei.tex" gelesen wurden und statt "Hauptdatei.tex.aux" wäre tatsächlich die Datei "Haupttei.tex" geschrieben worden. Daraus ergibt sich allerdings eine mittlere Katastrophe für die Datei Haupttei.tex, wenn \include{Arbeitsdatei.tex} statt \include{Arbeitsdatei} geschrieben wurde. Teilweise wurde die Regel deshalb auch abgewandelt und es wurden für die Dateiendung die ersten drei Buchstaben nach dem letzten Punkt verwendet. Diese Regel wurde beispielsweise von CS-TeX oder MultiTeX für Atari-TOS verwendet.

Regel 4:

Dateinamen sollten immer unter Beachtung der Groß-/Kleinschreibung angegeben werden. Lautet der Name einer Datei also foo.tex, so sollte sie immer mit \input{foo.tex} und nicht mit \input{FOO.TEX} geladen werden!

Beispiele für Pfadangaben

  • ./Kapitel1/Hauptdatei.tex - Die Datei "Hauptdatei.tex" im Unterverzeichnis "Kapitel1" des aktuellen Arbeitsverzeichnisses.
  • ../Kapitel1/Hauptdatei.tex - Die Datei "Hauptdatei.tex" im Unterverzeichnis "Kapitel1" des Elternverzeichnisses des aktuellen Arbeitsverzeichnisses.
  • Kapitel1/Hauptdatei.tex - Die Datei "Hauptdatei.tex" im Unterverzeichnis "Kapitel1" des aktuellen Arbeitsverzeichnisses.
  • Kapitel1/../Hauptdatei.tex - Die Datei "Hauptdatei.tex" im aktuellen Arbeitsverzeichnis,
  • C:/texmf/tex/latex/graphics/graphics.cfg - Die Datei "graphics.cfg" im absoluten Pfad "C:\texmf\tex\latex\graphics" unter Windows.

Suche nach Dateien

TeX sucht laut Spezifikation beim Lesen oder beim Öffnen einer Datei zur Eingabe zunächst immer nach der angegebenen Datei. Wird diese nicht gefunden, so wird an den angegebenen Dateinamen die Endung ".tex" angehängt und erneut eine Suche gestartet. Dies ist auch bei Dateien der Fall, die bereits über eine Endung verfügen.

Dateien, die zum Lesen oder als Eingabe geöffnet werden, werden von TeX grundsätzlich über die Environmentvariable - in deutschen Windows-Versionen heißen diese Umgebungsvariablen - TEXINPUTS gesucht. Der Aufbau dieser Variable ist jedoch von der Implementierung abhängig.

TeX Live bedient sich zur Suche nach einer Datei der Bibliothek kpathsea, die auch von dem Programm kpsewhich verwendet wird. Dabei kann TEXINPUTS auch in der Datei texmf.cnf statt als Environmentvariable des Systems definiert sein. Außerdem kann die Variable in texmf.cnf für jedes TeX-Programm unterschiedlich definiert werden. Die Variable setzt sich dabei aus Pfadangaben zusammen, die durch Doppelpunkt getrennt werden. Enthält ein Pfad zwei Slashs, so werden auch alle Unterverzeichnisse des vorangehenden Verzeichnisses in die Suche mit einbezogen. Das bedeutet insbesondere, dass wenn in TEXINPUTS der Pfad ".//" vorkommt, alle Unterverzeichnisse des aktuellen Verzeichnisses in die Dateisuche mit eingebunden sind. Das ist ggf. sehr nützlich, um Kapitel-Dateien oder Bilder in beliebigen Unterverzeichnissen ablegen zu können. Darüber hinaus kennt kpathsea programmabhängige Voreinstellungen von TEXINPUTS. Für latex oder pdflatex ist diese beispielsweise "./:{$TEXMF}/tex/{latex,generic}/". Es wird also zuerst das aktuelle Verzeichnis und dann die Verzeichnisses "tex/latex" und "tex/generic" innerhalb aller TEXMF-Bäume durchsucht. Beginnt oder endet eine explizit gesetzte TEXINPUTS-Variable mit einem Doppelpunkt oder kommen darin zwei Doppelpunkte hintereinander vor, so wird an dieser Stelle die jeweilige Voreinstellung eingesetzt. Semikolon werden von kpathsea übrigens automatisch in Doppelpunkte übersetzt.

MiKTeX ist bei der Dateisuche weitgehend kompatibel zu TeX Live. Als Pfad-Trennzeichen wird dort jedoch das Semikolon erwartet. Infolge der automatischen Ersetzung des Semikolon bei TeX Live, ist die für die Austauschbarkeit kein Problem.

Sowohl TeX Live als auch MiKTeX durchsuchen bestimmte Verzeichnisse bzw. Verzeichnisbäume nicht tatsächlich. Bei einigen Tausend Dateien in den TEXMF-Bäumen wäre dies sehr ineffektiv. Stattdessen gibt es Datenbankdateien, die zu einem Dateinamen sehr schnell dessen Ort im jeweiligen Verzeichnisbaum ergeben. Aus diesem Grund ist es wichtig, bei Installation von Dateien diese Datenbanken aktuell zu halten. Unter TeX Live kann die Datenbank eines oder aller Verzeichnisbäume mit Hilfe von texhash aktualisiert werden. Unter MiKTeX geschieht dies einfach mit einem Knopf im MiKTeX-Options-Dialog. Erfolgt die Installation neuer Pakete über den jeweiligen Paketmanager, so führt dieser eine Aktualisierung bei Bedarf selbst durch.

Schreiben von Dateien

Abweichung von obigen Regeln

Bei PDFTeX gibt es die Möglichkeit, bei einigen Befehlen Regel 1 aufzuheben. Das Paket grffile setzt dies um. Aus Gründen der Kompatibilität mit anderen TeX-Versionen wird jedoch empfohlen, dennoch auf Leerzeichen in Dateinamen zu verzichten.

Einige TeX-Implementierungen heben Regel 1 für den Fall auf, dass der Dateinamen in Anführungszeichen " gesetzt ist. Aus Gründen der Kompatibilität zu anderen TeX-Implementierungen sollte man dieses Möglichkeit jedoch besser nicht nutzen.




Datenschutzerklärung | Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2015 goLaTeX.de