为什么 \rput(0,0) 会平移我的图片?

为什么 \rput(0,0) 会平移我的图片?

使用 rput 时,我注意到它放错了我的对象。通过测试,我发现了两种奇怪的行为:

  1. \rput(0,0) { object }稍微移动我的对象。对以下代码执行 latex:

    \documentclass{article}
    \usepackage{pst-all}
    \begin{document}
    \psset{xunit=.5pt,yunit=.5pt,runit=.5pt}
    \begin{pspicture}(350,150)
    \rput(0,0) {
    \pscustom[linestyle=none,fillstyle=solid,fillcolor=green]
    {
    \newpath
    \moveto(75,150)
    \lineto(65,125)
    \lineto(75,135)
    \lineto(85,125)
    \closepath
    }
    }
    \pscustom[linestyle=none,fillstyle=solid,fillcolor=red]
    {
    \newpath
    \moveto(75,150)
    \lineto(65,125)
    \lineto(75,135)
    \lineto(85,125)
    \closepath
    }
    \end{pspicture}
    \end{document}   
    

    在绿色箭头上方产生了红色箭头,但可以看到绿色箭头稍微错位了。

  2. \rput(0,0) { { object } }移动得更远。例如:

    \documentclass{article}
    \usepackage{pst-all}
    \begin{document}
    \psset{xunit=.5pt,yunit=.5pt,runit=.5pt}
    \begin{pspicture}(350,150)
    \rput(0,0) {
    {
    \pscustom[linestyle=none,fillstyle=solid,fillcolor=green]
    {
    \newpath
    \moveto(75,150)
    \lineto(65,125)
    \lineto(75,135)
    \lineto(85,125)
    \closepath
    }
    }
    }
    \pscustom[linestyle=none,fillstyle=solid,fillcolor=red]
    {
    \newpath
    \moveto(75,150)
    \lineto(65,125)
    \lineto(75,135)
    \lineto(85,125)
    \closepath
    }
    \end{pspicture}
    \end{document}   
    

latex --version给出:

    pdfTeX 3.14159265-2.6-1.40.15 (TeX Live 2014/Arch Linux)
    kpathsea version 6.2.0

这是为什么?如何解决?

答案1

使用 `

\rput(...){%
  ... %
} 

无需额外空格!例如:

\rput(0,0){%
\pscustom[linestyle=none,fillstyle=solid,fillcolor=green]
{
\newpath
\moveto(75,150)
\lineto(65,125)
\lineto(75,135)
\lineto(85,125)
\closepath
}%
}

否则,您会得到两个不需要的空格。\pscustom本身会删除空格,但的参数\rput将作为默认 TeX 处理并将保留空格。

答案2

使用左锚点

\rput[Bl] (0,0) { 
    (...)
}

可以解决问题(tl并且bl也可以代替Bl)。

还可以删除不必要的空格,例如

\rput(...){%
    ... %
}

解决了这个问题,但在包含外部文件时并不方便,因为外部文件必须不包含多余的空格。

相关内容