• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

„\input“ in LaTeX

KayHH

Gast
Moin apfeltalker,

ich bastle gerade an einem umfangreicheren LaTeX-Projekt. Die Verzeichnisstruktur ist etwa wie folgt aufgebaut.

Code:
/Projekte/Projekte.tex %% Läd Makros.tex, Projekt1.tex, Projekt2.tex, ...
          Makros.tex
          ...
          Projekt1/
                   Projekt1.tex
                   Makros1.tex
                   ...
          Projekt2/
          ...

Das Erstellen der einzelnen Unterprojekte, ausgehend von „Projekt1.tex“, „Projekt2.tex“, usw. funktioniert prima. Das Laden der Unterprojektdateien aus „Projekte.tex“ heraus funktioniert ebenfalls einwandfrei. Befinden sich in „Projekt1.tex“, „Projekt2.tex“, usw. jedoch weitere „\input“-Kommandos, bezieht LaTeX die immer auf das Verzeichnis „Projekte“ und nicht auf das entsprechende Unterprojektverzeichnis. Dies führt natürlich dazu, dass die entsprechende Datei nicht gefunden wird.

Hat jemand eine Idee, wie ich das ändern kann?


Gruss KayHH
 

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
Moin,

sowohl \input als auch \include beziehen sich normalerweise immer auf das Verzeichnis des Hauptdokuments (d.h. auf "."). Du könntest höchstens die Unterprojektordner an die Environmentvariable TEXINPUTS anhängen. Oder Dir mal die Pakete "import" oder "chapterfolder" anschauen... ;)
 
  • Like
Reaktionen: 1 Person

KayHH

Gast
Moin quarx,

danke Dir für die Tipps. Ist leider nicht ganz das was für mich in frage kommt.

Ich habe mir da jetzt was selbst gebastelt. Ich habe mir im Prinzip einen eigenen \input-Befehl (\importfile) gebaut, der den vollständigen Pfad zur Laufzeit zusammen baut.

Code:
% File: Makros.tex
\newcommand\pathtofiles{}
\newcommand\importfile[1]{\input{\pathtofiles#1}}

Dieser Code steht in der allgemeinen Makro-Datei drin, die von allen Projekten und Unterprojekten aufgerufen wird.

In jedem Unterprojekt habe ich eine Datei, welche einfach nur \pathtofiles abändert.

Code:
% File: Pfad1.tex
\renewcommand\pathtofiles{./Projekt1/}

Bevor ich nun die Hauptdatei des Unterprojektes lade, lade ich eben die Datei welche den Pfad umsetzt. In der Hauptdatei sieht das dann etwa so aus.

Code:
% File: Projekte.tex
\documentclass[11pt]{book}

	\input{Makros} % Allgemeine Makros
	\input{./Projekt1/Makros1} % Projektmakros
	\input{./Projekt2/Makros2}

\begin{document}

	\input{./Projekt1/Pfad1}  % Pfad umbiegen
	\input{./Projekt1/Lader1} % Kapitel laden
	\input{./Projekt2/Pfad2}
	\input{./Projekt2/Lader2}

\end{document}

Schaut so aus, als ob das ohne Nebenwirkungen läuft.


Gruss KayHH
 
Zuletzt bearbeitet von einem Moderator:

quarx

Brauner Matapfel
Registriert
17.04.05
Beiträge
8.444
Joa, schaut ganz vernünftig aus so weit. Immerhin bist Du so nicht von Fremdpaketen abhängig. :)
 

KayHH

Gast
Immerhin bist Du so nicht von Fremdpaketen abhängig. :)
Genau das habe ich mir auch gedacht, lade eh schon fast ein Dutzend Pakete und bin schon froh das es da zu keinen Konflikten kommt. Sind allerdings auch alles Standard-LaTeX2e-Pakete.


Gruss KayHH