为什么我需要在 multido 的 { 之后而不是在 pstVerb 的 } 之后附加 %?

为什么我需要在 multido 的 { 之后而不是在 pstVerb 的 } 之后附加 %?

为什么我需要%在 的左花括号后插入{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}

相关内容