tikz 的预览包(和独立类)存在问题

tikz 的预览包(和独立类)存在问题

我最近用 TeX Live Manager 更新了 MacTeX,并安装了最新的tikz/pgfCVS(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 开始可用,现在是默认选项 (!),而之前该选项是默认选项。standalonepreviewstandalonepreview

因此,您的原始 MWE 可以与standalonev1.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}

相关内容