초안 모드에서 Tikz 외부화

초안 모드에서 Tikz 외부화

이는 후속 조치입니다.Tikz 외부화의 초안 모드는 그래픽을 숨기지만 외부화 없이는 숨길 수 없습니다.

긴 문서를 작성 중이어서 편집하는 데 시간이 걸립니다. 일부 플롯은 tikz(matlab2tikz에서 내보내기)로 포함되고 다른 이미지는 간단히 \includegraphics. 저는 latex -> dvips -> ps2pdf 작업 흐름을 사용하고 있습니다. 속도 향상을 위해 문서는 초안 모드에 있습니다(대부분의 경우 모든 이미지를 보는 데 관심이 없습니다). tikz 속도 향상을 위해 외부화가 제대로 작동합니다.

그러나 에서 설명했듯이Tikz 외부화의 초안 모드는 그래픽을 숨기지만 외부화 없이는 숨길 수 없습니다., tikz-draft로 인해 작은 상자가 생성됩니다. 원래 그림 크기가 손실된 것처럼 보이고 문서가 꽤 많이 움직이기 시작합니다.

경고가 표시됩니다.

Package pgf Warning: Missing width for image "pgflastimage" ("images/tikz/figure8") in draft mode.
(pgf)                Using 1cm instead on input line 980.

Package pgf Warning: Missing height for image "pgflastimage" ("images/tikz/figure8") in draft mode.
(pgf)                Using 1cm instead on input line 980.

결과는 단지 작은 상자일 뿐입니다. 올바른 상자 크기를 찾으려고 시도했지만 실패한 것 같습니다. 이 버그에 대한 해결 방법이나 수정 사항이 있습니까?

내 외부화는 다음에 의해 수행됩니다.

\tikzset{external/system call={latex \tikzexternalcheckshellescape -halt-on-error 
-interaction=batchmode -jobname "\image" "\texsource" &&
dvips -o "\image".ps "\image".dvi && ps2eps "\image".ps;}}

좋은 .eps 이미지를 생성합니다. 생성된 이미지는 양호하며 를 사용하여 수동으로 포함하면 상자의 크기가 정확합니다 \includegraphics{figure0.eps}.


가능한 해킹에 대한 접근 방식은 다음과 같습니다. 처음에는 \subimport{path}{filename.tikz} 패키지를 기반으로 하위 디렉터리에 도움이 되는 그림을 포함시켰습니다 import.

\tikzimport{path}{filename.tikz}이 아이디어를 바탕으로 나는 이 가져오기를 포함하는 것으로 대체하기 시작했습니다.

\newcommand{\tikzimport}[2]{%
\ifdraft{%
  % create counter, increment
  \newstepcounter{\pgfkeysvalueof{/tikz/external/figure name}}%
  % define next filename of externalized tikz file
  \def\mynextfile{images/tikz/%
  \pgfkeysvalueof{/tikz/external/figure name}%
  \arabic{\pgfkeysvalueof{/tikz/external/figure name}}.eps}%
  % check is file is there, then includegraphics the file
  % as we are in draft, this gives a nice box
  \IfFileExists{\mynextfile}{% show tikz
  \includegraphics[scale=1]{\mynextfile}}{% fallback
  \mbox{\nolinkurl{\mynextfile}}
}
}{% nodraft
  \subimport{#1}{#2}%
}

이를 위해서는 ifdraft각 접미사에 대한 패키지와 카운터가 필요합니다 figure name. 카운터 생성(존재하지 않는 경우)은 다음과 같이 수행됩니다.

\makeatletter
\def\newstepcounter#1{%
\@ifundefined{c@#1}{%
\newcounter{#1}}{%
\stepcounter{#1}}%
}
\makeatother

문제

  • 이건 정말 좋지 않아요 ...

  • tikz 외부화된 접두사는 하드코딩되어 있습니다. tikz 내부에서 접두사를 추출하는 방법을 모르겠습니다. 접두사는 다음으로 설정되었지만 \tikzexternalize[prefix=images/tikz/]비어 \pgfkeys{/tikz/external/prefix}있습니다.

  • 외부화되면 잘못된 그래픽이 다시 나타나기 때문에 외부화되지 않는 몇 가지 그래픽이 있습니다. 각 그래프에 대해 외부화가 활성화된 경우 각 호출에 대해 테스트하는 것이 좋습니다.

피곤해

\newif\isexternal
\pgfkeys{/tikz/external/export/.is if=isexternal}
\isexternal
  external
\else
  not external
\fi

하지만 이 테스트는 항상 거짓으로 돌아옵니다.

관련 정보