Почему showgrid=true или showgrid=top смещают мой клип вправо?

Почему showgrid=true или showgrid=top смещают мой клип вправо?

Следующий код тривиален, но важен для демонстрации проблемы. Когда я активирую опцию showgridwith trueили top, мой графический объект смещается вправо, как показано в следующей анимации.

введите описание изображения здесь

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

Связанный контент