Difference between r1.1 and the current
@@ -2,7 +2,8 @@
* TeX 컴파일 시 shell-escaping을 가능하게 해주는 기능이 있다. 이를 통해서 외부 프로그램을 실행하고 그 결과를 이용하여 조판하여야 할 때가 있다. 예를 들면,
* lualatex이나 pdflatex에서 pstricks 그림을 포함할 때 pst2pdf를 쓰는 경우
* minted와 같이 python을 실행해야 하는 경우
== shell escape 활성화 ==
* TeX Live의 기본 설정을 shell escape ''항상 허용''으로 만들 수 있으나, 이를 사용하지 않을 것을 강력히 권장
* lualatex이나 pdflatex에서 pstricks 그림을 포함할 때 pst2pdf를 쓰는 경우
* minted와 같이 python을 실행해야 하는 경우
* gnuplottex과 같이 gnuplot을 실행해야 하는 경우
* GnuplotTex과 같이 gnuplot을 실행해야 하는 경우
* imakeidx 패키지가 xindy를 호출할 수 있도록 하여 index 만들기를 자동화하려는 경우
* 그러나 '''보안 상의 이유로''' TeX Live는 이 기능을 제한적으로 안전한 프로그램만을 허용하고 기본적으로는 동작하지 않도록 해두었다. 허용된 프로그램 중 대표적인 것이 epstopdf이다.== shell escape 활성화 ==
* TeX Live의 기본 설정을 shell escape ''항상 허용''으로 만들 수 있으나, 이를 사용하지 않을 것을 강력히 권장
@@ -12,9 +13,39 @@
* 참고로 MiKTeX은 {{{
# pdflatex --enable-write18 foo
}}}
* 명령행에 익숙하지 않고 에디터 내에서 컴파일 명령을 부르는 것이 편하다면, "XeLaTeX (shell)"이라는 이름으로 현재의 "XeLaTeX" 조판 명령 설정을 하나 복사하여 여기에 `--shell-escape`를 붙여서 저장한 다음 shell-escape가 필요할 때 이 조판 명령을 쓰도록 한다.
% arara: xelatex: { shell: yes }
}}}
# pdflatex --enable-write18 foo
}}}
== 작업흐름 자동화 유틸리티 또는 에디터 설정 ==
== TeXworks ==* 명령행에 익숙하지 않고 에디터 내에서 컴파일 명령을 부르는 것이 편하다면, "XeLaTeX (shell)"이라는 이름으로 현재의 "XeLaTeX" 조판 명령 설정을 하나 복사하여 여기에 `--shell-escape`를 붙여서 저장한 다음 shell-escape가 필요할 때 이 조판 명령을 쓰도록 한다.
== arara ==
=== arara ===
* arara 지시자를 다음과 같이 하면 shell-escape가 가능하다. {{{% arara: xelatex: { shell: yes }
}}}
=== SpiX ===
* SpiX 지시문에 shell escape 옵션을 준다. {{{
%$ xelatex -shell-escape $texame
}}}
=== latexmk ===
* latexmk를 명령행에서 직접 실행한다면, 다음과 같이 할 수 있다. {{{
$ latexmk -xelatex -latexoption='--interaction=nonstopmode -synctex=1 -shell-escape' <texfile>
}}}
* 작업 폴더에 `latexmkrc` 파일을 만들고 그 내용을 다음과 같이 해두면, latexmk가 실행될 때 이 파일의 설정을 불러온다. 예를 들어 Visual Studio Code 편집기 또는 vim에서 latexmk 컴파일 방식을 사용하고 있다면 이 방법이 제일 확실하다.
{{{
$pdflatex = "xelatex --shell-escape --synctex=1 --interaction=nonstopmode";
$pdf_mode = 1;
$postscript_mode = $dvi_mode = 0;
}}}
=== overleaf.com ===
* 놀랍게도, overleaf에서 shell escape를 활성화할 수 있다. 가장 큰 이유는 minted 때문이었던 것으로 보인다.
* 방법은, 다음과 같은 latexmkrc 파일을 폴더에 함께 올리는 것이다. {{{
$pdflatex = 'xelatex %O %S --shell-escape';
$pdf_mode = 1;
$postscript_mode = $dvi_mode = 0;
}}}
== TeX Live 설정 변경 ==
이 항목은 일반사용자에게 권장하지 않는 것이며 참고사항입니다.
1. shell-escape를 항상 허용. ('''사용하지 말 것''') {{{
shell_escape = t
}}}
2. shell-escape 허용 프로그램의 목록 추가 (기본적으로 허용되는 프로그램 목록을 유지할 것) {{{
shell_escape_commands = bibtex,bibtex8,extractbb,kpsewhich,makeindex,mpost,repstopdf,<safe program>
}}}
개요 ¶
- TeX 컴파일 시 shell-escaping을 가능하게 해주는 기능이 있다. 이를 통해서 외부 프로그램을 실행하고 그 결과를 이용하여 조판하여야 할 때가 있다. 예를 들면,
- lualatex이나 pdflatex에서 pstricks 그림을 포함할 때 pst2pdf를 쓰는 경우
- minted와 같이 python을 실행해야 하는 경우
- GnuplotTex과 같이 gnuplot을 실행해야 하는 경우
- imakeidx 패키지가 xindy를 호출할 수 있도록 하여 index 만들기를 자동화하려는 경우
- 그러나 보안 상의 이유로 TeX Live는 이 기능을 제한적으로 안전한 프로그램만을 허용하고 기본적으로는 동작하지 않도록 해두었다. 허용된 프로그램 중 대표적인 것이 epstopdf이다.
shell escape 활성화 ¶
작업흐름 자동화 유틸리티 또는 에디터 설정 ¶
arara ¶
- arara 지시자를 다음과 같이 하면 shell-escape가 가능하다.
% arara: xelatex: { shell: yes }
latexmk ¶
- latexmk를 명령행에서 직접 실행한다면, 다음과 같이 할 수 있다.
$ latexmk -xelatex -latexoption='--interaction=nonstopmode -synctex=1 -shell-escape' <texfile>
- 작업 폴더에
latexmkrc
파일을 만들고 그 내용을 다음과 같이 해두면, latexmk가 실행될 때 이 파일의 설정을 불러온다. 예를 들어 Visual Studio Code 편집기 또는 vim에서 latexmk 컴파일 방식을 사용하고 있다면 이 방법이 제일 확실하다.
$pdflatex = "xelatex --shell-escape --synctex=1 --interaction=nonstopmode"; $pdf_mode = 1; $postscript_mode = $dvi_mode = 0;
overleaf.com ¶
- 놀랍게도, overleaf에서 shell escape를 활성화할 수 있다. 가장 큰 이유는 minted 때문이었던 것으로 보인다.
- 방법은, 다음과 같은 latexmkrc 파일을 폴더에 함께 올리는 것이다.
$pdflatex = 'xelatex %O %S --shell-escape'; $pdf_mode = 1; $postscript_mode = $dvi_mode = 0;