\psTextFrame[origin={x,y}](0,0)(1,1){content}
确实会将其框架的中心滑动到(x,y)
但内容仍保留在(0.5,0.5)
。这是错误还是功能?
\documentclass{article}
\usepackage{pstricks}
\psset{unit=1cm}% default unit
%\newcommand\mybox[3]{\rput(#1,#2){\psTextFrame[dimen=outer](0,0)(1,1){#3}}}
\newcommand\mybox[3]{\psTextFrame[origin={#1,#2},dimen=outer](0,0)(1,1){#3}}
\begin{document}
\pspicture[showgrid=false](3,3)
\mybox{1}{2}{A} \mybox{2}{2}{B}
\mybox{0}{1}{A} \mybox{1}{1}{0} \mybox{2}{1}{1}
\mybox{0}{0}{B} \mybox{1}{0}{1} \mybox{2}{0}{0}
\endpspicture
\end{document}
附加问题:为了解决这个问题,我不得不使用\rput
(参见上面代码片段中的注释行)。但是,我注意到框之间有一些白色间隙(用红色圆圈标记),如下所示。绿色圆圈表示没有白色间隙。
答案1
origin
仅适用于定义为\pst@object
和
\psTextFrame
不是 的真实 PSTricks 对象。我无法在 avroread 中看到放大倍数为 6400 的线条行为。
答案2
\psTextFrame
可以通过用 来模拟\psframe
,并\parbox
用 置换\rput
。所以我自己的解决方案如下。
\documentclass{article}
\usepackage{pstricks}
\SpecialCoor
\psset{unit=1cm}% default unit
%\newcommand\mybox[3]{\rput(#1,#2){\psTextFrame[dimen=outer](0,0)(1,1){#3}}}
\newcommand\mybox[3]{
\psframe[origin={#1,#2},dimen=outer](0,0)(1,1)
\rput(!#1 0.5 add #2 0.5 add){#3}
}
\begin{document}
\pspicture[showgrid=false](3,3)
\mybox{1}{2}{A} \mybox{2}{2}{B}
\mybox{0}{1}{A} \mybox{1}{1}{0} \mybox{2}{1}{1}
\mybox{0}{0}{B} \mybox{1}{0}{1} \mybox{2}{0}{0}
\endpspicture
\end{document}
附加题答案:显然,在使用psTextFrame
和将小数传递给 时会出现间隙dvips -D<number>
。要消除间隙,请将 10000 传递给 dvips 或使用xelatex
。