summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/pst-optexp
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-07-27 22:51:40 +0000
committerKarl Berry <karl@freefriends.org>2012-07-27 22:51:40 +0000
commit1f9093ef56c8de2c74750cff37bd292e2cbacff3 (patch)
treef6641789906685197acef7802c8a3a2b32d0e828 /Master/texmf-dist/tex/latex/pst-optexp
parent64749982278c874391a383d9d8b422159ade17dc (diff)
pst-optexp (27jul12)
git-svn-id: svn://tug.org/texlive/trunk@27202 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/pst-optexp')
-rw-r--r--Master/texmf-dist/tex/latex/pst-optexp/pst-optexp.sty140
1 files changed, 111 insertions, 29 deletions
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 3228e22060e..224af6e0280 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.1 (2012/07/17)
+%% Version: 3.2 (2012/07/26)
%%
%% Copyright (C) 2007-2012 by Christoph Bersch <usenet@bersch.net>
%%
@@ -31,8 +31,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{pst-optexp}
- [2012/07/17 v3.1 Optical experimental setups with PSTricks]
-
+ [2012/07/26 v3.2 Optical experimental setups with PSTricks]
\RequirePackage{pstricks}
\RequirePackage{pst-xkey}
\RequirePackage{pst-node}
@@ -280,9 +279,18 @@
\define@key[psset]{optexp}{labelalign}{%
\def\POE@key@labelalign{#1}%
}
-\define@key[psset]{optexp}{labelref}{%
- \edef\POE@key@labelref{#1}%
-}
+\define@choicekey+[psset]{optexp}{labelref}%
+ [\val\nr]{absolute,relative,relgrav,global}%
+ {%
+ \ifcase\nr\relax
+ \let\POE@key@labelref\POE@str@labelref@global
+ \else
+ \def\POE@key@labelref{#1}%
+ \fi
+ }{%
+ \PackageError{pst-optexp}%
+ {Unknown value '\POE@key@labelref' for labelref}%
+}%
\define@choicekey*+[psset]{optexp}{innerlabel}%
[\val\nr]{true}[true]%
{\ifcase\nr\relax
@@ -663,6 +671,29 @@
\fi
}%
\psset[optexp]{doveprismsize=0.6}%
+\define@key[psset]{optexp}{glanthompsongap}{%
+ \pst@checknum{#1}\POE@key@glanthompsongap
+}%
+\define@key[psset]{optexp}{glanthompsonwidth}{%
+ \pst@checknum{#1}\POE@key@glanthompsonwidth
+}%
+\define@key[psset]{optexp}{glanthompsonheight}{%
+ \pst@checknum{#1}\POE@key@glanthompsonheight
+}%
+\define@key[psset]{optexp}{glanthompsonsize}{%
+ \pst@expandafter\POE@psset@@glanthompsonsize{#1} {} {} {}\@nil
+}%
+\def\POE@psset@@glanthompsonsize#1 #2 #3\@nil{%
+ \ifx\\#2\\
+ \PackageWarning{pst-optexp}{%
+ Parameter 'glanthompsonsize' requires two numbers}%
+ \fi
+ \psset[optexp]{glanthompsonwidth=#1, glanthompsonheight=#2}%
+}%
+\psset[optexp]{%
+ glanthompsongap=0,
+ glanthompsonsize=1 0.5
+}%
\define@key[psset]{optexp}{bssize}{%
\pst@checknum{#1}\POE@key@bssize
}
@@ -1163,7 +1194,7 @@
,beaminsidefirst=false
,beaminsidelast=false
,loadbeam=false
- ,savebeam=false
+ ,savebeam=true
,loadbeampoints=false
,savebeampoints=true
,beamangle=0
@@ -1418,11 +1449,11 @@
\ifPOE@backlayer
\ifx\POE@key@startnode\POE@str@auto\else
\POE@pnode{/\POE@key@startnode\space \POE@comps exch pop
- \POE@dict{getsubnode} \tx@UserCoor}{@@A}
+ \POE@dict{GetIfcOrNodeCoord} \tx@UserCoor}{@@A}
\fi
\ifx\POE@key@stopnode\POE@str@auto\else
\POE@pnode{/\POE@key@stopnode\space \POE@comps pop
- \POE@dict{getsubnode} \tx@UserCoor}{@@B}
+ \POE@dict{GetIfcOrNodeCoord} \tx@UserCoor}{@@B}
\fi
\ifx\POE@key@startnode\POE@str@auto
\ifx\POE@key@stopnode\POE@str@auto
@@ -1599,13 +1630,15 @@
/N@\oenodeBeam{\POE@key@savebeampoints}\space 4 -1 roll
} if
savebeam currentdict /lastVecTmp known and dup {
- /lastVec\POE@key@savebeampoints\space lastVecTmp 4 -1 roll
+ /prevVec\POE@key@savebeampoints\space
+ currentdict /prevVecTmp known { prevVecTmp }{ 0 0 } ifelse
+ /lastVec\POE@key@savebeampoints\space lastVecTmp 7 -1 roll
} if
}%
\fi
\end@BeamObj
\POE@Verb{%
- { tx@OptexpDict begin ToVec def end } if
+ { tx@OptexpDict begin ToVec def ToVec def end } if
{ \tx@NodeScale @NewNode } if
}%
}%
@@ -1711,14 +1744,20 @@
savebeam and
currentdict /lastVecTmpLow known and
currentdict /lastVecTmpUp known and dup {
+ /prevVecLow\POE@key@savebeampoints\space /prevVecUp\POE@key@savebeampoints\space
+ currentdict /prevVecLow known currentdict /prevVecUp known and {
+ prevVecLow 3 -1 roll prevVecUp
+ } {
+ 0 0 3 -1 roll 0 0
+ } ifelse
/lastVecLow\POE@key@savebeampoints\space lastVecTmpLow
/lastVecUp\POE@key@savebeampoints\space lastVecTmpUp
- 7 -1 roll
+ 13 -1 roll
} if
}%
\end@BeamObj
\POE@Verb{%
- { tx@OptexpDict begin ToVec def ToVec def end } if
+ { tx@OptexpDict begin 4 { ToVec def } repeat end } if
{ \tx@NodeScale @NewNode @NewNode } if
}%
}%
@@ -2215,6 +2254,15 @@
\POE@str@basicname@prefix\POE@str@basicname@default BeamLow%
\ifx\\#1\\1\else#1\fi
}%
+\def\oe@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\newOptexpComp@#1#2{%
\POE@Verb{%
\tx@NodeScale
@@ -2739,20 +2787,18 @@
\POE@dict{VecAdd 0.5 VecScale}
\tx@UserCoor){\oenodeRefB{}}
\POE@Verb{%
+ gsave
+ STV CP T
/N@\oenodeRefA{} @GetCenter
/N@\oenodeRefB{} @GetCenter @ABVect NormalizeVec
90 matrix rotate dtransform 2 copy
- \pst@nodedict
- /GetCenterOrig /GetCenter load def
- /GetCenter { begin X Y end } def
- \POE@tempa \POE@tempb @ABVect
- \tx@UserCoor DotProd abs 3 1 roll
- \POE@tempc \POE@tempd @ABVect
- \tx@UserCoor DotProd abs
- /GetCenter /GetCenterOrig load def
- end
- /@@outht ED /@@inht ED
- }%
+ \POE@tempa \POE@tempb @ABVect
+ \tx@UserCoor DotProd abs 3 1 roll
+ \POE@tempc \POE@tempd @ABVect
+ \tx@UserCoor DotProd abs
+ grestore
+ /@@outht ED /@@inht ED
+ }%
\fi
\fi
\POE@drawcomponent[fiberbox]{#5}\fiberbox@ii
@@ -2840,7 +2886,7 @@
\def\POE@nlput@i(#1)(#2)#3#4{%
\begin@SpecialObj
\POE@LDNode(#1)(#2){#3}
- \pcline[linestyle=none](temp@nlputA)(temp@nlputB)%
+ \pcline[linestyle=none,fillstyle=none, arrows=-, ArrowInside=-](temp@nlputA)(temp@nlputB)%
\ncput[npos=0.5]{#4}%
\end@SpecialObj}
\def\POE@LDNode(#1)(#2)#3{%
@@ -2893,7 +2939,14 @@
}%
\def\POE@putlabel#1{%
\def\POE@temp{#1}%
- \ifx\POE@temp\@empty\else
+ \ifx\POE@temp\@empty
+ \ifx\POE@key@labelref\POE@str@labelref@global
+ \nput[labelsep=\POE@key@labeloffset]%
+ {\POE@key@labelangle}%
+ {\oenodeCenter{}}%
+ {\pnode(0,0){\oenodeLabel{}}}%
+ \fi
+ \else
\ifx\POE@key@labelref\POE@str@labelref@global
\nput[labelsep=\POE@key@labeloffset]%
{\POE@key@labelangle}%
@@ -2920,7 +2973,7 @@
{ /yA ED /xA ED /yB ED /xB ED} ifelse
} ifelse
} if >%
- \ncline[linestyle=none,fillstyle=none, npos=]%
+ \ncline[linestyle=none,fillstyle=none, npos=, arrows=-, ArrowInside=-]%
{\POE@trefnodeA}{\POE@trefnodeB}%
\ifx\POE@key@position\@empty
\ifx\POE@key@abspos\@empty
@@ -2947,6 +3000,7 @@
\newOptexpDipole[endbox]{optdetector}{}%
\newOptexpDipole{optdiode}{allowbeaminside=false}%
\newOptexpDipole{doveprism}{}%
+\newOptexpDipole{glanthompson}{}%
\newOptexpTripole{mirror}{}%
\newOptexpTripole[ref@angle=-135]{beamsplitter}{}%
\newOptexpTripole{optgrating}{}%
@@ -3099,7 +3153,7 @@
\psset[optexp]{abspos={\POE@dict{ @@x0 neg @@x sub }}}%
\fi\fi
\POE@disablepos
- \ncline[linestyle=none,fillstyle=none,npos=]%
+ \ncline[linestyle=none,fillstyle=none,npos=,arrows=-,ArrowInside=-]%
{\POE@refnodeA}{\POE@refnodeB}%
\begingroup
\psset{style=OptComp}%
@@ -3779,6 +3833,34 @@
(! \@wd \@ht 2 mul sub \@ht)%
(! \@ht 2 mul \@wd sub \@ht)%
\ignorespaces}%
+\def\glanthompson@ref{%
+ \POE@setref{/@@x \POE@key@glanthompsonwidth\space 0.5 mul def
+ /@@y \POE@key@glanthompsonheight\space 0.5 mul def
+ }%
+}%
+\def\glanthompson@nodes{%
+ \newOptexpCompAmb{%
+ {@@x neg 0} {0 1} @@x neg @@x trans {PlainIfc}
+ {@@x 0} {0 1} @@x neg @@x trans {PlainIfc}
+ {\POE@key@glanthompsongap\space -0.5 mul 0} {@@x neg @@y} 0 0 trans {PlainIfc}
+ {0 @@y neg} {1 0} @@y neg @@y trans {PlainIfc}
+ {0 @@y} {1 0} @@y neg @@y trans {PlainIfc}
+ 3 \POE@key@n
+ }
+}%
+\def\glanthompson@comp{%
+ \ifdim\POE@key@glanthompsongap pt>0pt
+ \pspolygon(!\POE@dict{@@x neg @@y})%
+ (!\POE@dict{@@x neg @@y neg})%
+ (!\POE@dict{@@x \POE@key@glanthompsongap\space sub @@y neg})
+ \pspolygon(!\POE@dict{@@x neg \POE@key@glanthompsongap\space add @@y})%
+ (!\POE@dict{@@x @@y})%
+ (!\POE@dict{@@x @@y neg})%
+ \else
+ \psframe(!\POE@dict{@@x neg @@y neg})(!\POE@dict{@@x @@y})
+ \psline[arrows=cc-cc](!\POE@dict{@@x neg @@y})(!\POE@dict{@@x @@y neg})
+ \fi
+}%
\def\pentaprism@nodes{%
\edef\@sz{\POE@key@pentaprismsize\space}%
\newOptexpComp{%
@@ -4286,7 +4368,7 @@
\psline[style=Fiber](\oenodeIn{})(\oenode{N}{})
\ifx\POE@key@coupleralign\POE@str@bottom
\psline[style=Fiber](! \POE@dict{/N@\oenodeIn{} @GetCenter}
- \tx@UserCoor \POE@key@couplersep\space sub)(\oenode{2}{})
+ \tx@UserCoor \POE@key@couplersep\space add)(\oenode{2}{})
\fi
\fi
\fi