Tikz-Picture を自動的に拡大縮小し、外部化とファイル名の設定を使用する

Tikz-Picture を自動的に拡大縮小し、外部化とファイル名の設定を使用する

私は質問に対する解決策を実装しようとしています: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」を使用してください。

ただし、この機能を使用すると、生成された画像は拡大縮小されなくなります。

関連情報