Ich habe Dateien deren Namen aus zwei Bestandteilen bestehen, sagen wir mal, 2001ParabelHaupttermin.tex, 2001ParabelNachtermin.tex, 2001GeometrielHaupttermin.tex usw. Mit einer inputiffileexists kann man ja abfragen, ob bestimmte Dateien existieren, und dann entscheiden, was zu tun ist. Open in Online-Editor
\newcounter{ct}\setcounter{ct}{2000} \whiledo{\value{ct} < 2016}{\stepcounter{ct}\InputIfFileExists{\arabic{ct}*Haupptermin}{\arabic{ct}*Haupttermin}{}} gefragt 30 Sep '15, 15:23 Astrina |
LaTeX hat selbst keine Dateisystemoperationen. Man muss also Umwege gehen, um die Dateien eines Verzeichnisses zu ermitteln. Hier einmal ein Beispiel, wie das unter Linux oder Windows und vermutlich auch MacOS mit Hilfe von \documentclass{article} \usepackage{ifplatform} \usepackage{ifthen} \usepackage{shellesc}% Wird eigentlich schon von ifplatform geladen. \newcounter{ct}% den brauchen wir später auf jeden Fall % Aber, erst einmal generiere ich ein paar Dateien lediglich zu Demozwecken. % Der Teil wird natürlich nur benötigt, wenn man wie ich noch keine Dateien zum Testen hat. \setcounter{ct}{2010} \makeatletter \whiledo{\value{ct}<2016}{% \@for \dummyfilename:=A,B,C,Doof\do{% \immediate\openout\@mainaux \arabic{ct}\dummyfilename Haupttermin.tex \immediate\write\@mainaux{Das ist Datei \arabic{ct}\dummyfilename Haupttermin.tex.}% \immediate\closeout\@mainaux }% \stepcounter{ct}% } \makeatother % Ab hier braucht man es auch, wenn man bereits echte Testdateien hat. % Jetzt löschen und initialisieren wir mal eben die temporäre Datei für die Dateiliste. \makeatletter \immediate\openout\@mainaux \jobname-files.dat \immediate\write\@mainaux{Filename} \immediate\closeout\@mainaux \makeatother % Jetzt verwenden wir \write18, um UNTER LINUX die Dateiliste zu erzeugen \setcounter{ct}{2000} \whiledo{\value{ct} < 2015}{% \ifwindows \ShellEscape{dir /b \arabic{ct}*Haupttermin.tex >>\jobname-files.dat}% wird unter Windows verwendet \else \ShellEscape{ls -1 \arabic{ct}*Haupttermin.tex>>\jobname-files.dat}% wird auf anderen System verwendet \fi \stepcounter{ct}% } \usepackage{datatool} \DTLloaddb{Filenames}{\jobname-files.dat} \begin{document} % Jetzt verwenden wir datatool um alle Dateien einzulesen. \DTLforeach{Filenames}{\filename=Filename}{\InputIfFileExists{\filename}{\par}{}} \end{document} Ergibt dann: Dabei wird Damit das ganze funktioniert, müssen shell escapes aktiviert sein. Dazu muss man Achja: beantwortet 30 Sep '15, 16:45 saputello @saputello Ich habe mit der Windows-Version leider keine Daten einbinden können. Es gibt aber auch keine Fehlermeldung. Ich weiß gar nicht was los ist :D Ich benutze den Editor TexWorks und habe natürlich zum pdflatex den shellesc hinzugefügt, hat aber anscheinend nicht gereicht. Ich kann auch keine temporäre Datei sehen, sollte sowas überhaupt zu sehen sein Auch das ganze dokument im Test sagt irgendwann "sorry, didnt work" Any help?
(07 Feb '20, 11:45)
Dave
@Dave Wenn du nicht einmal die 20 Dateien »201*Haupttermin.tex«, eine Ich habe den Kommentar aber mal zum Anlass genommen, das Beispiel so zu ändern, dass es ohne Änderung sowohl unter Linux als auch Windows (und vermutlich auch MacOSX) funktioniert.
(07 Feb '20, 12:24)
saputello
@saputello Datatool selbst kann die Liste
(07 Feb '20, 13:56)
cis
@cis: Hast Du in der
(07 Feb '20, 14:33)
saputello
@saputello habs hinbekommen, der -clean beim pdflatex befehl musste natürlich noch raus, damit die Datein entstehen können :D sau cool, dass nach 4 Jahren trotzdem direkt ne Antwort kommt! @cis doch ;)
(07 Feb '20, 15:56)
Dave
Ergebnis 5 von 7
show 2 more comments
|
LaTeX hat keine Dateisystemoperationen. Entweder erstellst Du die Liste extern und verarbeitest sie dann beispielsweise mit
datatool
oder Du verwendest dafürlualatex
, weil dessen Lua-Seite dielfs
-Erweiterungen enthält, die beispielsweiselsf.dir
, das man zur Abfrage der Dateinamen in einem Verzeichnis benötigt, oder Du delegierst via\write18
die Dateisystemabfrage an das OS, was dann aber zunächst einmal nicht mehr portabel ist.Etwas ähnliches gab es hier einmal: https://texwelt.de/fragen/9344/wie-kann-ich-sehr-viele-tex-dateien-einlesen/9355