简洁版本

简洁版本

简洁版本

是否可以使用standalone覆盖图在外部生成我的图形并将其直接包含在我的主要文档中?

更多细节

使用问题的答案Beamer 覆盖、tikz 外部和自定义文件名集成 latexmk 和 TikZ 外部模式=list 和 make我已经能够在使用覆盖的同时外包我的 Tikz 图片。

更准确地说,我有以下tex文件

% tikz/fig.tex

\begin{tikzpicture}[transform canvas={scale=0.5}]

    \node[visible on=<1->]  at (0,0) {Overlay 1};
    
    \node[visible on=<2>]  at (2,0) {Overlay 2};

\end{tikzpicture}
% main.tex

\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[mode=list and make,prefix=tikz/]
\tikzset{
  invisible/.style={opacity=0},
  visible on/.style={alt={#1{}{invisible}}},
  alt/.code args={<#1>#2#3}{%
    \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
  },
}
\makeatletter
\newcommand*{\overlaynumber}{\number\beamer@slideinframe}
\tikzset{
  beamer externalizing/.style={%
    execute at end picture={%
      \tikzifexternalizing{%
        \ifbeamer@anotherslide
        \pgfexternalstorecommand{\string\global\string\beamer@anotherslidetrue}%
        \fi
      }{}%
    }%
  },
  external/optimize=false
}
\let\orig@tikzsetnextfilename=\tikzsetnextfilename
\renewcommand\tikzsetnextfilename[1]{\orig@tikzsetnextfilename{#1-\overlaynumber}}
\makeatother

\tikzset{every picture/.style={beamer externalizing}}

\begin{document}
\begin{frame}{Example}
    \begin{figure}
        \only<1>{\tikzsetnextfilename{fig}}
        \only<2>{\tikzsetnextfilename{fig}}
        \input{tikz/fig.tikz}
    \end{figure}
\end{frame}
\end{document}

然后,我可以使用latexmk以下内容.latexmkrc

our %externalflag = ();

$lualatex = 'internal mylualatex %O %S %B';

sub mylualatex {
  print "Hello world\n";
  our %externalflag;
  my $n = scalar(@_);
  my @args = @_[0 .. $n - 2];
  my $base = $_[$n - 1];

  system 'lualatex', @args;
  if ($? != 0) {
    return $?
  }
  if ( !defined $externalflag->{$base} ) {
    $externalflag->{$base} = 1;
    system ("$make -j8 -f $base.makefile");
  }
  return $?;
}

它将使用 并行生成所有图形(在我的示例中是两个,因为我有两个覆盖图)make。现在唯一的问题是,我希望使用standalone能够直接处理我的图片,而不必每次都重新编译整个文档。

我在文档中看到standalone应该可以使用来生成框架standaloneframe,但这并不是我真正想要的,因为我只想要图片,而且无论如何我都无法成功使用将生成的框架包含在我的主文档中\includestandalone

相关内容