以下代码虽然简单,但对于展示问题来说却很重要。当我激活showgrid
withtrue
或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%
}