문제 해결을 위해 쉘 탈출보다 안전한 접근 방식

문제 해결을 위해 쉘 탈출보다 안전한 접근 방식

"<id>-<name>"이라는 명명 규칙을 따르는 파일 폴더가 있습니다. 라텍스 문서에서 참조해야 하는데 "<name>"이 자주 변경되므로 "<id>만 사용하여 참조해야 합니다.

ID에서 전체 파일 이름을 가져오는 쉘 명령을 실행하기 위해 를 활성화 shell-escape하고 사용하여 이 작업을 수행했습니다 . \input{|"<command>"}작동하지만 활성화하는 것이 shell-escape걱정됩니다. 왜냐하면 이 시스템은 때때로 내가 만들지도 않았고 읽지도 않은 파일을 컴파일하기 때문입니다.

누구든지 더 나은 솔루션을 생각할 수 있습니까? 아니면 활성화하는 것이 어떻게든 가능합니까 shell-escape?

답변1

ls(또는 Windows에서) 을 사용하여 파일 목록을 생성 dir하고 tex에 전달할 수 있지만 tex 내에서 수행해야 하는 경우 texosquery기본적으로 실행이 허용됩니다.

세 개의 파일이 있는 현재 디렉터리의 테스트 하위 디렉터리 사용

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

이 문서

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

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

\end{document}

터미널 출력을 생성합니다

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

\zzz쉼표로 구분된 파일 이름 목록도 마찬가지 입니다 \show. 해당 목록에 필요한 루프를 대체하십시오.

관련 정보