Am Fuß eines Dokuments soll der Pfad zu der tex-Datei gesetzt werden. Wie kann man automatisch auf den Pfad zugreifen?

gefragt 16 Jul '19, 13:36

arnozorro's gravatar image

arnozorro
3114
Akzeptiert-Rate: 0%

Mit currfile und Lektüre der currfile-Doku schaffe ich es nicht. Das Dokument wird richtig gesetzt, der Pfad des Dokuments darin aber nicht. Meldung : Package currfile-abspath Warning: The required recorder file (.fls) was not fou nd. (currfile-abspath) Please compile with the '-recorder' option. (currfile-abspath) Note that MikTeX requires two compiler runs. (currfile-abspath) Occurred on input line 292. Was sagt der Hinweis auf compile mit -recorder, an welcher Stelle muss das geschehen? Arno

(16 Jul '19, 15:27) arnozorro
1

Da kein Minimalbeispiel vorliegt, mit dem @arnozorro zur im Kommentar benannten Fehlermelung gekommen ist, und – auf Basis der bisherigen Infos (Kompilieren via bestimmten Editor oder Konsole/Eingabeaufforderung ...?) – m.E. nicht mit einer über die Kommentare hinausgehenden Antwort zu rechnen ist (die Rückfrage von @Ijon Tichy wurde auch bisher nicht beantwortet), schlage ich das Schließen der Frage vor, bis weitere Infos vorliegen.

(13 Apr '20, 22:49) WunderPunkt

Mit dem Paket currfile ist das recht einfach möglich, vorausgesetzt man beachtet die Anleitung. In Abschnitt 4 ist erklärt, dass man beim Laden des Pakets Option abspath angeben muss, wenn man den absoluten Pfad der Hauptdatei (oder einer anderen Datei) erhalten will. Mit dem Beispiel test.tex:

\documentclass{article}

\usepackage{blindtext}
\usepackage[automark]{scrlayer-scrpage}
\usepackage[abspath]{currfile}

\ifoot*{\texttt{\currfileabspath}}

\begin{document}
\blinddocument
\end{document}

ist es jedoch nicht getan. Zusätzlich muss pdflatex, lualatex oder xelatex noch mit Option -recorder aufgerufen werden (was der Online-Compiler offenbar tut, weshalb das Beispiel sogar hier im Online-Compiler funktioniert und bei jedem Aufruf einen anderen Pfad im erzeugten PDF anzeigt). Auf der Konsole/Eingabeaufforderung würde der Aufruf für obige Datei test.tex also beispielsweise:

pdflatex -recorder test.tex
pdflatex -recorder test.tex

lauten. Beim ersten Aufruf wird dann von pdflatex, lualatex oder xelatex eine Datei test.fls erzeugt. In dieser finden sich für jede Datei vollständige Pfadangaben. In meinem Beispiel beginnt dieses Datei bei mir zuhause mit:

PWD /home/ijon/currfiletest
INPUT /usr/local/texlive/2021/texmf.cnf
INPUT /usr/local/texlive/2021/texmf-dist/web2c/texmf.cnf
INPUT /usr/local/texlive/2021/texmf-var/web2c/pdftex/pdflatex.fmt
INPUT test.tex
OUTPUT test.log

Das Paket currfile-abspath, das von currfile mit Option abspath geladen wird, erkennt daraus, dass das aktuelle Arbeitsverzeichnis /home/ijon/currfiletest ist und die (Haupt-)Datei test.tex aus eben diesem Verzeichnis geladen wird.

Wird Parameter -recorder beim ersten Aufruf nicht gesetzt bzw. existiert noch keine *.fls-Datei (im Beispiel also test.fls), so erhält man übrigens die Warnung:

Package currfile-abspath Warning: The required recorder file (.fls) was not found.
(currfile-abspath)                Please compile with the '-recorder' option.
(currfile-abspath)                Note that MikTeX requires two compiler runs.
(currfile-abspath)                Occurred on input line 292.

Wie man den Editor so konfiguriert, dass beim Aufruf zusätzlich die Option angegeben wird, hängt vom Editor ab. Der aufmerksame Leser wird aber bereits erkannt haben, dass wenn currfile-abspath einfach nur die Datei test.fls liest, es genügt, wenn pdflatex, lualatex oder xelatex einmalig mit dieser Option aufgerufen wird. Diesen einen Aufruf kann man auch aus der Konsole bzw. der Eingabeaufforderung erledigen. Natürlich muss man ihn wiederholen, wenn sich der Pfad oder der Dateiname ändert oder man eine Datei hinzufügt, deren Pfad man ebenfalls beispielsweise per \getabspath ermitteln will.

Bei korrektem Aufruf, erhalte ich übrigens dieses Ergebnis:

/home/ijon/currfiletest/test.tex im Fuß der Seite

Will man bei einem Dokument, das aus mehreren Dateien besteht, nicht den Pfad der aktuellen Datei, sondern den Pfad der Hauptdatei im Fuß, so kann man darauf übrigens über \getabspath{\themainfile}\theabspath zugreifen, also beispielsweise in obigem Beispiel:

\ifoot*{\getabspath{\themainfile}\texttt{\theabspath}}

verwenden. Näheres ist der Anleitung des Pakets zu entnehmen.

Permanenter link

beantwortet 08 Okt '21, 09:03

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 08 Nov '21, 11:24

1

@IjonTichy Danke für diesen hervorragenden Beitrag!

(08 Nov '21, 10:35) dzaic
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×3
×1

gestellte Frage: 16 Jul '19, 13:36

Frage wurde gesehen: 4,065 Mal

zuletzt geändert: 08 Nov '21, 10:35