Wenn TeX \input
in einer Datei liest, dann wird an der Stelle des Befehls einfach der Inhalt der angegebenen Datei eingefügt. Viel mehr passiert nicht (TeX sorgt schon dafür, dass die Zeilennummern in den Fehlermeldungen sich auf die wirkliche Situation beziehen und nicht so sind, als würde das Dokument wirklich mit ersetzten \input
s gelesen).
Praktisch heißt das, dass (to most intents and purposes) in Deiner main.tex
steht. Wenn TeX also zu dieser Zeile kommt, geht es los und sucht bild
, diese Datei ist im aktuell von TeX durchsuchten Ordner (dem durchsuchten Pfad, der normalerweise aus dem aktuellen Ordner und noch ein paar anderen Installations-Orten besteht) aber nicht zu finden.
Das Problem ist, dass TeX die Meta-Information verlorengegangen ist, dass \includegraphics{bild}
aus der Datei content/Chap1/chap1.tex
kommt, in deren Kontext bild
dann eigentlich content/Chap1/bild
bedeutet.
Beheben kann man das mit dem Paket import
, das stellt den Befehl \subimport{<relativer Pfad>}{<Dateiname>}
bereit, mit dem man die Datei <relativer Pfad>/<Dateiname>
so einliest, dass der Kontext <relativer Pfad>
erhalten bleibt. Die lokalen Pfade in dieser eingelesenen Datei werden dann wie erwartet verstanden.
Öffne in Overleaf\documentclass{article}
\usepackage{graphicx}
\usepackage{import}
\begin{document}
\subimport{content/Chap1/}{chap1}
\end{document}
funktioniert dann so wie gewünscht. Ich habe hier die ungesternte Version \subimport
verwendet, meist sollte das schon genug sein. Aber in ganz verzwickten Fällen, in denen viele Dateien gleich heißen, muss es vielleicht \subimport*
sein, da dieser Befehl Dateien im angegebenen Pfad Vorrang vor gleichnamigen Dateien in TEXINPUTS
gibt.
Eine andere Möglichkeit ist die Nutzung von \graphicspath
, siehe auch How to use graphicspath? bei TeX.SX. Damit kann man einfach zusätzliche Suchpfade für Graphiken anbieten. Mit
Öffne in Overleaf\documentclass{article}
\usepackage{graphicx}
\graphicspath{{content/Chap1/}}
\begin{document}
\input{content/Chap1/chap1}
\end{document}
würde bei \includegraphics{bild}
nicht nur bild
gesucht und nicht gefunden, sondern auch content/Chap1/bild
, was dann einen Treffer gibt. Der Nachteil von \graphicspath
ist, dass es dort nicht wie bei \import
eine gesterne Variante gibt, die den Suchpfad nur lokal für ein \input
anpasst, das kann dann dazu führen, dass bei gleichen Dateinamen immer dieselbe Datei gefunden wird, obwohl unterschiedliche gemeint sind (stellt Dir vor in content/Chap2
liegt auch eine bild.jpeg
und Du willst Die in \input{content/Chap2/chap2}
einbinden). Außerdem habe ich eine persönliche Abneigung gegen \graphicspath
, da ich diesen Befehl in Foren häufig in schlecht gemachten Vorlagen sehe, aber das soll Dich nicht von der Nutzung abhalten.
Eine ähnliche aber noch radikalere Möglichkeit besteht darin, TEXINPUTS
vor dem Aufruf von TeX zu setzen. Zumindest in MikTeX kann man stattdessen auch die Kommandozeilenoption -include-directory=<DIR>
verwenden, um den Suchpfad anzupassen. Dann sucht TeX nach allen Dateien auch in den angegebenen Unterordnern.
beantwortet
18 Sep '18, 11:15
moewe
3.7k●3●6
Akzeptiert-Rate:
42%
Du kannst Dir
\input
so vorstellen, dass TeX einfach den Inhalt der angegebenen Datei an die Stelle kopiert. Das heißt, dass Deinmain.tex
einfach an der Stelle von\input{content/Chap1/chap1.tex}
den Inhalt der Dateichap1.tex
stehen hat. Mehr nicht. TeX weiß dann nicht mehr, dass dieser Inhalt aus einer anderen Datei kam. Wenn Du jetztmain.tex
kompilierst, sucht TeX nach dem Bildbild
(denn das steht ja so im Code), das wird aber nicht gefunden, da es im Unterordner wohnt. (Ich hätte schwören können, ich hätte genau diese Frage vor einiger Zeit schon gesehen, ich such mal.)Helfen könnte wohl https://ctan.org/pkg/import helfen. Oder
\graphicspath
: https://tex.stackexchange.com/q/139401/35864Hi @moewe. Vielen Dank für deinen Hinweis mit
\graphicspath
. Dieser hat einwandfrei das Problem gelöst. Möchtest du eine Antwort verfassen oder soll ich mit Bezug auf deinen Kommentar und die Lösung bei tex.stackexchange eine Antwort verfassen? Dann könnte man die Kommentare löschen.Ist das nicht dasselbe wie https://texwelt.de/wissen/fragen/19882/einbindung-von-tex-files-und-von-bildern-ohne-angabe-des-ganzen-pfads?
@chuck Ja, die dortige Lösung hat ja auch moewe bereits erwähnt. Ich finde es aber gut, wenn eine minimale, auf graphicspath basierende Lösung hier aufgenommen wird.