我读过很多关于这些主题的问题和答案,以及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 张幻灯片的演示文稿来说,这可能非常不愉快)