Post by Markus GailHallo!
Ich binde mit \input eine Datei ein, die u. a. Pfade zu Bildern und weiteren
\input-Dateien enthalten soll.
Das Input wird somit verschachtelt. Es ist mir bisher nicht gelungen,
auszutüfteln, welche Pfadangaben innerhalb der eingebundenen Input-Datei
gilt.
Welcher Pfad wird in der eingebundenen Datei angesprochen?
Gruß
M.
Im TeXbook, "Chapter 20: Definitions (also called Macros)", findet sich:
| \input<file name>. The expansion is null; but TeX prepares to read
| from the specified file before looking at any more tokens from its
| current source.
Im TeXbook, "Chapter 24: Summary of Vertical Mode", findet sich:
| The syntax for <file name> is not standard in TeX, because different
| operating systems have different conventions. You should ask your
| local system wizards for details on just how they have decided to
| implement file names. However, the following principles should hold
| universally: A <file name> should consist of <optional spaces>
| followed by explicit character tokens (after expansion). A sequence of
| six or fewer ordinary letters and/or digits followed by a space should
| be a file name that works in essentially the same way on all
| installations of TeX. Uppercase letters are not considered equivalent
| to their lowercase counterparts in file names; for example, if you
| refer to fonts cmr10 and CMR10, TeX will not notice any similarity
| between them, although it might input the same font metric file for
| both fonts.
Die TeX-Distributionen MiKTeX und TeX Live sind Web2C-Implementierungen
(<https://tug.org/texinfohtml/web2c.html>), während bei
Web2C-Implementierungen wiederum der Umgang mit Dateipfaden und -namen
bzw der Umgang mit <file name> in der Kpathsea library
(<https://tug.org/texinfohtml/kpathsea.html>) implementiert sind.
In der Kpathsea library ist auch geregelt, wie TeX vorgeht, wenn ein
Dateiname ohne Extension angegeben wird.
Grundsätzlich ist zu sagen, dass man relative und absolute Dateipfade
unterscheidet. Absolute Dateipfade sind eindeutig. Bei relativen
Dateipfaden ist der Bezugspunkt das sogenannte "aktive Verzeichnis" bzw.
"active directory". Primitives wie \input wechseln meines Wissens das
aktive Verzeichnis nicht. Bezugspunkt für relative Pfade ist also meines
Wissens, egal, wie tief man \input-Befehle verschachtelt, immer
dasjenige Verzeichnis, das zu dem Zeitpunkt aktiv war, als der
TeX-Job/LaTeX-Lauf gestartet wurde.
Wenn man nur einen Dateinamen angibt, ohne relative oder absoluten Pfad,
muss man die Suchreihenfolge beachten, in der Verzeichnisse des
Dateisystems daraufhin abgeklappert werden, ob eine Datei mit dem
Dateinamen dort gefunden werden kann. Meines Wissens wird in diesem Fall
zunächst im aktiven Verzeichnis nach der Datei gesucht. Kann sie dort
nicht gefunden werden, wird die sogenannte "filename database"
abgeklappert, bei der es sich um eine Art Cache handelt, in dem die zu
Dateinamen gehörenden Dateipfade verzeichnet sind. Dieser Cache wird,
wenn man die filename database neu erzeugt, gebildet anhand der als
TEXMF root directories bezeichneten Verzeichnispfade, in denen sich
Unterverzeichnisse und Dateien befinden, die man als zur installierten
TeX-Distribution gehörig betrachtet, wobei diese Verzeichnisstrukturen
den Konventionen für sogenannte TeX Directory Structures
(<https://tug.ctan.org/tds/tds.html>) genügen.
Mit freundlichem Gruß
Ulrich