我遇到了一个相当奇怪的问题。如果我pspicture
在同一个文档中使用多个环境,第一个环境会得到渲染,但另一个环境会中断。例如,
\begin{pspicture}(-3,-3)(3,3)
\pstGeonode[PointName=none](0, 0){O}
\pstGeonode[PointSymbol=none, PointName=N](1, 0.66){N}
\pstGeonode[PointSymbol=none, PointName=B](-1, 1){B}
\pstGeonode[PointSymbol=none, PointName=W](0, -2){W}
\pstLineAB[linecolor=black]{O}{N}
\pstLineAB[linecolor=black]{O}{B}
\pstLineAB[linecolor=black]{O}{W}
\pstMarkAngle[linecolor=black, Mark=none]{N}{O}{B}{}
\end{pspicture}
接下来是一些
\begin{pspicture}(3,5)
\pstTriangle[PointSymbol=none, linecolor=black, linewidth=1.5\pslinewidth](0,4){A}(0,0){B}(3,0){C}
\end{pspicture}
导致第二个元素中断,但是,如果我只有两个第二个元素,则不会出现问题。删除\pstMarkAngle
第一个环境的行似乎可以解决问题。
因此,我的问题很简单,如何使用pstMarkAngle
而不破坏后续pspicture
环境?
编辑:完整示例
\documentclass{article}
\usepackage{pst-eucl}
\begin{document}
\begin{enumerate}[(a)]
\item
\begin{enumerate}[(i)]
\item
\begin{center}
\begin{pspicture}(-3,-3)(3,3)
\pstGeonode[PointName=none](0, 0){O}
\pstGeonode[PointSymbol=none, PointName=N](1, 0.66){N}
\pstGeonode[PointSymbol=none, PointName=B](-1, 1){B}
\pstGeonode[PointSymbol=none, PointName=W](0, -2){W}
\pstLineAB[linecolor=black]{O}{N}
\pstLineAB[linecolor=black]{O}{B}
\pstLineAB[linecolor=black]{O}{W}
\pstMarkAngle[Mark=none]{N}{O}{B}{}
\end{pspicture}
\end{center}
\item
\begin{center}
\begin{pspicture}(3,5)
\pstTriangle[PointSymbol=none, linecolor=black, linewidth=1.5\pslinewidth]
(0,4){A}(0,0){B}(3,0){C}
\end{pspicture}
\end{center}
\end{enumerate}
\end{enumerate}
\end{document}
出现以下错误:
GPL Ghostscript 9.05: Unrecoverable error, exit code 1
** WARNING ** Filtering file via command -->rungs -q -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -sOutputFile='/var/folders/ry/zcbxz44d46j7w58g2cvh8vf40000gp/T//dvipdfmx.NEz14AXD' '/var/folders/ry/zcbxz44d46j7w58g2cvh8vf40000gp/T//dvipdfmx.EXaHSm0G' -c quit<-- failed.
** WARNING ** Image format conversion for PSTricks failed.
** WARNING ** Interpreting special command pst: (ps:) failed.
** WARNING ** >> at page="1" position="(275.731, 343.294)" (in PDF)
** WARNING ** >> xxx "pst: tx@Dict begin STP newpath /ArrowA { moveto } def /ArrowB "
** WARNING ** 7 memory objects still allocated
You may want to report this to [email protected]
第二个元素pspicture
没有被渲染。删除该\pstMarkAngle
元素可以解决问题。
更新:使用 latex 代替 XeLaTeX 是可行的。我想我安装的 XeLaTeX(TeXLive 2012 附带)有问题。
答案1
以下文档按预期运行并且未产生任何错误消息:
\documentclass{article}
\usepackage{enumitem}
\usepackage{pst-eucl}
\begin{document}
\begin{enumerate}[label=(\alph*)]
\item
\begin{enumerate}[label=(\roman*)]
\item First diagram
\hspace*{\fill}
\begin{pspicture}[shift=-3,showgrid=true](-3,-3)(3,3)
\pstGeonode[PointName=none](0, 0){O}
\pstGeonode[PointSymbol=none, PointName=N](1, 0.66){N}
\pstGeonode[PointSymbol=none, PointName=B](-1, 1){B}
\pstGeonode[PointSymbol=none, PointName=W](0, -2){W}
\pstLineAB[linecolor=black]{O}{N}
\pstLineAB[linecolor=black]{O}{B}
\pstLineAB[linecolor=black]{O}{W}
\pstMarkAngle[Mark=none]{N}{O}{B}{}
\end{pspicture}
\hspace*{\fill}
\item Second diagram
\hspace*{\fill}
\begin{pspicture}[shift=-2,showgrid=true](3,5)
\pstTriangle[PointSymbol=none, linecolor=black, linewidth=1.5\pslinewidth]
(0,4){A}(0,0){B}(3,0){C}
\end{pspicture}
\hspace*{\fill}
\end{enumerate}
\end{enumerate}
\end{document}
我改变了几件事。
- 我去掉了居中。这样会创建额外的垂直空间,而你可能真的不想要或不需要它。
pstricks
附带一个shift=<num>
键,可让你重置基线pspicture
。 - 如果要将图片置于页面中央,我只需使用
\hspace*{\fill}
两侧即可。虽然从技术上讲,这是在当前图片内居中的,\linewidth
而当前图片已通过枚举环境创建的缩进向右移动。 - 相比你之前使用的任何软件包,我更喜欢这个软件包
enumitem
。它的键更明确、更有意义。 - 我还用它
showgrid=true
来帮助说明图片中所有物体的定位。
它看起来是这样的: