在我使用 进行绘图时pst-optexp
,我发现当\drawbeam
、\pstVerb
和tx@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}
但是,如果我不使用\pstVerb
and 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}