我最近用 TeX Live Manager 更新了 MacTeX,并安装了最新的tikz/pgf
CVS(2011 年 2 月 12 日),但类出现了问题standalone
。图片大小似乎没问题,但什么都没画出来。我不知道是否有可能找到解决方法。我用 编译了下一个代码,没有latex
问题pdflatex
。
\documentclass{article}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\begin{document}
\begin{tikzpicture}
\draw[fill] (0,0)rectangle(5,5);
\end{tikzpicture}
\end{document}
或
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[fill] (0,0)rectangle(5,5);
\end{tikzpicture}
% or \tikz \draw[fill] (0,0) rectangle (5,5);
% or \tikz{\draw[fill] (0,0) rectangle (5,5)} % with pgf 2.10 cvs
\end{document}
日志文件显示:
这是 dvips(k) 5.991 版权所有 2011 Radical Eye Software (www.radicaleye.com) ' TeX 输出 2011.12.12:0630' -> standalone.ps 。 1错误:/pgfo 中未定义 操作数堆栈: 执行堆栈:%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1894 1 3 %oparray_pop 1893 1 3 %oparray_pop 1877 1 3 %oparray_pop 1771 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- 字典堆栈:--dict:1154/1684(ro)(G)-- --dict:0/20(G)-- --dict:81/200(L)-- --dict:100/300(L)--当前分配模式为本地 上一个操作系统错误:2 当前文件位置为 9241 GPL Ghostscript 9.02:不可恢复的错误,退出代码 1
如果你想要tikz/pgf
包含 pgfmanual_cvs.pdf 的 CVS 包,你可以找到它这里。
答案1
PostScript 序言实际上缺少\AtBeginDocument
和\special{ps::}
的特殊处理tikz
。如果你“手动”重新加载它,它将起作用:
\documentclass{standalone}
\usepackage{ifpdf}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\begin{document}
\ifpdf
\else
\special{ps::
/pgfsc{}bind def% stroke color is empty by default
/pgffc{}bind def% fill color is empty by default
/pgfstr{stroke}bind def%
/pgffill{fill}bind def%
/pgfeofill{eofill}bind def%
/pgfe{a dup 0 rlineto exch 0 exch rlineto neg 0 rlineto closepath}bind def% rectangle
/pgfw{setlinewidth}bind def% setlinewidth
/pgfs{save pgfpd 72 Resolution div 72 VResolution div neg scale
magscale{1 DVImag div dup scale}if
pgfx neg pgfy neg translate pgffoa .setopacityalpha}bind def% save
/pgfr{pgfsd restore}bind def %restore
userdict begin%
/pgfo{pgfsd /pgfx currentpoint /pgfy exch def def @beginspecial}bind def %open
/pgfc{newpath @endspecial pgfpd}bind def %close
/pgfsd{globaldict /pgfdelta /delta where {pop delta} {0} ifelse put}bind def% save delta
/pgfpd{/delta globaldict /pgfdelta get def}bind def % put delta
/.setopacityalpha where {pop} {/.setopacityalpha{pop}def} ifelse % install .setopacityalpha
/.pgfsetfillopacityalpha{/pgffoa exch def
/pgffill{gsave pgffoa .setopacityalpha fill 1 .setopacityalpha newpath fill grestore newpath}bind def
/pgfeofill{gsave pgffoa .setopacityalpha eofill 1 .setopacityalpha newpath eofill grestore newpath}bind def}bind def
/.pgfsetstrokeopacityalpha{/pgfsoa exch def /pgfstr{gsave pgfsoa .setopacityalpha stroke grestore newpath}bind def}bind def
/pgffoa 1 def
/pgfsoa 1 def
end
}
\fi
\begin{tikzpicture}
\draw[fill] (0,0)rectangle(5,5);
\end{tikzpicture}
\end{document}
答案2
现在,另一种选择是使用不使用包而是使用自定义代码裁剪内容crop
的选项。这适用于 DVI/PS 和 PDF 输出。请注意,此选项自 v1.0 开始可用,现在是默认选项 (!),而之前该选项是默认选项。standalone
preview
standalone
preview
因此,您的原始 MWE 可以与standalone
v1.0 一起正常运行(只要preview
未重新启用该选项):
\documentclass{standalone}% works fine with v1.0
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[fill] (0,0)rectangle(5,5);
\end{tikzpicture}
% or \tikz \draw[fill] (0,0) rectangle (5,5);
% or \tikz{\draw[fill] (0,0) rectangle (5,5)} % with pgf 2.10 cvs
\end{document}