Tikz 在草稿模式下外部化

Tikz 在草稿模式下外部化

這是後續Tikz externalize 中的草稿模式隱藏圖形,但並非沒有 externalize

我正在寫一份很長的文檔,編譯需要時間。一些圖包含為 tikz(從 matlab2tikz 導出),其他圖像僅包含在\includegraphics.我正在使用 Latex -> dvips -> ps2pdf 工作流程。為了加速,文件處於草稿模式(大多數情況下,我對查看所有圖像不感興趣)。對於 tikz 加速,外部化效果很好。

但是,正如中所解釋的Tikz externalize 中的草稿模式隱藏圖形,但並非沒有 externalize,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

但這個測試總是回傳錯誤。

相關內容