Enfoque más seguro que Shell-escape para resolver problemas

Enfoque más seguro que Shell-escape para resolver problemas

Tengo una carpeta de archivos que sigue esta convención de nomenclatura: "<id>-<nombre>". Necesito consultarlos desde un documento de látex, pero "<nombre>" cambia a menudo, por lo que debo hacerlo usando solo "<id>.

Logré hacer esto habilitando shell-escapey usando \input{|"<command>"}, para ejecutar un comando de shell que obtiene el nombre de archivo completo de una identificación. Funciona, pero habilitarlo shell-escapeme preocupa, porque este sistema, de vez en cuando, compila archivos que yo no he creado ni leído.

¿Alguien puede pensar en una solución mejor o es posible de alguna manera hacer que la habilitación sea shell-escapesegura?

Respuesta1

Puede generar una lista de archivos usando ls(o diren Windows) y pasarla a tex, pero si necesita hacerlo dentro de tex, entonces texosqueryse permite ejecutar de forma predeterminada, así:

Con un subdirectorio de prueba del directorio actual con tres archivos

$ ls testdir
a-b.txt  a-c.txt  z-a.txt

este documento

\documentclass{article}
\usepackage{texosquery}
\begin{document}

\TeXOSQueryRegularFileList\zzz{,}{testdir}
\show\zzz

\end{document}

produce una salida terminal de

$ 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
             
? 

también lo \zzzes la lista de nombres de archivos separados por comas, reemplácela \showpor cualquier bucle sobre esa lista que necesite hacer.

información relacionada