在 pst-optexp 中使用 \drawbeam 时出现奇怪的空白

在 pst-optexp 中使用 \drawbeam 时出现奇怪的空白

在我使用 进行绘图时pst-optexp,我发现当\drawbeam\pstVerbtx@addDict一起使用时会出现奇怪的空白。以下是我索赔的最小重现代码:

\documentclass{standalone}
\usepackage{pst-optexp}

\begin{document}

\begin{pspicture}(1.8,-0.1)(5,2.3)
\pnodes(2,1){A}(3,1){B}
\lens[n=2, lensradius=4 4, lensheight=2](A)(B){}
\definecolor[ps]{bl}{rgb}{%
tx@addDict begin Red Green Blue end}%
\addtopsstyle{Beam}{linecolor=bl, beaminside=false}
\multido{\r=-0.8+0.005}{321}
    {
    \pstVerb{\r\space 550 400 sub mul 550 add tx@addDict begin wavelengthToRGB end}
    \drawbeam[beampos=\r](A){}(B)
    }
\end{pspicture}

\end{document} 

生成的 PDF 如下所示,请注意右侧不需要的空格: 在此处输入图片描述

但是,如果我不使用\pstVerband tx@addDict\drawbeam则不会出现空格。这是另一段代码,与上一段相比略有变化:

\documentclass{standalone}
\usepackage{pst-optexp}

\begin{document}

\begin{pspicture}(1.8,-0.1)(5,2.3)
\pnodes(2,1){A}(3,1){B}
\lens[n=2, lensradius=4 4, lensheight=2](A)(B){}

\addtopsstyle{Beam}{linecolor=green, beaminside=false}
\multido{\r=-0.8+0.005}{321}
    {
    \drawbeam[beampos=\r](A){}(B)
    }
\end{pspicture}

\end{document} 

结果是这样的,这很有道理: 在此处输入图片描述

因此我得出结论,使用不同的颜色绘制射线会导致额外的不必要的空白。

我的问题是:这是怎么发生的?我可以使用不同的颜色来绘制不同的射线,而不会出现不必要的空白吗?

我感谢您的关注并提前致谢。

答案1

%您必须在以下开括号处添加注释字符\multido

\documentclass{standalone}
\usepackage{pst-optexp}

\begin{document}

\begin{pspicture}(1.8,-0.1)(5,2.3)
\pnodes(2,1){A}(3,1){B}
\lens[n=2, lensradius=4 4, lensheight=2](A)(B){}
\definecolor[ps]{bl}{rgb}{%
tx@addDict begin Red Green Blue end}%
\addtopsstyle{Beam}{linecolor=bl, beaminside=false}
\multido{\r=-0.8+0.005}{321}
    {% <--
    \pstVerb{\r\space 550 400 sub mul 550 add tx@addDict begin wavelengthToRGB end}%
    \drawbeam[beampos=\r](A){}(B)}
\end{pspicture}
\end{document}

许多 PSTricks 宏,也\drawbeam抑制尾随空格,但是\pstVerb却不行。

在此处输入图片描述

我建议您将整个 pst-optexp 命令包装在optexp环境中。这会将组件轮廓移动到梁的顶部:

\documentclass{standalone}
\usepackage{pst-optexp}

\begin{document}

\begin{pspicture}(1.8,-0.1)(5,2.3)
\pnodes(2,1){A}(3,1){B}
\definecolor[ps]{bl}{rgb}{%
tx@addDict begin Red Green Blue end}%
\addtopsstyle{Beam}{linecolor=bl, beaminside=false}
\begin{optexp}
  \lens[n=2, lensradius=4 4, lensheight=2](A)(B){}
  \multido{\r=-0.8+0.005}{321}
      {% <--
      \pstVerb{\r\space 550 400 sub mul 550 add tx@addDict begin wavelengthToRGB end}%
      \drawbeam[beampos=\r](A){}(B)}
  \end{optexp}
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容