在哪里可以找到如何使用 \pstVerb 和 tx@addDict 的详细说明

在哪里可以找到如何使用 \pstVerb 和 tx@addDict 的详细说明

我正在使用Pstricks和绘制一些设置pst-optexp

我想知道以下示例的含义。另外,我找不到如何使用\pstVerb和的详细说明tx@addDict

\multido{\i=0+1}{60}{%
\pstVerb{%
\i\space 650 400 sub 59 div mul 400 add
tx@addDict begin wavelengthToRGB end }%
\drawbeam[beamangle=\i\space 0.1 mul 3 sub]{2-}%
}%

答案1

\pstVerb{...} - 参数以逐字 PostScript 形式包含,未按(g)save和分组(g)restore。当前点应为 TeX 的当前点。

\i\space - 需要获取循环变量后面有一个空格

tx@addDict begin ... end - 需要使用特殊的 PostScript 字典,在本例中是来自pstricks-add

您可以在包文档中找到更多示例

答案2

诚然,从教学角度来看,这不是最好的例子。这是另一个版本,带有一些额外的解释。你的代码片段中缺少的是颜色定义,这就是所有这些\pstVerb东西的原因:

\documentclass[pstricks, margin=5pt]{standalone}
\usepackage{pst-optexp}
\begin{document}
\begin{pspicture}(3,3)
  \pnodes(-1,0){A}(1,2.2){B}(3,0){C}
  \optplane(0,2.15)
  \optprism[prismalign=center, prismangle=59](A)(B)(C)
  \optplane(C)
  \definecolor[ps]{bl}{rgb}{%
    tx@addDict begin tx@OptexpDict begin
      Wavelength wavelengthToRGB 
      Red Green Blue 
    end end }%
  \addtopsstyle{Beam}{linecolor=bl, linewidth=0.4\pslinewidth, beamalign=abs}
  \multido{\iLambda=400+4}{60}{%
    \pstVerb{/Wavelength \iLambda\space def }%
    \drawbeam[n=Wavelength Sellmaier]{-}%
  }%
\end{pspicture}
\end{document}

该语法\definecolor[ps]...允许您使用在 Postscript 级别计算的一些值来进行实际的颜色定义(请参阅xcolor 文档)。在您的示例中,值RedGreenBlue会在每次迭代中重新计算,并使用它们的值绘制以下光束。

在我改变的版本中,它可能会(也可能不会)变得更加明显:在每次迭代中,我定义一个新的Wavelength,然后用于计算下一束光的新折射率和新的颜色三元组。

在此处输入图片描述

相关内容