是什么让 showgrid=true 或 showgrid=top 将我的剪辑移到右侧?

是什么让 showgrid=true 或 showgrid=top 将我的剪辑移到右侧?

以下代码虽然简单,但对于展示问题来说却很重要。当我激活showgridwithtruetop选项时,我的图形对象会向右移动,如以下动画所示。

在此处输入图片描述

\documentclass[pstricks,border=12pt]{standalone}

\def\Atom{\psframe(1,2)(2,3)}

\begin{document}

% NO problem WITHOUT showgrid or with showgrid=bottom
\begin{pspicture}[showgrid=bottom](2,4)
    \begin{psclip}{\Atom}
        \psframe*(2,4)
    \end{psclip}
\end{pspicture}

% get shifted to the right with showgrid=true or showgrid=top
\begin{pspicture}[showgrid=true](2,4)
    \begin{psclip}{\Atom}
        \psframe*(2,4)
    \end{psclip}
\end{pspicture}

\end{document}

警告:

  • showgrid=true等于showgrid=top而不是showgrid=bottom
  • 第4页的声明pst-news12.pdf可能有误。

是什么造成了这种位移?

答案1

使用此版本:http://texnik.dante.de/tex/generic/pstricks/pstricks.tex 其已修复该错误。

答案2

请注意我上面的评论:

什么会showgrid=top导致?它将\psgrid包括结尾环境pspicture。这可能是问题所在,因为最后绘制网格会导致所有内容发生移动……

该解决方案将产生一个正确的版本(首先绘制网格以设置一切正确,然后在最后绘制另一个网格以使其位于顶部):

\begin{pspicture}[showgrid=bottom](2,4)
    \begin{psclip}{\Atom}
        \psframe*(2,4)
    \end{psclip}
    \psgrid[style=gridstyle]
\end{pspicture}

末尾有一个空格

      \ifx#1t

在下面的代码片段中。

% -----------  hv 20120219 -------------------
\newpsstyle{gridstyle}{subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=8pt}
%\define@boolkey[psset]{pstricks}[]{showgrid}[true]{}
\newif\ifshowgrid
\define@key[psset]{pstricks}{showgrid}[b]{\pst@@showgrid#1\@nil}
\def\pst@@showgrid#1#2\@nil{%
  \ifx#1b\showgridtrue\def\showgridp@s{0}\else%            bottom
    \ifx#1f\showgridfalse\else
      \ifx#1t
        \ifx#2r\showgridtrue\def\showgridp@s{0}\else%      true->bottom
               \showgridtrue\def\showgridp@s{1}\fi%        top
  \fi\fi\fi%
}

相关内容