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

Однако этот тест все время дает ложный результат.

Связанный контент