diff options
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/pst-optexp/Changes | 297 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst-optexp/pst-optexp-DE.pdf | bin | 1396238 -> 1426318 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst-optexp/pst-optexp-quickref.pdf | bin | 45373 -> 48073 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/pst-optexp/pst-optexp.pdf | bin | 1370218 -> 1402492 bytes | |||
-rw-r--r-- | Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro | 48 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx | 556 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins | 2 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/pst-optexp/pst-optexp.sty | 126 |
8 files changed, 684 insertions, 345 deletions
diff --git a/Master/texmf-dist/doc/latex/pst-optexp/Changes b/Master/texmf-dist/doc/latex/pst-optexp/Changes index 62c2eb3ac61..73fc741d4bd 100644 --- a/Master/texmf-dist/doc/latex/pst-optexp/Changes +++ b/Master/texmf-dist/doc/latex/pst-optexp/Changes @@ -1,170 +1,177 @@ +3.6 2013-03-20 + * Added option compoffset. + * Added option beampathskip. + * Added option innercompalign. + * Fixed some bugs in the raytracing and beam code. + 3.5 2013-02-22 - * Added option filterangle - * Fixed wrong output fiber style in \optcoupler - * Fixed strange Postscript error which occured with some + * Added option filterangle. + * Fixed wrong output fiber style in \optcoupler + * Fixed strange Postscript error which occured with some interpreters. 3.4 2013-02-03 - * Fixed bugs when using fillstyle for some components - * Extended option switchsize - * Modified coupler center node to be on the base line - * Extended error checking for \drawbeam and \drawfiber - * Fixed some bugs in the connection code + * Fixed bugs when using fillstyle for some components + * Extended option switchsize. + * Modified coupler center node to be on the base line. + * Extended error checking for \drawbeam and \drawfiber. + * Fixed some bugs in the connection code 3.3a 2012-09-18 - * Fixed bug which was exposed by an update of pst-node. - * Fixed trailing spaces. + * Fixed bug which was exposed by an update of pst-node. + * Fixed trailing spaces. 3.3 2012-08-17 - * Extended \opttripole and \optdipole - * Modified reference angle for label of \opttripole - * Added option optdipolesize to support two interfaces for - \optdipole - * Added option gratingalign - * Added option forcebeaminside - * Extended option mirrorradius - * Improved \drawbeam and \drawwidebeam to be able to use - ArrowInside without linestyle - * Fixed orientation of \oenodeBeamUp and \oenodeBeamLow - * Fixed a bug related to beaminside and ambiguous components. - * Fixed some trailing spaces - * Added more examples + * Extended \opttripole and \optdipole. + * Modified reference angle for label of \opttripole. + * Added option optdipolesize to support two interfaces for + \optdipole. + * Added option gratingalign. + * Added option forcebeaminside. + * Extended option mirrorradius. + * Improved \drawbeam and \drawwidebeam to be able to use + ArrowInside without linestyle. + * Fixed orientation of \oenodeBeamUp and \oenodeBeamLow. + * Fixed a bug related to beaminside and ambiguous components. + * Fixed some trailing spaces + * Added more examples. 3.2 2012-07-26 - * Added component \glanthompson - * Added access to beam vectors with \oeBeamVec, \oeBeamVecUp and - \oeBeamVecLow - * Fixed wrong computation of node distance in \fiberbox - * Fixed bug in \wdmsplitter for coupleralign=b and couplertype=none - * Fixed bug when filling components placed with position=end/start - * Added value absolute to parameter labelref - * Added examples + * Added component \glanthompson. + * Added access to beam vectors with \oeBeamVec, \oeBeamVecUp and + \oeBeamVecLow. + * Fixed wrong computation of node distance in \fiberbox + * Fixed bug in \wdmsplitter for coupleralign=b and + couplertype=none + * Fixed bug when filling components placed with position=end/start + * Added value absolute to parameter labelref. + * Added examples. 3.1 2012-07-17 - * Added component \fiberbox - * Extended connection macros to not required curly braces around - node parenthesis any more - * Modified \fibercollimator to have allowbeaminside=false by - default - * Extended fiber couplers to allow using only two nodes - * Fixed a bug concerning node expressions with \drawfiber + * Added component \fiberbox. + * Extended connection macros to not required curly braces around + node parenthesis any more. + * Modified \fibercollimator to have allowbeaminside=false by + default. + * Extended fiber couplers to allow using only two nodes. + * Fixed a bug concerning node expressions with \drawfiber 3.0 2012-07-09 - * Modified beam connections with \drawbeam to support raytracing - * Added wide beams with \drawwidebeam - * Added \drawfiber for fiber connections - * Added optexp environment for layering of components and - connections - * Added german documentation - * Modified naming of component nodes - * Modified extnode to work with more components - * Modified angle and rotateref to affect all components - * Modified endbox to affect all components - * Extended position by values start and end - * Extended abspos by values start and end - * Removed deprecated lens code which used lenswidth and lensheight - for construction - * Added option platesize - * Added option phwidth - * Modified option caxislength - * Deprecated option lampscale - * Added style CrystalCaxis - * Added style CrystalLamp - * Added option optboxsize - * Extended option detsize - * Added style DetectorStyle - * Removed deprecated \detector, use \optdetector - * Extended option doveprismsize - * Added style Polarization - * Deprecated option pollinewidth - * Removed option polwidth - * Removed option pol - * Added style VariableStyle - * Added mirror type semitrans - * Renamed \optgrid to \optgrating - * Renamed optgridwidth to gratingwidth - * Renamed optgridheight to gratingheight - * Renamed optgriddepth to gratingdepth - * Renamed optgridcount to gratingcount - * Renamed optgridtype to gratingtype - * Renamed optgridlinewidth to gratinglinewidth - * Added option prismalign - * Modified faulty alignment of \rightangleprism - * Extended option optampsize - * Extended option optmzmsize - * Added option polcontroltype - * Extended option isolatorsize - * Added style IsolatorArrow - * Extended option fdlsize - * Added style FdlArrow - * Extended option fiberpolsize - * Added component \optcirculator - * Extended option couplersize - * Extended option couplertype - * Renamed option align to coupleralign - * Added style VariableCoupler - * Added style FilterStyle - * Extended option fibercolsize - * Removed deprecated option labelrelative - * Removed deprecated option iwidth - * Removed deprecated option owidth - * Removed deprecated option bswidth - * Deprecated \newOptexpDipoleNolabel, use \newOptexpDipole - * Deprecated option refractiveindex - * Deprecated option conn - * Extended option fiber + * Modified beam connections with \drawbeam to support raytracing. + * Added wide beams with \drawwidebeam. + * Added \drawfiber for fiber connections. + * Added optexp environment for layering of components and + connections. + * Added german documentation + * Modified naming of component nodes. + * Modified extnode to work with more components. + * Modified angle and rotateref to affect all components. + * Modified endbox to affect all components. + * Extended position by values start and end. + * Extended abspos by values start and end. + * Removed deprecated lens code which used lenswidth and lensheight + for construction. + * Added option platesize. + * Added option phwidth. + * Modified option caxislength. + * Deprecated option lampscale. + * Added style CrystalCaxis. + * Added style CrystalLamp. + * Added option optboxsize. + * Extended option detsize. + * Added style DetectorStyle. + * Removed deprecated \detector, use \optdetector. + * Extended option doveprismsize. + * Added style Polarization. + * Deprecated option pollinewidth. + * Removed option polwidth. + * Removed option pol. + * Added style VariableStyle. + * Added mirror type semitrans. + * Renamed \optgrid to \optgrating. + * Renamed optgridwidth to gratingwidth. + * Renamed optgridheight to gratingheight. + * Renamed optgriddepth to gratingdepth. + * Renamed optgridcount to gratingcount. + * Renamed optgridtype to gratingtype. + * Renamed optgridlinewidth to gratinglinewidth. + * Added option prismalign. + * Modified faulty alignment of \rightangleprism. + * Extended option optampsize. + * Extended option optmzmsize. + * Added option polcontroltype. + * Extended option isolatorsize. + * Added style IsolatorArrow. + * Extended option fdlsize. + * Added style FdlArrow. + * Extended option fiberpolsize. + * Added component \optcirculator. + * Extended option couplersize. + * Extended option couplertype. + * Renamed option align to coupleralign. + * Added style VariableCoupler. + * Added style FilterStyle. + * Extended option fibercolsize. + * Removed deprecated option labelrelative. + * Removed deprecated option iwidth. + * Removed deprecated option owidth. + * Removed deprecated option bswidth. + * Deprecated \newOptexpDipoleNolabel, use \newOptexpDipole. + * Deprecated option refractiveindex. + * Deprecated option conn. + * Extended option fiber. 2.1 2009-11-05 - * Added component \optfiberpolarizer - * Added option compshift - * Added option label - * Added option connjoin - * Added options addtoBeam and newBeam - * Added style OptComp and related options addtoOptComp and - newOptComp - * Added option bsstyle - * Extended \fibercollimator to use up to four reference nodes - * Improved thicklens to work also with plain lenses - * Use pst-doc class for the documentation + * Added component \optfiberpolarizer. + * Added option compshift. + * Added option label. + * Added option connjoin + * Added options addtoBeam and newBeam. + * Added style OptComp and related options addtoOptComp and + newOptComp. + * Added option bsstyle. + * Extended \fibercollimator to use up to four reference nodes. + * Improved thicklens to work also with plain lenses. + * Use pst-doc class for the documentation 2.0 2008-07-27 - * Added fiber-optical components - * Added component \optdiode - * Added component \pentaprism - * Added component \rightangleprism - * Added component \doveprism - * Added component \optprism - * Added \drawbeam - * Added component connections (options fiber, conn and beam) - * Added option compname - * Added option extnode - * Renamed \detector to \optdetector + * Added fiber-optical components. + * Added component \optdiode. + * Added component \pentaprism. + * Added component \rightangleprism. + * Added component \doveprism. + * Added component \optprism. + * Added \drawbeam. + * Added component connections (options fiber, conn and beam). + * Added option compname. + * Added option extnode. + * Renamed \detector to \optdetector. 1.2 2008-06-17 - * Modified lens design to use interface curvatures - * Added options lensradiusleft and lensradiusright - * Added option thicklens - * Added option lenstype - * Added option mirrorradius (curved mirrors) - * Added option optgridtype (binary gratings) - * Added \newOptexpDipole - * Added \newOptexpDipoleNolabel - * Added \newOptexpTripole - * Added \newOptexpFiberDipole - * General improvements of \TeX{} and Postscript code + * Modified lens design to use interface curvatures. + * Added options lensradiusleft and lensradiusright. + * Added option thicklens. + * Added option lenstype. + * Added option mirrorradius (curved mirrors). + * Added option optgridtype (binary gratings). + * Added \newOptexpDipole. + * Added \newOptexpDipoleNolabel. + * Added \newOptexpTripole. + * Added \newOptexpFiberDipole. + * General improvements of \TeX{} and Postscript code 1.1 2007-09-06 - * Improved labeling features - * Added parameter labelref - * Replaced labelrelative by labelref=relative - * Renamed \polarisation to \polarization - * Renamed polwidth to polsize - * Renamed pol to poltype - * Renamed bswidth to bssize - * Renamed iwidth to innerheight - * Renamed owidth to outerheight - * Added support for fillstyle for all components + * Improved labeling features. + * Added parameter labelref. + * Replaced labelrelative by labelref=relative. + * Renamed \polarisation to \polarization. + * Renamed polwidth to polsize. + * Renamed pol to poltype. + * Renamed bswidth to bssize. + * Renamed iwidth to innerheight. + * Renamed owidth to outerheight. + * Added support for fillstyle for all components 1.0 2007-07-18 - * First CTAN version + * First CTAN version diff --git a/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp-DE.pdf b/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp-DE.pdf Binary files differindex 5ad8125d539..b27e3975a81 100644 --- a/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp-DE.pdf +++ b/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp-DE.pdf diff --git a/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp-quickref.pdf b/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp-quickref.pdf Binary files differindex 9e598a4033b..37f94c44fc7 100644 --- a/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp-quickref.pdf +++ b/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp-quickref.pdf diff --git a/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp.pdf b/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp.pdf Binary files differindex 1e5f0338935..ee4d54a8458 100644 --- a/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp.pdf +++ b/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp.pdf diff --git a/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro b/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro index 99236bc9f55..2c1e89865eb 100644 --- a/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro +++ b/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro @@ -9,7 +9,7 @@ %% This is a generated file. %% %% Project: pst-optexp -%% Version: 3.5 (2013/02/22) +%% Version: 3.6 (2013/03/20) %% %% Copyright (C) 2007-2013 by Christoph Bersch <usenet@bersch.net> %% @@ -491,7 +491,8 @@ tx@OptexpDict begin } if /IfcCntTmp IfcCnt def aload pop /draw ED /name ED - name cvn load /N get /N ED + name cvn load /N get dup /N ED + 1 eq { /draw true def } if currentdict /Curr known { /CurrTmp /Curr load def /CurrVecTmp /CurrVec load def @@ -511,18 +512,20 @@ tx@OptexpDict begin }{ CurrTmp name GetNearestPlane dup /firstPlane ED name isAmbiguousIfc not { - CurrVecTmp firstPlane name GetPlaneVec NormalVec - (C) name GetIfcCenter firstPlane name GetIfcCenter - @ABVect 2 copy 6 2 roll DotProd - 0 lt { trans }{ refl } ifelse - 3 1 roll ToVec /CurrVecTmp ED + firstPlane name + name firstPlane GetIfcMode + connectifc { bgRefIndex }{ name GetRefIndex } ifelse + CurrTmp CurrVecTmp + 10 dict begin HandleInterface end pop + ToVec /CurrVecTmp ED ToVec /CurrTmp ED [ firstPlane name connectifc { bgRefIndex }{ name GetRefIndex } ifelse - 5 -1 roll true ] cvx + name firstPlane GetIfcMode + true ] cvx /IfcCntTmp IfcCntTmp 1 add def } if PN IfcCnt eq { @@ -535,9 +538,15 @@ tx@OptexpDict begin name GetRefIndex CurrVecTmp (C) name GetPlaneVec NormalVec outToPlane GetIfcCenter (C) name GetIfcCenter @ABVect DotProd - 0 lt { trans } { refl } ifelse % mode + 0 lt { trans } { refl } ifelse + dup 6 1 roll IfcCntTmp IfcCnt eq { true }{ draw } ifelse ] cvx + (C) name 4 -1 roll + connectifc { bgRefIndex }{ name GetRefIndex } ifelse + CurrTmp CurrVecTmp + 10 dict begin HandleInterface end pop + ToVec /CurrVecTmp ED ToVec /CurrTmp ED name /outToPlane load GetNextPlane dup dup name isAmbiguousIfc exch 0 eq or not { [ exch name bgRefIndex trans draw ] cvx exch @@ -556,8 +565,9 @@ tx@OptexpDict begin /GetNextPlane { (GetNextPlane) DebugBegin 2 copy (C) 3 -1 roll - GetIfcCenter 3 -1 roll exec GetIfcCenter - 4 2 roll 4 copy @ABVect /VecY ED /VecX ED + GetIfcCenter 3 -1 roll + exec GetIfcCenter + 4 2 roll 4 copy @ABVect ToVec /Vec ED @ABDist /centerDist ED /sprod 1 def /nextPlane 0 def @@ -565,8 +575,8 @@ tx@OptexpDict begin cvn load dup /ambIfc get /ambIfc ED /N get 1 1 3 -1 roll { dup ambIfc eq not { 3 copy 3 -1 roll 2 copy - GetPlaneVec VecX VecY 4 2 roll NormalVec - VecX VecY DotProd dup sprod lt 5 2 roll + GetPlaneVec Vec 4 2 roll NormalVec + Vec DotProd dup sprod lt 5 2 roll GetIfcCenter 3 -1 roll exec GetIfcCenter @ABDist centerDist lt and { /sprod ED /nextPlane ED } { pop pop } ifelse @@ -650,7 +660,7 @@ tx@OptexpDict begin } ifelse 2 copy ToVec /Curr ED - draw PN skipconn 1 add gt and + draw PN beampathskip 1 add gt and counttomark 3 roll /PrevCenter /CurrCenter load def /lastBeamPointTmp /Curr load def @@ -744,7 +754,7 @@ tx@OptexpDict begin PushAmbCompPlanesOnStack } if exec - PN skipconn 1 add gt and /draw ED + PN beampathskip 1 add gt and /draw ED /Mode ED /n2 ED 2 copy /CompName ED /IfcNum ED GetIfcCenter ToVec /CurrPCenter ED /oldn1 n1 def @@ -1033,6 +1043,9 @@ tx@OptexpDict begin } if AdjustRelRot } { + i 2 eq { + CompB amb CompA desc AdjustRelRot + } if pop amb dup } ifelse CompB /CompA CompB def @@ -1152,6 +1165,11 @@ tx@OptexpDict begin } ifelse (P@) exch strcat cvn } bind def +/GetIfcMode { + exch cvn load begin + IfcName load /mode get + end +} bind def /NodeName { dup /stringtype eq not { inttostr } if strcat (N@) exch strcat cvn diff --git a/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx b/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx index 0c09624c4b1..89536791ff1 100644 --- a/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx +++ b/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx @@ -18,7 +18,7 @@ %<stylefile>\NeedsTeXFormat{LaTeX2e}[1999/12/01] %<stylefile>\ProvidesPackage{pst-optexp} %<*stylefile> - [2013/02/22 v3.5 Optical experimental setups with PSTricks] + [2013/03/20 v3.6 Optical experimental setups with PSTricks] %</stylefile> % %<*driver> @@ -118,20 +118,31 @@ newOptexpDipole, newOptexpTripole, newOptexpFiberDipole,optplane}, % explpreset={% pos=l, width=-99pt, hsep=5mm, overhang=\codeoverhang, varwidth, - vsep=\bigskipamount, rframe={}}, extendedchars=true, } + vsep=\bigskipamount, rframe={}}, extendedchars=true +}% \lstdefinestyle{example}{explpreset={% escapechar=*, pos=l, width=-99pt, hsep=5mm, overhang=\codeoverhang, - varwidth, vsep=\bigskipamount, rframe={}}} \makeatletter + varwidth, vsep=\bigskipamount, rframe={}}} +\makeatletter \providecommand\ON{% \gdef\lst@alloverstyle##1{\textcolor{black!50}{\strut##1}% - }} \providecommand\OFF{\xdef\lst@alloverstyle##1{##1}} \makeatother +}} +\providecommand\OFF{\xdef\lst@alloverstyle##1{##1}} +\makeatother \colorlet{sectioncolor}{DOrange} \addtokomafont{sectioning}{\color{sectioncolor}} -\usepackage[automark,nouppercase]{scrpage2} \pagestyle{scrheadings} -\clearscrheadings \clearscrplain \ohead{\pagemark} \ihead{\headmark} -\ofoot[\pagemark]{} \automark[subsection]{section} -\setheadsepline{.4pt}[\color{DOrange}] \setheadwidth[0pt]{text} -\setfootwidth[0pt]{text} \makeatletter +\usepackage[automark,nouppercase]{scrpage2} +\pagestyle{scrheadings} +\clearscrheadings +\clearscrplain +\ohead{\pagemark} +\ihead{\headmark} +\ofoot[\pagemark]{} +\automark[subsection]{section} +\setheadsepline{.4pt}[\color{DOrange}] +\setheadwidth[0pt]{text} +\setfootwidth[0pt]{text} +\makeatletter \patchcmd{\l@chapter}{1.5em}{2em}{}{} \renewcommand*\l@section{\bprot@dottedtocline{1}{1.5em}{3.0em}} \renewcommand*\l@subsection{\bprot@dottedtocline{2}{3.8em}{4.0em}} @@ -139,11 +150,14 @@ \def\ltd@fnurl#1#2{\footnote{#1\hyper@linkurl{\Hurl{#2}}{#2}}} \newrobustcmd*{\arxivurl}[1]{\href{http://arxiv.org/abs/#1}{arXiv:#1}} \newrobustcmd*{\doiurl}[1]{\href{http://dx.doi.org/#1}{DOI:#1}} -\makeatother \usepackage{csquotes} \MakeAutoQuote{«}{»} +\makeatother +\usepackage{csquotes} +\MakeAutoQuote{«}{»} %^^A spot is used in ltxdockit.sty \colorlet{spot}{sectioncolor} \newpsstyle{Refline}{linecolor=gray!70} \newpsstyle{CenterNode}{linecolor=blue, dotstyle=x, dotscale=1.5} +\psset[optexp]{usefiberstyle} \colorlet{Refline}{gray!70} %^^A Fonts definitions used in ltxdockit.sty \renewcommand*{\verbatimfont}{\ttfamily} @@ -464,7 +478,7 @@ % \DoNotIndex{\newcommand,\newenvironment,\def,\edef,\let,\if,\ifx,\else,\fi,\@ifnextchar} % \DoNotIndex{\space,\relax,\nr,\val,\ignorespaces,\ifdim,\ifcat,\@nil,\@none,\@empty} % \DoNotIndex{\PackageError,\PackageWarning,\advance,\csname,\endcsname,\bgroup,\egroup} -% \DoNotIndex{\expandafter,\@@comp,\@postcode} +% \DoNotIndex{\expandafter,\POE@comp,\@postcode} % \DoNotIndex{\psset} % \DoNotIndex{\@wd,\@sz,\@ht,\@yshift,\@step,\@xl,\@sep,\@r,\@dp,\@altan,\@extpostcode} % \DoNotIndex{\@f@cnt,\@f@r,\@f@sep,\@hshift,\@bs@wd,\@c@caxisL,\@cnt,\@pstfalse,\@psttrue} @@ -2192,6 +2206,72 @@ % \iffalse %</ignore> % \fi +% +% \numitem[0]{compoffset} +% \ifGERMAN Verschiebt eine Komponente vertikal bezüglich ihrer +% Referenzlinie (siehe \prettyref{sec:refnode}). Reflektierende +% Komponenten werden entlang der reflektiven Grenzfläche verschoben. Die +% Verschiebung erfolgt also senkrecht zu einer Verschiebung mit +% \Lkeyword{compshift}. Ein Anwendungsbeispiel ist +% \prettyref{ex:autocorrelation}. +% \fi +% \ifENGLISH +% Shift a component perpendicular to its reference line (see +% \prettyref{sec:refnode}). For reflective components it is shifted +% along the reflective interface. The displacement is vertical to a +% displacement with \Lkeyword{compshift}. For an example see +% \prettyref{ex:autocorrelation}. +% \fi +% \iffalse +%<*ignore> +% \fi +\begin{LTXexample}[linerange={1-3,9-9}, morekeywords={[21]{compshift}}] +\begin{pspicture}(3,2) + \pnode(0,1){A}\pnode(2.7,1){B} + \lens[compoffset=0.3](A)(B){L} + \psline[style=Refline](\oenodeRefA{})(\oenodeRefB{}) + \psdot(\oenodeRefA{})\uput[-90](\oenodeRefA{}){RefA} + \psdot(\oenodeRefB{})\uput[-90](\oenodeRefB{}){RefB} + \psdot[style=CenterNode](\oenodeIn{}) + \psdot[style=CenterNode](\oenodeOut{}) +\end{pspicture} +\end{LTXexample} +\begin{LTXexample}[linerange={1-3,9-9}, morekeywords={[21]{compshift}}] +\begin{pspicture}(3,2) + \pnode(0,1){A}\pnode(2,0){B} + \mirror[compoffset=0.3](A)(2,1)(B){mirror} + \psline[style=Refline](\oenodeRefA{})(\oenodeRefB{}|\oenodeRefA{})(\oenodeRefB{}) + \psdot(\oenodeRefA{})\uput[-90](\oenodeRefA{}){RefA} + \psdot(\oenodeRefB{})\uput[180](\oenodeRefB{}){RefB} + \psdot[style=CenterNode](\oenodeIn{}) + \psdot[style=CenterNode](\oenodeOut{}) +\end{pspicture} +\end{LTXexample} +% \iffalse +%</ignore> +% \fi +% \choitem{innercompalign}{rel, relative, abs, absolute} +% \ifGERMAN Ist dieser Parameter auf \opt{absolute} gesetzt, so wird das +% «Innere» einer Komponente nicht mitgedreht. Diese Option wird derzeit +% nur von \Lcs{optfilter} verwendet. +% \fi +% \ifENGLISH If this parameter is set to \opt{absolute}, the «inner» +% component part is not rotated with the component. At the moment, this +% option is used only by \Lcs{optfilter}. +% \fi +% \iffalse +%<*ignore> +% \fi +\begin{LTXexample} +\begin{pspicture}(3,2) +\psset[optexp]{labelangle=-90, position=start} +\optfilter[innercompalign=rel](0.5,1.2)(0.5,2){rel} +\optfilter[innercompalign=abs](2.5,1.2)(2.5,2){abs} +\end{pspicture} +\end{LTXexample} +% \iffalse +%</ignore> +% \fi % \end{optionlist} % % @@ -3931,7 +4011,6 @@ % werden anders ausgerichtet. % \fi % -% \psset{usefiberstyle} % \begin{optionlist} % \boolitem{usefiberstyle} % \ifGERMAN @@ -4926,8 +5005,13 @@ % \fi % % \numitem[0]{filterangle} -% \ifGERMAN Dreht das «Innere» des Filters relativ zum seinem Rahmen.\fi -% \ifENGLISH Rotates the «inner» part of the filter relativ to its frame.\fi +% \ifGERMAN Dreht das «Innere» des Filters relativ zum seinem +% Rahmen. Anstattdessen kann auch \Lkeyword{innercompalign} verwendet +% werden. +% \fi +% \ifENGLISH Rotates the «inner» part of the filter relativ to its +% frame. Alternatively \Lkeyword{innercompalign} can be used. +% \fi % \iffalse %<*ignore> % \fi @@ -6751,6 +6835,37 @@ %</ignore> % \fi % +% \numitem[0]{beampathskip} +% \ifGERMAN +% Überspringt \prm{num} Segmente am Anfang des Strahlengangs. +% \fi +% \ifENGLISH +% Skip \prm{num} segments at the beginning of the beam path. +% \fi +% \iffalse +%<*ignore> +% \fi +\begin{LTXexample}[morekeywords = {[21]{beampathskip}}, pos=t] +\begin{pspicture}(5,2) +\pnode(0,1){A}\pnode(5,1){B}\pnode(2,0){C} +\begin{optexp} + \glanthompson(A)(B) + \optplane(B)\optplane[angle=90](C) + \polarization[abspos=1, poltype=misc, linecolor=yellow!80!black](A)(B) + \drawbeam[beaminsidelast, linecolor=yellow!80!black](A){1} + \drawbeam[beampathskip=2](A){1-2} + \drawbeam[beampathskip=2, savebeam, linestyle=dashed, dash=2pt 2pt, linecolor=red,arrowscale=1.5, arrows=->](A){1}{3} +\end{optexp} +\nodexn{(\oenodeBeam{})-1.5(!\oeBeamVec{})}{D} +\polarization[poltype=parallel, linecolor=red](D)(\oenodeBeam{}) +\polarization[abspos=4, poltype=perp, linecolor=green, dotscale=1.5](A)(B) +\end{pspicture} +\end{LTXexample} +% \iffalse +%</ignore> +% \fi +% \end{optionlist} +% % \ifGERMAN\subsection{Interner Strahlengang}\fi % \ifENGLISH\subsection{Internal beam path}\fi % @@ -6766,7 +6881,8 @@ % werden, kann mit mehreren Parametern festgelegt werden. Die erste, letzte und % die übrigen Komponenten werden separat gehandhabt. % \fi -% +% +% \begin{optionlist} % \boolitem[true]{beaminside} % \ifGERMAN % Zeichnet den Strahlengang innerhalb aller Komponenten mit Ausnahme der @@ -9529,6 +9645,39 @@ \end{LTXexample} \endgroup +\begingroup +\captionsetup[lstlisting]{format=poecaption} +\begin{LTXexample}[pos=t, caption={\ifGERMAN Angepasst von \fi\ifENGLISH Adapted from \fi\doiurl{10.1364/AOP.1.000308}, \ifGERMAN Abb. \fi\ifENGLISH Fig. \fi 8}, label={ex:autocorrelation}] +\begin{pspicture}(5.7,2.8) +\psset{mirrorwidth=0.7, bsstyle=plate, bssize=0.5, arrowinset=0, arrowscale=1.2} +\newpsobject{splitterplate}{beamsplitter}{linewidth=2\pslinewidth, linecolor=gray!50} +\pnode(2.3,0){In}\pnode([offset=0.5]In){STM1} +\pnode([Xnodesep=-2]STM1){M1}\pnode([offset=1]M1){M2} +\pnode([offset=2]STM1){M3}\pnode([Xnodesep=-1]M3){M4} +\pnode(M4|M2){STM2} +\splitterplate(In)(STM1)(M1) +\mirror(STM1)(M1)(M2) +\mirror(M1)(M2)(M3|M2) +\mirror(STM1)(M3)(M4) +\mirror[label=0.6 180 . absolute](M3)(M4)(STM2) +\rput[r](\oenodeLabel{}){$\tau$ + \psline[arrows=<->](0.15, 0.4)(0.15, -0.2)} +\splitterplate[compoffset=0.2, compname=STM2](M4)(STM2)([Xnodesep=1]STM2) +\pnode(\oenodeCenter{STM2}){STM2C} +\pnode([Xnodesep=4]STM2C){Out} +\lens[n=2](STM2C)(Out) +\optbox[position=0.65, optboxsize=0.1 0.6](STM2C)(Out) +\optplate[linestyle=none, position=0.75](STM2C)(Out) +\pinhole[position=0.95, outerheight=0.6](STM2C)(Out) +\optdetector[detsize=0.5 0.6](STM2C)(Out) +\drawbeam[linecolor=blue]{8-} +\newpsstyle{Beam}{ArrowInside=->, linecolor=red, ArrowInsideMinLength=1, arrows=>-} +\drawbeam[ArrowInsidePos=0.835](In){1-3}{7-9} +\drawbeam[ArrowInsidePos=0.74](In){1}{4-9} +\end{pspicture} +\end{LTXexample} +\endgroup + \begin{LTXexample}[pos=t, linerange={1-1}, caption={caption}] \psset{unit=1.1} @@ -10500,17 +10649,25 @@ % % \begin{changelog} %\patchcmd{\release}{\setlength{\itemsep}{0pt}}{\setlength{\itemsep}{0pt}\setlength{\parsep}{0pt}}{}{} -% ^^A Do not wrap lines inside the \items, otherwise Changes.py does not work properly +% \begin{release}{3.6}{2013-03-20} +% \item Added option \opt{compoffset}\see{prm:compoffset} +% \item Added option \opt{beampathskip}\see{prm:beampathskip} +% \item Added option \opt{innercompalign}\see{prm:innercompalign} +% \item Fixed some bugs in the raytracing and beam code. +% \end{release} % \begin{release}{3.5}{2013-02-22} % \item Added option \opt{filterangle}\see{prm:filterangle} % \item Fixed wrong output fiber style in \cs{optcoupler} -% \item Fixed strange Postscript error which occured with some interpreters. +% \item Fixed strange Postscript error which occured with some +% interpreters. % \end{release} % \begin{release}{3.4}{2013-02-03} % \item Fixed bugs when using \opt{fillstyle} for some components % \item Extended option \opt{switchsize}\see{cmd:optswitch} -% \item Modified coupler center node to be on the base line\see{sec:centernode} -% \item Extended error checking for \cs{drawbeam} and \cs{drawfiber}\see{sec:accessobj} +% \item Modified coupler center node to be on the base +% line\see{sec:centernode} +% \item Extended error checking for \cs{drawbeam} and +% \cs{drawfiber}\see{sec:accessobj} % \item Fixed some bugs in the connection code % \end{release} % \begin{release}{3.3a}{2012-09-18} @@ -10519,46 +10676,66 @@ % \end{release} % \begin{release}{3.3}{2012-08-17} % \item Extended \cs{opttripole} and \cs{optdipole}\see{cmd:optdipole} -% \item Modified reference angle for label of \cs{opttripole}\see{sec:bwd-comp-3.3} -% \item Added option \opt{optdipolesize} to support two interfaces for \cs{optdipole}\see{prm:optdipolesize} +% \item Modified reference angle for label of +% \cs{opttripole}\see{sec:bwd-comp-3.3} +% \item Added option \opt{optdipolesize} to support two interfaces for +% \cs{optdipole}\see{prm:optdipolesize} % \item Added option \opt{gratingalign}\see{prm:gratingalign} % \item Added option \opt{forcebeaminside}\see{prm:forcebeaminside} % \item Extended option \opt{mirrorradius}\see{prm:mirrorradius} -% \item Improved \cs{drawbeam} and \cs{drawwidebeam} to be able to use \opt{ArrowInside} without linestyle\see{prm:ArrowInsideMaxLength} -% \item Fixed orientation of \cs{oenodeBeamUp} and \cs{oenodeBeamLow}\see{cmd:oenodeBeamUp} -% \item Fixed a bug related to \opt{beaminside} and ambiguous components. +% \item Improved \cs{drawbeam} and \cs{drawwidebeam} to be able to use +% \opt{ArrowInside} without linestyle\see{prm:ArrowInsideMaxLength} +% \item Fixed orientation of \cs{oenodeBeamUp} and +% \cs{oenodeBeamLow}\see{cmd:oenodeBeamUp} +% \item Fixed a bug related to \opt{beaminside} and ambiguous +% components. % \item Fixed some trailing spaces % \item Added more examples\see{sec:examples} % \end{release} % \begin{release}{3.2}{2012-07-26} % \item Added component \cs{glanthompson}\see{cmd:glanthompson} -% \item Added access to beam vectors with \cs{oeBeamVec}, \cs{oeBeamVecUp} and \cs{oeBeamVecLow}\see{cmd:oeBeamVec} +% \item Added access to beam vectors with \cs{oeBeamVec}, +% \cs{oeBeamVecUp} and \cs{oeBeamVecLow}\see{cmd:oeBeamVec} % \item Fixed wrong computation of node distance in \cs{fiberbox} -% \item Fixed bug in \cs{wdmsplitter} for \opt{coupleralign=b} and \opt{couplertype=none} -% \item Fixed bug when filling components placed with \opt{position=end}/\opt{start} -% \item Added value \opt{absolute} to parameter \opt{labelref}\see{prm:labelref} +% \item Fixed bug in \cs{wdmsplitter} for \opt{coupleralign=b} and +% \opt{couplertype=none} +% \item Fixed bug when filling components placed with +% \opt{position=end}/\opt{start} +% \item Added value \opt{absolute} to parameter +% \opt{labelref}\see{prm:labelref} % \item Added examples\see{sec:examples} % \end{release} % \begin{release}{3.1}{2012-07-17} % \item Added component \cs{fiberbox}\see{cmd:fiberbox} -% \item Extended connection macros to not required curly braces around node parenthesis any more\see{sec:namingobj} -% \item Modified \cs{fibercollimator} to have \opt{allowbeaminside=false} by default\see{cmd:fibercollimator} -% \item Extended fiber couplers to allow using only two nodes\see{sec:coupler} +% \item Extended connection macros to not required curly braces around +% node parenthesis any more\see{sec:namingobj} +% \item Modified \cs{fibercollimator} to have +% \opt{allowbeaminside=false} by default\see{cmd:fibercollimator} +% \item Extended fiber couplers to allow using only two +% nodes\see{sec:coupler} % \item Fixed a bug concerning node expressions with \cs{drawfiber} % \end{release} % \begin{release}{3.0}{2012-07-09} -% \item Modified beam connections with \cs{drawbeam} to support raytracing\see{cmd:drawbeam} +% \item Modified beam connections with \cs{drawbeam} to support +% raytracing\see{cmd:drawbeam} % \item Added wide beams with \cs{drawwidebeam}\see{cmd:drawwidebeam} % \item Added \cs{drawfiber} for fiber connections\see{cmd:drawfiber} -% \item Added \opt{optexp} environment for layering of components and connections\see{sec:layers} +% \item Added \opt{optexp} environment for layering of components and +% connections\see{sec:layers} % \item Added german documentation % \item Modified naming of component nodes\see{sec:objnodes} -% \item Modified \opt{extnode} to work with more components\see{prm:extnode} -% \item Modified \opt{angle} and \opt{rotateref} to affect all components\see{sec:rotshift} -% \item Modified \opt{endbox} to affect all components\see{sec:positioning} -% \item Extended \opt{position} by values \opt{start} and \opt{end}\see{sec:positioning} -% \item Extended \opt{abspos} by values \opt{start} and \opt{end}\see{sec:positioning} -% \item Removed deprecated lens code which used \opt{lenswidth} and \opt{lensheight} for construction\see{cmd:lens} +% \item Modified \opt{extnode} to work with more +% components\see{prm:extnode} +% \item Modified \opt{angle} and \opt{rotateref} to affect all +% components\see{sec:rotshift} +% \item Modified \opt{endbox} to affect all +% components\see{sec:positioning} +% \item Extended \opt{position} by values \opt{start} and +% \opt{end}\see{sec:positioning} +% \item Extended \opt{abspos} by values \opt{start} and +% \opt{end}\see{sec:positioning} +% \item Removed deprecated lens code which used \opt{lenswidth} and +% \opt{lensheight} for construction\see{cmd:lens} % \item Added option \opt{platesize}\see{prm:platesize} % \item Added option \opt{phwidth}\see{cmd:pinhole} % \item Modified option \opt{caxislength}\see{cmd:crystal} @@ -10568,7 +10745,8 @@ % \item Added option \opt{optboxsize}\see{cmd:optbox} % \item Extended option \opt{detsize}\see{cmd:optdetector} % \item Added style \opt{DetectorStyle}\see{cmd:optdetector} -% \item Removed deprecated \cs{detector}, use \cs{optdetector}\see{cmd:optdetector} +% \item Removed deprecated \cs{detector}, use +% \cs{optdetector}\see{cmd:optdetector} % \item Extended option \opt{doveprismsize}\see{cmd:doveprism} % \item Added style \opt{Polarization}\see{cmd:polarization} % \item Deprecated option \opt{pollinewidth}\see{cmd:polarization} @@ -10577,14 +10755,21 @@ % \item Added style \opt{VariableStyle}\see{cmd:mirror} % \item Added mirror type \opt{semitrans}\see{prm:mirrortype} % \item Renamed \cs{optgrid} to \cs{optgrating}\see{cmd:optgrating} -% \item Renamed \opt{optgridwidth} to \opt{gratingwidth}\see{cmd:optgrating} -% \item Renamed \opt{optgridheight} to \opt{gratingheight}\see{cmd:optgrating} -% \item Renamed \opt{optgriddepth} to \opt{gratingdepth}\see{cmd:optgrating} -% \item Renamed \opt{optgridcount} to \opt{gratingcount}\see{cmd:optgrating} -% \item Renamed \opt{optgridtype} to \opt{gratingtype}\see{cmd:optgrating} -% \item Renamed \opt{optgridlinewidth} to \opt{gratinglinewidth}\see{cmd:optgrating} +% \item Renamed \opt{optgridwidth} to +% \opt{gratingwidth}\see{cmd:optgrating} +% \item Renamed \opt{optgridheight} to +% \opt{gratingheight}\see{cmd:optgrating} +% \item Renamed \opt{optgriddepth} to +% \opt{gratingdepth}\see{cmd:optgrating} +% \item Renamed \opt{optgridcount} to +% \opt{gratingcount}\see{cmd:optgrating} +% \item Renamed \opt{optgridtype} to +% \opt{gratingtype}\see{cmd:optgrating} +% \item Renamed \opt{optgridlinewidth} to +% \opt{gratinglinewidth}\see{cmd:optgrating} % \item Added option \opt{prismalign}\see{cmd:optprism} -% \item Modified faulty alignment of \cs{rightangleprism}\see{cmd:rightangleprism} +% \item Modified faulty alignment of +% \cs{rightangleprism}\see{cmd:rightangleprism} % \item Extended option \opt{optampsize}\see{cmd:optamp} % \item Extended option \opt{optmzmsize}\see{cmd:optmzm} % \item Added option \opt{polcontroltype}\see{cmd:polcontrol} @@ -10596,7 +10781,8 @@ % \item Added component \cs{optcirculator}\see{cmd:optcirculator} % \item Extended option \opt{couplersize}\see{cmd:optcoupler} % \item Extended option \opt{couplertype}\see{cmd:optcoupler} -% \item Renamed option \opt{align} to \opt{coupleralign}\see{cmd:optcoupler} +% \item Renamed option \opt{align} to +% \opt{coupleralign}\see{cmd:optcoupler} % \item Added style \opt{VariableCoupler}\see{cmd:optcoupler} % \item Added style \opt{FilterStyle}\see{cmd:optfilter} % \item Extended option \opt{fibercolsize}\see{cmd:fibercollimator} @@ -10604,44 +10790,55 @@ % \item Removed deprecated option \opt{iwidth}\see{cmd:pinhole} % \item Removed deprecated option \opt{owidth}\see{cmd:pinhole} % \item Removed deprecated option \opt{bswidth}\see{cmd:beamsplitter} -% \item Deprecated \cs{newOptexpDipoleNolabel}, use \cs{newOptexpDipole}\see{sec:newobj} -% \item Deprecated option \opt{refractiveindex}\see{prm:refractiveindex} +% \item Deprecated \cs{newOptexpDipoleNolabel}, use +% \cs{newOptexpDipole}\see{sec:newobj} +% \item Deprecated option +% \opt{refractiveindex}\see{prm:refractiveindex} % \item Deprecated option \opt{conn}\see{sec:drawbeam} % \item Extended option \opt{fiber}\see{prm:fiber} % \end{release} % \begin{release}{2.1}{2009-11-05} -% \item Added component \cs{optfiberpolarizer}\see{cmd:optfiberpolarizer} +% \item Added component +% \cs{optfiberpolarizer}\see{cmd:optfiberpolarizer} % \item Added option \opt{compshift}\see{prm:compshift} % \item Added option \opt{label}\see{prm:label} % \item Added option \opt{connjoin} -% \item Added options \opt{addtoBeam} and \opt{newBeam}\see{sec:drawbeam} -% \item Added style \opt{OptComp} and related options \opt{addtoOptComp} and \opt{newOptComp}\see{sec:appearance} +% \item Added options \opt{addtoBeam} and +% \opt{newBeam}\see{sec:drawbeam} +% \item Added style \opt{OptComp} and related options +% \opt{addtoOptComp} and \opt{newOptComp}\see{sec:appearance} % \item Added option \opt{bsstyle}\see{cmd:beamsplitter} -% \item Extended \cs{fibercollimator} to use up to four reference nodes\see{cmd:fibercollimator} -% \item Improved \opt{thicklens} to work also with plain lenses\see{prm:thicklens} +% \item Extended \cs{fibercollimator} to use up to four reference +% nodes\see{cmd:fibercollimator} +% \item Improved \opt{thicklens} to work also with plain +% lenses\see{prm:thicklens} % \item Use pst-doc class for the documentation % \end{release} % % \begin{release}{2.0}{2008-07-27} -% \item Added fiber-optical components\see{chap:fibercomp} -% \item Added component \cs{optdiode}\see{cmd:optdiode} -% \item Added component \cs{pentaprism}\see{cmd:pentaprism} -% \item Added component \cs{rightangleprism}\see{cmd:rightangleprism} -% \item Added component \cs{doveprism}\see{cmd:doveprism} -% \item Added component \cs{optprism}\see{cmd:optprism} -% \item Added \cs{drawbeam}\see{sec:drawbeam} -% \item Added component connections (options \opt{fiber}, \opt{conn} and \opt{beam})\see{chap:connecting} -% \item Added option \opt{compname}\see{prm:compname} -% \item Added option \opt{extnode}\see{prm:extnode} -% \item Renamed \cs{detector} to \cs{optdetector}\see{cmd:optdetector} +% \item Added fiber-optical components\see{chap:fibercomp} +% \item Added component \cs{optdiode}\see{cmd:optdiode} +% \item Added component \cs{pentaprism}\see{cmd:pentaprism} +% \item Added component \cs{rightangleprism}\see{cmd:rightangleprism} +% \item Added component \cs{doveprism}\see{cmd:doveprism} +% \item Added component \cs{optprism}\see{cmd:optprism} +% \item Added \cs{drawbeam}\see{sec:drawbeam} +% \item Added component connections (options \opt{fiber}, \opt{conn} +% and \opt{beam})\see{chap:connecting} +% \item Added option \opt{compname}\see{prm:compname} +% \item Added option \opt{extnode}\see{prm:extnode} +% \item Renamed \cs{detector} to \cs{optdetector}\see{cmd:optdetector} % \end{release} % \begin{release}{1.2}{2008-06-17} % \item Modified lens design to use interface curvatures\see{cmd:lens} -% \item Added options \opt{lensradiusleft} and \opt{lensradiusright}\see{cmd:lens} +% \item Added options \opt{lensradiusleft} and +% \opt{lensradiusright}\see{cmd:lens} % \item Added option \opt{thicklens}\see{cmd:lens} % \item Added option \opt{lenstype}\see{cmd:lens} -% \item Added option \opt{mirrorradius} (curved mirrors)\see{cmd:mirror} -% \item Added option \opt{optgridtype} (binary gratings)\see{cmd:optgrating} +% \item Added option \opt{mirrorradius} (curved +% mirrors)\see{cmd:mirror} +% \item Added option \opt{optgridtype} (binary +% gratings)\see{cmd:optgrating} % \item Added \cs{newOptexpDipole}\see{sec:newobj} % \item Added \cs{newOptexpDipoleNolabel}\see{sec:newobj} % \item Added \cs{newOptexpTripole}\see{sec:newobj} @@ -10651,8 +10848,10 @@ % \begin{release}{1.1}{2007-09-06} % \item Improved labeling features\see{sec:labels} % \item Added parameter \opt{labelref}\see{sec:labels} -% \item Replaced \opt{labelrelative} by \opt{labelref=relative}\see{sec:labels} -% \item Renamed \cs{polarisation} to \cs{polarization}\see{cmd:polarization} +% \item Replaced \opt{labelrelative} by +% \opt{labelref=relative}\see{sec:labels} +% \item Renamed \cs{polarisation} to +% \cs{polarization}\see{cmd:polarization} % \item Renamed \opt{polwidth} to \opt{polsize}\see{cmd:polarization} % \item Renamed \opt{pol} to \opt{poltype}\see{cmd:polarization} % \item Renamed \opt{bswidth} to \opt{bssize}\see{cmd:beamsplitter} @@ -10943,30 +11142,55 @@ % \end{macrocode} % The positioning parameters. % \begin{macrocode} +\define@boolkey[psset]{optexp}[POE@]{endbox}[true]{} +\define@boolkey[psset]{optexp}[POE@]{startbox}[true]{} \define@choicekey*+[psset]{optexp}{position}[\val\nr]{start,end}{% \ifcase\nr\relax \psset[optexp]{startbox, endbox=false}% \or \psset[optexp]{startbox=false, endbox=true}% \fi -}{\edef\POE@key@position{#1}}% +}{% + \psset[optexp]{startbox=false, endbox=false}% + \edef\POE@key@position{#1}% +}% \define@choicekey*+[psset]{optexp}{abspos}[\val\nr]{start,end}{% \ifcase\nr\relax \psset[optexp]{startbox, endbox=false}% \or \psset[optexp]{startbox=false, endbox=true}% \fi -}{\edef\POE@key@abspos{#1}}% +}{% + \psset[optexp]{startbox=false, endbox=false}% + \edef\POE@key@abspos{#1}% +}% \define@key[psset]{optexp}{compshift}{% \pst@checknum{#1}\POE@key@compshift } \define@key[psset]{optexp}{angle}{% \pst@checknum{#1}\POE@key@angle } +\define@key[psset]{optexp}{compoffset}{% + \pst@checknum{#1}\POE@key@compoffset +} +\define@choicekey+[psset]{optexp}{innercompalign}% + [\val\nr]{rel,abs,relative,absolute}% + {% + \ifcase\nr\relax + \let\POE@key@innercompalign\POE@str@relative + \or + \let\POE@key@innercompalign\POE@str@absolute + \else + \def\POE@key@innercompalign{#1}% + \fi + }% + {\PackageError{pst-optexp}{Unknown value '\val' for innercompalign}}% \psset[optexp]{% position={}, abspos={}, compshift=0, + compoffset=0, + innercompalign=relative, angle=0 }% % \end{macrocode} @@ -11339,8 +11563,6 @@ \fi \psset[optexp]{optboxwidth=#1, optboxheight=#2}% }% -\define@boolkey[psset]{optexp}[POE@]{endbox}[true]{} -\define@boolkey[psset]{optexp}[POE@]{startbox}[true]{} \psset[optexp]{% optboxwidth=1.4, optboxheight=0.8 @@ -12069,8 +12291,8 @@ \define@boolkey[psset]{optexp}[POE@]{forcebeaminside}[true]{}% \define@boolkey[psset]{optexp}[POE@]{raytrace}[true]{}% \define@boolkey[psset]{optexp}[POE@]{useNA}[true]{}% -\define@key[psset]{optexp}{skipconn}{% - \pst@checknum{#1}\POE@key@skipconn +\define@key[psset]{optexp}{beampathskip}{% + \pst@checknum{#1}\POE@key@beampathskip }% \define@choicekey+[psset]{optexp}{beamalign}% [\val\nr]{rel,abs,relative,absolute}% @@ -12110,7 +12332,7 @@ ,beamwidth=0 ,beamdiv=0 ,n=1.5 - ,skipconn=0 + ,beampathskip=0 ,ArrowInsideMinLength=0.2 ,ArrowInsideMaxLength=-1 }% @@ -12507,7 +12729,7 @@ \else relative \fi def - /skipconn \POE@key@skipconn\space def + /beampathskip \POE@key@beampathskip\space def /useNA \ifPOE@useNA true \else false \fi def }% }% @@ -12975,7 +13197,7 @@ \fi \POE@getlastcomp#2% \ifnum\POE@firstcomp>\the\POE@cnt - \ifnum\POE@lastcomp>\the\POE@cnt + \ifnum\POE@lastcomp>\the\POE@cnt\relax \PackageError{pst-optexp}% {All components \POE@firstcomp-\POE@lastcomp\space out of range}% \fi @@ -13003,14 +13225,13 @@ \fi }% \def\POE@getlastcomp#1-{% - \ifx\\#1\\% + \ifx\@empty#1\relax + \ifnum\POE@firstcomp>\the\POE@cnt\relax + \PackageError{pst-optexp}{All components \POE@firstcomp- out of range.}% + \fi \edef\POE@lastcomp{\the\POE@cnt}% \else - \ifx\@empty#1\relax - \edef\POE@lastcomp{\the\POE@cnt}% - \else - \edef\POE@lastcomp{#1}% - \fi + \edef\POE@lastcomp{#1}% \fi }% % \end{macrocode} @@ -13525,15 +13746,15 @@ % \end{macro} % % \begin{macrocode} -\def\oe@BeamVec#1#2{% +\def\POE@beamvec#1#2{% \POE@dict{% /prevVec#1\ifx\\#2\\1\else#2\fi\space dup currentdict exch known { load exec }{ pop 0 0 } ifelse }% }% -\def\oeBeamVec#1{\oe@BeamVec{}{#1}}% -\def\oeBeamVecUp#1{\oe@BeamVec{Up}{#1}}% -\def\oeBeamVecLow#1{\oe@BeamVec{Low}{#1}}% +\def\oeBeamVec#1{\POE@beamvec{}{#1}}% +\def\oeBeamVecUp#1{\POE@beamvec{Up}{#1}}% +\def\oeBeamVecLow#1{\POE@beamvec{Low}{#1}}% % \end{macrocode} % \section{Components} % @@ -13696,7 +13917,7 @@ % is done by \opt{abspos} or \opt{position} % \begin{macrocode} \let\POE@key@comp@Yshift\POE@key@compshift% - \def\POE@key@comp@Xshift{0}% + \let\POE@key@comp@Xshift\POE@key@compoffset% \edef\POE@refnodeA{\oenodeRefA{}}% \edef\POE@refnodeB{\oenodeRefB{}}% \edef\POE@trefnodeA{\oenodeTrefA{}}% @@ -13723,7 +13944,7 @@ % for multipoles the default shifting is in $x$-direction % \begin{macrocode} \def\POE@key@comp@Xshift{\POE@key@compshift\space neg }% - \def\POE@key@comp@Yshift{0}% + \let\POE@key@comp@Yshift\POE@key@compoffset % \end{macrocode} % The positioning parameters are disabled, because \opt{compshift} does the job for tripoles. % \begin{macrocode} @@ -13792,8 +14013,8 @@ % \end{macro} % % \begin{macrocode} -\def\getCLWH{CLW \pst@number\psxunit 2 mul div }% -\def\getCLW{CLW \pst@number\psxunit div }% +\def\POE@clwh{CLW \pst@number\psxunit 2 mul div }% +\def\POE@clw{CLW \pst@number\psxunit div }% \let\POE@restorerefnodes\relax % \end{macrocode} % @@ -14764,7 +14985,7 @@ {\POE@drawcomponent@i}{\POE@drawcomponent@i[]}% }% \def\POE@drawcomponent@i[#1]#2#3{% - \def\@@comp{% + \def\POE@comp{% #3% \ifx\POE@key@extnode\@empty\else \ifPOE@backlayer @@ -14787,6 +15008,7 @@ \ifx\\#1\\\else \@ifundefined{#1@ref}{}{\@nameuse{#1@ref}}% \fi + \begingroup \ifPOE@endbox \psset[optexp]{abspos={% \POE@dict{% @@ -14804,7 +15026,6 @@ % \end{macrocode} % Positioning of the component % \begin{macrocode} - \begingroup \psset{style=OptComp}% % \end{macrocode} % linestyle to use, if component should be marked as optional @@ -14820,13 +15041,13 @@ % Then check if absolute positioning with \opt{abspos} is wanted. % \begin{macrocode} \ifx\POE@key@position\@empty - \ncput[nrot=:U,npos=]{\POE@putcomp{\@@comp}}% + \ncput[nrot=:U,npos=]{\POE@putcomp{\POE@comp}}% \else - \ncput[nrot=:U,npos=\POE@key@position]{\POE@putcomp{\@@comp}}% + \ncput[nrot=:U,npos=\POE@key@position]{\POE@putcomp{\POE@comp}}% \fi \else \POE@nlput[nrot=:U](\POE@refnodeA)(\POE@refnodeB)% - {\POE@key@abspos}{\POE@putcomp{\@@comp}}% + {\POE@key@abspos}{\POE@putcomp{\POE@comp}}% \fi \endgroup \ifPOE@backlayer @@ -15114,7 +15335,7 @@ (! \@ht neg 0)(! \@ht 0) \else \psline[linewidth=\POE@key@mirrorlinewidth]% - (! \@ht neg \getCLWH)(! \@ht \getCLWH) + (! \@ht neg \POE@clwh)(! \@ht \POE@clwh) \fi \else % \end{macrocode} @@ -15693,8 +15914,8 @@ \pspolygon(! \@sz -0.2 mul \@sz -0.4 mul)% (! \@sz 0.6 mul \@sz -0.4 mul)% (! \@sz 0.2 mul \@sz 0.4 mul)% - \psline(! \@sz -0.2 mul \@sz 0.4 mul \getCLWH add)% - (! \@sz 0.6 mul \@sz 0.4 mul \getCLWH add) + \psline(! \@sz -0.2 mul \@sz 0.4 mul \POE@clwh add)% + (! \@sz 0.6 mul \@sz 0.4 mul \POE@clwh add) \psset{arrows=->, arrowinset=0, arrowscale=0.8}% \psline(! \@sz -0.8 mul \@sz 0.3 mul)% (! \@sz -0.3 mul \@sz 0.15 mul)% @@ -15749,8 +15970,8 @@ \pspolygon(! \@sz -0.2 mul \@sz -0.2 mul) (! \@sz -0.2 mul \@sz 0.2 mul) (! \@sz 0.2 mul 0) - \psline(! \@sz 0.2 mul \getCLWH add \@sz 0.2 mul)% - (! \@sz 0.2 mul \getCLWH add \@sz -0.2 mul) + \psline(! \@sz 0.2 mul \POE@clwh add \@sz 0.2 mul)% + (! \@sz 0.2 mul \POE@clwh add \@sz -0.2 mul) \ignorespaces}% % \end{macrocode} % \end{macro} @@ -15892,7 +16113,11 @@ \edef\@ang{\POE@key@prismangle\space 0.5 mul\space}% \edef\@hshift{% \ifx\POE@key@prismalign\POE@str@auto - \@sz 0.6 mul \@ang tan mul \POE@dict{OEangle} 0.5 mul tan div + \POE@dict{OEangle} 1e-5 lt { + 0 + } { + \@sz 0.6 mul \@ang tan mul \POE@dict{OEangle} 0.5 mul tan div + } ifelse \else 0 \fi @@ -15917,7 +16142,11 @@ \edef\@altan{\POE@key@prismangle\space 0.5 mul tan }% \edef\@hshift{% \ifx\POE@key@prismalign\POE@str@auto - \@sz 0.6 mul \@altan mul \POE@dict{OEangle} 0.5 mul tan div + \POE@dict{OEangle} 1e-5 lt { + 0 + } { + \@sz 0.6 mul \@altan mul \POE@dict{OEangle} 0.5 mul tan div + } ifelse \else 0 \fi @@ -16053,9 +16282,17 @@ % % \begin{macro}{\optfilter@ref} % \begin{macrocode} -\def\optfilter@ref{% - \POE@setref{\POE@key@filtersize\space 0.5 mul dup /@@y ED /@@x ED }% -}% + \def\optfilter@ref{% + \POE@setref{% + \POE@key@filtersize\space 0.5 mul dup /@@y ED /@@x ED + /@@ang + \ifx\POE@key@innercompalign\POE@str@absolute + /N@\oenodeRefA{} /N@\oenodeRefB{} SlopeAngle \POE@key@angle sub + \else + \POE@key@filterangle + \fi def + }% + }% \let\optfilter@nodes\dipole@nodes % \end{macrocode} % \end{macro} @@ -16070,7 +16307,7 @@ 90 add cos 0.2 \@sz mul mul}% }% \psframe[dimen=outer](! \@sz neg dup)(! \@sz dup) - \psrotate(\oenodeCenter{}){\POE@key@filterangle}{% + \psrotate(\oenodeCenter{}){!\POE@dict{@@ang}}{% \psset{style=FilterStyle}% \ifx\POE@key@filtertype\POE@str@filtertype@bandpass \psline(! -0.3 \@sz mul -0.65 \@sz mul)% @@ -16275,7 +16512,7 @@ % \end{macrocode} % storing the linewidth of the object allows for some aesthetic fine tuning % \begin{macrocode} - \pstVerb{tx@Dict begin /@lw \getCLW def end}% + \pstVerb{tx@Dict begin /@lw \POE@clw def end}% \bgroup \ifPOE@usefiberstyle \psset{style=Fiber, arrows=-, ArrowInside=-} @@ -16644,8 +16881,8 @@ \def\fibercollimator@comp{% \def\@wd{\POE@key@fibercolwidth\space 0.5 mul }% \def\@ht{\POE@key@fibercolheight\space 0.5 mul }% - \pspolygon(!\@wd neg \getCLWH add \@ht neg)% - (!\@wd 0)(!\@wd neg \getCLWH add \@ht) + \pspolygon(!\@wd neg \POE@clwh add \@ht neg)% + (!\@wd 0)(!\@wd neg \POE@clwh add \@ht) }% % \end{macrocode} % \end{macro} @@ -17576,7 +17813,17 @@ tx@OptexpDict begin % Load some parameters from \opt{ambcomp} % \begin{macrocode} aload pop /draw ED /name ED - name cvn load /N get /N ED + name cvn load /N get dup /N ED +% \end{macrocode} +% If the ambiguous component has only one interface, there exists no internal beam +% \begin{macrocode} + 1 eq { /draw true def } if +% \end{macrocode} +% \PSvar{CurrTmp} is the current point of the beam on the interface +% prior to the ambiguos component, \PSvar{CurrVecTmp} its outgoing +% vector. For wide beams, the lower ray is used. These vectors will be +% changed inside this procedure. +% \begin{macrocode} currentdict /Curr known { /CurrTmp /Curr load def /CurrVecTmp /CurrVec load def @@ -17584,14 +17831,10 @@ tx@OptexpDict begin /CurrTmp /CurrLow load def /CurrVecTmp /CurrVecLow load def } ifelse -% \end{macrocode} -% \PSvar{CurrTmp} is the current point of the beam on the interface prior to the -% ambiguos component, \PSvar{CurrVecTmp} its outgoing vector. For wide beams, -% the lower ray is used. -% \begin{macrocode} PN 1 eq { % \end{macrocode} -% If it is the first interface, the starting point is always the (C) plane +% If it is the first interface, the starting point is always the (C) +% plane, the mode is set arbitrarily to transmittive. % \begin{macrocode} [ (C) name name GetRefIndex trans draw] cvx % \end{macrocode} @@ -17600,7 +17843,8 @@ tx@OptexpDict begin name /outToPlane load GetNextPlane dup 0 eq not { % \end{macrocode} -% If there is one, i.e. if \PSvar{GetNextPlane} leaves something not equal to \PSvar{0} on the stack, this is the plane. +% If there is one, i.e. if \PSvar{GetNextPlane} leaves something not +% equal to \PSvar{0} on the stack, this is the plane. % \begin{macrocode} [ exch name bgRefIndex trans draw ] cvx exch /IfcCntTmp IfcCntTmp 1 add def @@ -17608,33 +17852,39 @@ tx@OptexpDict begin pop } ifelse }{ +% \end{macrocode} +% It is not the first component, check which interface of the component +% is the nearest one to the current beam point and save its name in +% \PSvar{firstPlane}. +% \begin{macrocode} CurrTmp name GetNearestPlane dup /firstPlane ED name isAmbiguousIfc not { % \end{macrocode} -% The first interface is not the ambiguous one. -% -% check if mode is trans or refl +% The first interface is not the ambiguous one, put it on the stack and +% calculated the new beam vector. % \begin{macrocode} - CurrVecTmp firstPlane name GetPlaneVec NormalVec - (C) name GetIfcCenter firstPlane name GetIfcCenter - @ABVect 2 copy 6 2 roll DotProd - 0 lt { trans }{ refl } ifelse - 3 1 roll ToVec /CurrVecTmp ED + firstPlane name + name firstPlane GetIfcMode + connectifc { bgRefIndex }{ name GetRefIndex } ifelse + CurrTmp CurrVecTmp + 10 dict begin HandleInterface end pop + ToVec /CurrVecTmp ED ToVec /CurrTmp ED [ firstPlane name connectifc { bgRefIndex }{ name GetRefIndex } ifelse + name firstPlane GetIfcMode % \end{macrocode} % always draw to first interface % \begin{macrocode} - 5 -1 roll true ] cvx + true ] cvx /IfcCntTmp IfcCntTmp 1 add def } if PN IfcCnt eq { % \end{macrocode} -% its the last comp, just put the center plane on the stack +% Its the last comp, just put the ambiguous interface on the stack, the mode is irrelevant. % \begin{macrocode} [ (C) name name GetRefIndex @@ -17642,18 +17892,24 @@ tx@OptexpDict begin IfcCntTmp IfcCnt gt { exch } if }{ % \end{macrocode} -% check the mode of the ambiguous interface +% Otherwise put the ambiguous interface on the stack and check its mode. % \begin{macrocode} [ (C) name name GetRefIndex CurrVecTmp (C) name GetPlaneVec NormalVec outToPlane GetIfcCenter (C) name GetIfcCenter @ABVect DotProd - 0 lt { trans } { refl } ifelse % mode + 0 lt { trans } { refl } ifelse + dup 6 1 roll % \end{macrocode} % if the ambiguous interface is the first, always draw to it % \begin{macrocode} IfcCntTmp IfcCnt eq { true }{ draw } ifelse - ] cvx + ] cvx + (C) name 4 -1 roll + connectifc { bgRefIndex }{ name GetRefIndex } ifelse + CurrTmp CurrVecTmp + 10 dict begin HandleInterface end pop + ToVec /CurrVecTmp ED ToVec /CurrTmp ED % \end{macrocode} % now check which is the outgoing plane % \begin{macrocode} @@ -17684,8 +17940,9 @@ tx@OptexpDict begin /GetNextPlane { (GetNextPlane) DebugBegin 2 copy (C) 3 -1 roll - GetIfcCenter 3 -1 roll exec GetIfcCenter - 4 2 roll 4 copy @ABVect /VecY ED /VecX ED + GetIfcCenter 3 -1 roll + exec GetIfcCenter + 4 2 roll 4 copy @ABVect ToVec /Vec ED @ABDist /centerDist ED /sprod 1 def /nextPlane 0 def @@ -17696,8 +17953,8 @@ tx@OptexpDict begin % \begin{macrocode} dup ambIfc eq not { 3 copy 3 -1 roll 2 copy - GetPlaneVec VecX VecY 4 2 roll NormalVec - VecX VecY DotProd dup sprod lt 5 2 roll + GetPlaneVec Vec 4 2 roll NormalVec + Vec DotProd dup sprod lt 5 2 roll GetIfcCenter 3 -1 roll exec GetIfcCenter @ABDist centerDist lt and { /sprod ED /nextPlane ED } { pop pop } ifelse @@ -17800,7 +18057,7 @@ tx@OptexpDict begin } ifelse 2 copy ToVec /Curr ED - draw PN skipconn 1 add gt and + draw PN beampathskip 1 add gt and counttomark 3 roll /PrevCenter /CurrCenter load def /lastBeamPointTmp /Curr load def @@ -17959,7 +18216,7 @@ tx@OptexpDict begin % \end{macrocode} % \PSvar{draw} indicates if the beam to the current interface should be drawn. % \begin{macrocode} - PN skipconn 1 add gt and /draw ED + PN beampathskip 1 add gt and /draw ED % \end{macrocode} % \PSvar{Mode} stores the mode (transmittive or reflective) of the current interface. % \begin{macrocode} @@ -18387,6 +18644,13 @@ tx@OptexpDict begin } if AdjustRelRot } { +% \end{macrocode} +% check if the first plane is an NodeIfc and correct its rotation, the +% node ordering in CompA is irrelevant at this point, so we use desc. +% \begin{macrocode} + i 2 eq { + CompB amb CompA desc AdjustRelRot + } if pop amb dup } ifelse CompB /CompA CompB def @@ -18571,6 +18835,18 @@ tx@OptexpDict begin % \end{macrocode} % \end{macro} % +% \begin{macro}{GetIfcMode} +% \begin{pssyntax} +% \PSstring{name} \PSvar{num} \PSop{GetIfcMode} \PSvar{mode} +% \end{pssyntax} +% \begin{macrocode} +/GetIfcMode { + exch cvn load begin + IfcName load /mode get + end +} bind def +% \end{macrocode} +% \end{macro} % \begin{macro}{NodeName} % Construct the plane name from IfcNum. This must be called within a dict of a % optexpcomp, because the last node ends with (N) instead of the number and we must diff --git a/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins b/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins index 0475c86c55f..db441875f62 100644 --- a/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins +++ b/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins @@ -53,7 +53,7 @@ This is a generated file. Project: pst-optexp -Version: 3.5 (2013/02/22) +Version: 3.6 (2013/03/20) Copyright (C) 2007-2013 by Christoph Bersch <usenet@bersch.net> diff --git a/Master/texmf-dist/tex/latex/pst-optexp/pst-optexp.sty b/Master/texmf-dist/tex/latex/pst-optexp/pst-optexp.sty index b3d4416dad4..43653daae39 100644 --- a/Master/texmf-dist/tex/latex/pst-optexp/pst-optexp.sty +++ b/Master/texmf-dist/tex/latex/pst-optexp/pst-optexp.sty @@ -9,7 +9,7 @@ %% This is a generated file. %% %% Project: pst-optexp -%% Version: 3.5 (2013/02/22) +%% Version: 3.6 (2013/03/20) %% %% Copyright (C) 2007-2013 by Christoph Bersch <usenet@bersch.net> %% @@ -31,7 +31,7 @@ %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{pst-optexp} - [2013/02/22 v3.5 Optical experimental setups with PSTricks] + [2013/03/20 v3.6 Optical experimental setups with PSTricks] \RequirePackage{pstricks} \RequirePackage{pst-xkey} \RequirePackage{pst-node} @@ -237,30 +237,55 @@ \define@boolkey[psset]{optexp}[POE@]{usefiberstyle}[true]{} \define@boolkey[psset]{optexp}[POE@debug@]{showoptdots}[true]{} \define@boolkey[psset]{optexp}[POE@debug@]{showifcnodes}[true]{} +\define@boolkey[psset]{optexp}[POE@]{endbox}[true]{} +\define@boolkey[psset]{optexp}[POE@]{startbox}[true]{} \define@choicekey*+[psset]{optexp}{position}[\val\nr]{start,end}{% \ifcase\nr\relax \psset[optexp]{startbox, endbox=false}% \or \psset[optexp]{startbox=false, endbox=true}% \fi -}{\edef\POE@key@position{#1}}% +}{% + \psset[optexp]{startbox=false, endbox=false}% + \edef\POE@key@position{#1}% +}% \define@choicekey*+[psset]{optexp}{abspos}[\val\nr]{start,end}{% \ifcase\nr\relax \psset[optexp]{startbox, endbox=false}% \or \psset[optexp]{startbox=false, endbox=true}% \fi -}{\edef\POE@key@abspos{#1}}% +}{% + \psset[optexp]{startbox=false, endbox=false}% + \edef\POE@key@abspos{#1}% +}% \define@key[psset]{optexp}{compshift}{% \pst@checknum{#1}\POE@key@compshift } \define@key[psset]{optexp}{angle}{% \pst@checknum{#1}\POE@key@angle } +\define@key[psset]{optexp}{compoffset}{% + \pst@checknum{#1}\POE@key@compoffset +} +\define@choicekey+[psset]{optexp}{innercompalign}% + [\val\nr]{rel,abs,relative,absolute}% + {% + \ifcase\nr\relax + \let\POE@key@innercompalign\POE@str@relative + \or + \let\POE@key@innercompalign\POE@str@absolute + \else + \def\POE@key@innercompalign{#1}% + \fi + }% + {\PackageError{pst-optexp}{Unknown value '\val' for innercompalign}}% \psset[optexp]{% position={}, abspos={}, compshift=0, + compoffset=0, + innercompalign=relative, angle=0 }% \define@boolkey[psset]{optexp}[POE@]{backlayer}[true]{} @@ -583,8 +608,6 @@ \fi \psset[optexp]{optboxwidth=#1, optboxheight=#2}% }% -\define@boolkey[psset]{optexp}[POE@]{endbox}[true]{} -\define@boolkey[psset]{optexp}[POE@]{startbox}[true]{} \psset[optexp]{% optboxwidth=1.4, optboxheight=0.8 @@ -1211,8 +1234,8 @@ \define@boolkey[psset]{optexp}[POE@]{forcebeaminside}[true]{}% \define@boolkey[psset]{optexp}[POE@]{raytrace}[true]{}% \define@boolkey[psset]{optexp}[POE@]{useNA}[true]{}% -\define@key[psset]{optexp}{skipconn}{% - \pst@checknum{#1}\POE@key@skipconn +\define@key[psset]{optexp}{beampathskip}{% + \pst@checknum{#1}\POE@key@beampathskip }% \define@choicekey+[psset]{optexp}{beamalign}% [\val\nr]{rel,abs,relative,absolute}% @@ -1252,7 +1275,7 @@ ,beamwidth=0 ,beamdiv=0 ,n=1.5 - ,skipconn=0 + ,beampathskip=0 ,ArrowInsideMinLength=0.2 ,ArrowInsideMaxLength=-1 }% @@ -1589,7 +1612,7 @@ \else relative \fi def - /skipconn \POE@key@skipconn\space def + /beampathskip \POE@key@beampathskip\space def /useNA \ifPOE@useNA true \else false \fi def }% }% @@ -1929,7 +1952,7 @@ \fi \POE@getlastcomp#2% \ifnum\POE@firstcomp>\the\POE@cnt - \ifnum\POE@lastcomp>\the\POE@cnt + \ifnum\POE@lastcomp>\the\POE@cnt\relax \PackageError{pst-optexp}% {All components \POE@firstcomp-\POE@lastcomp\space out of range}% \fi @@ -1957,14 +1980,13 @@ \fi }% \def\POE@getlastcomp#1-{% - \ifx\\#1\\% + \ifx\@empty#1\relax + \ifnum\POE@firstcomp>\the\POE@cnt\relax + \PackageError{pst-optexp}{All components \POE@firstcomp- out of range.}% + \fi \edef\POE@lastcomp{\the\POE@cnt}% \else - \ifx\@empty#1\relax - \edef\POE@lastcomp{\the\POE@cnt}% - \else - \edef\POE@lastcomp{#1}% - \fi + \edef\POE@lastcomp{#1}% \fi }% \def\POE@getcomps#1#2{% @@ -2331,15 +2353,15 @@ \POE@str@basicname@prefix\POE@str@basicname@default BeamLow% \ifx\\#1\\1\else#1\fi }% -\def\oe@BeamVec#1#2{% +\def\POE@beamvec#1#2{% \POE@dict{% /prevVec#1\ifx\\#2\\1\else#2\fi\space dup currentdict exch known { load exec }{ pop 0 0 } ifelse }% }% -\def\oeBeamVec#1{\oe@BeamVec{}{#1}}% -\def\oeBeamVecUp#1{\oe@BeamVec{Up}{#1}}% -\def\oeBeamVecLow#1{\oe@BeamVec{Low}{#1}}% +\def\oeBeamVec#1{\POE@beamvec{}{#1}}% +\def\oeBeamVecUp#1{\POE@beamvec{Up}{#1}}% +\def\oeBeamVecLow#1{\POE@beamvec{Low}{#1}}% \def\POE@useifccode{% \POE@Verb{% [ \pst@code @@ -2442,7 +2464,7 @@ \POE@Verb{InitOptexpComp }% \use@par \let\POE@key@comp@Yshift\POE@key@compshift% - \def\POE@key@comp@Xshift{0}% + \let\POE@key@comp@Xshift\POE@key@compoffset% \edef\POE@refnodeA{\oenodeRefA{}}% \edef\POE@refnodeB{\oenodeRefB{}}% \edef\POE@trefnodeA{\oenodeTrefA{}}% @@ -2457,7 +2479,7 @@ \def\begin@OptexpTripole{% \begin@OptexpObj \def\POE@key@comp@Xshift{\POE@key@compshift\space neg }% - \def\POE@key@comp@Yshift{0}% + \let\POE@key@comp@Yshift\POE@key@compoffset \def\POE@disablepos{% \let\POE@key@abspos\@empty \let\POE@key@position\@empty @@ -2494,8 +2516,8 @@ \edef\pst@par{\the\pst@toks,\the\toks@}% \fi% }% -\def\getCLWH{CLW \pst@number\psxunit 2 mul div }% -\def\getCLW{CLW \pst@number\psxunit div }% +\def\POE@clwh{CLW \pst@number\psxunit 2 mul div }% +\def\POE@clw{CLW \pst@number\psxunit div }% \let\POE@restorerefnodes\relax \def\newOptexpDipole{% \@ifnextchar[%] @@ -3244,7 +3266,7 @@ {\POE@drawcomponent@i}{\POE@drawcomponent@i[]}% }% \def\POE@drawcomponent@i[#1]#2#3{% - \def\@@comp{% + \def\POE@comp{% #3% \ifx\POE@key@extnode\@empty\else \ifPOE@backlayer @@ -3267,6 +3289,7 @@ \ifx\\#1\\\else \@ifundefined{#1@ref}{}{\@nameuse{#1@ref}}% \fi + \begingroup \ifPOE@endbox \psset[optexp]{abspos={% \POE@dict{% @@ -3281,20 +3304,19 @@ \POE@disablepos \ncline[linestyle=none,fillstyle=none,npos=,arrows=-,ArrowInside=-]% {\POE@refnodeA}{\POE@refnodeB}% - \begingroup \psset{style=OptComp}% \ifPOE@component@optional \psset{style=OptionalStyle}% \fi \ifx\POE@key@abspos\@empty \ifx\POE@key@position\@empty - \ncput[nrot=:U,npos=]{\POE@putcomp{\@@comp}}% + \ncput[nrot=:U,npos=]{\POE@putcomp{\POE@comp}}% \else - \ncput[nrot=:U,npos=\POE@key@position]{\POE@putcomp{\@@comp}}% + \ncput[nrot=:U,npos=\POE@key@position]{\POE@putcomp{\POE@comp}}% \fi \else \POE@nlput[nrot=:U](\POE@refnodeA)(\POE@refnodeB)% - {\POE@key@abspos}{\POE@putcomp{\@@comp}}% + {\POE@key@abspos}{\POE@putcomp{\POE@comp}}% \fi \endgroup \ifPOE@backlayer @@ -3504,7 +3526,7 @@ (! \@ht neg 0)(! \@ht 0) \else \psline[linewidth=\POE@key@mirrorlinewidth]% - (! \@ht neg \getCLWH)(! \@ht \getCLWH) + (! \@ht neg \POE@clwh)(! \@ht \POE@clwh) \fi \else \ifdim\POE@key@mirrorradius pt<0pt @@ -3930,8 +3952,8 @@ \pspolygon(! \@sz -0.2 mul \@sz -0.4 mul)% (! \@sz 0.6 mul \@sz -0.4 mul)% (! \@sz 0.2 mul \@sz 0.4 mul)% - \psline(! \@sz -0.2 mul \@sz 0.4 mul \getCLWH add)% - (! \@sz 0.6 mul \@sz 0.4 mul \getCLWH add) + \psline(! \@sz -0.2 mul \@sz 0.4 mul \POE@clwh add)% + (! \@sz 0.6 mul \@sz 0.4 mul \POE@clwh add) \psset{arrows=->, arrowinset=0, arrowscale=0.8}% \psline(! \@sz -0.8 mul \@sz 0.3 mul)% (! \@sz -0.3 mul \@sz 0.15 mul)% @@ -3962,8 +3984,8 @@ \pspolygon(! \@sz -0.2 mul \@sz -0.2 mul) (! \@sz -0.2 mul \@sz 0.2 mul) (! \@sz 0.2 mul 0) - \psline(! \@sz 0.2 mul \getCLWH add \@sz 0.2 mul)% - (! \@sz 0.2 mul \getCLWH add \@sz -0.2 mul) + \psline(! \@sz 0.2 mul \POE@clwh add \@sz 0.2 mul)% + (! \@sz 0.2 mul \POE@clwh add \@sz -0.2 mul) \ignorespaces}% \def\doveprism@ref{% \POE@setref{/@@x \POE@key@doveprismwidth\space 0.5 mul def @@ -4054,7 +4076,11 @@ \edef\@ang{\POE@key@prismangle\space 0.5 mul\space}% \edef\@hshift{% \ifx\POE@key@prismalign\POE@str@auto - \@sz 0.6 mul \@ang tan mul \POE@dict{OEangle} 0.5 mul tan div + \POE@dict{OEangle} 1e-5 lt { + 0 + } { + \@sz 0.6 mul \@ang tan mul \POE@dict{OEangle} 0.5 mul tan div + } ifelse \else 0 \fi @@ -4074,7 +4100,11 @@ \edef\@altan{\POE@key@prismangle\space 0.5 mul tan }% \edef\@hshift{% \ifx\POE@key@prismalign\POE@str@auto - \@sz 0.6 mul \@altan mul \POE@dict{OEangle} 0.5 mul tan div + \POE@dict{OEangle} 1e-5 lt { + 0 + } { + \@sz 0.6 mul \@altan mul \POE@dict{OEangle} 0.5 mul tan div + } ifelse \else 0 \fi @@ -4157,9 +4187,17 @@ (! \POE@dict{@@x} -0.7 mul 0)% \egroup \ignorespaces}% -\def\optfilter@ref{% - \POE@setref{\POE@key@filtersize\space 0.5 mul dup /@@y ED /@@x ED }% -}% + \def\optfilter@ref{% + \POE@setref{% + \POE@key@filtersize\space 0.5 mul dup /@@y ED /@@x ED + /@@ang + \ifx\POE@key@innercompalign\POE@str@absolute + /N@\oenodeRefA{} /N@\oenodeRefB{} SlopeAngle \POE@key@angle sub + \else + \POE@key@filterangle + \fi def + }% + }% \let\optfilter@nodes\dipole@nodes \def\optfilter@comp{% \edef\@sz{\POE@key@filtersize\space 0.5 mul }% @@ -4169,7 +4207,7 @@ 90 add cos 0.2 \@sz mul mul}% }% \psframe[dimen=outer](! \@sz neg dup)(! \@sz dup) - \psrotate(\oenodeCenter{}){\POE@key@filterangle}{% + \psrotate(\oenodeCenter{}){!\POE@dict{@@ang}}{% \psset{style=FilterStyle}% \ifx\POE@key@filtertype\POE@str@filtertype@bandpass \psline(! -0.3 \@sz mul -0.65 \@sz mul)% @@ -4304,7 +4342,7 @@ \def\optswitch@comp{% \psframe[dimen=outer](! \POE@dict{@@x neg @@y neg})% (! \POE@dict{@@x @@y})% - \pstVerb{tx@Dict begin /@lw \getCLW def end}% + \pstVerb{tx@Dict begin /@lw \POE@clw def end}% \bgroup \ifPOE@usefiberstyle \psset{style=Fiber, arrows=-, ArrowInside=-} @@ -4561,8 +4599,8 @@ \def\fibercollimator@comp{% \def\@wd{\POE@key@fibercolwidth\space 0.5 mul }% \def\@ht{\POE@key@fibercolheight\space 0.5 mul }% - \pspolygon(!\@wd neg \getCLWH add \@ht neg)% - (!\@wd 0)(!\@wd neg \getCLWH add \@ht) + \pspolygon(!\@wd neg \POE@clwh add \@ht neg)% + (!\@wd 0)(!\@wd neg \POE@clwh add \@ht) }% \endinput %% |