使用 \pstMarkAngle 时,多个 pspicture 环境会中断

使用 \pstMarkAngle 时,多个 pspicture 环境会中断

我遇到了一个相当奇怪的问题。如果我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}

我改变了几件事。

  1. 我去掉了居中。这样会创建额外的垂直空间,而你可能真的不想要或不需要它。 pstricks附带一个shift=<num>键,可让你重置基线pspicture
  2. 如果要将图片置于页面中央,我只需使用\hspace*{\fill}两侧即可。虽然从技术上讲,这是在当前图片内居中的,\linewidth而当前图片已通过枚举环境创建的缩进向右移动。
  3. 相比你之前使用的任何软件包,我更喜欢这个软件包enumitem。它的键更明确、更有意义。
  4. 我还用它showgrid=true来帮助说明图片中所有物体的定位。

它看起来是这样的:

在此处输入图片描述

相关内容