
Ich habe einen Ordner mit Dateien, der dieser Namenskonvention folgt: „<id>-<name>“. Ich muss von einem Latex-Dokument aus auf sie verweisen, aber „<name>“ ändert sich häufig, daher muss ich nur „<id>“ verwenden.
Dies ist mir gelungen, indem ich aktiviert shell-escape
und verwendet habe \input{|"<command>"}
, um einen Shell-Befehl auszuführen, der den vollständigen Dateinamen aus einer ID abruft. Das funktioniert, aber die Aktivierung shell-escape
macht mir Sorgen, da dieses System von Zeit zu Zeit Dateien kompiliert, die ich weder erstellt noch gelesen habe.
Fällt jemandem eine bessere Lösung ein oder ist es irgendwie möglich, die Aktivierung shell-escape
sicher zu gestalten?
Antwort1
ls
Sie können mit (oder in Windows) eine Dateiliste generieren dir
und sie an Tex übergeben. Wenn Sie dies jedoch innerhalb von Tex tun müssen, texosquery
ist die Ausführung standardmäßig zulässig:
Mit einem Test-Unterverzeichnis des aktuellen Verzeichnisses mit drei Dateien
$ ls testdir
a-b.txt a-c.txt z-a.txt
dieses Dokument
\documentclass{article}
\usepackage{texosquery}
\begin{document}
\TeXOSQueryRegularFileList\zzz{,}{testdir}
\show\zzz
\end{document}
erzeugt eine Terminalausgabe von
$ pdflatex dd124
This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./dd124.tex
LaTeX2e <2020-02-02> patch level 5
L3 programming layer <2020-08-07>
(/usr/local/texlive/2020/texmf-dist/tex/latex/base/article.cls
Document Class: article 2019/12/20 v1.4l Standard LaTeX document class
(/usr/local/texlive/2020/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2020/texmf-dist/tex/latex/texosquery/texosquery.sty
(/usr/local/texlive/2020/texmf-dist/tex/latex/texosquery/texosquery.tex
(/usr/local/texlive/2020/texmf-dist/tex/latex/texosquery/texosquery.cfg)))
(/usr/local/texlive/2020/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def)
(./dd124.aux) (|texosquery-jre8 -ir , testdir )
> \zzz=macro:
->a-b.txt,a-c.txt,z-a.txt.
l.6 \show\zzz
?
Das Gleiche \zzz
gilt für die durch Kommas getrennte Liste der Dateinamen. Ersetzen Sie diese \show
durch die gewünschte Schleife über diese Liste.