为什么我需要%
在 的左花括号后插入{
,multido
而不是在 的右花括号后}
插入\pstVerb
?在我的思维模型中,调用后存在不必要的空格,因此必须通过在 之后附加\pstVerb
来删除它们。%
}
\pstVerb
\documentclass[pstricks,border=24pt]{standalone}
\usepackage{multido}
\begin{document}
\begin{pspicture}[dimen=m](8,8)
\multido{\ix=1+1,\ic=97+1}{8}
{% <-- this comment is necessary but I don't understand why.
\pstVerb{/hx \ix\space .5 sub def}
\uput[d](!hx 0){$\char\ic\mathstrut$}
\uput[l](!0 hx){$\ix\mathstrut$}
\multido{\iy=1+1,\io=\ix+1}{8}
{
\psframe[origin={\ix,\iy},fillstyle=\ifodd\io solid\else vlines\fi,hatchsep=.5pt,hatchcolor=lightgray](-1,-1)
\rput(!hx \iy\space .5 sub){$(\iy,\ix)$}
}
}
\end{pspicture}
\end{document}
答案1
每个声明为 PSTricks 对象的宏,例如
\def\xyz{\pst@object{xyz}}
\def\xyz@i{%
...%
}
将杀死所有前面的粘连。\pstVerb
不是 PSTricks 对象,或者简而言之:它是一个普通的 TeX 宏,并且\psframe
是这样的对象。
简短版本:
\documentclass[pstricks,border=24pt]{standalone}
\usepackage{multido}
\begin{document}
\begin{pspicture}[dimen=m](8,8)
\multido{\ix=1+1,\rx=0.5+1.0,\ic=97+1}{8}{%
\uput[d](\rx,0){$\char\ic\mathstrut$}
\uput[l](0,\rx){$\ix\mathstrut$}
\multido{\iy=1+1,\ry=0.5+1.0,\io=\ix+1}{8}{%
\psTextFrame[fillstyle=\ifodd\io solid\else none\fi,fillcolor=lightgray]%
(\ix,\iy)(!\ix\space 1 sub \iy\space 1 sub){$(\iy,\ix)$}}}
\end{pspicture}
\end{document}