문서에 LaTeX 코드 조각을 작성하기 위해 제작된 패키지를 사용하는 중 오류가 발생했습니다.

문서에 LaTeX 코드 조각을 작성하기 위해 제작된 패키지를 사용하는 중 오류가 발생했습니다.

문서에 LaTeX 코드 조각을 작성하고 싶으므로 제작된 패키지를 로드했습니다. 그런데 컴파일을 해보니 아래와 같은 오류가 떴습니다.

! 패키지 작성 오류: -shell-escape 플래그를 사용하여 LaTeX를 호출해야 합니다. 설명은 발행된 패키지 문서를 참조하세요.

이 문제를 해결하도록 친절하게 도와주세요!

미리 감사드립니다!

답변1

제작된 패키지에는 셸에 대한 액세스가 필요하므로 편집기 내에서 이를 허용해야 합니다. 이렇게 하려면 -shell-escape편집기에서 LaTex, PdfLaTex, XeLaTex 및 LuaLaTex에 대한 명령 목록을 추가해야 합니다. "TexWorks"에서 "옵션 > TexWorks 구성 > 명령"으로 이동하여 해당 명령을 수정하고 다음 명령을 추가하여 변경합니다 -shell-escape.

latex.exe -shell-escape -src -interaction=nonstopmode %.tex
pdflatex.exe -shell-escape -synctex=1 -interaction=nonstopmode %.tex
xelatex.exe -shell-escape -synctex=1 -interaction=nonstopmode %.tex
lualatex.exe -shell-escape -synctex=1 -interaction=nonstopmode %.tex

pdflatex 및 shellescape가 활성화된 TeXworks

여기에 이미지 설명을 입력하세요

\write18 enabled위의 내용이 파일에서 실행되면 콘솔이 표시됩니다.

또는

코드를 tex 파일(이름을 지정했다고 가정 testMinted.tex)에 저장하고 파일이 있는 폴더(에 있다고 가정 C:\Users\uqapourm\Desktop\testMinted)로 이동하여 명령줄에서 실행하여 명령 pdflatex.exe -shell-escape -synctex=1 -interaction=nonstopmode testMinted.tex줄에서 컴파일할 수도 있습니다.

보안

때로는 tex 파일 내부에서 외부 명령을 실행할 수 있는 것이 유용합니다. 예를 들어 일부 조판을 외부화하거나 bibtex와 같은 외부 도구를 사용할 수 있습니다. 이는 \write18tex 프리미티브를 통해 사용할 수 있습니다.

The problem is that it allows for almost everything.

tex 파일은 이식 가능하므로 타사 파일을 컴파일할 때 보안 문제를 두려워할 필요가 없습니다. 따라서 기본적으로 이 기본 요소는 비활성화되어 있습니다.

사용자가 이를 사용해야 하는 경우 셸 상호 작용을 통해 파일 작성자를 신뢰한다는 점을 컴파일러에 명시적으로 알려야 하며 이것이 바로 선택적 --shell-escape인수의 핵심입니다.

수년 동안 \write18운영 체제에 대한 백도어로 사용되었습니다. 구문론적으로 TeX는 이를 파일에 쓰는 것으로 취급하지만 register 18실제로는 명령을 실행하는 미리 열린 파일로 취급합니다.

"제한 없음"은 write18모든 명령을 실행할 수 있음을 의미하므로 이를 허용하고 누군가가 보낸 TeX 파일을 실행하면 임의 코드가 실행될 수 있으며 비밀번호 파일을 스팸 봇 등에 이메일로 보낼 수 있습니다.

이는 분명히 보안 위험이 있지만 항상 허용하고 싶은 Tex 배포판의 일부인 일부 명령(예: 이미지 및 글꼴 변환)이 있으므로 web2c에서는 사용자(또는 기본적으로 texlive 관리자)가 설정을 허용합니다. "허용되고 안전한" 명령 세트이며 제한 모드에서 실행이 허용됩니다.

세 번째 대안은 에서 명령을 전혀 실행하지 않는 것입니다 \write18.

"restricted \write18 available"은 무엇을 의미하며 TexLive가 이를 계속 보고하는 이유는 무엇입니까?

TeXworks에서 쉘 이스케이프를 활성화하는 방법은 무엇입니까?

추신

때로는 패키지가 작동하도록 하기 위해 캐시를 지워야 하는 경우도 있습니다. 이렇게 하면 작업 속도가 느려지지만 오류는 방지됩니다. 그렇게 하려면 에 옵션을 추가하십시오 \usepackage[cache=false]{minted}.

관련 정보