O que faz showgrid=true ou showgrid=top deslocar meu clipe para a direita?

O que faz showgrid=true ou showgrid=top deslocar meu clipe para a direita?

O código a seguir é trivial, mas importante para mostrar o problema. Quando eu ativo a opção showgridwith trueou top, meu objeto gráfico é deslocado para a direita, conforme mostrado na animação a seguir.

insira a descrição da imagem aqui

\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}

Aviso:

  • showgrid=trueé igual a showgrid=topem vez de showgrid=bottom.
  • A declaração na página 4 pst-news12.pdfpode ter sido digitada incorretamente.

O que causa esse deslocamento?

Responder1

use esta versão:http://texnik.dante.de/tex/generic/pstricks/pstricks.tex Tem uma correção de bug para isso.

Responder2

Observe meu comentário acima:

A que isso showgrid=topleva? Incluirá \psgridnofimdo pspictureambiente. Este pode ser o problema, já que tudo muda desenhando a grade bem no final...

Esta solução produzirá uma versão correta (desenhe a grade primeiro para acertar tudo e desenhe outra no final para colocá-la no topo):

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

Há um espaço em branco no final de

      \ifx#1t

no seguinte trecho de código.

% -----------  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%
}

informação relacionada