캐싱 옵션을 활성화하면 minted
예상치 tikz
못한 비효율적인 캐싱이 발생합니다. tikz
외부화된 모든 그림에 대해 minted
기본 문서의 모든 코드 블록은 tikz
캐시 디렉터리 내에 캐시됩니다. 예를 들어 숫자가 50개 이상, 코드 목록이 100개 이상인 문서의 경우 캐싱에 시간이 오래 걸리고 필요한 것보다 더 많은 디스크 공간을 사용합니다.
예를 들어 다음 MWE를 고려하십시오.
\documentclass[11pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[cache]{minted}
\usepackage{pgf,tikz}
\usetikzlibrary{external}
\tikzsetexternalprefix{figures/cache/}
\tikzset{external/system call={pdflatex -shell-escape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"}}
\tikzexternalize
\begin{document}
\begin{minted}[frame=none,fontsize=\small,linenos=true]{r}
plotdata <- data.frame(this = rnorm(20), that = rnorm(20))
\end{minted}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=3cm,
thick,main node/.style={circle,fill=blue!20,draw,font=\sffamily\Large\bfseries}]
\node[main node] (1) {1};
\node[main node] (2) [below left of=1] {2};
\node[main node] (3) [below right of=2] {3};
\node[main node] (4) [below right of=1] {4};
\path[every node/.style={font=\sffamily\small}]
(1) edge node [left] {0.6} (4)
edge [bend right] node[left] {0.3} (2)
edge [loop above] node {0.1} (1)
(2) edge node [right] {0.4} (1)
edge node {0.3} (4)
edge [loop left] node {0.4} (2)
edge [bend right] node[left] {0.1} (3)
(3) edge node [right] {0.8} (2)
edge [bend right] node[right] {0.2} (4)
(4) edge node [left] {0.2} (3)
edge [loop right] node {0.6} (4)
edge [bend right] node[right] {0.2} (1);
\end{tikzpicture}
\end{document}
이는 디렉토리 구조로 이어집니다.
.minted-mwe/
475544BE9F571FFAF1D26ACA3A0AB8D0502F9AF18E3C3312853333EF1520885B.pygtex
default.pygstyle
.minted-figures/
cache/
mwe-figure0/
475544BE9F571FFAF1D26ACA3A0AB8D0502F9AF18E3C3312853333EF1520885B.pygtex
default.pygstyle
figures/
cache/
mwe-figure0.aex
mwe-figure0.dpth
mwe-figure0.log
mwe-figure0.md5
mwe-figure0.pyg
*.pygtex
파일이 중복되는 곳 . 나는 이것이 tikz
개별 수치를 처리하기 위한 시스템 호출 방식, 즉 모든 minted
환경이 외부 작업에서 고려되는 방식 때문이라고 가정합니다 pdflatex
.
이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 제가 뭔가를 놓치거나 잘못 구성하고 있나요?
답변1
이는 외부화가 작동하는 방식 때문입니다 tikz
. PGF/TikZ 매뉴얼의 외부화 아래 "프로세스에 대한 세부 정보"(버전 3.0.0 매뉴얼의 625페이지 섹션 50.4.5)에서 외부화가 다음과 같이 작동하는 것을 볼 수 있습니다.전체 파일 컴파일외부화되는 각 이미지에 대해 한 번씩. 이 컴파일 과정에서 현재 이미지와 관련되지 않은 문서의 모든 부분은 "조용히 버려집니다". 불행하게도 그 동안minted
산출폐기되어도 minted
캐시된 콘텐츠가 있는지 확인하고, 없으면 생성합니다. 외부화된 이미지에 대한 컴파일 작동 방식으로 인해 minted
기본 실행에서 기존 캐시를 감지할 수 없으며 새 캐시가 생성됩니다.
측면에서 보면 개선할 수 있는 부분도 있을 수 있습니다 tikz
. 외부화 프로세스의 기술적인 세부 사항에 대해 충분히 알지 못합니다. 측면에서는 조건부 minted
로드를 통해 중복 문제를 해결할 수 있습니다 ( 2.0 minted
이 필요함 ).minted
\ifcsname tikzexternalrealjob\endcsname
\usepackage[draft]{minted}
\else
\usepackage[cache]{minted}
\fi
매크로가 \tikzexternalrealjob
존재하는 경우(파일이 이미지 외부화 목적으로만 컴파일되는 경우) minted
초안 모드로 로드됩니다. 초안 모드에서는 외부 파일이 생성되지 않으며 Python(Pygments)이 호출되지 않습니다. (이미지에 대해 사용되지 않은 캐시 디렉토리는 계속 생성됩니다. tikz
다음 릴리스에서 이 문제를 수정하고 외부화 감지를 추가하는 방법에 대해 알아보겠습니다 minted
.이슈 트래커.) \tikzexternalrealjob
존재하지 않는 경우 이는 정상적인 컴파일이며 minted
정상적으로 진행됩니다.