我正在尝试实现一个问题的解决方案:自动缩放 Tikz-Picture 并使用外部化
答案很有帮助,我设法做到了这一点,但是我想给每个外部化的输出图像一个特定的文件名,例如,如果我的 tikz 文件位于,path/to/file.tikz
那么我希望将输出文件位于/ext-tikz/path/to/file.pdf
。
然而,我一实施,\tikzsetnextfilename{...}
构建就失败了。
以下是 MWE:
\documentclass{article}%
%
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
%
% from https://tex.stackexchange.com/a/29145/221484
\usepackage{environ}
\makeatletter
\def\tikzwidth{\textwidth}
\def\tikzheight{\textheight}
\newsavebox{\measure@tikzpicture}
\NewEnviron{tikzsize}[2]{%
\def\tikzscale{1}%
\tikzifexternalizingnext{%
\def\tikz@width{#1}%
\def\tikz@height{#2}%
\begin{lrbox}{\measure@tikzpicture}%
\tikzset{external/export next=false,external/optimize=false}% force translation of this BODY (and do not optimize it away as it would usually do):
\BODY
\end{lrbox}%
\pgfmathparse{#1/\wd\measure@tikzpicture}%
\edef\tikzscalewidth{\pgfmathresult}%
\pgfmathparse{#2/\ht\measure@tikzpicture}%
\edef\tikzscaleheight{\pgfmathresult}%
\pgfmathparse{min(\tikzscalewidth, \tikzscaleheight)}%
\edef\tikzscale{\pgfmathresult}%
\BODY
}{% this will re-use an existing external graphics:
\BODY
}
}
\makeatother
%
%
\begin{document}
%
% \tikzsetnextfilename{output} %<-- if activated it fail's
%
\begin{tikzsize}{\tikzwidth}{\tikzheight}
\begin{tikzpicture}[scale=\tikzscale]
\draw (0,0)--(1,1);
\end{tikzpicture}
\end{tikzsize}
%
\end{document}
我注意到在日志文件中,激活后tikzsetnextfilename
会显示
tikzpicture 已被优化。使用“/tikz/external/optimize=false”可禁用此功能。
但是当我使用此功能时,生成的图像不再缩放。