编辑

编辑

我读过很多关于这些主题的问题和答案,以及external库的文档tikz。我怀疑我从根本上误解了自己在做什么。

我有一张思维导图,打算将其包含在beamer演示文稿中。它需要很长时间才能编译完成,因此我想使用external库将其外部化。我还使用叠加规范逐步使地图的各个部分可见。思维导图是在一个单独的文件中准备的,我\input可以使用standalone.

如果没有外部化,我的代码可以正常生成幻灯片。如果使用外部化,就会失败。

beamer这是使用、external和 的最小非工作示例standalone。投影仪演示如下prawf3.tex

\documentclass{beamer}
\usepackage{standalone}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\makeatletter
    \tikzset{% https://tex.stackexchange.com/a/79572/39222
      beamer externalising/.style={%
        execute at end picture={%
          \tikzifexternalizing{%
            \ifbeamer@anotherslide
            \pgfexternalstorecommand{\string\global\string\beamer@anotherslidetrue}%
            \fi
          }{}%
        }%
      },
      external/optimize=false
    }
\makeatother

\begin{document}

\begin{frame}{A frame}
    \input{prawf3-pic}
\end{frame}

\end{document}

prawf3-pic.tex如下:

\documentclass[11pt,tikz]{standalone}

\begin{document}

\begin{frame}{A frame}
    \begin{tikzpicture}[beamer externalising]
        \node (a) {A};
        \only<2->
        \node (b) at (0,1) {B};
    \end{tikzpicture}
\end{frame}

\end{document}

[显然,由于没有定义,prawf3-pic.tex因此无法自行编译。这不是问题。]beamer externalising

该样式的代码beamer externalising来自Andrew Stacey 的回答对于缺少该元素的一个有点类似的问题standalone

当我尝试prawf3.tex使用 进行编译时pdflatex -shell-escape,编译失败,并显示

! Package tikz Error: Sorry, the system call 'pdflatex -shell-escape -halt-on-e
rror -interaction=batchmode -jobname "prawf3-figure0" "\def\tikzexternalrealjob
{prawf3}\input{prawf3}"' did NOT result in a usable output file 'prawf3-figure0
' (expected one of .pdf:.jpg:.jpeg:.png:). Please verify that you have enabled 
system calls. For pdflatex, this is 'pdflatex -shell-escape'. Sometimes it is a
lso named 'write 18' or something like that. Or maybe the command simply failed
? Error messages can be found in 'prawf3-figure0.log'. If you continue now, I'l
l try to typeset the picture.

但显然是逃逸壳启用,因为错误本身已经清楚。

prawf3-figure0.log在放弃Fatal error消息之前包含以下内容:

LaTeX Info: Redefining \includegraphics on input line 21.
No file prawf3-figure0.nav.
(./prawf3-pic.tex
\openout5 = `prawf3-figure0.dpth'.

Missing character: There is no ( in font nullfont!
Missing character: There is no b in font nullfont!
Missing character: There is no ) in font nullfont!
Missing character: There is no a in font nullfont!
Missing character: There is no t in font nullfont!
Missing character: There is no ( in font nullfont!
Missing character: There is no 0 in font nullfont!
Missing character: There is no , in font nullfont!
Missing character: There is no 1 in font nullfont!
Missing character: There is no ) in font nullfont!
Missing character: There is no B in font nullfont!
Missing character: There is no ; in font nullfont!
[1

\providecommand \oddpage@label [2]{}
{/usr/local/texlive/2013/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
! Extra }, or forgotten \endgroup.
\endframe ->\egroup 
                    \begingroup \def \@currenvir {frame}
l.27 \end{frame}

我尝试{}使用\only<2->

{\node (b) at (0,1) {B};}

但那没有帮助。(这并不奇怪,但似乎值得一试,因为这是我唯一能想到可以尝试的事情。)

请注意,我认为关于的抱怨nullfont是无关的,因为尽管一切都编译正常,但我还是通过完整的示例获得了这些抱怨。

编辑

我现在更加困惑了,因为事实证明,仅仅禁用外部化是不够的,如下所示:

\documentclass{beamer}
\usepackage{standalone}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
\tikzexternaldisable
\makeatletter
    \tikzset{% https://tex.stackexchange.com/a/79572/39222
      beamer externalising/.style={%
        execute at end picture={%
          \tikzifexternalizing{%
            \ifbeamer@anotherslide
            \pgfexternalstorecommand{\string\global\string\beamer@anotherslidetrue}%
            \fi
          }{}%
        }%
      },
      external/optimize=false
    }
\makeatother

\begin{document}

\begin{frame}{A frame}
    \input{prawf3-pic}
\end{frame}
\end{document}

我认为禁用外部化就足以进行编译,因为它本质上关闭了外部化。并且beamer externalising似乎是有条件定义的,因此在这种情况下它应该是无害的……

答案1

这个版本对我有用(并且代码更短)。

不需要standalone。该答案应该可以更新,尽管我的分数还太低,无法做到这一点。

如果您想要完全自动化,您将需要一个里面的计数器。

prawf3.tex

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{external, automata}
\tikzexternalize
\tikzexternaldisable
\makeatletter
\makeatother
\begin{document}
    \begin{frame}{A frame}
        \input{prawf3-pic}
    \end{frame}
\end{document}

prawf3-pic.tex

\only<1-2>{%the count of figures needs to be clear(quick hack)
    \begin{tikzpicture}
        \node (a) {A};
        \only<2->{\node (b) at (0,1) {B};}
    \end{tikzpicture}%
}

答案2

幻灯片上的多个图形的工作流程(可能在背景中)以及使用 \only 或类似工具或/和长时间演示中幻灯片的不清晰排列(由于编译时间可能较长)

\includegraphics[height=0.65\textheight,keepaspectratio]{tikzGraphics/pdfToInclude}

结合

pdflatex -jobname $jn“\\\documentclass{standalone}\\\usepackage{pgfplots,amsmath,ifthen,xcolor}\\\input{../commands.tex}\\\pgfplotsset{compat=1.13}\\\input{../plotadaptions.tex}\\\begin{document}\\\input{$file}\\\end{document}”

为我完成了这项工作。作为完整的 shell 脚本

对于 *.tex 中的文件
    jn=$(基本名称 -s .tex $文件)
    pdflatex -jobname $jn“\\\documentclass{standalone}\\\usepackage{pgfplots,amsmath,ifthen,xcolor}\\\input{../commands.tex}\\\pgfplotsset{compat=1.13}\\\input{../plotadaptions.tex}\\\begin{document}\\\input{$file}\\\end{document}”
完毕

tikz需要对设置属性、要使用的命令和颜色进行一些调整,并且不需要编译更改某些图形的每张幻灯片的所有 PDF。(对于长达 80 张幻灯片的演示文稿来说,这可能非常不愉快)

相关内容