Momentan erstelle ich ein relativ umfangreiches Dokument und habe deswegen Teile ausgelagert in Extradateien. Wenn diese Dateien in Unterordner liegen, dann funktioniert immer noch der \include-Befehl mit entsprechender Pfadmodifizierung. Nur wenn ich zusätzlich beim kompilieren die Option -output-directory=output mitangebe, funktioniert das nicht mehr so einfach. Wenn ich mit der Konsole kompiliere, dann fragt LaTeX nach der Ausgabedatei für einleitung.tex. Wenn man etwas angibt, für durchkompiliert. Wenn man Strg+Z eingibt, dann kommt die unten angegebene Fehlermeldung heraus.

Ich würde gerne mit dem Texmaker schnell und einfach kompilieren können und bei der Konsole für jede zusätzliche Datei den Ausgabenamen mitangeben müssen. Ist es möglich, dass zu konfigurieren mit irgendwelchen Optionen?

Minimalbeispiel:

Öffne in Overleaf
\documentclass[a4paper]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\begin{document}
\include{./section1/einleitung}
\end{document}

Fehlermeldung mit Konsole kompiliert pdflatex -output-directory=output minimal.tex:

Öffne in Overleaf
! I can't write on file `./section1/einleitung.aux'.
\@include ...\immediate \openout \@partaux #1.aux 
                                                  \immediate \write \@partau...
l.7 \include{./section1/einleitung}

(Press Enter to retry, or Control-Z to exit; default file extension is `.tex')
Please type another output file name: 
! Emergency stop.
\@include ...\immediate \openout \@partaux #1.aux 
                                                  \immediate \write \@partau...
l.7 \include{./section1/einleitung}

End of file on the terminal!

gefragt 13 Mai, 20:08

vince6e74's gravatar image

vince6e74
213
Akzeptiert: 66%

bearbeitet 14 Mai, 03:37

saputello's gravatar image

saputello
10.0k53458


\include liest nicht nur eine Datei, sondern schreibt zusätzlich auch eine aux-Datei für jede der bei \include angegebenen Dateien. Wenn also \include{foo/bar} angegeben ist, wird nicht nur eine Datei foo/bar.tex gelesen, sondern auch eine Datei foo/bar.aux geschrieben. Ist nun ein Ausgabeverzeichnis output angegeben, so wird natürlich versucht output/foo/bar.aux zu schreiben. Da TeX selbst niemals Ordner erstellt, muss deshalb im Ordner output zuvor bereits der Unterordner foo erzeugt worden sein.

Bei Verwendung von lualatex kann man das per Lua sicherstellen. Wird wie im Beispiel pdflatex verwendet, muss man das Verzeichnis selbst oder per shell-escape erzeugen.

Den Verzeichnisteil des bei \include angegebenen Dateinames für die Erzeugung (und das Einlesen) der aux-Datei abzuschneiden ist in LaTeX nicht vorgesehen.

Für die Automatisierung im Editor bieten sich daher aus meiner Sicht neben der Voraberzeugung der benötigten Ordnerstruktur per Lua oder shell-escape vor allem zwei Möglichkeiten an:

  1. Auf die Verwendung eines getrennten Ausgabeverzeichnisses verzichten. Ein solches Ausgabeverzeichnis bereitet häufiger Probleme als man denkt, so dass der Verzicht darauf oft die beste Wahl ist. Als Alternative bieten übrigens viele Editoren auch die Möglichkeit, Hilfsdateien zu löschen, um von Zeit zu Zeit (beispielsweise nach Fertigstellung eines Projekts oder vor dem Verpacken in eine ZIP-Datei) Ordnung im Dokumentverzeichnis zu schaffen.
  2. \include durch \input ersetzen. Da \input keine zusätzliche aux-Datei benötigt, tritt dabei das Problem gar nicht erst auf. Dieser Weg ist immer dann möglich, wenn von \includeonly ohnehin kein Gebrauch gemacht wird. Da die meisten Anfänger den Unterschied zwischen \input und \include außerdem nicht kennen und bei \include immer wieder von Seiteneffekten (wie unerwünschten neuen Seiten oder verzögerter Wirkung von \addcontentsline in der Hauptdatei) überrascht werden, ist dies ohnehin oftmals eine gute Entscheidung.
Permanenter link

beantwortet 14 Mai, 02:01

saputello's gravatar image

saputello
10.0k53458

bearbeitet 14 Mai, 04:54

Vielen Dank für schnelle Antwort. Mir ist zwar der Unterschied zwischen input und include zwar klar, werde aber wahrscheinlich trotzdem input mit u.a. clearpage/newpage. Kannst du mir einen Text empfehlen mit dem ich in LuaLaTeX einsteigen kann?

(14 Mai, 03:06) vince6e74

@vince6e74 Bitte keine neuen Fragen in Kommentaren verstecken. Als Antwort sei jedoch auf https://texwelt.de/wissen/fragen/70/was-ist-luatex/14269 verwiesen. Zuvor aber noch »Was ist der Unterschied zwischen latex, pdflatex, lualatex und xelatex?« lesen!

(14 Mai, 03:34) saputello
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×104
×16
×8
×5

Frage gestellt: 13 Mai, 20:08

Frage wurde angeschaut: 510 Mal

Zuletzt aktualisiert: 14 Mai, 03:34