summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/pst-optexp
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-07-13 21:30:08 +0000
committerKarl Berry <karl@freefriends.org>2014-07-13 21:30:08 +0000
commit59161ce421c69ad679d1c22d540f51b9e68a2497 (patch)
treef7cc1e35b86c42ab3ac4f51b4b3c54c3612e2e7b /Master/texmf-dist/tex/latex/pst-optexp
parent0453db105ed84bf57356a8f81ba35a47c4996371 (diff)
pst-optexp
git-svn-id: svn://tug.org/texlive/trunk@34592 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.sty282
1 files changed, 137 insertions, 145 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 c4936e3a675..02f6447b991 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: 4.8 (2014/02/28)
+%% Version: 4.10 (2014/06/04)
%%
%% Copyright (C) 2007-2014 by Christoph Bersch <usenet@bersch.net>
%%
@@ -31,7 +31,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{pst-optexp}
- [2014/02/28 v4.8 Optical experimental setups with PSTricks]
+ [2014/06/04 v4.10 Optical experimental setups with PSTricks]
\RequirePackage{ifthen}
\RequirePackage{pstricks}
\RequirePackage{pst-xkey}
@@ -723,6 +723,23 @@
\psset[optexp]{optboxwidth=#1, optboxheight=#2}%
}%
\psset[optexp]{optboxsize=1.4 0.8}%
+\define@key[psset]{optexp}{sourcewidth}{%
+ \pst@checknum{#1}\POE@key@sourcewidth
+}
+\define@key[psset]{optexp}{sourceheight}{%
+ \pst@checknum{#1}\POE@key@sourceheight
+}
+\define@key[psset]{optexp}{sourcesize}{%
+ \pst@expandafter\POE@psset@@sourcesize{#1} {} {} {}\@nil
+}%
+\def\POE@psset@@sourcesize#1 #2 #3\@nil{%
+ \ifx\\#2\\%
+ \PackageWarning{pst-optexp}{%
+ Parameter 'sourcesize' requires two numbers.}%
+ \fi
+ \psset[optexp]{sourcewidth=#1, sourceheight=#2}%
+}%
+\psset[optexp]{sourcesize=1.4 0.8}%
\define@key[psset]{optexp}{arrowcompwidth}{%
\pst@checknum{#1}\POE@key@arrowcompwidth
}
@@ -1587,7 +1604,7 @@
\pst@getint{#1}\POE@key@beampathcount
}%
\define@choicekey+[psset]{optexp}{beamalign}%
- [\val\nr]{rel,abs,relative,absolute}%
+ [\val\nr]{rel,abs,relative,absolute,firstcomp}%
{%
\ifcase\nr\relax
\let\POE@key@beamalign\POE@str@relative
@@ -2263,9 +2280,11 @@
/beamalign
\ifx\POE@key@beamalign\POE@str@absolute\space
absolute
- \else
+ \else\ifx\POE@key@beamalign\POE@str@relative\space
relative
- \fi def
+ \else
+ firstcomp
+ \fi\fi def
/beampathskip \POE@key@beampathskip\space def
\POE@key@beampathcount\space dup -1 gt { beampathskip add } if /beampathcount ED
/useNA \ifPOE@useNA true \else false \fi def
@@ -2331,6 +2350,7 @@
\ifx\pslinestyle\@none\ifx\psk@ArrowInside\@empty 1\else 0\fi\else 0\fi
\addto@pscode{ cleartomark false false }%
\else
+ \POE@HandleSourceBeam
\addto@pscode{%
{/nbeam {\POE@key@n cvx exec} bind def
\ifPOE@pswarning
@@ -2346,7 +2366,7 @@
0 exch
} if
} ifelse \tx@ScreenCoor] cvx
- \POE@key@beamangle\space
+ beamangle
currentdict /lastBeamPointTmp undef
currentdict /lastVecTmp undef
loadbeampoints 1 ge
@@ -2385,7 +2405,30 @@
\def\POE@strokesinglebeam{%
gsave
/Lineto /lineto load def
- \tx@Drawbeam
+ 20 dict begin
+ DrawbeamPrepare
+ counttomark 3 gt {
+ \ifx\psk@arrowA\arrowType@H
+ \pst@number\pshooklength
+ \else
+ \psk@arrowsize\space CLW mul add dup \psk@arrowlength\space mul exch \psk@arrowinset mul neg add
+ \fi
+ /arrowlength exch def
+ /arrowminlength \POE@key@ArrowInsideMinLength\space\pst@number\psunit mul def
+ /arrowmaxlength \POE@key@ArrowInsideMaxLength\space\pst@number\psunit mul def
+ /arrowpos \psk@ArrowInsidePos\space def
+ /arrowno \psk@ArrowInsideNo\space cvi def
+ /ArrowPosStart \psk@ArrowInsideOffset\space def
+ /dArrowPosStart \psk@ArrowInsidePos\space def
+ counttomark 3 idiv /N exch def
+ (\psk@ArrowInside) length 0 gt {
+ DrawbeamArrowInside
+ }{
+ DrawbeamSimple
+ } ifelse
+ } if
+ cleartomark
+ end
\tx@setlinejoin
\pst@number\pslinewidth SLW
\pst@usecolor\pslinecolor
@@ -2395,6 +2438,7 @@
}%
\def\drawwidebeam@ii{%
\def\pst@fill##1{ gsave ##1 grestore }%
+ \POE@HandleSourceBeam
\addto@pscode{%
{/nbeam {\POE@key@n cvx exec} bind def
\ifPOE@pswarning
@@ -2404,8 +2448,8 @@
\fi}%
}%
\addto@pscode{%
- \POE@key@beamangle\space dup
- \POE@key@beamdiv\space 0.5 mul dup 4 -1 roll add 3 1 roll sub
+ beamangle dup
+ beamdiv 0.5 mul dup 4 -1 roll add 3 1 roll sub
}%
\addto@pscode{%
[ \POE@key@beampos\space counttomark dup
@@ -2416,12 +2460,11 @@
0 exch
} if
} ifelse
- mark \POE@key@beamwidth\space counttomark 0 eq {
- 0
+ currentdict /beamwidth known {
+ beamwidth currentdict /beamwidth undef
} {
- 0.5 mul
- } ifelse
- exch pop
+ mark \POE@key@beamwidth\space counttomark 0 eq { 0 } if exch pop
+ } ifelse 0.5 mul
3 copy add \tx@ScreenCoor\space ToVec
5 1 roll sub \tx@ScreenCoor
] cvx
@@ -2499,96 +2542,6 @@
{ \tx@NodeScale @NewNode @NewNode } if
}%
}%
-\pst@def{Drawbeam}<
- { counttomark 6 le {
- exit
- } if
- 3 index not {
- pop pop pop
- }{
- exit
- } ifelse
- } loop
- { counttomark 3 le {
- exit
- } if
- counttomark 3 sub index not {
- counttomark -3 roll pop pop pop
- }{
- exit
- } ifelse
- } loop
- counttomark 3 le {
- cleartomark
- }{
- counttomark 3 div cvi /N ED
- (\psk@ArrowInside) length 0 gt {
- \ifx\psk@arrowA\arrowType@H % do we have a Hook arrow at the beginning?
- \pst@number\pshooklength % yes
- \else
- \psk@arrowsize\space CLW mul add dup \psk@arrowlength\space mul exch \psk@arrowinset mul neg add
- \fi
- /arrowlength exch def
- 6 copy pop % copy all four values for the arrow line
- /y1 ED /x1 ED pop /y2 ED /x2 ED % save them
- /Alpha y2 y1 sub x2 x1 sub Atan def % the gradient of the line
- pop 3 -1 roll 5 1 roll
- ArrowA
- x1 Alpha cos arrowlength mul add % dx add
- y1 Alpha sin arrowlength mul add % dy add, to get the current point at the end of the arrow tip
- 5 -1 roll 3 1 roll true
- /N N 1 sub def
- N {
- 6 copy pop
- /y1 ED /x1 ED pop /y2 ED /x2 ED /draw ED
- x1 y1 x2 y2 @ABDist dup
- \POE@key@ArrowInsideMinLength\space\pst@number\psunit mul ge
- exch \POE@key@ArrowInsideMaxLength\space\pst@number\psunit mul dup 0 lt
- 3 1 roll le or and {
- x1 y1
- \psk@ArrowInsidePos\space 1 gt {
- /Alpha y2 y1 sub x2 x1 sub Atan def
- /ArrowPos \psk@ArrowInsideOffset\space def
- /dArrowPos \psk@ArrowInsidePos\space abs def
- \psk@ArrowInsideNo\space cvi {
- /ArrowPos ArrowPos dArrowPos add def
- x1 Alpha cos ArrowPos mul add
- y1 Alpha sin ArrowPos mul add
- 6 index { ArrowInside } if
- pop pop
- } repeat
- }{
- /ArrowPos \psk@ArrowInsideOffset\space def
- /dArrowPos \psk@ArrowInsideNo 1 gt {%
- 1.0 \psk@ArrowInsideNo 1.0 add div
- }{\psk@ArrowInsidePos } ifelse def
- \psk@ArrowInsideNo\space cvi {
- /ArrowPos ArrowPos dArrowPos add def
- x2 x1 sub ArrowPos mul x1 add
- y2 y1 sub ArrowPos mul y1 add
- 6 index { ArrowInside } if
- pop pop
- } repeat
- } ifelse
- pop pop
- } if
- draw {Lineto}{moveto} ifelse
- } repeat
- }{
- pop 5 copy 3 -1 roll pop
- ArrowA pop pop pop pop
- counttomark 3 idiv -1 2 {
- pop {
- lineto
- }{
- moveto
- } ifelse
- } for
- } ifelse
- {CP 4 2 roll ArrowB lineto pop pop } {moveto} ifelse
- pop
- } ifelse
->
\def\POE@getcomprange#1-#2\@nil{%
\ifx\\#2\\%
\ifx\\#1\\%
@@ -3002,41 +2955,6 @@
}%
\ignorespaces}%
\let\newOptexpElecComp\newOptexpFiberComp
-\def\POE@compalias#1#2{%
- \POE@Verb{%
- /\oenode{}{#2} dup currentdict exch known {
- load /\oenode{}{#1} ED
- } {
- pop
- } ifelse
- (\oenode{}{#1}) (\oenode{}{#2})
- tx@NodeDict begin
- 1 {
- 3 copy inttostr dup
- 3 1 roll 2 copy NodeName
- currentdict exch known {
- NodeName load 3 1 roll NodeName ED
- 1 add
- } {
- pop (N) NodeName load 3 1 roll
- pop (N) NodeName ED
- pop exit
- } ifelse
- } loop
- [ (A) (B) (@A) (@B) (Center) (Label) (Rotref)
- (TrefA) (TrefB) (@TrefA) (@TrefB) (Ext)
- counttomark {
- counttomark 3 add -2 roll 2 copy counttomark 1 add 2 roll
- 3 -1 roll dup 4 1 roll NodeName dup
- currentdict exch known {
- load 3 1 roll exch NodeName ED
- } {
- pop pop pop
- } ifelse
- } repeat pop pop pop
- end
- }%
-\ignorespaces}%
\def\optplane{%
\@ifnextchar[%]
{\optplane@i}{\optplane@i[]}%
@@ -3047,6 +2965,43 @@
(! \POE@tempa exch 1 sub exch \tx@UserCoor)%
(! \POE@tempa exch 1 add exch \tx@UserCoor)%
\ignorespaces}%
+\def\POE@SaveBeamParameters{%
+ \let\POE@tempA\POE@key@beamangle
+ \let\POE@tempB\POE@key@beamdiv
+ \let\POE@tempC\POE@key@beamwidth
+ \let\POE@tempD\POE@key@beamalign
+ \let\POE@key@beamangle\relax
+ \let\POE@key@beamdiv\relax
+ \let\POE@key@beamwidth\relax
+ \let\POE@key@beamalign\relax
+}%
+\def\POE@SetSourceAndRestoreBeamParameters{%
+ \let\POE@key@sourcebeamangle\POE@key@beamangle
+ \let\POE@key@sourcebeamdiv\POE@key@beamdiv
+ \let\POE@key@sourcebeamwidth\POE@key@beamwidth
+ \let\POE@key@sourcebeamalign\POE@key@beamalign
+ \let\POE@key@beamangle\POE@tempA
+ \let\POE@key@beamdiv\POE@tempB
+ \let\POE@key@beamwidth\POE@tempC
+ \let\POE@key@beamalign\POE@tempD
+}%
+\def\POE@HandleSourceBeam{%
+ \addto@pscode{%
+ counttomark 0 eq not {
+ dup cvn load dup /source known {
+ /source get { def } forall
+ }{ pop } ifelse
+ } if
+ beamalign firstcomp eq {
+ dup dup (Center) NodeName tx@NodeDict exch known not {
+ pop /beamalign relative def
+ } {
+ RelConnAngle@tref exch atan /beamangle exch def
+ /beamalign absolute def
+ } ifelse
+ } if
+ }%
+}%
\def\begin@OptexpObj{%
\global\advance\POE@cnt by 1
\addbefore@par{compname={}}%
@@ -3054,7 +3009,9 @@
\begingroup
\POE@insideobjtrue
\POE@Verb{InitOptexpComp }%
+ \POE@SaveBeamParameters
\use@par
+ \POE@SetSourceAndRestoreBeamParameters
\let\POE@key@comp@Yshift\POE@key@compshift%
\let\POE@key@comp@Xshift\POE@key@compoffset%
\edef\POE@refnodeA{\oenodeRefA{}}%
@@ -3090,9 +3047,16 @@
\POE@transformnode{\oenode@RefB{}}{\oenode@TrefB{}}%
}%
}%
+\def\POE@unsetbeamparameters{%
+ \let\POE@key@beamangle\relax
+ \let\POE@key@beamdiv\relax
+ \let\POE@key@beamwidth\relax
+}%
\def\end@OptexpObj{%
\ifnum9<1\POE@key@compname\else
- \POE@compalias{\POE@key@compname}{\the\POE@cnt}%
+ \POE@Verb{
+ (\oenode{}{\POE@key@compname})
+ (\oenode{}{\the\POE@cnt}) CompAlias }%
\fi
\endgroup
\ignorespaces%
@@ -3283,7 +3247,7 @@
\ifPOE@backlayer
\POE@Verb{%
(1) (3) (\oenode{}{}) CorrectDipoleIfc
- (2) (N) (\oenode{}{}) CorrectDipoleIfc
+ (2) (4) (\oenode{}{}) CorrectDipoleIfc
}%
\ifPOE@fiberpresetin@
\ifPOE@fiberpresetin@top
@@ -3335,7 +3299,7 @@
\ifPOE@backlayer
\POE@Verb{%
(1) (2) (\oenode{}{}) CorrectDipoleIfc
- (1) (N) (\oenode{}{}) CorrectDipoleIfc
+ (1) (3) (\oenode{}{}) CorrectDipoleIfc
}%
\ifPOE@fiberpresetin@
\drawfiber@{FiberIn}[stopnode=1](#1){}
@@ -3381,8 +3345,8 @@
\POE@drawcomponent{wdmcoupler}{#4}
\ifPOE@backlayer
\POE@Verb{%
- (1) (N) (\oenode{}{}) CorrectDipoleIfc
- (2) (N) (\oenode{}{}) CorrectDipoleIfc
+ (1) (3) (\oenode{}{}) CorrectDipoleIfc
+ (2) (3) (\oenode{}{}) CorrectDipoleIfc
}%
\ifPOE@fiberpresetout@
\drawfiber@{FiberOut}[startnode=N]{}(#3)
@@ -3738,6 +3702,7 @@
\newOptexpDipole{crystal}
\newOptexpDipole{polarization}
\newOptexpDipole{optbox}
+\newOptexpDipole{optsource}{position=start}
\newOptexpDipole{optplate}
\newOptexpDipole{optretplate}
\newOptexpDipole{optdetector}{position=end}
@@ -4613,6 +4578,33 @@
}%
}%
\let\optbox@comp\POE@comp@rectangle
+\def\optsource@ref{%
+ \let\POE@key@optboxwidth\POE@key@sourcewidth
+ \let\POE@key@optboxheight\POE@key@sourceheight
+ \optbox@ref
+}%
+\def\optsource@nodes{%
+ \POE@dipole@nodes
+ \POE@Verb{%
+ \oenode{}{} begin
+ 4 dict dup /source exch def begin
+ \if\POE@key@sourcebeamangle\relax\else
+ /beamangle \POE@key@sourcebeamangle\space def
+ \fi
+ \if\POE@key@sourcebeamdiv\relax\else
+ /beamdiv \POE@key@sourcebeamdiv\space def
+ \fi
+ \if\POE@key@sourcebeamwidth\relax\else
+ /beamwidth \POE@key@sourcebeamwidth\space def
+ \fi
+ \if\POE@key@sourcebeamalign\relax\else
+ /beamalign \POE@key@sourcebeamalign\space def
+ \fi
+ end
+ source length 0 eq { currentdict /source undef } if
+ end }%
+}%
+\let\optsource@comp\POE@comp@rectangle
\def\optplate@ref{%
\POE@setref{/@@y \POE@key@plateheight\space 0.5 mul def }%
}%
@@ -5580,7 +5572,7 @@
\ifPOE@backlayer
\POE@Verb{%
(1) (3) (\oenode{}{}) CorrectDipoleIfc
- (2) (N) (\oenode{}{}) CorrectDipoleIfc
+ (2) (4) (\oenode{}{}) CorrectDipoleIfc
}%
\ifPOE@wirepresetin@top
\drawwire@{WireIn1}[stopnode=1](#1){}