summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-06-18 18:34:46 +0000
committerKarl Berry <karl@freefriends.org>2008-06-18 18:34:46 +0000
commita63b3cf004ff93cac025d38a450b9e383a16e044 (patch)
tree222aa79ff0c547ca82761198059a83695c1c256b /Master/texmf-dist/doc
parent47c3018e28d4f17ef2156f9866d0d012e8c0567e (diff)
pst-optexp update (17jun08)
git-svn-id: svn://tug.org/texlive/trunk@8843 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r--Master/texmf-dist/doc/generic/pst-optexp/Changes57
-rw-r--r--Master/texmf-dist/doc/generic/pst-optexp/README21
-rw-r--r--Master/texmf-dist/doc/generic/pst-optexp/doc/parque-nacional.eps286
-rw-r--r--Master/texmf-dist/doc/generic/pst-optexp/doc/pst-optexp-doc.pdfbin235707 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-optexp/pst-optexp-doc.pdfbin0 -> 256902 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pst-optexp/pst-optexp-doc.tex (renamed from Master/texmf-dist/doc/generic/pst-optexp/doc/pst-optexp-doc.tex)494
6 files changed, 355 insertions, 503 deletions
diff --git a/Master/texmf-dist/doc/generic/pst-optexp/Changes b/Master/texmf-dist/doc/generic/pst-optexp/Changes
index 00eb1612a0b..6b1ccc2752f 100644
--- a/Master/texmf-dist/doc/generic/pst-optexp/Changes
+++ b/Master/texmf-dist/doc/generic/pst-optexp/Changes
@@ -1,28 +1,45 @@
-1.1 2007-09-06
-
- * Considerably enhanced labeling of the components.
- Added new parameter 'labelref' which specifies the
- reference coordinate system for the label positioning
- and the rotation of the label. Default is labelref=relgrav,
- the label point is rotated together with the component, but
- the label text itself is not rotated.
+1.2 2008-06-17 * Great emprovement of the TeX and Postscript code.
- * parameter labelrelative is now obsolete, and replaced by
- labelref=relative. It will be removed in future versions.
+ * New macros \newOptexpDipole, \newOptexpDipoleNolabel and
+ \newOptexpTripole which allow very convenient definition
+ of new components.
- * parameter polwidth, bswidth, iwidth and owidth are now obsolete,
- and replaced by polsize, bssize, innerheight and outerheight for
- consistency reasons. They will be removed in future versions.
+ * Enhancement of the lens design. Now much more types of lenses
+ with two different curvatures and thick lenses are possible.
+ The new parameters lensradiusleft, lensradiusright and lens
+ are introduced.
+ Unfortunately complete backward compatibility for the case
+ where the lens is defined using only lenswidth and lensheight
+ was not possible. Using the old behaviour is possible only
+ by setting lenstype explicitly which in turn does not allow you
+ to use the new features.
- * macro \polarisation was changed to \polarization for consistency reasons.
- The old notation is obsolete and will be removed in future versions.
+ * Added curved mirrors (new parameter mirrorradius).
- * fixed bug: filling of all components with 'fillstyle' is now possible.
+ * Added binary gratings (new parameter optgridtype).
- * fixed bug: added some liftpen=1 in the code to fix the look of
- the lenses and the optgrid.
+1.1 2007-09-06 * Considerably enhanced labeling of the components.
+ Added new parameter 'labelref' which specifies the
+ reference coordinate system for the label positioning
+ and the rotation of the label. Default is labelref=relgrav,
+ the label point is rotated together with the component, but
+ the label text itself is not rotated.
-1.0 2007-07-18
+ * parameter labelrelative is now obsolete, and replaced by
+ labelref=relative. It will be removed in future versions.
- first CTAN version
+ * parameter polwidth, bswidth, iwidth and owidth are now obsolete,
+ and replaced by polsize, bssize, innerheight and outerheight for
+ consistency reasons. They will be removed in future versions.
+
+ * macro \polarisation was changed to \polarization for consistency.
+ The old notation is obsolete and will be removed in future versions.
+
+ * fixed bug: filling of all components with 'fillstyle'
+ is now possible.
+
+ * added some liftpen=1 in the code to fix the look of
+ the lenses and the optgrid.
+
+1.0 2007-07-18 first CTAN version
diff --git a/Master/texmf-dist/doc/generic/pst-optexp/README b/Master/texmf-dist/doc/generic/pst-optexp/README
index 66b14b7368a..43672507567 100644
--- a/Master/texmf-dist/doc/generic/pst-optexp/README
+++ b/Master/texmf-dist/doc/generic/pst-optexp/README
@@ -4,12 +4,29 @@ setups. Mechanisms for proper alignment of different components are
provided internally. This way the user does not have to care for proper
orientation of the elements.
-This is version 1.1
+This is version 1.2
For a changelog see file Changes
+Save the files
+
+pst-optexp.sty
+pst-optexp.tex
+pst-optexp.pro
+
+in any place, where latex or any other TeX program will find it.
+The pro file should go into $TEXMF$/dvips/pstricks/.
+
+pst-optexp uses the extended version of the keyval package. So
+be sure that you
+- have installed xkeyval with the special pst-xkey
+ (CTAN: tex-archive/macros/latex/contrib/xkeyval/)
+- do not load another package after pst-optexp, which loads
+ the old keyval.sty or pst-key.tex
+
+
This material is subject to the LaTeX Project Public License.
See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html
for the details of that license.
--
-Christoph Bersch 2007/09/06
+Christoph Bersch 2008/06/17
diff --git a/Master/texmf-dist/doc/generic/pst-optexp/doc/parque-nacional.eps b/Master/texmf-dist/doc/generic/pst-optexp/doc/parque-nacional.eps
deleted file mode 100644
index 9576fcfe18a..00000000000
--- a/Master/texmf-dist/doc/generic/pst-optexp/doc/parque-nacional.eps
+++ /dev/null
@@ -1,286 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: jpeg2ps V1.9 by Thomas Merz
-%%Title: parque-nacional.jpg
-%%CreationDate: Thu Jun 16 20:16:59 2005
-%%BoundingBox: 20 20 173 176
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%EndComments
-%%BeginProlog
-%%EndProlog
-%%Page: 1 1
-/languagelevel where {pop languagelevel 2 lt}{true} ifelse {
- (JPEG file 'parque-nacional.jpg' needs PostScript Level 2!\n) dup print flush
- /Helvetica findfont 20 scalefont setfont 100 100 moveto show showpage stop
-} if
-save
-/RawData currentfile /ASCII85Decode filter def
-/Data RawData << >> /DCTDecode filter def
-20 20 translate
-152.64 155.52 scale
-/DeviceRGB setcolorspace
-{ << /ImageType 1
- /Width 212
- /Height 216
- /ImageMatrix [ 212 0 0 -216 0 216 ]
- /DataSource Data
- /BitsPerComponent 8
- /Decode [0 1 0 1 0 1]
- >> image
- Data closefile
- RawData flushfile
- showpage
- restore
-} exec
-s4IA0!"_al8O`[\!<E12!+Z'0s5<qn7<iNY!!#_f!%IsK!!iQ)zs8E!76ZQaHFCe
-u*GA2/4+B3#c+@f!t;#f8M6N@8l"9\i0"U"r2"U,&6#7LkC#6tJE$O[7L&J#Ke&J
-#Hc',DQ(',2?"&J5j'(`FD8+!2R<(Et+K*[D^H+!1I:!(-bj"U,,8#7_"F%NZ;r'
-HS;:*Zc@D*Zc@D*Zc@D*Zc@D*Zc@D*Zc@D*Zc@D*Zc@D*Zc@D*Zc@D*Zc@D*ZcC&
-^]4rP!8%;$!s'SG!YGG8&HVpM!#tt=!!`N*zzz!<NB-"pY59s24n2&-)_4"9\f1"
-9f#8$j-J0!!*-'!!EH;"qi(6#89BI;.4Hq#S]%V'dKEW_)"DU@Zn(e(*k1aEm`h^
--8e.h@s*BtUU'E$PLKQM!#bk<!WrH(zz!!!!"!WW<+":"nE!%ec_!WiE)!<WH*!s
-J]*z!<Ni8+VHL41-nb@'-^j!6@k7D;K9P#nGh2B$j-M1!YGMH!'^J'SXa]ne?gg?
-kYZ,od_eG!>[LbIS[utmW+pLKbgIj#Umkd]=W=Y>Q6Op+D/T;\oX5dX<,'8Uf9U^
-O$OnX=eS$OM,T@1O+HIQ&?S\r.:\IU<A+p8Hacl\#`Z,ApG!^cid[Qh_r?Jjs,Ip
-oCgdhF33Ir[M!.+*YD_BMAZKm<5Ejr'\5UtV\;s=qIG7W;@o,NWF13.e7:^\j3H"
-f1H8sX:X+70p.icV]1DMlZVPjJ=j-=0"ab!Lh\Yi,[gBG:JE46sAu,3J)H"XR2`V
-.EfkPUn0@q>s4SMeVHdCR!c&5'akOl*BmF\&.Lk1CmHJ,FeTPa3>[E$p6eZ/^:R+
-rCR[N(hH@8Q;7U0AfusH-Zu8kj73i$,9ok+SE7!(5X,1!-#i5UArOp$-=phe>deN
-k3>+k.M^qd:I!-GuX8YZ[pdP2_P>2j"@5fe<!:(W[i?g\p6\c%3<g$&TS!Q-1fDM
-JKDQtS`>,ihmJNYcCo@)!t[[07WV$aMmisJFn;MM""J9MbUf0/Y2Y">lrSpAJT8m
-[gf#$+ke\R6?X<2"+'IuJ,"DAVg\aYt)Q%SlU8"XQ]bU-Kr-&A*1*]qPQqg&D&/F
--C;C&"+3aDPq)Z==LtqOHleGgJ#2,OE"a%^4a`j7o:b!fN+;kV=rc6SL:jt[=Wp'
-m@Y6(9i$EkWa"gPkIVo"=siOYDO$]BPUBmhi!n^B<rm*HH,e;f:nF.uV(9_]Q;`d
-<[;;[3:8YgUBSB0"o+]Cl_'q[N\:cE-bEa`[f%aoB;">0/%$;/9`@X4j11l,D1DL
-Ia*,W_KL4bBMP*.[&PC$WSn(o4`NB3b0k.<,u/DC>09AIs@H>?nAY-tgo)OpXT>j
-U*#8gS>@PH&3E/@C&:aTsfVT[kG<S1DPll9r<@K^=Yt8-s<NYB3EcDifq8,aaR%p
--_Oa/[I70dR8]Y3AU6M[O1<2#t[;%f%o*!IP@./+Y:gGR7?/S!WbjW2nX!+>S"i;
-%
-B[Q)9W/[SW;F6jegX"76o]iFH5M43E4Z]2.rK\@cOuB>WM8MOok9_TK[[IUa"27j
-7F?p<`60V6U]i;m7kLO%Oe;kG%D3lW8tf+%V)\#I&qSdhXH\q)HYIQ[T^ds,f*g1
-](A#%2[</@W)!+FMbU99r+8^_h$e8@,YNY8)Pbk[_9M=RUr?YY1d)/IWdOC1ufiH
-"U#NmG(8nT%KDT-FV"YT[T.aZi:g.=@#?7`%@Fi9QAS?8\hW$#[rh,JO$r*Z=>gq
->;g1sI/M[aUX^ne>)AU@u..naV:A.pJEa1G2O3D(Ou+=Ak6i'5bB8I?!6`SXg@?'
-m:a@N4:[Rg(rWA6]'$OpC[eanaM@VW^TftD8dgc7>I*"O#W%=K.&th_bTaf(07AV
-Eg4'_ZPr7^fd]QW!#tc&Up^rUDN81Fm;5RUO7[LaX(XB6ICl2Ja`L*&[Bho]_U?O
-X]iM/G$<<Q?/d*>'Fj(0b"DnVr,UlX7cC%__o0<p`j:-]8]J$2C((1!EH&8=8S<Z
-F*iEhMg18`R+iGl<8q07^0/PBhaZu`*2>se-@Z_FcJ/\q9,b"pfp7_L4R9iWX-&m
-0TR^=/"H8d`]s%fL]U`.X[2>!d38DFhFu=F;DQ;H-,sX*o)u_bQ;mG2JZY>Dg^4<
-bE,TH#*!GX:D['`MB;uDI'!\W,79?\Hi1_JCC\#0WnF&dDk:V-;J0a)cBq)VosUn
-ar<us[s@L)Qk:M0cQE@bEJ+;sA@RU_d/k,I+7-9<3)\>e(ho`0m\Ddh[lu0<l`;L
-mND_;5"#o+NDH)at+IcOqZ9jilD0gWfKN?[LSL$h;E5)ObNU^3cYFq:D7$jcX!#7
-DMJ.Rq@8idI?'REqG@7l]IV,Q$Edj<b5P[QRUBq](5IO+B2Uu!ngB'ME&0F=_C!<
-#Z(`TFV&[a\MHo"%l*q93R0>=WUk&''khr1':R860m4R_E`$MuNcj8$!C>]#Rjs@
-9gj&g99ZG00dk%!'qHfa[f%$Ai_rUOH)r&Rigqso14S+b]?V/-*ZSicd%!Cm(bIb
-U&%![#U!Jf8q;c@?Ql3neE8W8.(An[U+.r%&>Z)p@AueJ"A<:$81(#"k`:j[M:[e
-VI#LRnGj:G9Edo3G%t3R"E`/+c"t!E";ObR#6ms'"EaYTfQriLK&)J!r_O,-LYd"
-Dc..3Feq?ceJV=8S)D%4=6^%?s!Js"c-<`XNHa_A1%R?r#,>>ChC$6@&*$t0!Di>
-eU*bHG?o$"@02AgDG08cTYX5WpsS-Z-lSNRa;YRiS3!8n4'6\f5!dIZWuqVM9bo*
-fh#KR19G=9pFAbb-X2NTDICYL>5tL/?s2C1aH:M\8bu4MFK%_<24re*s(&*V)AVe
-h'^<GoX%L;<:b"!F)'ec3L52YiiT2b$0g^1)0p2kPqu0!8)g%?B/;oAI$[m%Q'Dt
-JkGWOm4njL1g?)D'.[tT]-rESUkG39Jlo'D0nVB2"N"omY>S<60GE.XE2H>K0F;O
-cOn-C:H5lm\PW?;fYIn3JucXcOION.fLdSjp2R)>iHBF@%>N*1>P+F%i2iRSkOEC
-Z8las)5QQ6fBt7,>t=#6b/K:uNmV3_)'-!<Q4C^f%RnPsblfn3k&=&kkR;?B@ZJ"
-GfW4@LtWe$;$8%K*EJ/ku;arNX.Ae$A\eo0VDp9BJ?A5#B4(f[>lD6_LeKnl$0CA
-H-^Vpk)4h`[O8o(<;<S;iCBCWVU5+gaT>`bcOqUoT1_e!`$@17g-%+`lYfnM<g>X
-?d5;0jK?MI[QgG#CfCO^-KD7lq].l)r,qp2[%s%ZO>C]#Si*rf@gZSubC2);L5T*
-,o#ds:q8->jBf8b>E.no9u>Eiiq_oZbn</%T"?Krn):W`eub:lL=9fdrj8I?nIUu
-1cp5*.!EN?P'Q[I(3MBI8aNUi#"b'%BO(YShA#h[<s9?oJn9O^fe;dHrP-rr>kLf
-`(s2AUe`VRj'"p#PAT;rrBp4Ir^pGN?!D3A]q<b)u[I"O''U\#97\G#8'o`<DTID
-RZMeg\tLI9TW!!.<K]jXY8V[ElYe2nG]Q3FehP2Y"_*<`WT:u($2:uBh9(o'F;]Y
-6^!FtUMb.,>9(,616ES\@"X/c:(3unD(Vq]7h8S_s7>M'XF=AEoX>:]NP3+0>$mp
-,'=CtN-/lsNR%$D5>HW]QV]u@gq[>a:$o'BeF/9(anduITn-<d5kc=0\fFgQ3$S*
-W4M*_6m2@`nXIS&a;M`+B]'ULD<HXX^%H[H'=#@DfRk$VFF&I)Q[Wl//]bg.@m19
-$53W;GDkV`"\Lp_:,Q\R7pnAh0EVRBf.50amR?@p[IZ,0.ug:U#t-'La4P[8[qk`
-Je)i>a.7Hl_L*MbQ]5SBNDDE.VID!B,X!Y4Q^5u)apK[tHX+Ie\Jeci29!!\S%lo
-6P(J:kW"=<3Zm;91h>D^6QZ*#&<L-*"^_PPQ:/9b>d4WY[NR[=$RJD:mA2_/p&3<
-0CBUiF9VlGl20SrtKeb*M!e!XHXU8!a6X7JrJ'm4Uj%t#3aPGb(ar\eNm`mlhU;W
-8,#h4UuQ4N&-*lQ1A=p1.l854Ldph+_:?igj[S1IuKXbZ#@QqUYlB&NRaf<JrP[1
-hVQU7srPfOd:o+\QF&[,m?e=,lAkbUmiXdiWJ37!EA-n8D7lN^9@WsZ],X)Pals8
-MM/Xtb;-8%4jn>Yh,%t,WQ"q`ODLQkQaecK?[.`*=6qBjUSq-F220,1_hs_j`=j?
-_prV#t=Jf&t7S8,8#O:0i[Si9^Dtf.D\fnTRLiLrm(#`>6$`b.HX!r'l/M4CFLE6
-gu?co&'r1N<ZONSZUrE(+5=%:UR0>F#*0%&j[-9\9'gMho/-Bo-[@8/pi=uVj^<4
-3`LOJFI""\DbZ2Uk&OY*6*0=6r'XKa#A!p=/E@#2IFQX[U4r&:,EEcPWa'>?i+&!
-U4j"9(e!FIZJ`k'+O_Ar1WYlOqpZPk*a!+48jk]d0XX06$42qU3^Z%EtG*rMC[a%
-N5\(%l[Rs/.f+b\lM>SN6>fPl8fk2[/eOR<5#<IXe"Sn=T$=p[iTgdW80mML@>\$
-I8.+&k8s0J6/84!9p5T>P>SBD!5tmRdp6--M`'+C8_))-drrAeT^N>j2Nr4?jE6G
-JHI!NDJ4tBQVXi(omlAHrgPuUfo:'mTN@D^i^':I?a?qId+!5HqhfZ%470#nfRXN
-=#B^/NkBo\"3_+)G,O6&?n.88#c/.u<]emNfiC6@GV4Ws#s0D65;sYgQ."3I<\-,
-ZkZZ6:LaiA(g^D9>m>I`+HVC.$lZ"8o<7S\'^`Q.7sZ!9!<?=.p*hSrF5`m%p9T1
-%
-H9sLl:[<RroDpCM"=/(XlGMEqF(aRm)amX-rLQ+-gT%,gm)SPLh5]VBm?9cKS?^,
-:of.gHN=c-NR-F:e%1BNhuukr@g'DulHU&E_XhYBk(-OTP1d/l^MuN^IBJ39c6de
-,/&KR`nIA$7M)/"@UJkoE^.ZRdQDHI+hVd9FF[%)d]G#uE\4afpDBG"3RspWZl)q
-DJP<!\%Q5!AaS;Bea,sZ1J1_"7F;M*A6qb1Kk-W#R;WF=I=eCq]9(7+c5&4+Zp(.
-Y?V(8@VgRqXCM7Jf*O=fk[Y<t]8RJk`mGqdNF-n<VcY"\Cau7D]'M>bp*.SC;.ug
-@AI=AVjYM>aJ'o&i(.#!*c%j_Q]M$iJ/57K#(B1<to88U8;Vkb"[NC?sfY:rJn@<
-`b/;)\=\@tNjPb6RSrAb<MXAags)*srrB=AXgLFL_X6p/F<6VD)YZo$hD7rA/3\s
-;$`@X,+hE@B8Y;2o%b"r;+aHjNA"1^LN@?/(86]sXBMq0[[%,69:8'rI*rb17*])
-$L.Di/Y[na+tY#Vj`<BB@*U^mD)MZ,l4OYJN2,0Z=gfpd!(Y\Ulb_0FnHH&8/VSo
-B.1PfhLjqi-Z$DQX\Q`=sfd-KE:F@J+q,HeAHlM5JeeQBGj!TGq/`@$.X9="iYRe
-dJE#Xb,bZA18uAPhC9*LZ^+nQ$eSM?IJi46#ZZ=ca<9oCC8FhBi%=I29$sYU8qET
-;N6`cgIV!gm3$i&DZeThVS[&WM$E6FXq[Za_oslXm^\0-Bo+W+_0XNuO"&'h*[dD
-@IEOi7JE-+j^U'`,=<P,\[83C*M:Xgt,j7JLli%K<<Oi%q!e8`idMd4kOU?&>YYo
-TJh9_(Z,U@snhCYOKk*>;p+RM?fHC^$BfFnnb\sq03HR_9\Y*W)6LthDF#%iLA.C
-;V."S7dMnr1A#UR2'?3Cu-Wh-u-fUpuI,:$iT#,ko>kRSoom')&bIFPCuk7-np*E
-p'Mo@eS6O5;_(aBV=\U()GZ=nI:Kd;RgI]j1&eg?bXSY,037-(/IGd-UpUr8aeUN
-<n=&u=&ucY;;i1PDK?e;_JOX`'tk5Z<Flee0jiFYNh<3K!)R3k)l:CVOSiKV23FA
-*In10;CJbl%a[jeIW/%\)MkoJ<P7VT17eR0L7crl05*7!<g<,!6?ZEKK[S]LTPJ&
-$u^k;R)_uB`+\R4-h-4E9"EL-gT7s-RkpIU3_(W4[!q[$T@lP8,C(6YKQgAWCaR[
-R4+F>,&2ECh`-Z@[`D!0B['hW4N>/.+,X@r\42&77guAP7m4.BIYfVGj@l/!H3]W
-$6N<6NP"ZPRnCD7T!_;HpR!4ntMrq*iAFXp2:-Z&u_aK@gUIjWb!X51u,I/ArT`(
-UEoa4Z3#sH6Ae&e,2G9cCqME"*,][62J!Os>mSndBKDmOF.8[21>&M1OaGs`,5$@
-Mmb>SkZ#QR0CgJN_EMj&PN%e29[.X"U<;.%h8p`a%+nTL_S#0RPgA+=e6g!Y$@k7
-[qGhS+U3LRlI1\.C'.jM#XP\k([,>]/>H]-O9$sK5*-X]Gag(;U\f>Dj&fB@*$]0
-,HY:Pue"P#XNq$#EOnjjk?5RW/ZSKW'Ec'dVpW\>;J_#2)bE6ZrtO39*u'DJb--3
-(@':9YW+c>:L_Z6Y\PXgp&9AJ802U+%SB?:F1&M[bHeQP(bgP\lLkD4/3[pn:)-\
-C;]`4&QarRS9$bbIG5o7gBAuS.ilIA/Su6N)k0FMMJ%pHCMVk[-RfboRM5<0V8pu
-db*aP2RfF?Tacq&rBR4A0<ZT0pNXS%O'oaY`PmT$ZX`US-TERc\&jQIc,s[Vb:10
-leNCBUg__P5;H7Z?PPN$na;ACtQD'cQ$5F@,%5a:-Zl_I(d:R@Q;<4(_u1CPqsC$
-*:ZUZ.K2Ko=J*fdir,cSBK)M'n.#/RV6[8Y:.ZMl89gq@]'PU_Jce;$fipALU%HD
-51"gDB;3D!NS&!=\Zt7>&>`aRPDu.Ms^=%`fWfd;CMoU.9*8RG[JH:AWYJ]4J6"B
-e>^l].0o,/o'OZD9H^e8/rQQ?4+]Pfe>2/p<0shH3d988E79^>#$V4,C"5mHR9G9
-G4c*m-QRMk6@7WXL!C6l:DMC"g-XEG*=XPRF'c&1YR<+PON.kCBb*?Ns!8bjigLC
-fD*#[_*_7Q((;**V"Soq;fq,AQYK(+dB_:7YIfQ'8UEj%Z=(>4,VI^#Xt-L4Mj+X
-5OHOM#^-&h[t*<OR4G3:)C?F=_.!&0fCK%:L1V'TOlkEc?]I([VT!f^0Q[*bGe)?
-oA</Q2&=cfAqJY4R"g#(Ga_?FGLYGTPJ*h`5M$=MC"cV(5N];#/^-#UiH?!m3BC1
-X7:#cTXC_sC-"V1TWH/P:a7gF+b[]ND(W'?7Vc:E80jf+m_<:UQ[.2Q-.`p?D0s3
-/3p%a*!$hC"m$Y29l_)M])@e6UCH^L)rrB#t+8BBUmZS:%`'+DRq%#b<hrqUdPL/
-l!]M'jg\1,2W$Up3MQ$\<6&9igVqEc<Y"uh/G5jJar`$8\482Q7AOtY5t&oXR2#V
-CXNg(TSl<_0SY916fV0"u4m6tATWO@WGMZuo#,F9Xe&2@uN=L.I;o_>r4l(5.(/<
-eCrs((a3O6.ueQrF++i^`X*E!GD^OPs>T1"COM/!$I5Ug(n0M5$ab;<,8;L+70L0
-k+u5d;6?S:5+k^"@[2XXQI,&n^<m?)Otq^GpY$mt!j]upBr\A9Ld7cu.3$9NS[kP
-2GRC]Yh.]2U@T3k8D4jBF.3cQZFFbE::AkpYJPo+(CMHV>9gh-PM^J0Jcu%c,^)8
-@+"KN^tUL]><Ihmg&j<[Ca!2)fZ95D#k)D>dBZe]jArrC-14A!*[/lq,lmZSL>#;
-Mt;]P,;e-D7c@6DIkY>qp-0/JBOT7;RR!b^u)_NJROHfe>RL#G>1'qC5S.b!]^ef
-Knk0:#^P[3G)U09?-GNBbLfW;f_u:L`*c-K]VDN@WmYPrrCLrT;`d`dToFY$;qSF
-P_B9U/i5dPU@8f+;T,(SUfFH/C7D.]WJ!J+P*D4G9K8:#O9`W82X(j%-,qLrHmp:
-BY\JFk9YF2-`?gA:J]pQD9AGTtMT<%VeaV:%:?VGDDL%4f=hmQ,:g^"IglqOqn[F
->"E;A9E[Sk9&St@?T.m[&,7e1UUl7B-?";@Ye1r':e<QB@:pr4,1YgZiPj(3EF]S
-*FgKnYdEhJmY3H=G'7?@dR94<m2N'kPTV_H];c0N;Z;A)*qJc.!_E7AH?jKS:N86
-Vb"MZ#-r&+iG@=5erV+e8)6@1RAaFb^cTu,1jsD!!1T4#E3<*BA,QV<,)`*WD_pD
-XY!RIaBDq9*U=%!!TK3>m=K#Wge$L[+ia2pP;u41:+DT#Q#j=TMcM<LV!*"0(V%'
-&k_j3NRgi4L/N$MmjYgFk?JV.9ZC=#@<p1d@&7OYL?POLrns8Y&=N-YVMa`f2:=K
-?Ee#kO_[)3?PjLSV5ClEn-'K$*Gf6]p]<JIBuP49HW0.?8rn0F]3NNlQOFgC+dQI
-Lgo+S<BP'BK`ac\Q@Se>\s&_Fs"BCC)UT0GID2-%R44,\ih%>)d?]#-&5D]"Mk2>
-`4R70Z%iF"]OTh71rX<.a"V0T4nc;[>IS[Ih&_AKa"8$$47!U&8j':beLKu&eqNn
-S#TLqS5O]48Tb:>7rji*,;4YT*I!M`(R_D`I!\)p]):!RV+W;-U<F06;e&^Y"+(*
->a!`i;Bjbg%,q/cn8ouZ,3b[9O@D:ReTbr9dSi!BS*(PWnUaKcD9.mh43A/LT5aZ
-@>Toh]RAfST=3o<SE[)l#s4!_c*X3#XDL=5B_-Y8u<i/]Q[1mLrV4)H#2]Ek:m9L
-2[Bia)u0[-=AC`DL\lSk3WG,n2`&,33#g+[Y0@i1>_I83K!>I]un2/d()8(p=lfM
-A$FS-0XZ/1@HN"Wab((E1W@&5d;8^#eXr&%AHENg*173'mN=CMV\ES<6T&OS=cU`
-2UbQfC6Wer;O!?OTaE)+<,S0W2EF9epXU(ZD%)#W5On:1pkblape`"+2?`eFS9WQ
-IG8@9(-8!-kM3F\]`4NIKD.7[EAcUs.gU))M-*\@\VGNh67o0Zfkn2$(!_u`@)dH
-NMH,a3YmiemnlNBVBLaL4k`5%"B9j%!lm9e-AEnT!;[aN<Q:bS9lT3F\FEr3p+"J
-I2?E%X9L>[O9sV'T.G+Z;C9X?2YD;oq<.!(M`:rr=.s)GOnb8%c&Job.i$J*<k=g
-nH6&,<:".`AqA$P?qhV^J1K,fb[C(p@s&jPQpc:6`3_Z9LRfD.93-_#9DCY"LsVs
-bt>YsOj(s1[a^T)()_6=g7.C4/tk^S?]ll5O_9D2?^AZF.W5^Sf2F,!(F9]X]:nd
-R!F":R\5'p3Ia9UC>*4c2G_Xt=`\f#I6i`II[rZu"f(!tD()3(RpaW7uAhkajfdU
-XPSAD[(Xfp,;+"P>UKdEeP9A,o?9jKBF04(e]*KlbTH%dEsn)\5HE!YeV6n`D:c,
-#;q8M[bi?_S&3EFO,%iXA\@>enm)N2@eu)9/Z_/g2ZT"JrQGg*p'!USq5fmYh)FZ
-F1mBXNb6u,j!gJPVn"jAYkJ]8XTqPBr7DlOf`$V',YKld\meUm8N+NQO:.,PbuDi
-`CAq`R&NqcpE+'b7bV`DP+YB@'@<'$Fg%G3_/aS)P+Zf/XdhPA)G56%6$g>W0WCD
-/=&gZm3N;PVLSSXP8#0Vnc^9lf5`r!af!dc[Ptm$0QtBSeY`F$>\6!bbFZG\]D=W
-o.dmbj\0+c=cq0JRDh+?P4E[B8[/Kl>":1_.*YSX^iKs.R:(Ucaa,,&5S;qa!Z,b
-d;@=p3)9-b79f%$CEJ_d4(eoZn8^K8Nu,.V<r?H"'S1d_]hY*X%-Hccj:e*YD<12
-\<#8Q+&<D3b5hDpj$_T\t@`^L0P"S7(t/1-6%2o9sog).LA_,MOJeO8KIg2Op%B<
-VnOGMTD&9bdP#*4"+(L;,iYjRQfDumW[sqPQX6.iC::-3<2SN'f0="-Z?=SMj\Lh
-Jm2I7;"XVl7&X.K8\rh*&LI#aRrrDWuGd>'i2>G;-W%EnHFEq+oa,f<K5c&L7_,E
-:u!@VsNdb,k`%&t>d!\JI(I@KN.CVfUE8uP'kQssoSkEC7UcmP-Qgmo43i7N`lDs
-)Ss(trH7RXHeX<"[J:SnFt=p-`bAr6+eiV:JHFFNe/E,USOe,Y]D3g9'4-/L/#tZ
-O8:$^*nn7a]HW"*n(bC-Sd,q@8:ViQX"bG4]&3U7,Jl%3Pp/+WDqSTK^4HgGr28K
-bKIC!4lmnDXno:)_r?OP3,ok3EjX#H#ptpUL<V69T@uhnV\Lq8*LPl@#*4RTNQKR
-%
-q=i!oVUVEEDabfiOABNSc0]?f"RQsn?:O5E0E1tO+EC(!IM?50nGA2eqAe84;mfj
-]QQH66JN'2Vd[pLWEo$pgpH::".4L+o4r,&@MXj:`rR$C1r*>%ipp\.up)U;7C+F
-1EaXOU$nl2tBgoVeVDfgmuiOSjG<T7Q0]("Sib\,"#UeMPqf&\:j>JT8P\@HeV8@
-?Fa8G6&L;`lHqlb7)4pY8X7.C3R_gPoU))?0]Ce@Cn'jT,VXd.=#=MjSKolqiZA`
-HQ?drNaN/+U^GeGo6-+'qGiol&ZCphe[UIo4D$N%!cWE9$`CX<VkIhpj-C\H73pE
-dd6*mY0[7$hBH36b.,-9Yn8EbEmp$_!%^WTh@UeDEcW6[,C%9"?0,\5NnVL5Bh;2
-lALgIT\Ub+kguT=gda01ir_.j4@B"B]EL0$c3k1=*5U,5G^^9>ih]8M]EP`_<>ao
-K/kQc+4dMq.j]#Ghl9WFdUS<]oW(K3;K;@6A<faC.56Bi0\TUaT[pBYb3XWh4P=\
-gm8TQPXX]S;Rg>/G_'>s4m&dpA0fgIk=38lArdmbru:%PYJRM)9K6rr?I>A4f*+>
-KSF#*h.%gL"Ku!b#B$JAWrHsc(m7He<m_$l,U.U%`>eBjW+I8Ka=u;!"dB&WM[%<
-?K0#RAm=("ej7M2k0;)akiUIPnF?fdC.qNZ`(h!)9Q<m'7\Z<].I_kAbt0mZ/_#c
-CTVSP6h$pQ)050[hSekgO$S^Yt*N>Cg>\LFBWM`(Lb9SL3"GEToP_*_@RgYUrqNr
-qI"3-`X?-ua4p(UgKDRLUb-@OUU?2C#@(bGlW!db^,X4o9$oFXRPh[a]fnUjsD!/
-Hb#MW.i5F%cb6-=?j^6!n#_OHc!59-kj,L:[]k?GHg^*RJT+8h$,@P?uU<Xe2<EV
-9%Wh(\M^lTV8-!cI\HCYA_bibQAcE%.HD="6'7[ULZuhR!!euWO8VHQu^rDd3**9
-F)Ie:8[d_$crj;GYd=b%WCc<9MN:5>_]\<l'Y'3&;,Wlggmk]C\KgBD>#&;sSU="
-hhU%X0=GMVg""]`7oe;8^R[a*![]WVsXn$)3]&i@>&M:GV.7e:^;U*]VYu1&[Jm&
-e[;RD-'JeSL#,K:'b99U6o<+5\*YDHR*is^9=8pRVj?^uV3#ReeuA0j2'>*K8Z&?
-Zdfb(GT@J].?GOI>sIEbW[Q=#n:DD62Oo,mkZV@^4jrg`l>O_b;iZ#]g0l$0l@Jf
-D4hY<b.J\AdYeAR>tOf)g&<lJ;])]%80>O0.trsBqtkTZjR#4$NN;>Zm3$r+.'b=
-,)=;'Si:V@$t3re22X)X[+qJTMp/\q.VWdnK&T^J(NXPl-!.iK)CHD</5>U`Vcf9
-^1@rplmPKDjk8ONi=Gq&UU]1<B0SNtl1*q"i:9`I(n=d^_O[hdEXEH[A@lM@d1Dd
-gmo.,D*`4YJD>W".@bKPKj1=LoO.bk=-e@#hRXo"gMTc(h$;5EFmDA"WL\6"A%$*
-b1Y6D/g!ZBDDuR'ao(UbNCe/f(@i,5)UXH<sa=1tXQM@"b<U!;C[B5U07dp*dlsV
-N3qrMK&Bc:!69%>@g_#Ybe6A<*,@0D08r_SYEM?-0ddTmo3P,$Hjj^rDOb<`et5C
-Z\JJ[l[D^r9#@m_SNj,ab'8oom;d2Yf.NW,%!:M$Z#]P;-^:6KF[oXakmSVXY<gh
-_$&-VPQ^gs1pl47D[]ftl%COu@N+1o(fs-I`Kd@KQPn,SN&.<gI,5jSjBG"Mj"f9
-canj4&ObA#+p'W$*qef/]lDrP9"Q;_I`Bali_&=g;$!0dk0CN]+h_blt"2WA=T8c
-f>e6J3&E#5X889uXSs&oNHRi5oB4<(K/J;r\Ti8,T-3p2QTh0OqIT;ADrqE1sKfO
-ggQ[:RKF5*eH7;S&^mU=c(ED`,*Z/iEW/!jNOGL^!]Z/Gbj!f>]l*#8BikJ.br7S
-aF/hBRC<`F'Ka6IGgj1M_jVQU4:ks7SO=lE*D:$,%Km>qlO3t;(9i3pD%&\&m0*h
-96m)U<0!K:c&VQNKKU>mG#sUBN!J7s,5XqtY#H(3[-38o["Eu6-$GbNfE*m]]&r>
-=4XH]X/lBCp3PNn/3e0Z.XfXR^MR.U+bB,d&P;_C&l9;$fRD/C=qRrF$?]\<K`aM
-mYu),<oJ,-(Nk8m8P/B$_U'g`]E'NC-RPVN=H!-sc0F^7B-$#*n?u`o--.7OCo02
-Ic<WkhN5=:LU&u,>Ci;:j'\V/Dq;j"/VYW>:eFh;K]CQVNTpOTlkCt(DkTcHhEEC
-<#!f4D^sJ2V+8%WDEkib1NTm#1Wr*rhG]CK\<Y^FW"Pb&PGkt0VqKnFgdnEOPWn^
-+O?T`Y#[$Z^[bl`QNQYrIaQmEn1TL2X>!1:W"VnON)*EWG^7rPi/&!V1@i8A3V^3
-ssr3H`2CB>9(k(SCNaNEb4[hRNs;A<=nEA&O[;K$?J_d7u-Z?s!*j]U/=;HdIoe=
-oprS-X'Q+,@%q1fU.8&`nr<)jNXKFkLKY;s+lbR=4HKd.9n=f1h+2A<8]-m-AR,\
-Pp#hV-$OP3LemE;KH]b4EOn*]Z655B117m;\$mjAo0h-\MVKT_$9U*Xd_rs\CN4T
-il.auM3=*7=2m"GX7Wgo\Jf_5:\$7oCFVsn\a"Kj)),%,JgMS3OBo7-&o/`SJ>!_
-sG!3[,"b]KWH;^&)_Prcn?a?^Lnqq%)P,Wn189INBOpE;ZmRQf[/Q4<j3M1DZDL$
-Z)dTfRZ<nIN7jEKo!r5?4'?]LaPp1"UiqdIKL6\mec8\"T5mPk#Q`70XSY^lQrAg
-m7#=4T4OJJPN?K%dXpqXf[k[PPqOaN7/qo8L8Cfe^c'Z[RG\-!'9,p\A):.hhA<5
-8n6>4_bBGj2U])ds10ee-)%SSP>YWn0oh]a9ieSg3&<c&GE>jX%\@QX=$,;b#N.S
-T#jO7Na!-4/q"8#FXV92ROEL0l->B#BZFhYd9J`%63Hhc1+OiZ'+J%Q$+7T.0lNr
-Z7fcQhpM<]&f3mmeJ,'*IKY@^sM=H8:8Lg8pGp-(,o$\_>N_??Yh0=*#KPC=:,7+
-onr\.\=6'*4^5sQ7l_@fRuhZe7[N*0GL_j!0=XRh9@)GaolFfV6,S2*gP!U.[SUF
-Ul,/OF0p'TQtE*P7*e(kk]4RWIP-7?T755!\l@nKj$-1DQq6bt;h@]_dCN'Cb`Da
-@0F@iI<(D=L&[UQNl8/$sB2HKP<W-i>to@da9Qk[3T)!+hd9oh),*n+"7P3`97F(
-D&jI2kse=F-J'P)Rs@<6VLi'uieK&t&:o1BZsu\uG%nqc)Ca7$DI\PLMs*P7;HRd
-1UR+^`!,Anah+%.Qr]ap!;U;kn)#jRMYk3`\8L\BG3fq_2Pm&9YJjBXUrG<EVZ`H
--q&>YDQl$U)^FTYR@)W.?.Z8d&`e$AS.k[gE"M?6Eo-nSRE=fW%Y_G8,3q8ERSi7
-U^k8)79Go>jc88QZ8\"+01=p?Hbq_t`[?2+8B^SNA<cq3=UG9dRiO3jRI=!D:/[=
-I\PjBs^Q)0P8ZYA`hiYE8=)X*4f-\V+00R7r%l4?p!?7+,@k62(mXcboFl(>]HPB
-W@5l^!.Z\$/[i]5d\rOK#?0^?Q1m,;DBu((ER(eM2$!%K]6D/*cNrbA*%rY_^1G6
-oi(WGIZ^?t#>r,\RC-0'<dE.[l;i[2BLG\?1Kf5^!(DbIpK6(pm\P,mMEt'EiUpT
-+^;+9rBgB4X<=62.H*L1p(F-9G&XXbNJ[K+U"am437?:0,arrA*dk%RDf<$Ygff%
-/$-@9fJ2iOt!3\ZdOIe=M7F.B'jC9Q^Vfgn/)^Y$q`g<R-pMhS]IPdpEU%RmEO4;
-NQ_jaqPVgd,&6,\A,6%"]<(7;\))=3*,%eKdL*@C_R0).rf!G4CPtr>Ge>,*29S`
-1J#J5AlQNGQ?tBn+/i)![_X=[TT7A%D@!c'-)O;%R[,@0E`@(]b5m_`^&H8IqmML
-$<EcOFQZc\KLLkM*?mKoa)@__e`'q+u;N\lud5Ka\]VCn'o3!4\_m4[2*fqbkD=g
-tk8uTOMm%jX].caJ7PXRIAP&>3`GCLQ8.5[Ka6CB[cm4s-.7VT2N5:lAoE<j<O+H
-N%-r,]`s?78C2R,tH]HZh`1@%p]b>MfA[i>J'$F^X)_h:$`'ThZj]CY%W*r+X4=X
-dOW-GXj9B@l^!Rr5I+^gTH'E!nKoWHutRN9K'>sDn:Lgl3UT8FE!VEc`i*Pq+$MN
-V-+:*Vg,nK]0mH6@rP07mZ+GOd#)h+Zs)Oq<GG($a]b4`8fE9sD]2sl35:Hkj3lB
-nL9BhJC?S;dU_K?`)Wh/7WThtg(KO8BL?'2bE+*PY?D3M.fb2(>Mi/<ge9't:#cB
-jh6Q:2OM-SIl5psV=+j0dRBAVb<7VUP!amcU*$+RHHR[<'"G$3<R5=1I#f<r_)N?
-:k1,8C->%CAPuijN"2Rt(Qrdc:H6eeT/5m2TgN<<8S(I'T)k`$OJ)R4^BT*L"uij
-/%]I8'8sAcI[q<#GG^WTlA^d'3(`+AGal1[]g:BPP/<6P'gcTZOLsj5;t3QHqqdD
-Qch-M&`tFg5*&WF5X<jCHL(*'M\1EL?`YGCU<C[$qp.koXR=6F9%(BV_!7,1*pXZ
-NH#)7\rJu\Z6G:D:*@!2OUX_5#J+F6+70t?\9"3F]@CZ%PeZj6aT0DO:_?o;-h>(
-_+M76Ctl&#XnWDHHVH&5*JDB*Z@'@t_QSss*9Gcp%o8tI,oAYm_rbqu\m/-D./b'
-MtB`&dKk:fJ[VqdfY+H,^]4"cD^LX=Q3Wf=E.>15=3#EEV^OdmN+'7&$[%]1[G=O
-:%5;UG)[s3hN\lbfmE72OJ>Ap=@h"ej"kkGD[BN.Ue4o9g)?rb;.FJ8@QLAnZ^j`
-/Fs/7fW4VHU3="g\%G/*+=&6?:/c4Q"cku'!VPP7"dF^C-kW0M@9bsXH@I4)QifU
-Z/Z"3+,!J`nWJo!M=#[@7(%<g<&h!LFRM_QVE>%Xgjdo/c@#YAj#?tH43Y4/0`9a
-WZST_+^b:P3:&>_/"SA22OX/UQB_lf<<#SD0O\@:sJ>I9=07;bF\M4$C\W0D/6X:
-D`SlU`$+f"Zl=CK"6g6N7$@M_9]W.7e/H-.7P]"gp9,CeaQ33^A66d@RM$L749+G
-"XgS8nTF9Mnl^Sb?KLj+Jg;\#uLr26#.F,>`KarQ+qacPUVj?.`ra:Q^Vs[Yfnb>
-Df'UhJH?1J91(\nfjU(_"@u*1\Je[G4d[Xo-mch)\[K8Beff#J7HRc2MCY]l#[UN
->i%#-;r)n`(#55:3^N9_mYt7R,PBB;+Et`>+WL%A+V<#4n3EEGgXS+)%bQ0W4"1p
-jpBQUm[7AWP0WAN%[S:sT]K&P3k5$'e-!X*[<o1P3>IhcY!j#X3@Q'"2kiIiH7bH
-TRrHJ?jkEWXdI)hDdHJH@n&H;?'RahK#oS/0a+,:F[mCT+_/UdF'tG$:Q!>7CS!'
-:-n'c*+C[qNqg=VELZD&q&)#GNM$a7[_%@RNiJ'UfJDXj,Gg^AR<>:Y;%)B+!Ugi
-:FTTsRHUot_H)Wt9h\=-[k0"5C$4$A:OieS^0;Z0O^aNK90.UUT0`lN.MfaiVo.t
-S!\mm7)E?m5[P42:S7Ybf8sq,);gFm&FbBqen>Pa=&CTiIcT5f4fgTJ`RrEtd=Gr
-*5ocS)Q">"*(DeE'%Znd<2oHd-NTG!nrD*BSLkA0I5TqH:?RZ!Ah:5=Hr/M43u+]
-fp7!YsCmdbF%d:Il$@g<^M?5um,%<@TDe;f_](5XN],ej@J&mbH[m\C_2TY0cTHL
-(r5J\'^S??f)hQk:+D;'(++=8h>>/K3R60TKn0UAt:8>_+V)FR<;AANA3>eM$K9P
-$&='`W2/'rD5+4B@!]c(Un9AYX53T2]T^MF;G]p9:ep(RklM!0[eSL?=rFohNB!^
-LeSn&(]>=[V&BX,mO8ml~>
-%%EOF
diff --git a/Master/texmf-dist/doc/generic/pst-optexp/doc/pst-optexp-doc.pdf b/Master/texmf-dist/doc/generic/pst-optexp/doc/pst-optexp-doc.pdf
deleted file mode 100644
index 059a347891c..00000000000
--- a/Master/texmf-dist/doc/generic/pst-optexp/doc/pst-optexp-doc.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-optexp/pst-optexp-doc.pdf b/Master/texmf-dist/doc/generic/pst-optexp/pst-optexp-doc.pdf
new file mode 100644
index 00000000000..c1e4e745bb4
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pst-optexp/pst-optexp-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pst-optexp/doc/pst-optexp-doc.tex b/Master/texmf-dist/doc/generic/pst-optexp/pst-optexp-doc.tex
index 9b72403b80d..2ae93949627 100644
--- a/Master/texmf-dist/doc/generic/pst-optexp/doc/pst-optexp-doc.tex
+++ b/Master/texmf-dist/doc/generic/pst-optexp/pst-optexp-doc.tex
@@ -16,7 +16,6 @@
\usepackage{nicefrac}
\usepackage{graphicx}
\usepackage[colorlinks,linktocpage]{hyperref}
-\usepackage{xspace}
%
% New commands
%
@@ -24,7 +23,10 @@
\newcommand{\OptExpPackage}{\textsf{`pst-optexp'}}
\newcommand{\parameter}[1]{\texttt{#1}}
\let\param\textrm
-\newcommand{\defaultparam}{\emph{default:}\xspace}
+\newcommand{\paramvalue}[1]{\texttt{#1}}
+\newcommand{\defaultparam}[1]{\emph{default:} \paramvalue{#1}}
+\def\lbracket{[}
+\def\rbracket{]}
%
% Settings
@@ -41,6 +43,7 @@
\clearscrheadfoot
\setheadsepline{0.4pt}
\ihead{\OptExpPackage}\ohead{A PSTricks package to draw optical experimental setups}
+\ofoot{\pagemark}
\pagestyle{scrheadings}
\psset{subgriddiv=0,griddots=10,gridlabels=7pt}
@@ -63,8 +66,8 @@ The package \texttt{pst-optexp} is a collection of optical components
that facilitate easy sketching of optical experimental
setups. Mechanisms for proper alignment of different components are
provided internally. This way the user does not have to care for proper
-orientation of the elements. Macros for using user-defined components
-are also provided.
+orientation of the elements. Macros for convenient definition of new
+user-defined components are also provided.
\section{Components}
@@ -84,100 +87,81 @@ positioning of labels are explained.
The appearence of all components can be changed with the corresponding
standard PSTricks parameters such as \parameter{fillstyle}
or \parameter{linestyle}. For some components changing only parts of the
-layout may be desired (e.g. the extended part of mirrors). For those
-cases psstyles are provided that influence only the corresponing part of the
+layout is possible (e.g. the extended part of mirrors). For those cases
+psstyles are provided that influence only the corresponing part of the
components and can be redefined using \cs{newpsstyle}.
\subsection{Lens}\label{sec:lens}
\begin{description}
-\item[\param{lensheight} (dimension):] (\defaultparam 1)
-\item[\param{lenswidth} (dimension):] (\defaultparam 0.3)
-\item[\param{lensradius} (dimension):] (\defaultparam \texttt{\cs{empty}})
-\item[\param{lenstype} (plainconvex\,|\,plainconcave\,|\,convexplain\,|\,concaveplain\,|\,biconvex\,|\,biconcave):]~\\
- (\defaultparam \texttt{biconvex})
+\item[\param{lensheight}:] \paramvalue{<value>} (\defaultparam{1})
+\item[\param{lenswidth}:] \paramvalue{<value>} (\defaultparam{0.3})
+\item[\param{lensradius}:] \paramvalue{<value> [<value>]} (\defaultparam{\cs{empty}})
+\item[\param{lensradiusleft}:] \paramvalue{<value>} (\defaultparam{1})
+\item[\param{lensradiusright}:] \paramvalue{<value>} (\defaultparam{1})
+\item[\param{lens}:] \paramvalue{<value> [<value> [<value> [<value>]]]} (\defaultparam{\cs{empty}})
+\item[\param{thicklens}:] \paramvalue{<boolean>}(\defaultparam{false})
\end{description}
-For the convex lenses only two parameters are used. If the
-parameter \parameter{lensradius} is set, its value will be used together
-with \parameter{lensheight} to draw the
-lens. Otherwise \parameter{lenswidth} and
-\parameter{lensheight} are used. For concave lenses all three parameters
-are required.
-
-\medskip
-
-\begin{LTXexample}[width=3.5cm]
-\begin{pspicture}(3,2)\psgrid
- \pnode(0,1.8){A}
- \pnode(3,0.7){B}
- \psline[linecolor=green](A)(B)
- \lens[lenstype=plainconvex](A)(B){lens}
-\end{pspicture}
-\end{LTXexample}
-
-\bigskip
-
-\begin{LTXexample}[width=3.5cm]
-\begin{pspicture}(3,2)\psgrid
- \pnode(0,1.8){A}
- \pnode(3,0.7){B}
- \psline[linecolor=green](A)(B)
- \lens[lenstype=convexplain](A)(B){lens}
-\end{pspicture}
-\end{LTXexample}
-
-\bigskip
-
-\begin{LTXexample}[width=3.5cm]
-\begin{pspicture}(3,2)\psgrid
- \pnode(0,1.8){A}
- \pnode(3,0.7){B}
- \psline[linecolor=green](A)(B)
- \lens(A)(B){lens}
-\end{pspicture}
-\end{LTXexample}
+\medskip
-\bigskip
-\begin{LTXexample}[width=3.5cm]
-\begin{pspicture}(3,2)\psgrid
- \pnode(0,1.8){A}
- \pnode(3,0.7){B}
- \psline[linecolor=green](A)(B)
- \lens[lenstype=plainconcave](A)(B){lens}
+\begin{LTXexample}[width=5.5cm]
+\begin{pspicture}(5,6)\psgrid
+ % concave lenses
+ \pnode(0,5){A}\pnode(5,5){B}
+ \psline[style=OptBeam](A)(B)
+ \lens[position=0.2](A)(B){L}
+ \lens[lensradius=-1,position=0.5](A)(B){L}
+ \lens[lens=-1.5 1,position=0.7](A)(B){L}
+ % convex lenses
+ \pnode(0,3){A}\pnode(5,3){B}
+ \psline[style=OptBeam](A)(B)
+ \lens[position=0.2,lens=1 -1](A)(B){L}
+ \lens[lens=0 -1](A)(B){L}
+ \lens[lens=1 0,position=0.7](A)(B){L}
+ % thick lenses
+ \pnode(0,1){A}\pnode(5,1){B}
+ \psline[style=OptBeam](A)(B)
+ \lens[position=0.3,lens=-1.5 1 1 0.5,thicklens](A)(B){thicklens}
+ \lens[lens=0 -1, position=0.7, fillstyle=solid, fillcolor=blue!30!white](A)(B){lens}
\end{pspicture}
\end{LTXexample}
-\bigskip
-\begin{LTXexample}[width=3.5cm]
-\begin{pspicture}(3,2)\psgrid
- \pnode(0,1.8){A}
- \pnode(3,0.7){B}
- \psline[linecolor=green](A)(B)
- \lens[lenstype=concaveplain](A)(B){lens}
-\end{pspicture}
-\end{LTXexample}
+\medskip
-\bigskip
-\begin{LTXexample}[width=3.5cm]
-\begin{pspicture}(3,2)\psgrid
- \definecolor{lensColor}{rgb}{0.7, 0.9, 1}
- \pnode(0,1.8){A}
- \pnode(3,0.7){B}
- \psline[linecolor=green](A)(B)
- \lens[lenstype=biconcave,
- fillstyle=solid,
- fillcolor=lensColor](A)(B){lens}
-\end{pspicture}
-\end{LTXexample}
+The shape of a lens is defined by its two surface radii. A negative
+radius gives a concave, a positive radius a convex and a radius of
+\texttt{0} a plain surface. The parameters \parameter{lensradiusleft}
+and \parameter{lensradiusright} allow to define independent values for both
+surfaces. \parameter{lensradius} sets both curvatures to the same
+value. Usually only \parameter{lensheight} and the two radii are used to
+construct the lens. The thickness (or width) is determined
+automatically. Manually controlling the thickness of the lens can be
+achived by setting \parameter{thicklens}
+to \parameter{true}. Then \parameter{lenswidth} is used as width of the lens at
+its waist. Finally, the parameter \parameter{lens} allows the definition of
+all relevant lens parameters at once. It consists of one up to four
+space-separated numbers. The first one gives the left radius. If no
+further value is set, the right radius will be set to the same value and
+all other parameters are left unchanged. Using two numbers defines two
+different radii. The third optional value defines
+the \parameter{lensheight} and the fourth one the \parameter{lenswidth}
+
+\textbf{Compatibility:} The whole implementation of the lens was
+changed in version 1.2. It allows a much more flexible definition of different lens
+types. However, I could not get full compatibility with the older way to
+define lens using only \parameter{lensheight} and \parameter{lenswidth}. To use
+this old behaviour, you have to set the \parameter{lenstype} explicitly, but
+then you have no access to the new features! All users are encouraged to
+adapt their code to use the new parameters, as the old code will be
+removed in future versions.
\medskip
-
\subsection{Optical plate}
\begin{description}
-\item[\param{plateheight} (dimension):] (\defaultparam 1)
-\item[\param{platelinewidth} (dimension):] (\defaultparam 2\cs{pslinewidth})
+\item[\param{plateheight}:] \paramvalue{<value>} (\defaultparam{1})
+\item[\param{platelinewidth}:] \paramvalue{<value>} (\defaultparam{2\cs{pslinewidth}})
\end{description}
\medskip
@@ -186,7 +170,7 @@ are required.
\begin{pspicture}(3,2)\psgrid
\pnode(0,1.2){A}
\pnode(3,1.2){B}
- \psline[linecolor=green](A)(B)
+ \psline[style=OptBeam](A)(B)
\optplate(A)(B){filter}
\end{pspicture}
\end{LTXexample}
@@ -196,8 +180,8 @@ are required.
\subsection{Retardation plate}
\begin{description}
-\item[\param{plateheight} (dimension):] (\defaultparam 1)
-\item[\param{platewidth} (dimension):] (\defaultparam 0.1)
+\item[\param{plateheight}:] \paramvalue{<value>} (\defaultparam{1})
+\item[\param{platewidth}:] \paramvalue{<value>} (\defaultparam{0.1})
\end{description}
\medskip
@@ -206,7 +190,7 @@ are required.
\begin{pspicture}(3,2)\psgrid
\pnode(0,1.2){A}
\pnode(3,1.2){B}
- \psline[linecolor=green](A)(B)
+ \psline[style=OptBeam](A)(B)
\optretplate(A)(B){$\nicefrac{\lambda}{2}$}
\end{pspicture}
\end{LTXexample}
@@ -216,9 +200,9 @@ are required.
\subsection{Pinhole}
\begin{description}
-\item[\param{outerheight} (dimension):] (\defaultparam 1)
-\item[\param{innerheight} (dimension):] (\defaultparam 0.1)
-\item[\param{phlinewidth} (dimension):] (\defaultparam 2\cs{pslinewidth})
+\item[\param{outerheight}:] \paramvalue{<value>} (\defaultparam{1})
+\item[\param{innerheight}:] \paramvalue{<value>} (\defaultparam{0.1})
+\item[\param{phlinewidth}:] \paramvalue{<value>} (\defaultparam{2\cs{pslinewidth}})
\end{description}
\medskip
@@ -227,23 +211,23 @@ are required.
\begin{pspicture}(3,2)\psgrid
\pnode(0,1.2){A}
\pnode(3,1.2){B}
- \psline[linecolor=green](A)(B)
+ \psline[style=OptBeam](A)(B)
\pinhole(A)(B){PH}
\end{pspicture}
\end{LTXexample}
\medskip
-\subsection{Crystal}
+\subsection{Crystal}\label{sec:crystal}
\begin{description}
-\item[\param{crystalwidth} (dimension):] (\defaultparam 2)
-\item[\param{crystalheight} (dimension):] (\defaultparam 0.8)
-\item[\param{caxislength} (dimension):] (\defaultparam 0.6)
-\item[\param{caxisinv} (boolean):] (\defaultparam \texttt{false})
-\item[\param{voltage} (boolean):] (\defaultparam \texttt{false})
-\item[\param{lamp} (boolean):] (\defaultparam \texttt{false})
-\item[\param{lampscale} (real):] (\defaultparam 0.3)
+\item[\param{crystalwidth}:] \paramvalue{<value>} (\defaultparam{2})
+\item[\param{crystalheight}:] \paramvalue{<value>} (\defaultparam{0.8})
+\item[\param{caxislength}:] \paramvalue{<value>} (\defaultparam{0.6})
+\item[\param{caxisinv}:] \paramvalue{<boolean>} (\defaultparam{false})
+\item[\param{voltage}:] \paramvalue{<boolean>} (\defaultparam{false})
+\item[\param{lamp}:] \paramvalue{<boolean>} (\defaultparam{false})
+\item[\param{lampscale}:] \paramvalue{<value>} (\defaultparam{0.3})
\end{description}
\medskip
@@ -252,15 +236,8 @@ are required.
\begin{pspicture}(3,2)\psgrid
\pnode(0,1.2){A}
\pnode(3,1.2){B}
- \crystal[crystalwidth=1.5,
- crystalheight=0.6,
- fillstyle=solid,
- fillcolor=yellow!90!black,
- labelangle=-45,
- labeloffset=1.2,
- voltage,
- lamp](A)(B){SBN:Ce}
- \psline[linecolor=green](A)(B)
+ \crystal[crystalwidth=1.5, crystalheight=0.6, fillstyle=solid, fillcolor=yellow!90!black, labelangle=-45, labeloffset=1.2, voltage, lamp](A)(B){SBN:Ce}
+ \psline[style=OptBeam](A)(B)
\end{pspicture}
\end{LTXexample}
@@ -269,9 +246,9 @@ are required.
\subsection{Box}
\begin{description}
-\item[\param{optboxheight} (dimension):] (\defaultparam 0.5)
-\item[\param{optboxwidth} (dimension):] (\defaultparam 1)
-\item[\param{endbox} (boolean):] (\defaultparam \texttt{false})
+\item[\param{optboxheight}:] \paramvalue{<value>} (\defaultparam{0.5})
+\item[\param{optboxwidth}:] \paramvalue{<value>} (\defaultparam{1})
+\item[\param{endbox}:] \paramvalue{<boolean>} (\defaultparam{false})
\end{description}
\medskip
@@ -280,7 +257,7 @@ are required.
\begin{pspicture}(3,2)\psgrid
\pnode(0,0){A}
\pnode(3,2){B}
- \psline[linecolor=green](A)(B)
+ \psline[style=OptBeam](A)(B)
\optbox(A)(B){box}
\end{pspicture}
\end{LTXexample}
@@ -291,7 +268,7 @@ are required.
\begin{pspicture}(3,2)\psgrid
\pnode(0,0){A}
\pnode(1.7,1){B}
- \psline[linecolor=green](A)(B)
+ \psline[style=OptBeam](A)(B)
\optbox[endbox](A)(B){box}
\end{pspicture}
\end{LTXexample}
@@ -302,7 +279,7 @@ are required.
\begin{pspicture}(3,2)\psgrid
\pnode(0,0){A}
\pnode(1.7,1){B}
- \psline[linecolor=green](A)(B)
+ \psline[style=OptBeam](A)(B)
\optbox[endbox,labelref=relative,labeloffset=0](A)(B){box}
\end{pspicture}
\end{LTXexample}
@@ -312,7 +289,7 @@ are required.
\subsection{Detector}
\begin{description}
-\item[\param{detsize} (dimension):] (\defaultparam 0.5)
+\item[\param{detsize}:] \paramvalue{<value>} (\defaultparam{0.5})
\end{description}
\medskip
@@ -321,7 +298,7 @@ are required.
\begin{pspicture}(3,2)\psgrid
\pnode(0,0){A}
\pnode(1.7,1){B}
- \psline[linecolor=green](A)(B)
+ \psline[style=OptBeam](A)(B)
\detector(A)(B){detector}
\end{pspicture}
\end{LTXexample}
@@ -331,9 +308,9 @@ are required.
\subsection{Polarization}
\begin{description}
-\item[\param{poltype} (parallel | perp | misc | lcirc | rcirc):] (\defaultparam \texttt{parallel})
-\item[\param{polsize} (dimension):] (\defaultparam 0.6)
-\item[\param{pollinewidth} (dimension):] (\defaultparam 0.7\cs{pslinewidth})
+\item[\param{poltype}:] \paramvalue{parallel|perp|misc|lcirc|rcirc} (\defaultparam{parallel})
+\item[\param{polsize}:] \paramvalue{<value>} (\defaultparam{0.6})
+\item[\param{pollinewidth}:] \paramvalue{<value>} (\defaultparam{0.7\cs{pslinewidth}})
\end{description}
\medskip
@@ -343,7 +320,7 @@ are required.
\pnode(0,0.5){A1}\pnode(3,0.5){B1}\pnode(0,1.5){A2}
\pnode(3,1.5){B2}\pnode(0,2.5){A3}\pnode(3,2.5){B3}
\pnode(0,3.5){A4}\pnode(3,3.5){B4}\pnode(0,4.5){A5}
- \pnode(3,4.5){B5}\psset{linecolor=green}
+ \pnode(3,4.5){B5}\psset{style=OptBeam}
\multido{\i=1+1}{5}{\psline(A\i)(B\i)}
\psset{linecolor=black}
\polarization[poltype=misc,position=0.2](A5)(B5)
@@ -359,14 +336,18 @@ are required.
\subsection{Mirror}\label{sec:mirror}
\begin{description}
-\item[\param{mirrorwidth} (dimension):] (\defaultparam 1)
-\item[\param{mirrorlinewidth} (dimension):] (\defaultparam 2\cs{pslinewidth})
-\item[\param{mirrortype} (normal | piezo | extended):] (\defaultparam \texttt{normal})
-\item[\param{mirrordepth} (dimension):] (\defaultparam 0.08)
-\item[\param{variable} (boolean):] (\defaultparam \texttt{false})
+\item[\param{mirrorwidth}:] \paramvalue{<value>} (\defaultparam{1})
+\item[\param{mirrorradius}:] \paramvalue{<value>} (\defaultparam{0})
+\item[\param{mirrorlinewidth}:] \paramvalue{<value>} (\defaultparam{2\cs{pslinewidth}})
+\item[\param{mirrortype}:] \paramvalue{normal|piezo|extended} (\defaultparam{normal})
+\item[\param{mirrordepth}:] \paramvalue{<value>} (\defaultparam{0.08})
+\item[\param{variable}:] \paramvalue{<value>} (\defaultparam{false})
\end{description}
-The style of the extended mirror is defined as a
+The parameter \texttt{mirrorradius} defines the curvature of the mirror. A
+value of \texttt{0} is for a plain mirror, a negative radius is for a
+concave mirror and a positive radius gives you a convex mirror. The
+style of the extended mirror is defined as a
psstyle \parameter{ExtendedMirror} and can be changed using
\cs{newpsstyle}. The appearence of the piezo mirror likewise can be
changed by adapting the psstyle \parameter{PiezoMirror}.
@@ -378,7 +359,7 @@ changed by adapting the psstyle \parameter{PiezoMirror}.
\pnode(0,0){A}
\pnode(1.8,2.2){G}
\pnode(0,3){B}
- \psline[linecolor=green](A)(G)(B)
+ \psline[style=OptBeam](A)(G)(B)
\mirror(A)(G)(B){mirror}
\end{pspicture}
\end{LTXexample}
@@ -390,7 +371,7 @@ changed by adapting the psstyle \parameter{PiezoMirror}.
\pnode(0,0){A}
\pnode(1.8,2.2){G}
\pnode(0,3){B}
- \psline[linecolor=green](A)(G)(B)
+ \psline[style=OptBeam](A)(G)(B)
\mirror[variable](A)(G)(B){M$_\mathrm{var}$}
\end{pspicture}
\end{LTXexample}
@@ -402,7 +383,7 @@ changed by adapting the psstyle \parameter{PiezoMirror}.
\pnode(0,0){A}
\pnode(1.8,2.2){G}
\pnode(0,3){B}
- \psline[linecolor=green](A)(G)(B)
+ \psline[style=OptBeam](A)(G)(B)
\mirror[mirrortype=piezo,labelangle=-90](A)(G)(B){piezo}
\end{pspicture}
\end{LTXexample}
@@ -414,17 +395,28 @@ changed by adapting the psstyle \parameter{PiezoMirror}.
\pnode(0,0){A}
\pnode(1.8,2.2){G}
\pnode(0,3){B}
- \psline[linecolor=green](A)(G)(B)
+ \psline[style=OptBeam](A)(G)(B)
\mirror[mirrortype=extended](A)(G)(B){M$_\mathrm{ext}$}
\end{pspicture}
\end{LTXexample}
+\begin{LTXexample}[width=3.5cm]
+\begin{pspicture}(3,3)\psgrid
+ \pnode(0,0){A}\pnode(0.7,2){G1}
+ \pnode(1.5,1){G2}\pnode(2,3){B}
+ \psset{labeloffset=0.5}
+ \psline[style=OptBeam](A)(G1)(G2)(B)
+ \mirror[mirrortype=extended, mirrorradius=1](A)(G1)(G2){M$_v$}
+ \mirror[mirrorradius=-1](G1)(G2)(B){M$_x$}
+\end{pspicture}
+\end{LTXexample}
+
\medskip
\subsection{Beamsplitter}
\begin{description}
-\item[\param{bssize} (dimension):] (\defaultparam 0.8)
+\item[\param{bssize}:] \paramvalue{<value>} (\defaultparam{0.8})
\end{description}
\medskip
@@ -434,7 +426,7 @@ changed by adapting the psstyle \parameter{PiezoMirror}.
\pnode(0,2){A}
\pnode(2,2){G}
\pnode(3,0){B}
- \psline[linecolor=green](A)(G)(B)
+ \psline[style=OptBeam](A)(G)(B)
\beamsplitter(A)(G)(B){BS}
\end{pspicture}
\end{LTXexample}
@@ -445,12 +437,13 @@ changed by adapting the psstyle \parameter{PiezoMirror}.
\subsection{Optical grid}
\begin{description}
-\item[\param{optgridcount} (integer):] (\defaultparam 10)
-\item[\param{optgridwidth} (dimension):] (\defaultparam 1)
-\item[\param{optgridheight} (dimension):] (\defaultparam 0.1)
-\item[\param{optgriddepth} (dimension):] (\defaultparam 0.05)
-\item[\param{optgridlinewidth} (dimension):] (\defaultparam 0.7\cs{pslinewidth})
-\item[\param{reverse} (boolean):] (\defaultparam \texttt{false})
+\item[\param{optgridcount}:] \paramvalue{<integer>} (\defaultparam{10})
+\item[\param{optgridwidth}:] \paramvalue{<value>} (\defaultparam{1})
+\item[\param{optgridheight}:] \paramvalue{<value>} (\defaultparam{0.1})
+\item[\param{optgriddepth}:] \paramvalue{<value>} (\defaultparam{0.05})
+\item[\param{optgridtype}:] \paramvalue{blazed|binary} (\defaultparam{blazed})
+\item[\param{optgridlinewidth}:] \paramvalue{<value>} (\defaultparam{0.7\cs{pslinewidth}})
+\item[\param{reverse}:] \paramvalue{<boolean>} (\defaultparam{false})
\end{description}
\medskip
@@ -460,7 +453,7 @@ changed by adapting the psstyle \parameter{PiezoMirror}.
\pnode(0,3){A}
\pnode(1.8,2.2){G}
\pnode(0,0){B}
- \psline[linecolor=green](A)(G)(B)
+ \psline[style=OptBeam](A)(G)(B)
\optgrid(A)(G)(B){grid}
\end{pspicture}
\end{LTXexample}
@@ -473,7 +466,7 @@ changed by adapting the psstyle \parameter{PiezoMirror}.
\pnode(0,3){A}
\pnode(1.8,2.2){G}
\pnode(0,0){B}
- \psline[linecolor=green](A)(G)(B)
+ \psline[style=OptBeam](A)(G)(B)
\optgrid[reverse](A)(G)(B){grid}
\end{pspicture}
\end{LTXexample}
@@ -485,16 +478,32 @@ changed by adapting the psstyle \parameter{PiezoMirror}.
\pnode(0,3){A}
\pnode(1.8,2.2){G}
\pnode(0,0){B}
- \psline[linecolor=green](A)(G)(B)
+ \psline[style=OptBeam](A)(G)(B)
\optgrid[optgridcount=6,%
optgriddepth=0.2,%
optgridheight=0.3](A)(G)(B){grid}
\end{pspicture}
\end{LTXexample}
+\bigskip
+
+\begin{LTXexample}[width=3.5cm]
+\begin{pspicture}(3,3)\psgrid
+ \pnode(0,3){A}
+ \pnode(1.8,2.2){G}
+ \pnode(0,0){B}
+ \psline[style=OptBeam](A)(G)(B)
+ \optgrid[optgridtype=binary](A)(G)(B){grid}
+\end{pspicture}
+\end{LTXexample}
+
\medskip
\subsection{Custom components}\label{sec:custom}
+The macros \cs{optdipole} and \cs{opttripole} allow using everything as
+optical component. If you want to use a certain component several times,
+you should define it as a new component. For details see
+sec.~\ref{sec:newobj}.
\begin{LTXexample}[width=3.5cm]
\begin{pspicture}(3,3)\psgrid
@@ -526,11 +535,11 @@ changed by adapting the psstyle \parameter{PiezoMirror}.
\subsection{General options}\label{sec:general}
\begin{description}
-\item[\param{angle} (real):] (\defaultparam 0)
-\item[\param{optional} (boolean):] (\defaultparam \texttt{false})
-\item[\param{position} (real):] (\defaultparam \texttt{\cs{empty}})
-\item[\param{abspos} (dimension):] (\defaultparam \texttt{\cs{empty}})
-\item[\param{showoptdots} (boolean):] (\defaultparam \texttt{false})
+\item[\param{angle}:] \paramvalue{<value>} (\defaultparam{0})
+\item[\param{optional}:] \paramvalue{<boolean>} (\defaultparam{false})
+\item[\param{position}:] \paramvalue{<value>} (\defaultparam{\cs{empty}})
+\item[\param{abspos}:] \paramvalue{<value>} (\defaultparam{\cs{empty}})
+\item[\param{showoptdots}:] \paramvalue{<boolean>} (\defaultparam{false})
\end{description}
The parameter \parameter{angle} is available for the macros \cs{optbox}
@@ -548,57 +557,57 @@ label.
\medskip
\begin{LTXexample}[width=3.5cm]
- \begin{pspicture}(3,2)\psgrid
- \pnode(0,1.2){A}
- \pnode(3,1.2){B}
- \psline[linecolor=green](A)(B)
- \optbox[angle=10](A)(B){box}
- \end{pspicture}
+\begin{pspicture}(3,2)\psgrid
+ \pnode(0,1.2){A}
+ \pnode(3,1.2){B}
+ \psline[style=OptBeam](A)(B)
+ \optbox[angle=10](A)(B){box}
+\end{pspicture}
\end{LTXexample}
\bigskip
\begin{LTXexample}[width=3.5cm]
- \begin{pspicture}(3,2)\psgrid
- \pnode(0,1.2){A}
- \pnode(3,1.2){B}
- \psline[linecolor=green](A)(B)
- \lens[optional](A)(B){L}
- \end{pspicture}
+\begin{pspicture}(3,2)\psgrid
+ \pnode(0,1.2){A}
+ \pnode(3,1.2){B}
+ \psline[style=OptBeam](A)(B)
+ \lens[optional](A)(B){L}
+\end{pspicture}
\end{LTXexample}
\bigskip
\begin{LTXexample}[width=3.5cm]
- \begin{pspicture}(3,2)\psgrid
- \pnode(0,1.2){A}
- \pnode(3,1.2){B}
- \psline[linecolor=green](A)(B)
- \lens[position=0.8](A)(B){L}
- \end{pspicture}
+\begin{pspicture}(3,2)\psgrid
+ \pnode(0,1.2){A}
+ \pnode(3,1.2){B}
+ \psline[style=OptBeam](A)(B)
+ \lens[position=0.8](A)(B){L}
+\end{pspicture}
\end{LTXexample}
\bigskip
\begin{LTXexample}[width=3.5cm]
- \begin{pspicture}(3,2)\psgrid
- \pnode(0,1.2){A}
- \pnode(3,1.2){B}
- \psline[linecolor=green](A)(B)
- \lens[abspos=1](A)(B){L}
- \end{pspicture}
+\begin{pspicture}(3,2)\psgrid
+ \pnode(0,1.2){A}
+ \pnode(3,1.2){B}
+ \psline[style=OptBeam](A)(B)
+ \lens[abspos=1](A)(B){L}
+\end{pspicture}
\end{LTXexample}
\bigskip
\begin{LTXexample}[width=3.5cm]
- \begin{pspicture}(3,3)\psgrid
- \pnode(0,0){A}
- \pnode(1.5,2){G}
- \pnode(0,3){B}
- \psline[linecolor=green](A)(G)(B)
- \mirror[showoptdots](A)(G)(B){mirror}
- \end{pspicture}
+\begin{pspicture}(3,3)\psgrid
+ \pnode(0,0){A}
+ \pnode(1.5,2){G}
+ \pnode(0,3){B}
+ \psline[style=OptBeam](A)(G)(B)
+ \mirror[showoptdots](A)(G)(B){mirror}
+\end{pspicture}
\end{LTXexample}
\medskip
@@ -606,11 +615,11 @@ label.
\subsection{Labels}\label{sec:labels}
\begin{description}
-\item[\param{labeloffset} (dimension):] (\defaultparam 1)
-\item[\param{labelangle} (real):] (\defaultparam 0)
-\item[\param{labelstyle} (macro):] (\defaultparam \texttt{\cs{small}})
-\item[\param{labelalign} (\cs{rput} ref string):] (\defaultparam \texttt{c})
-\item[\param{labelref} (relative | relgrav | global):] (\defaultparam \texttt{relgrav})
+\item[\param{labeloffset}:] \paramvalue{<value>} (\defaultparam{1})
+\item[\param{labelangle}:] \paramvalue{<value>} (\defaultparam{0})
+\item[\param{labelstyle}:] \paramvalue{<macro>} (\defaultparam{\cs{small}})
+\item[\param{labelalign}:] \paramvalue{<\cs{rput} ref string>} (\defaultparam{c})
+\item[\param{labelref}:] \paramvalue{relative|relgrav|global} (\defaultparam{relgrav})
\end{description}
\parameter{labeloffset} specifies the offset from the center of the component,
@@ -643,7 +652,7 @@ the following three examples.
labelref=relgrav,
optboxwidth=1](0,0)(1;\i){\i}
}
- \end{pspicture}
+\end{pspicture}
\end{LTXexample}
\bigskip
@@ -655,16 +664,107 @@ the following three examples.
labelref=global,
optboxwidth=1](0,0)(1;\i){\i}
}
- \end{pspicture}
+\end{pspicture}
\end{LTXexample}
+\section{Defining new components}
+
+\subsection{Customized versions of existing macros}
+
+The easiest way to define your own components is to use the
+\cs{newpsobject} macro. With this you can define a new component using
+predefined objects with a set of options. These options serve only as
+default values and can be overridden. The following examples defines a
+new object \cs{sbn} for the special crystal used in
+Sec.~\ref{sec:crystal}.
+
+\medskip
+
+\begin{LTXexample}[width=3.5cm]
+\newpsobject{sbn}{crystal}{crystalwidth=1.5, crystalheight=0.6, voltage, lamp, labelangle=45, labeloffset=1.2, fillstyle=solid, fillcolor=yellow!90!black}
+\begin{pspicture}(3,2)\psgrid
+ \sbn(0,1)(3,1){SBN:Ce}
+ \psline[style=OptBeam](0,1)(3,1)
+\end{pspicture}
+\end{LTXexample}
+
+\medskip
+
+If you need more than one type of lenses in your setup it is very cumbersome to specify all parameters every time.
+
+\medskip
+
+\begin{LTXexample}[width=5.5cm]
+\newpsobject{MOLensIn}{lens}{lens=0.5 0.5 0.5}
+\newpsobject{MOLensOut}{lens}{lens=1.5 1.5 1.5}
+\begin{pspicture}(5,2)\psgrid
+ \pnode(0,1){A}\pnode(5,1){B}
+ \MOLensIn[abspos=0.5](A)(B){}
+ \MOLensOut[abspos=1](A)(B){}
+ \MOLensOut[abspos=4](A)(B){}
+ \MOLensIn[abspos=4.5](A)(B){}
+ \psline[style=OptBeam](A)(B)
+\end{pspicture}
+\end{LTXexample}
+\medskip
+
+\subsection{Defining new objects}\label{sec:newobj}
+
+Since version 1.2 \texttt{pst-optexp} provides some high-level macros to
+allow very convenient definition of completely new components. The macro
+\cs{newOptexpDipole} generates all organizing code for the new
+component. All you have to do is to define a new macro
+\cs{mycomponent@iii} which contains all drawing code. Analogously
+\cs{newOptexpDipoleNolabel} defines a new object which takes no label
+(like \cs{polarization}) and \cs{newOptexpTripole} defines a new
+reflective component.
+
+The syntax of the macros is
+\begin{lstlisting}
+\newOptexpDipole[fixed options]{name}{default options}
+\newOptexpDipoleNolabel[fixed options]{name}{default options}
+\newOptexpTripole[fixed options]{name}{default options}
+\end{lstlisting}
+The \texttt{default options} are simply a list of PSTricks parameters which are taken as
+defaults for the new component. The optional argument allows setting of parameters which
+cannot be overridden later.
+
+This is illustrate a bit more in the next code snippet, which also shows
+how the coordinate system is handled withing the \cs{mycomponent@iii}
+macro.
+
+\medskip
+
+\begin{LTXexample}[width=4.5cm]
+\newOptexpTripole{mygrid}{subgriddiv=5, griddots=0, subgridwidth=\pslinewidth, gridwidth=2\pslinewidth}
+\makeatletter
+\def\mygrid@iii{% put here all drawing code
+ \psgrid(-1,0)(1,1)
+}%
+\makeatother
+\begin{pspicture}(4,4)\psgrid
+ \pnode(0,1){A}\pnode(2,2){G}\pnode(3,0){B}
+ \mygrid[gridcolor=red,labeloffset=1.5](A)(G)(B){myGrid}
+ \psline[style=OptBeam](A)(G)(B)
+\end{pspicture}
+\end{LTXexample}
+\medskip
+
+The default position of the label reference point is (0,0). If you want
+to change this, you have to define a new pnode named
+\texttt{tempNode@Label} in the \cs{mycomponent@iii} macro.
+
+If you create a new component, please send it to me then I can
+incorporate this in a new released version.
+
\newpage
+
\section{Examples}
\psset{unit=1.2cm}
\begin{LTXexample}[pos=t,vsep=8mm]
\begin{pspicture}(0,0.2)(12,1.8)
\pnode(0,1.2){Start}\pnode(11,1.2){CCD}
-\psline[linewidth=2\pslinewidth,linecolor=green!90!black](Start)(CCD)
+\psline[linewidth=2\pslinewidth,style=OptBeam](Start)(CCD)
\polarization[poltype=perp,position=0.1](Start)(CCD)
\optretplate[position=0.15](Start)(CCD){$\nicefrac{\lambda}{2}$}
\lens[lensheight=0.5,
@@ -690,8 +790,8 @@ the following three examples.
\pnode(2.5;67.5){Mvar}
\psline[linewidth=2\pslinewidth,
linecolor=red!90!black](LaserOut)(Grid)(Out)\psline(Grid)(Mvar)
- \optbox[endbox,optboxwidth=2,labeloffset=0](Grid)(LaserOut){diodelaser}
- \optretplate[position=0.3,labeloffset=0.8](LaserOut)(Grid){$\nicefrac{\lambda}{4}$}
+ \optbox[endbox, optboxwidth=2, labeloffset=0](Grid)(LaserOut){diodelaser}
+ \optretplate[position=0.3, labeloffset=0.8](LaserOut)(Grid){$\nicefrac{\lambda}{4}$}
\optgrid(LaserOut)(Grid)(Out){grid}
\mirror[variable](Grid)(Mvar)(Grid){M$_\mathrm{var}$}
\end{pspicture}
@@ -703,9 +803,9 @@ the following three examples.
\pnode(6.5,5.7){piezo}\pnode(4,2){BSFwd}\pnode(6.5,2){BSBwd}
\pnode(2,2){BS4f}\pnode(2,0.5){M4f3}\pnode(8,2){M4f1}
\pnode(8,0.5){M4f2}\pnode(1,2){CCD}
- \psline[linecolor=green!90!black,linewidth=2\pslinewidth]%
+ \psline[style=OptBeam,linewidth=2\pslinewidth]%
(Laser)(PBS2)(piezo)(BSBwd)(M4f1)(M4f2)(M4f3)(BS4f)(CCD)
- \psline[linecolor=green!90!black,linewidth=2\pslinewidth](PBS)(BSFwd)(BS4f)
+ \psline[style=OptBeam,linewidth=2\pslinewidth](PBS)(BSFwd)(BS4f)
\psset{mirrorwidth=0.6, plateheight=0.7, outerheight=0.7, labeloffset=0.7, labelstyle=\scriptsize, lensheight=0.8, lenswidth=0.2, bssize=0.5}
\optbox[endbox,optboxwidth=1.5, optboxheight=0.7,labeloffset=0]%
(PBS)(Laser){\parbox{1.5cm}{\centering Nd:YAG\\ 532\,nm}}
@@ -729,20 +829,24 @@ the following three examples.
\lens[labelangle=180](M4f2)(M4f3){L}\mirror(M4f2)(M4f3)(BS4f){M}
\beamsplitter(M4f3)(BS4f)(CCD){BS}\optbox[endbox,labeloffset=0](BS4f)(CCD){CCD}
\lens[abspos=0.7](BS4f)(BSFwd){L}\lens[abspos=0.7](BSBwd)(M4f1){L}
- \psline[linecolor=green!90!black, linewidth=2\pslinewidth](BSFwd)(BSBwd)
+ \psline[style=OptBeam, linewidth=2\pslinewidth](BSFwd)(BSBwd)
\end{pspicture}
\end{LTXexample}
\section{Todo}
-\begin{itemize}
-\item Add components for fiber optics.
-\end{itemize}
+The next thing I will add are components with multiple internal
+reflections, as right-angle, penta and dove prisms. The code is almost
+ready, I just need to think a bit more about the best way to provide
+access to the nodes that are newly defined within the components.
+
+Fiber optical components are also in preparation.
-Drawing of extended beams with focusing, and so on, is not planned to be
-integrated in the near future due to missing ideas for the
-realization. If somebody is interested in this feature and has some
-ideas for the implementation, please contact me.
+Drawing of extended beams with focusing and so on could be integrated to
+some extent in future versions. But as the topic is rather difficult if
+you want to do it properly (components should be placed above the beam,
+but the new nodes are available only when the component is drawn) it
+could take very long until this feature will be implemented.
\section{Acknowledgements}