Dateinamen eingebundener Dateien (\input) ausgeben
Dateinamen eingebundener Dateien (\input) ausgeben
Hallo liebe Community,
ich bin neu hier und ein absoluter LaTeX-Neuling. Habe mich entschieden in Zukunft meine Arbeitsmaterialen mit LaTeX zu gestalten. Die Ergebnisse sind einfach zu überzeugend.
Nun habe ich aber ein Problem, bei dem Google und FAQ's mir nicht geholfen haben:
Ich würde gern in einer Haupt-Datei andere Dateien mit dem \input-Befehl einbinden. Es ist nun super wichtig, dass in der Haupt-Datei die Dateinamen der eingebundenen Dateien ausgegeben werden. Geht so etwas? So ähnlich wie \currfilename...
Vielen Dank an Euch,
Lenzemann
ich bin neu hier und ein absoluter LaTeX-Neuling. Habe mich entschieden in Zukunft meine Arbeitsmaterialen mit LaTeX zu gestalten. Die Ergebnisse sind einfach zu überzeugend.
Nun habe ich aber ein Problem, bei dem Google und FAQ's mir nicht geholfen haben:
Ich würde gern in einer Haupt-Datei andere Dateien mit dem \input-Befehl einbinden. Es ist nun super wichtig, dass in der Haupt-Datei die Dateinamen der eingebundenen Dateien ausgegeben werden. Geht so etwas? So ähnlich wie \currfilename...
Vielen Dank an Euch,
Lenzemann
- Johannes_B
- Moderator
- Beiträge: 5079
- Registriert: Do 1. Nov 2012, 14:55
- Kontaktdaten:
Ich verstehe die Frage nicht ganz. Input lädt den Inhalt der Dateien, quasi copy/paste in das main Dokument. Willst du den Dateinamen in der pdf?
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
Hey Johannes,
danke für deine Rückmeldung.
Im Prinzip will ich genau das. Der Name der eingebundenen Datei soll im fertigen PDF automatisch mit eingebunden werden. Ich habe also im System einzelne TEX-Bausteine, die ich auch über das ausgedruckte PDF wiederfinden können möchte.
Im Code:
\documentclass[11pt]{scrartcl}
\beginn{document}
\paragraph{Aufgabe1}
\input{../aufgaben/1803040309}
\Befehl{Automatisch "../aufgaben/1803040309" ausgeben}
\end{document}
----------
Natürlich könnte ich auch einfach den Dateinamen von Hand reinschreiben. Aber dann liefe ich Gefahr, dass ich das auch einmal vergesse oder falsch eintippe. Und damit wäre in meinem angedachten Ordnungssystem die eingebundene Aufgabe nicht mehr gezielt auffindbar.
Danke für deine Zeit!
Lenzemann[/b]
danke für deine Rückmeldung.
Im Prinzip will ich genau das. Der Name der eingebundenen Datei soll im fertigen PDF automatisch mit eingebunden werden. Ich habe also im System einzelne TEX-Bausteine, die ich auch über das ausgedruckte PDF wiederfinden können möchte.
Im Code:
\documentclass[11pt]{scrartcl}
\beginn{document}
\paragraph{Aufgabe1}
\input{../aufgaben/1803040309}
\Befehl{Automatisch "../aufgaben/1803040309" ausgeben}
\end{document}
----------
Natürlich könnte ich auch einfach den Dateinamen von Hand reinschreiben. Aber dann liefe ich Gefahr, dass ich das auch einmal vergesse oder falsch eintippe. Und damit wäre in meinem angedachten Ordnungssystem die eingebundene Aufgabe nicht mehr gezielt auffindbar.
Danke für deine Zeit!

Lenzemann[/b]
- Johannes_B
- Moderator
- Beiträge: 5079
- Registriert: Do 1. Nov 2012, 14:55
- Kontaktdaten:
Na aber mit \currfilename hast du doch quasi schon gefunden, was du suchst?
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
Ja ja, wenn ich in die Datei 1803040309.tex den Befehl \currfilename schreibe, dann kriege ich schon die gewünschte Ausgabe. Aber auch hier ist das System nicht sicher, weil diese Befehlszeile in jeder von tausenden von Aufgabendateien stehen und händig geschrieben werden müsste.
Und wenn ich \currfilename in der "Masterdatei" schreibe, erhalte ich ja nur deren Dateinamen zurück.
Ich bräuchte einen Befehl in "Masterdatei", der die Namen der eingebunden Dateien schreibt.
Viele Grüße,
Lenzemann
Und wenn ich \currfilename in der "Masterdatei" schreibe, erhalte ich ja nur deren Dateinamen zurück.
Ich bräuchte einen Befehl in "Masterdatei", der die Namen der eingebunden Dateien schreibt.
Viele Grüße,
Lenzemann
Verstehe ich nicht. Willst Du die Namen aller eingebundenen Dateien in der Masterdatei? Oder welcher Name soll in der Masterdatei ausgegeben werden?
Jedenfalls: Was hindert Dich daran, etwas wie zu definieren und dann an Stelle von \input zu verwenden. Wenn da alle Dateinamen aufgesammelt werden sollen, muss man ggf. mit \g@addto@macro oder \protected@edef arbeiten.
Jedenfalls: Was hindert Dich daran, etwas wie
\newcommand*{\lastinputname}{\jobname.tex} \newcommand*{\xinput}[1]{% \renewcommand*{\lastinputname}{#1}% \input{\lastinputname} }
Möchtest Du soetwas?
\documentclass[11pt]{scrartcl} \begin{filecontents}{hallo.tex} Hullo \end{filecontents} \newcommand*{\inputmittext}[1]{% \IfFileExists{#1} {\input{#1}\par Es wurde \texttt{\detokenize{#1}} ausgegeben.} {\GenericError {\string\inputmittext\space error} {\string\inputmittext\space error: File `\detokenize{#1}' not found} {The file `\detokenize{#1}' cold not be found, no output is produced.} {The file `\detokenize{#1}' could not be found.\MessageBreak Check that it is where you think it is.}}} \begin{document} \paragraph{Aufgabe1} \inputmittext{hallo.tex} \paragraph{Aufgabe2} \inputmittext{ftaghb.tex} \end{document}
Passendes Paket
Mir erscheint ein Ansatz mit »currfile« viel weniger kompliziert. Auf die Idee bin ich aber nur gekommen, weil im Eingangsbeitrag schon \currfilename erwähnt wurde. Mit \newsavebox, \savebox und \usebox wird eine Box erzeugt, der jeweils aktuelle Dateiname darin zwischengespeichert und für die spätere Ausgabe bereitgestellt. Für das Beispiel hier habe ich mal etwas aus meinem Archiv genommen und entsprechend ergänzt. Es ist also nicht minimal.
\documentclass[11pt,a4paper,twoside,ngerman]{article} \usepackage[T1]{fontenc} \usepackage{selinput} \SelectInputMappings{ adieresis={ä}, germandbls={ß}, Euro={€} } \usepackage{babel} \usepackage[ inner=2cm, outer=4cm, top=2cm, bottom=4cm, includeheadfoot ]{geometry} \usepackage[pagestyles,raggedright,bf,sf]{titlesec} \newpagestyle{main}{% \sethead[\thepage][][\thesection\enspace\sectiontitle]{\thesubsection\enspace\subsectiontitle}{}{\thepage}% \setfoot[][][]{}{}{}% \headrule% } \pagestyle{main} \usepackage{currfile} %% Im eigentlichen Dokument nicht notwendig, da nur für Erzeugung von Fülltext und externe Dateien \usepackage{filecontents} \begin{filecontents*}{input-01.tex} \section{Erste Datei} \blindtext \newsavebox{\filenamei} \savebox{\filenamei}{\currfilebase} % Für Dateinamen mit Endung '\currentfilename' setzen \end{filecontents*} \begin{filecontents*}{input-02.tex} \section{Zweite Datei} \blindtext \newsavebox{\filenameii} \savebox{\filenameii}{\currfilebase} % Für Dateinamen mit Endung '\currentfilename' setzen \end{filecontents*} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{lmodern} \usepackage{microtype} \usepackage{blindtext} % Nur für den Fülltext \title{Dokument mit Inhalten aus externen Dateien} \author{Lenzemann} \clubpenalty10000%\maxdimen \widowpenalty10000%\maxdimen \begin{document} \maketitle \tableofcontents \bigskip \input{input-01} \input{input-02} \appendix \section{Eingelesene externe Dateien} \begin{itemize} \item \usebox\filenamei \item \usebox\filenameii \end{itemize} \end{document}
Es gibt da mehrere Möglichkeiten.
\documentclass[11pt]{scrartcl} \begin{filecontents}{hallo.tex} Hullo \end{filecontents} \begin{filecontents}{bye.tex} Goodbye \end{filecontents} \usepackage{etoolbox} \newcommand*{\filesonthispage}{} \newcommand*{\inputmittext}[1]{% \IfFileExists{#1} {\input{#1}% \blfootnote{\texttt{\detokenize{#1}}}% <- Fußnote \listeadd{\filesonthispage}{\detokenize{#1}}% <- Fußzeile \par Es wurde \texttt{\detokenize{#1}} ausgegeben.% <- direkter Text } {\GenericError {\string\inputmittext\space error} {\string\inputmittext\space error: File `\detokenize{#1}' not found} {The file `\detokenize{#1}' cold not be found, no output is produced.} {The file `\detokenize{#1}' could not be found.\MessageBreak Check that it is where you think it is.}}} \newcounter{pagefilecounter} \newcommand*{\printfilesfomthispage}{% \setcounter{pagefilecounter}{0}% \ifdefvoid{\filesonthispage} {} {\def\do##1{% \stepcounter{pagefilecounter}% \ifnumequal{\value{pagefilecounter}}{1} {\texttt{##1}} {, \texttt{##1}}}% \dolistloop\filesonthispage \global\let\filesonthispage\empty}} % Fußzeile \usepackage{scrlayer-scrpage} \setkomafont{pageheadfoot}{\normalfont\normalcolor} \ofoot{\printfilesfomthispage} % die automatische Fußzeile funktioniert nur, wenn \printfilesfomthispage nicht im Text genutzt wird. % siehe Seite 3 % Fußnote \newcommand\blfootnote[1]{% \begingroup \renewcommand\thefootnote{}\footnote{#1}% \addtocounter{footnote}{-1}% \endgroup } \begin{document} \paragraph{Aufgabe1} \inputmittext{hallo.tex} \paragraph{Aufgabe 2} \inputmittext{bye.tex} \cleardoublepage Leerseite \cleardoublepage \paragraph{Aufgabe 3} \inputmittext{bye.tex} Bis jetzt haben wir \printfilesfomthispage{} ausgegeben. \end{document}