summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-02-04 23:10:24 +0000
committerKarl Berry <karl@freefriends.org>2013-02-04 23:10:24 +0000
commite68a3f22ee4908ca10db5b2471d0ab7da2d81532 (patch)
tree71f08854d4130c03aaa282f94944b2094c8ec109
parent5fbc50afb4d5eadd56e9f5825572e7e5a9b4b253 (diff)
pst-optexp (4feb13)
git-svn-id: svn://tug.org/texlive/trunk@29028 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/pst-optexp/Changes7
-rw-r--r--Master/texmf-dist/doc/latex/pst-optexp/pst-optexp-DE.pdfbin1367235 -> 1389553 bytes
-rw-r--r--Master/texmf-dist/doc/latex/pst-optexp/pst-optexp-quickref.pdfbin45212 -> 45321 bytes
-rw-r--r--Master/texmf-dist/doc/latex/pst-optexp/pst-optexp.pdfbin1341696 -> 1362445 bytes
-rw-r--r--Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro101
-rw-r--r--Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx491
-rw-r--r--Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins18
-rw-r--r--Master/texmf-dist/tex/latex/pst-optexp/pst-optexp.sty208
8 files changed, 535 insertions, 290 deletions
diff --git a/Master/texmf-dist/doc/latex/pst-optexp/Changes b/Master/texmf-dist/doc/latex/pst-optexp/Changes
index 21074183ef0..b9bca7657d2 100644
--- a/Master/texmf-dist/doc/latex/pst-optexp/Changes
+++ b/Master/texmf-dist/doc/latex/pst-optexp/Changes
@@ -1,3 +1,10 @@
+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
+
3.3a 2012-09-18
* Fixed bug which was exposed by an update of pst-node.
* Fixed trailing spaces.
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
index 9c36fc20df9..0865e5598d5 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
Binary files differ
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
index 36491b63736..1cf03c25fc7 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
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp.pdf b/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp.pdf
index 8c69a3e9777..e0267735516 100644
--- a/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp.pdf
+++ b/Master/texmf-dist/doc/latex/pst-optexp/pst-optexp.pdf
Binary files differ
diff --git a/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro b/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro
index 89ba5598d3b..7394171f9bb 100644
--- a/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro
+++ b/Master/texmf-dist/dvips/pst-optexp/pst-optexp.pro
@@ -9,9 +9,9 @@
%% This is a generated file.
%%
%% Project: pst-optexp
-%% Version: 3.3a (2012/09/18)
+%% Version: 3.4alpha (2013/02/03)
%%
-%% Copyright (C) 2007-2012 by Christoph Bersch <usenet@bersch.net>
+%% Copyright (C) 2007-2013 by Christoph Bersch <usenet@bersch.net>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -85,7 +85,16 @@ tx@OptexpDict begin
dup length string cvs
} bind def
/PrintWarning {
- (Warning: ) exch strcat ==
+ (Warning pst-optexp: ) exch strcat ==
+} bind def
+/CompUnknownWarning {
+ (Component ') exch strcat (' unknown) strcat PrintWarning
+} bind def
+/OneFiberCompWarning {
+ (Found only one fiber component in beam path, drawing no beam) PrintWarning
+} bind def
+/FiberCompWarning {
+ (Found a fiber component in beam path, stopping beam path) PrintWarning
} bind def
/inttostr {
dup type /integertype eq {
@@ -588,7 +597,7 @@ tx@OptexpDict begin
currentdict /lastVecTmp known {
lastVecTmp beamangle matrix rotate dtransform ToVec
} {
- beamalign relative eq counttomark 2 ge and {
+ counttomark 2 ge beamalign relative eq and {
2 copy /InVec load TransformInVec
} {
/InVec load
@@ -942,42 +951,75 @@ tx@OptexpDict begin
} bind def
/isFreeray {
cvn load /n known
- dup not {
- (Encountered fiber component in beam path) Warning
- } if
+} bind def
+/compIsKnown {
+ dup type /stringtype eq { cvn } if
+ tx@OptexpDict exch known
} bind def
/PrearrangePlanes {
(PrearrangePlanes) DebugBegin
- counttomark /N ED
- /CompA ED dup /CompB ED
- CompA isFreeray {
- CompA isAmbiguous {
- amb dup CompA
- } {
- CompB isAmbiguous {
- 1 CompA GetIfcCenter (C) CompB GetIfcCenter @ABDist
- (N) CompA GetIfcCenter (C) CompB GetIfcCenter @ABDist
- } {
- 1 CompA GetIfcCenter
- 1 CompB GetIfcCenter
- (N) CompB GetIfcCenter
- true OrderNodes exch pop
- (N) CompA GetIfcCenter
- 1 CompB GetIfcCenter
- (N) CompB GetIfcCenter
- true OrderNodes exch pop
+ counttomark dup 2 lt {
+ dup 0 eq {
+ (Found no component on stack, drawing no beam) PrintWarning
+ }{
+ exch dup
+ compIsKnown {
+ dup isFreeray {
+ asc exch 3 -1 roll
+ }{
+ OneFiberCompWarning
+ pop
+ } ifelse
+ }{
+ CompUnknownWarning
} ifelse
- le { desc } { asc } ifelse dup CompA
} ifelse
- counttomark 2 roll
- } {
- counttomark 1 sub { pop } repeat
/N 0 def
+ }{
+ /N ED
+ /CompA ED dup /CompB ED
+ CompA compIsKnown CompB compIsKnown and {
+ CompA isFreeray {
+ CompA isAmbiguous {
+ amb dup CompA
+ } {
+ CompB isAmbiguous {
+ 1 CompA GetIfcCenter (C) CompB GetIfcCenter @ABDist
+ (N) CompA GetIfcCenter (C) CompB GetIfcCenter @ABDist
+ } {
+ 1 CompA GetIfcCenter
+ 1 CompB GetIfcCenter
+ (N) CompB GetIfcCenter
+ true OrderNodes exch pop
+ (N) CompA GetIfcCenter
+ 1 CompB GetIfcCenter
+ (N) CompB GetIfcCenter
+ true OrderNodes exch pop
+ } ifelse
+ le { desc } { asc } ifelse dup CompA
+ } ifelse
+ counttomark 2 roll
+ }{
+ FiberCompWarning
+ counttomark 1 sub { pop } repeat
+ /N 0 def
+ } ifelse
+ }{
+ /N 0 def
+ CompA compIsKnown not {CompA}{CompB} ifelse
+ CompUnknownWarning
+ } ifelse
} ifelse
2 1 N {
/i ED exch /CompB ED
+ CompB compIsKnown not {
+ counttomark i 1 sub 2 mul 1 add sub { pop } repeat
+ CompB CompUnknownWarning
+ exit
+ } if
CompB isFreeray not {
counttomark i 1 sub 2 mul 1 add sub { pop } repeat
+ FiberCompWarning
exit
} if
CompB isAmbiguous not {
@@ -1100,6 +1142,7 @@ tx@OptexpDict begin
} ifelse
} for
DebugEnd
+ counttomark 1 eq { pop } if
} bind def
/IfcName {
dup dup 1 eq not exch N eq and {
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 5745c237a83..0e52d1cb7a8 100644
--- a/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx
+++ b/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2007-2012 by Christoph Bersch <usenet@bersch.net>
+% Copyright (C) 2007-2013 by Christoph Bersch <usenet@bersch.net>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -18,7 +18,7 @@
%<stylefile>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<stylefile>\ProvidesPackage{pst-optexp}
%<*stylefile>
- [2012/09/18 v3.3a Optical experimental setups with PSTricks]
+ [2013/02/03 v3.4 Optical experimental setups with PSTricks]
%</stylefile>
%
%<*driver>
@@ -681,7 +681,7 @@
%
% \ifGERMAN
% \section{Anforderungen}
-% \LPack{pst-optexp} Version 3.0 benötigt \LaTeX{} und aktuelle Versionen der
+% \LPack{pst-optexp} Version 3.4 benötigt \LaTeX{} und aktuelle Versionen der
% Pakete \LPack{pst-node}, \LPack{pstricks-add}, \LPack{multido},
% \LPack{pst-eucl} und \LPack{environ}.
%
@@ -693,7 +693,7 @@
% \fi
% \ifENGLISH
% \section{Requirements}
-% \LPack{pst-optexp} version 3.0 requires \LaTeX{} and recent versions of
+% \LPack{pst-optexp} version 3.4 requires \LaTeX{} and recent versions of
% \LPack{pst-node}, \LPack{multido}, \LPack{pstricks-add},
% \LPack{pst-eucl}, and \LPack{environ}.
%
@@ -916,7 +916,7 @@
%<*ignore>
%\fi
\begin{LTXexample}[linerange={1-3,6-6}]
-\begin{pspicture}[showgrid=true](0,-0.3)(3,2.3)
+\begin{pspicture}[showgrid](0,-0.3)(3,2.3)
\pnode(0,1){A}\pnode(3,1){B}
\lens(A)(B)
\psset{style=Refline}\color{Refline}
@@ -930,22 +930,23 @@
% \ifGERMAN
% Diese Positionierung kann anhand von unterschiedlichen Parametern, wie
% z.B. \Lkeyword{abspos} beinflusst werden (siehe dazu
-% \prettyref{sec:positioning} und \prettyref{sec:rotshift}). Die Linse wird nun
-% \opt{0.5} Einheiten entfernt vom Knoten \prm{A} platziert, die Box sitzt am
-% Ende der Referenzlinie $\overline{AB}$.
+% \prettyref{sec:positioning} und \prettyref{sec:rotshift}). Im
+% folgenden Beispiel wird die Linse \opt{0.5} Einheiten vom Knoten
+% \prm{A} entfernt platziert, die Box sitzt am Ende der Referenzlinie
+% $\overline{AB}$.
% \fi
% \ifENGLISH
% This position can be changed with a number of parameters, such as
% \Lkeyword{abspos} (see \prettyref{sec:positioning} and
-% \prettyref{sec:rotshift}). The lens is positioned \opt{0.5} units apart from
-% node \prm{A}, the box is placed at the end of the reference line
-% $\overline{AB}$.
+% \prettyref{sec:rotshift}). In the next example, the lens is positioned
+% \opt{0.5} units apart from node \prm{A}, the box is placed at the end
+% of the reference line $\overline{AB}$.
% \fi
%\iffalse
%<*ignore>
%\fi
\begin{LTXexample}[morekeywords={[21]{abspos, position}}, linerange={1-4,7-7}]
-\begin{pspicture}[showgrid=true](0,-0.3)(3,2.3)
+\begin{pspicture}[showgrid](0,-0.3)(3,2.3)
\pnode(0,1){A}\pnode(1.5,1){B}
\lens[abspos=0.5](A)(B)
\optbox[position=end](A)(B)
@@ -958,7 +959,7 @@
%\fi
%
% \ifGERMAN Die Komponenten lassen sich allgemein in zwei Kategorien
-% unterteilen: Freistrahl- und Faserkomponenten. Diese unterscheiden sich in
+% unterteilen: Faser- und Freistrahlkomponenten. Diese unterscheiden sich in
% erster Linie bezüglich ihrer Verbindungsmöglichkeiten: Freistrahlkomponenten
% können sowohl mit Lichtstrahlen als auch mit Fasern verbunden werden,
% wohingegen Faserkomponenten nur Faserverbindungen erlauben.
@@ -984,7 +985,7 @@
%<*ignore>
%\fi
\begin{LTXexample}[morekeywords={[21]{labelangle, labelref, labeloffset}}, linerange={1-5,8-8}]
-\begin{pspicture}[showgrid=true](0,-0.3)(3,3.3)
+\begin{pspicture}[showgrid](0,-0.3)(3,3.3)
\pnode(0,2.5){A}\pnode(2,2.5){B}\pnode(2,1.5){C}
\mirror[labelangle=-45](A)(B)(C){M}
\optbox[position=start, labeloffset=0, labelref=relative](C)(B){box}
@@ -1004,7 +1005,7 @@
% \ifGERMAN
% Freistrahlkomponenten können mit Lichtstrahlen verbunden werden, deren Weg mit
% Raytracing berechnet werden kann. Da es sich um ein Paket zum
-% \emph{Skizzieren} experimenteller Aufbauten handelt, werde hier trotz der
+% \emph{Skizzieren} experimenteller Aufbauten handelt, werden hier trotz der
% realistischen Berechnungen viele Möglichkeiten offen gehalten den Strahlengang
% zu manipulieren.
%
@@ -1033,13 +1034,14 @@
% \iffalse
%<*ignore>
% \fi
-\begin{LTXexample}
+\begin{LTXexample}[linerange={1-5,8-8}]
\begin{pspicture}[showgrid](0,-0.3)(3,2.3)
- \pnode(1.5,1){A}\pnode(3,1){B}
- \optbox[position=start](A)(B)
- \lens[n=2](A)(B)
- \drawbeam{1}{2}(B)
- \drawbeam[beampos=0.2, linecolor=red]{1}{2}(B)
+ \pnode(0,1){A}\pnode(3,1){B}
+ \lens[n=2, lensradius=2 2, lensheight=1.5](A)(B)
+ \drawbeam(A){1}(B)
+ \drawbeam[beampos=0.4, linecolor=red](A){1}(B)
+ \psset{style=Refline}\color{Refline}
+ \psdot(A)\uput[-90](A){A}\psdot(B)\uput[90](B){B}
\end{pspicture}
\end{LTXexample}
% \iffalse
@@ -1054,12 +1056,13 @@
% \iffalse
%<*ignore>
% \fi
-\begin{LTXexample}
+\begin{LTXexample}[linerange={1-4,7-7}]
\begin{pspicture}[showgrid](0,-0.3)(3,2.3)
- \pnode(1.5,1){A}\pnode(3,1){B}
- \optbox[position=start](A)(B)
- \lens[n=2](A)(B)
- \drawbeam[beamangle=10, ArrowInside=->, arrows=-|, beaminside=false]{1}{2}(B)
+ \pnode(0,1){A}\pnode(3,1){B}
+ \lens[n=2, lens=2 2 1.5](A)(B)
+ \drawbeam[beamangle=10, ArrowInside=->, arrows=-|, beaminside=false](A){1}(B)
+ \psset{style=Refline}\color{Refline}
+ \psdot(A)\uput[90](A){A}\psdot(B)\uput[-90](B){B}
\end{pspicture}
\end{LTXexample}
% \iffalse
@@ -1076,12 +1079,14 @@
% \iffalse
%<*ignore>
% \fi
-\begin{LTXexample}
+\begin{LTXexample}[linerange={1-5,8-8}]
\begin{pspicture}[showgrid](0,-0.3)(3,2.3)
- \pnode(1.5,1){A}\pnode(3,1){B}
- \optbox[position=start](A)(B)
+ \pnode(0.5,1){A}\pnode(3,1){B}
+ \optbox[position=start, optboxsize=0.5 1](A)(B)
\lens[n=2](A)(B)
- \drawwidebeam[beamwidth=0.2, fillstyle=solid, fillcolor=green!40]{1}{2}(B)
+ \drawwidebeam[beamwidth=0.2, fillstyle=solid, fillcolor=green!40]{1-2}(B)
+ \psset{style=Refline}\color{Refline}
+ \psdot(A)\uput[45](A){A}\psdot(B)\uput[135](B){B}
\end{pspicture}
\end{LTXexample}
% \iffalse
@@ -1384,7 +1389,7 @@
% \fi
% \ifENGLISH
% The appearance of the beam can be changed via the \Lstyle{Beam} style, and may
-% have a e.g. semitransparent fill pattern.
+% have e.g. a semitransparent fill pattern.
% \fi
% \iffalse
%<*ignore>
@@ -1412,7 +1417,7 @@
%
% \ifGERMAN\subsection{Faseraufbau}\fi
% \ifENGLISH\subsection{Fiber setup}\fi
-% \label{ex:fiber-setup}
+% \label{sec:fiber-setup}
%
% \ifGERMAN
% Dieses Beispiel zeigt, wie ein faseroptischer Aufbau mit automatisch
@@ -1453,7 +1458,7 @@
% \catcode`\*=13
% \def*{}%
\begin{LTXexample}[style=example, linerange={1-5,7-7}]
-*\ON*\begin{pspicture}[showgrid=true](4.7,2)
+*\ON*\begin{pspicture}[showgrid](4.7,2)
\pnode(0.7,1){A}\pnode(1,1){B}\pnode(2.8,1){C}
\pnode(4,1.5){D}\pnode(4,0.5){E}*\OFF*
\psset{optboxwidth=0.7, labelstyle=\scriptsize}
@@ -1476,7 +1481,7 @@
%<*ignore>
% \fi
\begin{LTXexample}[style=example, linerange={1-6,8-8}]
-*\ON*\begin{pspicture}[showgrid=true](4.7,2)
+*\ON*\begin{pspicture}[showgrid](4.7,2)
\pnode(0.7,1){A}\pnode(1,1){B}\pnode(2.8,1){C}
\pnode(4,1.5){D}\pnode(4,0.5){E}
\psset{optboxwidth=0.7, labelstyle=\scriptsize}
@@ -1502,7 +1507,7 @@
%<*ignore>
% \fi
\begin{LTXexample}[style=example, linerange={1-7,9-9}]
-*\ON*\begin{pspicture}[showgrid=true](4.7,2)
+*\ON*\begin{pspicture}[showgrid](4.7,2)
\pnode(0.7,1){A}\pnode(1,1){B}\pnode(2.8,1){C}
\pnode(4,1.5){D}\pnode(4,0.5){E}
\psset{optboxwidth=0.7, labelstyle=\scriptsize}
@@ -1540,7 +1545,7 @@
% \iffalse
%<*ignore>
% \fi
-\begin{LTXexample}[style=example, caption={caption}, linerange={1-9,11-11}]
+\begin{LTXexample}[style=example, caption={caption}, label={ex:fiber-setup}, linerange={1-9,11-11}]
*\ON*\begin{pspicture}[showgrid](4.7,2)
\pnode(0.7,1){A}\pnode(1,1){B}\pnode(2.8,1){C}
\pnode(4,1.5){D}\pnode(4,0.5){E}
@@ -1559,7 +1564,6 @@
%
% \ifGERMAN\subsection{Faseraufbau (Alternative)}\fi
% \ifENGLISH\subsection{Fiber setup (alternative)}\fi
-% \label{ex:fiber-setup-alt}
%
% \ifGERMAN
% Dieses Beispiel ist vom Ergebnis her identisch mit dem vorangegangenen
@@ -4186,9 +4190,16 @@
% \end{ltxsyntax}
%
% \begin{optionlist}
-% \numitem[0.8]{switchsize}
-% \ifGERMAN Die Seitenlänge des Schalters.\fi
-% \ifENGLISH The side length of the switch.\fi
+% \optitem[0.8]{switchsize}{\prm{num} or \prm{width} \prm{height}}
+% \ifGERMAN
+% Wird nur eine Zahl angegeben, so ist das die Seitenlänge des
+% Schalters, andernfalls können Breite und Höhe getrennt angegeben
+% werden.
+% \fi
+% \ifENGLISH
+% A single number defines the side length of the switch, otherwise the
+% height and width can be specified separately.
+% \fi
%
% \choitem[opened]{switchstyle}{opened, closed}
% \ifGERMAN Der Zustand des Schalters kann geschlossen (\opt{closed}) oder
@@ -4515,8 +4526,16 @@
% \fi
%
% \choitem[center]{coupleralign}{t, top, b, bottom, c, center}
-% \ifGERMAN Die Ausrichtung des Kopplers bezüglich der Referenzknoten.\fi
-% \ifENGLISH The alignment of the coupler with respect to the reference nodes.\fi
+% \ifGERMAN Die Ausrichtung des Kopplers bezüglich der
+% Referenzknoten. Beachten Sie, dass die Position der Komponentenmitte
+% und damit der Beschriftung von dieser Einstellung abhängt (siehe
+% \ref{sec:centernode}).
+% \fi
+% \ifENGLISH The alignment of the coupler with respect to the reference
+% nodes. Note, that the exact position of the coupler center and
+% accordingly that of the label depends on this setting (see
+% \ref{sec:centernode}).
+% \fi
% \iffalse
%<*ignore>
% \fi
@@ -5273,11 +5292,13 @@
% \cmditem{oenodeCenter}{comp}
%
% \ifGERMAN
-% Dieser Knoten liegt, bis auf wenige Ausnahmen (z.B. \Lcs{optdetector}), im
+% Dieser Knoten liegt, bis auf wenige Ausnahmen, wie
+% z.B. \Lcs{optdetector} und \Lcs{optcoupler} (siehe unten), im
% Mittelpunkt der Komponente.
% \fi
% \ifENGLISH
-% This node lays, except for a few components (e.g. \Lcs{optcirculator}), in the
+% This node lays, except for a few components like
+% e.g. \Lcs{optcirculator} and \Lcs{optcoupler} (see below), in the
% center of the component.
% \fi
% \iffalse
@@ -5296,6 +5317,28 @@
% \iffalse
%</ignore>
% \fi
+%
+% \ifGERMAN Bei \Lcs{optcoupler} hängt die Position der Komponentenmitte
+% von den \Lkeyword{coupleralign} Einstellungen ab.
+% \fi
+% \ifENGLISH For \Lcs{optcoupler} the position of the component center
+% depends on the \Lkeyword{coupleralign} settings.
+% \fi
+% \iffalse
+%<*ignore>
+% \fi
+\begin{LTXexample}
+\begin{pspicture}(0,0.3)(3,3)
+ \psset[optexp]{couplersize=0.6 0.4, couplersep=0.2, couplertype=rectangle}
+ \optcoupler(0,3)(0,2)(3,3)(3,2)
+ \psdot(\oenodeCenter{})
+ \optcoupler[coupleralign=b](0,1.5)(0,0.5)(3,1.5)(3,0.5)
+ \psdot(\oenodeCenter{})
+\end{pspicture}
+\end{LTXexample}
+% \iffalse
+%</ignore>
+% \fi
% \end{ltxsyntax}
%
% \ifGERMAN\section{Beschriftungsknoten}\fi
@@ -6041,20 +6084,26 @@
% Bei \Lcs{drawbeam} und \Lcs{drawwidebeam} können auch Zahlintervalle verwendet
% werden. Gültige Intervallangaben sind
% \begin{description}
-% \item[\parbox{2em}{\texttt{x-y}}] Von \opt{x} bis \opt{y}, ist \opt{x} größer
-% als \opt{y}, so wird heruntergezählt.
+% \item[\parbox{2em}{\texttt{x-y}}] Von \opt{x} bis \opt{y}, ist \opt{x}
+% größer als \opt{y}, so wird heruntergezählt. Ist der gesamte
+% Bereich nicht definiert, dann wird ein Fehler ausgegeben.
% \item[\parbox{2em}{\texttt{x-}}] Von \opt{x} bis zur letzten Komponente.
-% \item[\parbox{2em}{\texttt{\hphantom{x}-y}}] Von der ersten Komponente bis \opt{y}.
+% \item[\parbox{2em}{\texttt{\hphantom{x}-y}}] Von der ersten Komponente
+% bis \opt{y}. Ist \opt{y} außerhalb des definierten Bereichs, dann
+% wird eine Warnung ausgegeben.
% \item[\parbox{2em}{\texttt{\hphantom{x}-}}] Verbinde alle Komponenten.
% \end{description}
% \fi
% \ifENGLISH For \Lcs{drawbeam} and \Lcs{drawwidebeam} you can also specify a
% number range. Valid range specifications are
% \begin{description}
-% \item[\parbox{2em}{\texttt{x-y}}] From \opt{x} to \opt{y}, if \opt{x} is
-% greater than \opt{y}, the numbers are decremented.
+% \item[\parbox{2em}{\texttt{x-y}}] From \opt{x} to \opt{y}, if \opt{x}
+% is greater than \opt{y}, the numbers are decremented. If the whole
+% range is not defined, an error is raised.
% \item[\parbox{2em}{\texttt{x-}}] From \opt{x} to the last component.
-% \item[\parbox{2em}{\texttt{\hphantom{x}-y}}] From the first component to \opt{y}.
+% \item[\parbox{2em}{\texttt{\hphantom{x}-y}}] From the first component
+% to \opt{y}. If \opt{y} is outside the valid range, a warning is
+% raised.
% \item[\parbox{2em}{\texttt{\hphantom{x}-}}] Connect all components.
% \end{description}
% \fi
@@ -9265,9 +9314,9 @@
\pinhole[position=0.8](D)(E)
\drawwidebeam[ArrowInsidePos=0.3, beamwidth=0.2, linecolor=white, beamdiv=-7.15](A){1-3}
\psset{loadbeampoints, savebeampoints=false}%
- \drawwidebeam[ArrowInsidePos=0.6, beamangle=3, linecolor=blue!60!white]{3-6}
+ \drawwidebeam[ArrowInsidePos=0.6, beamangle=3, linecolor=blue!60!white]{3-5}(E)
\drawwidebeam[ArrowInsidePos=0.7, linecolor=green!60!white, arrows=->, ArrowInsideMinLength=2]{3-5}(E)
- \drawwidebeam[ArrowInsidePos=0.8, beamangle=-3, linecolor=red!60!white]{3-6}
+ \drawwidebeam[ArrowInsidePos=0.8, beamangle=-3, linecolor=red!60!white]{3-5}(E)
\end{optexp}
\end{pspicture}
\end{LTXexample}
@@ -10436,6 +10485,13 @@
% \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.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 Fixed some bugs in the connection code
+% \end{release}
% \begin{release}{3.3a}{2012-09-18}
% \item Fixed bug which was exposed by an update of pst-node.
% \item Fixed trailing spaces.
@@ -10902,6 +10958,7 @@
% \end{macrocode}
% Labels
% \begin{macrocode}
+\newcommand{\oelabel}[1]{#1}%
\define@key[psset]{optexp}{labelangle}{%
\pst@checknum{#1}\POE@key@labelangle
}
@@ -10989,7 +11046,7 @@
\def\POE@key@extnodealign{#1}%
\fi
}%
- {\PackageError{pst-optexp}{Unknown value '\val' for extnodealign.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for extnodealign}}
% \end{macrocode}
% This part was copied and adapted from \cs{psset@@ref} from pstricks.tex
% \begin{macrocode}
@@ -11059,15 +11116,15 @@
% \end{macrocode}
% Use the old naming scheme which was used in version 2.x.
% \begin{macrocode}
- \edef\POE@str@basicname@default{tempNode}
- \edef\POE@str@basicname@prefix{}
- \gdef\POE@str@basicname@sep{Intern}
- \edef\POE@str@extnode@postfix{ExtNode}
+ \edef\POE@str@basicname@default{tempNode}%
+ \edef\POE@str@basicname@prefix{}%
+ \gdef\POE@str@basicname@sep{Intern}%
+ \edef\POE@str@extnode@postfix{ExtNode}%
\or
- \edef\POE@str@basicname@default{@}
- \edef\POE@str@basicname@prefix{OE@}
- \gdef\POE@str@basicname@sep{}
- \edef\POE@str@extnode@postfix{Ext}
+ \edef\POE@str@basicname@default{@}%
+ \edef\POE@str@basicname@prefix{OE@}%
+ \gdef\POE@str@basicname@sep{}%
+ \edef\POE@str@extnode@postfix{Ext}%
\fi
}%
\psset[optexp]{namingscheme=new}%
@@ -11218,7 +11275,7 @@
\def\POE@psset@@crystalsize#1 #2 #3\@nil{%
\ifx\\#2\\%
\PackageWarning{pst-optexp}{%
- Parameter 'crystalsize' requires two numbers}%
+ Parameter 'crystalsize' requires two numbers.}%
\fi
\psset[optexp]{crystalwidth=#1}%
\psset[optexp]{crystalheight=#2}%
@@ -11257,7 +11314,7 @@
\def\POE@psset@@optboxsize#1 #2 #3\@nil{%
\ifx\\#2\\%
\PackageWarning{pst-optexp}{%
- Parameter 'optboxsize' requires two numbers}%
+ Parameter 'optboxsize' requires two numbers.}%
\fi
\psset[optexp]{optboxwidth=#1, optboxheight=#2}%
}%
@@ -11292,7 +11349,7 @@
\def\POE@psset@@platesize#1 #2 #3\@nil{%
\ifx\\#2\\%
\PackageWarning{pst-optexp}{%
- Parameter 'platesize' requires two numbers}%
+ Parameter 'platesize' requires two numbers.}%
\fi
\psset[optexp]{platewidth=#1, plateheight=#2}%
}%
@@ -11314,7 +11371,7 @@
}%
\define@choicekey*+[psset]{optexp}{dettype}[\val\nr]{round,diode}%
{\edef\POE@key@dettype{\val}}
- {\PackageError{pst-optexp}{Unknown value '\val' for dettype.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for dettype}}
\newpsstyle{DetectorStyle}{}
\psset[optexp]{%
detsize=0.8,
@@ -11342,7 +11399,7 @@
\define@choicekey+[psset]{optexp}{poltype}%
[\val\nr]{parallel,misc,perp,rcirc,lcirc}%
{\edef\POE@key@poltype{#1}}
- {\PackageError{pst-optexp}{Unknown value '\val' for poltype.}%
+ {\PackageError{pst-optexp}{Unknown value '\val' for poltype}%
}
\psset[optexp]{%
poltype=parallel,
@@ -11389,7 +11446,7 @@
\def\POE@psset@@glanthompsonsize#1 #2 #3\@nil{%
\ifx\\#2\\%
\PackageWarning{pst-optexp}{%
- Parameter 'glanthompsonsize' requires two numbers}%
+ Parameter 'glanthompsonsize' requires two numbers.}%
\fi
\psset[optexp]{glanthompsonwidth=#1, glanthompsonheight=#2}%
}%
@@ -11523,7 +11580,7 @@
\else
\def\POE@key@gratingalign{#1}%
\fi}%
- {\PackageError{pst-optexp}{Unknown value '\val' for gratingalign.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for gratingalign}}
\define@boolkey[psset]{optexp}[POE@]{reverse}[true]{}
\psset[optexp]{%
gratingcount=10,
@@ -11560,7 +11617,7 @@
\define@choicekey+[psset]{optexp}{prismalign}[\val\nr]%
{auto,center}%
{\def\POE@key@prismalign{#1}}%
- {\PackageError{pst-optexp}{Unknown value '\val' for prismalign.}}%
+ {\PackageError{pst-optexp}{Unknown value '\val' for prismalign}}%
\psset[optexp]{%
prismsize=1,
prismangle=60,
@@ -11623,7 +11680,7 @@
\define@choicekey+[psset]{optexp}{polcontroltype}[\val\nr]%
{linear,triangle}%
{\def\POE@key@polcontroltype{#1}}%
- {\PackageError{pst-optexp}{Unknown polcontroltype '\val'}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for polcontroltype}}
\psset[optexp]{%
polcontrolsize=0.15,
polcontroltype=linear
@@ -11697,12 +11754,20 @@
% Optical switch
% \begin{macrocode}
\define@key[psset]{optexp}{switchsize}{%
- \pst@checknum{#1}\POE@key@switchsize
-}
+ \pst@expandafter\POE@psset@@switchsize{#1} {} {} {}\@nil
+}%
+\def\POE@psset@@switchsize#1 #2 #3\@nil{%
+ \pst@checknum{#1}\POE@key@switchwidth
+ \ifx\\#2\\%
+ \pst@checknum{#1}\POE@key@switchheight
+ \else
+ \pst@checknum{#2}\POE@key@switchheight
+ \fi
+}%
\define@choicekey+[psset]{optexp}{switchstyle}%
[\val\nr]{opened,closed}%
{\edef\POE@key@switchstyle{#1}}%
- {\PackageError{pst-optexp}{Unknown value '\val' for switchstyle.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for switchstyle}}
\psset[optexp]{%
switchsize=0.8,
switchstyle=opened
@@ -11755,8 +11820,6 @@
\pst@expandafter\POE@psset@@optcircangle{#1} {} {} {}\@nil
}%
\def\POE@psset@@optcircangle#1 #2 #3\@nil{%
- \edef\POE@tempA{#1}%
- \edef\POE@tempB{#2}%
\ifx\\#2\\%
\PackageError{pst-optexp}{optcircangle requires two numbers}%
\else\ifx\\#1\\%
@@ -11797,7 +11860,7 @@
\let\POE@key@couplertype\POE@str@couplertype@ellipse
\fi
}%
- {\PackageError{pst-optexp}{Unknown value '\val' for couplertype.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for couplertype}}
\define@key[psset]{optexp}{align}{%
\psset[optexp]{coupleralign=#1}%
\PackageWarning{pst-optexp}{%
@@ -11816,7 +11879,7 @@
\else
\def\POE@key@coupleralign{#1}%
\fi}%
- {\PackageError{pst-optexp}{Unknown value '\val' for coupleralign.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for coupleralign}}
\psset[optexp]{%
couplersize=0.2,
couplersep=0.05,
@@ -11884,7 +11947,7 @@
\psset[optexp]{n=#1}%
\PackageWarning{pst-optexp}{%
Option 'refractiveindex' is deprecated,\MessageBreak
- use 'n' instead}%
+ use 'n' instead.}%
}%
\define@key[psset]{optexp}{n}{%
\POE@parsealg{n}#1\@nil
@@ -11928,7 +11991,7 @@
\def\POE@key@savebeampoints{#1}
\else
\PackageError{pst-optexp}%
- {savebeampoints must be a positive integer or 0.}%
+ {savebeampoints must be a positive integer or 0}%
\fi
\@expandtwoargs\in@{,\POE@key@savebeampoints,}{,\POE@beamlist,}%
\ifin@\else
@@ -11950,7 +12013,7 @@
\def\POE@key@loadbeampoints{#1}%
\else
\PackageError{pst-optexp}%
- {loadbeampoints must be a positive integer or 0.}%
+ {loadbeampoints must be a positive integer or 0}%
\fi
\@expandtwoargs\in@{,\POE@key@loadbeampoints,}{,\POE@beamlist,}%
\ifin@\else
@@ -11995,7 +12058,7 @@
\def\POE@key@beamalign{#1}%
\fi
}%
- {\PackageError{pst-optexp}{Unknown value '\val' for beamalign.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for beamalign}}
\define@key[psset]{optexp}{ArrowInsideMinLength}{%
\def\POE@key@ArrowInsideMinLength{#1}%
}%
@@ -12182,10 +12245,10 @@
\def\POE@key@fiberalign{#1}%
\fi
}%
- {\PackageError{pst-optexp}{Unknown value '\val' for fiberalign.}}%
+ {\PackageError{pst-optexp}{Unknown value '\val' for fiberalign}}%
\define@key[psset]{optexp}{fiberstyle}{%
\@ifundefined{nc#1}%
- {\PackageError{pst-optexp}{Unknown value '#1' for fiberstyle.}}%
+ {\PackageError{pst-optexp}{Unknown value '#1' for fiberstyle}}%
{\def\POE@key@fiberstyle{#1}}}
\psset[optexp]{%
fiberangleA=0,
@@ -12242,6 +12305,7 @@
\POE@getcoor#1#2
\edef\POE@temp{{\pst@coor}}%
\else
+ \POE@checkcompname{#1#2}%
\edef\POE@temp{/\oenode{}{#1#2}\space}%
\fi%
}%
@@ -12856,12 +12920,27 @@
\def\POE@getcomprange#1-#2\@nil{%
\ifx\\#2\\%
\ifx\\#1\\%
- % empty option
+% \end{macrocode}
+% empty option, use the current component ID
+% \begin{macrocode}
\edef\POE@firstcomp{\the\POE@cnt}%
\edef\POE@lastcomp{\the\POE@cnt}%
\else
+% \end{macrocode}
+% A single number was given
+% \begin{macrocode}
\edef\POE@firstcomp{#1}%
\edef\POE@lastcomp{#1}%
+% \end{macrocode}
+% Check if the number is valid, otherwise quit with an error.
+% \begin{macrocode}
+ \ifodd
+ \ifnum 0<\POE@firstcomp\ifnum\POE@lastcomp>\the\POE@cnt \@ne\else\z@\fi\else\@ne\fi
+ \PackageError{pst-optexp}%
+ {Component ID \POE@firstcomp\space is not valid,
+ \ifnum\the\POE@cnt=0 no components have been defined\else
+ valid range is from 1 to \the\POE@cnt\fi}
+ \fi
\fi
\else
\ifx\\#1\\%
@@ -12870,20 +12949,36 @@
\edef\POE@firstcomp{#1}%
\fi
\POE@getlastcomp#2%
+ \ifnum\POE@firstcomp>\the\POE@cnt
+ \ifnum\POE@lastcomp>\the\POE@cnt
+ \PackageError{pst-optexp}%
+ {All components \POE@firstcomp-\POE@lastcomp\space out of range}%
+ \fi
+ \fi
+ \ifnum\POE@firstcomp<1
+ \PackageWarning{pst-optexp}%
+ {Component ID \POE@firstcomp\space is not valid, setting to 1.}%
+ \def\POE@firstcomp{1}%
+ \else\ifnum\POE@firstcomp>\the\POE@cnt
+ \PackageWarning{pst-optexp}%
+ {Component ID \POE@firstcomp\space is not valid, setting to \MessageBreak
+ the last defined value (\the\POE@cnt).}%
+ \edef\POE@firstcomp{\the\POE@cnt}%
+ \fi\fi
+ \ifnum\POE@lastcomp>\the\POE@cnt
+ \PackageWarning{pst-optexp}%
+ {Component ID \POE@lastcomp\space is not valid, setting to \MessageBreak
+ the last defined value (\the\POE@cnt).}%
+ \edef\POE@lastcomp{\the\POE@cnt}%
+ \else\ifnum\POE@lastcomp<1
+ \PackageWarning{pst-optexp}%
+ {Component ID \POE@lastcomp\space is not valid, setting to 1.}%
+ \def\POE@lastcomp{1}%
+ \fi\fi
\fi
- \ifnum\POE@firstcomp<1
- \def\POE@firstcomp{1}%
- \else\ifnum\POE@firstcomp>\the\POE@cnt
- \edef\POE@firstcomp{\the\POE@cnt}%
- \fi\fi
- \ifnum\POE@lastcomp>\the\POE@cnt
- \edef\POE@lastcomp{\the\POE@cnt}%
- \else\ifnum\POE@lastcomp<1
- \def\POE@lastcomp{1}%
- \fi\fi
-}
+}%
\def\POE@getlastcomp#1-{%
- \ifx.#1.%
+ \ifx\\#1\\%
\edef\POE@lastcomp{\the\POE@cnt}%
\else
\ifx\@empty#1\relax
@@ -12892,7 +12987,7 @@
\edef\POE@lastcomp{#1}%
\fi
\fi
-}
+}%
% \end{macrocode}
%
% \begin{macro}{\POE@getcomps}
@@ -12937,6 +13032,7 @@
\POE@firstcomp\space\POE@lastcomp\space GetCompRange %
}%
\else
+ \POE@checkcompname{#1#2}%
\POE@getcomp{(\oenode{}{#1#2})}%
\fi\fi\fi\fi%
\POE@getcomps@i%
@@ -13249,7 +13345,7 @@
\def\POE@checkcompname#1{%
\@expandtwoargs\in@{,#1,}{,\POE@complist,}%
\ifin@\else
- \PackageError{pst-optexp}{^^Jcompname '#1' undefined!^^J}
+ \PackageError{pst-optexp}{Component '#1' is undefined}
\fi
}%
% \end{macrocode}
@@ -13269,18 +13365,18 @@
\def\oenode#1#2{%
\POE@str@basicname@prefix%
\ifx\\#2\\%
- \ifnum9<1\POE@getlastcompname%
- \POE@str@basicname@default%
- \POE@getlastcompname%
- \else%
- \POE@getlastcompname%
- \POE@str@basicname@sep%
- \fi%
- \else%
- \ifnum9<1#2%
- \POE@str@basicname@default%
+ \ifnum9<1\POE@getlastcompname\space%
+ \POE@str@basicname@default
+ \POE@getlastcompname
+ \else
+ \POE@getlastcompname
+ \POE@str@basicname@sep
+ \fi
+ \else
+ \ifnum9<1#2
+ \POE@str@basicname@default
#2%
- \else%
+ \else
#2\POE@str@basicname@sep%
\fi%
\fi%
@@ -13373,7 +13469,7 @@
\else
\PackageWarning{pst-optexp}{%
\string\oenodeIfc\space node argument must be\MessageBreak
- integer, 'N', or 'C'}
+ integer, 'N', or 'C'.}
\fi\fi\fi
}%
% \end{macrocode}
@@ -13745,8 +13841,7 @@
\dipole@iimacro{#2}%
}{%
\PackageError{pst-optexp}{%
- dipole component `#2' already defined
- }%
+ dipole component '#2' already defined}%
}%
\ignorespaces}%
% \end{macrocode}
@@ -13782,8 +13877,7 @@
\fiberdipole@iimacro{#2}%
}{%
\PackageError{pst-optexp}{%
- fiber dipole object `#2' already defined
- }%
+ fiber dipole object '#2' already defined}%
}%
\ignorespaces}%
% \end{macrocode}
@@ -13816,8 +13910,7 @@
\tripole@iimacro{#2}%
}{%
\PackageError{pst-optexp}{%
- tripole object `#2' already defined
- }%
+ tripole object '#2' already defined}%
}%
\ignorespaces}%
% \end{macrocode}
@@ -14128,7 +14221,8 @@
\ifnum\POE@key@fiberboxcountout=1
\ifdim\POE@key@fiberboxheight pt=0pt
\PackageError{pst-optexp}{%
- Cannot determine fiberboxheight automatically}
+ Cannot determine height of 1x1 fiberbox automatically,
+ use fiberboxheight}%
\fi
\fi
\fi
@@ -14404,14 +14498,14 @@
{\POE@key@labelangle}%
{\oenodeCenter{}}%
{\pnode(0,0){\oenodeLabel{}}%
- \rput[\POE@key@labelalign](0,0){\POE@key@labelstyle #1}}%
+ \rput[\POE@key@labelalign](0,0){\POE@key@labelstyle\oelabel{#1}}}%
% \end{macrocode}
% Rotate the label node together with the component, but do not rotate the label
% text itself.
% \begin{macrocode}
\else\ifx\POE@key@labelref\POE@str@labelref@relgrav
\rput[\POE@key@labelalign](\oenodeLabel{}){%
- \POE@key@labelstyle #1}%
+ \POE@key@labelstyle\oelabel{#1}}%
% \end{macrocode}
% Rotate label node and label text with the component.
% \begin{macrocode}
@@ -14439,14 +14533,14 @@
{\POE@trefnodeA}{\POE@trefnodeB}%
\ifx\POE@key@position\@empty
\ifx\POE@key@abspos\@empty
- \ncput[nrot=:U,npos=]{\POE@putlabelrelative{#1}}%
+ \ncput[nrot=:U,npos=]{\POE@putlabelrelative{\oelabel{#1}}}%
\else
\POE@nlput[nrot=:U](\POE@trefnodeA)(\POE@trefnodeB)%
- {\POE@key@abspos}{\POE@putlabelrelative{#1}}%
+ {\POE@key@abspos}{\POE@putlabelrelative{\oelabel{#1}}}%
\fi
\else
\ncput[nrot=:U, npos=\POE@key@position]%
- {\POE@putlabelrelative{#1}}%
+ {\POE@putlabelrelative{\oelabel{#1}}}%
\fi
\endgroup
\fi\fi\fi
@@ -14976,10 +15070,10 @@
dimen=outer](! \@ht 4 div 0)%
(! \@ht -4 div \@ht 2.5 div)
\ifx\POE@key@extnode\@empty
- \psbezier(! 0 \@ht 2.5 div)%
- (! 0 \@ht 1.5 div)%
- (! \@ht 2 div \@ht 2 div)%
- (! \@ht 4 div \@ht)
+ \psbezier[fillstyle=none](! 0 \@ht 2.5 div)%
+ (! 0 \@ht 1.5 div)%
+ (! \@ht 2 div \@ht 2 div)%
+ (! \@ht 4 div \@ht)
\fi
\else\ifx\POE@key@mirrortype\POE@str@mirrortype@extended
\psframe[style=ExtendedMirror]%
@@ -15046,7 +15140,7 @@
% draw the reflective interface
% \begin{macrocode}
\bgroup
- \psset{linewidth=\POE@key@mirrorlinewidth}
+ \psset{linewidth=\POE@key@mirrorlinewidth, fillstyle=none}
\begin@OpenObj
\addto@pscode{\POE@dict{ \@ht \@r rightCurvedIfc \@postcode }}%
\end@OpenObj
@@ -15393,11 +15487,11 @@
\pscircle[fillstyle=none](0,0){0.12}
\fi
\ifx\POE@key@poltype\POE@str@pol@polrcirc
- \psellipticarc[arrows=->]%
+ \psellipticarc[fillstyle=none, arrows=->]%
(0,0)(! \@sz 2 div \@sz){20}{-20}
\fi
\ifx\POE@key@poltype\POE@str@pol@pollcirc
- \psellipticarc[arrows=<-]%
+ \psellipticarc[fillstyle=none, arrows=<-]%
(0,0)(! \@sz 2 div \@sz){20}{-20}
\fi
\ignorespaces}%
@@ -15911,6 +16005,8 @@
% \begin{macro}{\optmzm@comp}
% \begin{macrocode}
\def\optmzm@comp{%
+ \psframe[dimen=outer](! \POE@dict{@@x neg @@y neg})%
+ (!\POE@dict{@@x @@y})
\bgroup
\ifPOE@usefiberstyle
\psset{style=Fiber, arrows=-, ArrowInside=-}
@@ -15924,8 +16020,6 @@
(! \POE@dict{@@x -0.4 mul @@y -0.6 mul})%
(! \POE@dict{@@x} -0.7 mul 0)%
\egroup
- \psframe[dimen=outer](! \POE@dict{@@x neg @@y neg})%
- (!\POE@dict{@@x @@y})
\ignorespaces}%
% \end{macrocode}
% \end{macro}
@@ -16140,7 +16234,10 @@
% \begin{macro}{\optswitch@ref}
% \begin{macrocode}
\def\optswitch@ref{%
- \POE@setref{\POE@key@switchsize\space 0.5 mul dup /@@y ED /@@x ED }%
+ \POE@setref{%
+ /@@x \POE@key@switchwidth\space 0.5 mul def
+ /@@y \POE@key@switchheight\space 0.5 mul def
+ }%
}%
% \end{macrocode}
% \end{macro}
@@ -16148,6 +16245,8 @@
% \begin{macro}{\optswitch@comp}
% \begin{macrocode}
\def\optswitch@comp{%
+ \psframe[dimen=outer](! \POE@dict{@@x neg @@y neg})%
+ (! \POE@dict{@@x @@y})%
% \end{macrocode}
% storing the linewidth of the object allows for some aesthetic fine tuning
% \begin{macrocode}
@@ -16177,8 +16276,6 @@
\pscircle(! \POE@dict{@@x} -0.6 mul 0){\pslinewidth}%
\psdot[dotsize=3\pslinewidth](! \POE@dict{@@x} 0.6 mul 0)%
\fi
- \psframe[dimen=outer](! \POE@dict{@@x neg @@y neg})%
- (! \POE@dict{@@x @@y})%
\ignorespaces}%
% \end{macrocode}
% \end{macro}
@@ -16280,7 +16377,7 @@
{@@x neg @@y0 \@sep sub}
{@@x @@y0 \@sep add}
{@@x @@y0 \@sep sub} }%
- \pnode(! 0 \POE@dict{@@y0}){\oenodeCenter{}}
+ \pnode(0,0){\oenodeCenter{}}
}%
% \end{macrocode}
% \end{macro}
@@ -16398,7 +16495,7 @@
{@@x neg @@y0 \@sep add}
{@@x neg @@y0 \@sep sub}
{@@x 0}}%
- \pnode(! 0 \POE@dict{@@y0}){\oenodeCenter{}}
+ \pnode(0,0){\oenodeCenter{}}
}%
% \end{macrocode}
% \end{macro}
@@ -16440,7 +16537,7 @@
{@@x neg 0}
{@@x @@y0 \@sep add}
{@@x @@y0 \@sep sub}}
- \pnode(! 0 \POE@dict{@@y0}){\oenodeCenter{}}
+ \pnode(0,0){\oenodeCenter{}}
}%
% \end{macrocode}
% \end{macro}
@@ -16640,7 +16737,16 @@ tx@OptexpDict begin
% \opt{pswarning}.
% \begin{macrocode}
/PrintWarning {
- (Warning: ) exch strcat ==
+ (Warning pst-optexp: ) exch strcat ==
+} bind def
+/CompUnknownWarning {
+ (Component ') exch strcat (' unknown) strcat PrintWarning
+} bind def
+/OneFiberCompWarning {
+ (Found only one fiber component in beam path, drawing no beam) PrintWarning
+} bind def
+/FiberCompWarning {
+ (Found a fiber component in beam path, stopping beam path) PrintWarning
} bind def
% \end{macrocode}
% \end{macro}
@@ -17607,7 +17713,7 @@ tx@OptexpDict begin
currentdict /lastVecTmp known {
lastVecTmp beamangle matrix rotate dtransform ToVec
} {
- beamalign relative eq counttomark 2 ge and {
+ counttomark 2 ge beamalign relative eq and {
2 copy /InVec load TransformInVec
} {
/InVec load
@@ -18139,9 +18245,16 @@ tx@OptexpDict begin
% \begin{macrocode}
/isFreeray {
cvn load /n known
- dup not {
- (Encountered fiber component in beam path) Warning
- } if
+} bind def
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{/compIsKnown}
+% Check if a component is known.
+% \begin{macrocode}
+/compIsKnown {
+ dup type /stringtype eq { cvn } if
+ tx@OptexpDict exch known
} bind def
% \end{macrocode}
% \end{macro}
@@ -18154,36 +18267,82 @@ tx@OptexpDict begin
% \begin{macrocode}
/PrearrangePlanes {
(PrearrangePlanes) DebugBegin
- counttomark /N ED
- /CompA ED dup /CompB ED
- CompA isFreeray {
- CompA isAmbiguous {
- amb dup CompA
- } {
- CompB isAmbiguous {
- 1 CompA GetIfcCenter (C) CompB GetIfcCenter @ABDist
- (N) CompA GetIfcCenter (C) CompB GetIfcCenter @ABDist
- } {
- 1 CompA GetIfcCenter
- 1 CompB GetIfcCenter
- (N) CompB GetIfcCenter
- true OrderNodes exch pop
- (N) CompA GetIfcCenter
- 1 CompB GetIfcCenter
- (N) CompB GetIfcCenter
- true OrderNodes exch pop
+ counttomark dup 2 lt {
+ dup 0 eq {
+ (Found no component on stack, drawing no beam) PrintWarning
+ }{
+% \end{macrocode}
+% Only one component, draw always in ascending order. We must still
+% check in /PushAllPlanesOnStack if the component has only one
+% interface.
+% \begin{macrocode}
+ exch dup
+ compIsKnown {
+ dup isFreeray {
+ asc exch 3 -1 roll
+ }{
+ OneFiberCompWarning
+ pop
+ } ifelse
+ }{
+ CompUnknownWarning
} ifelse
- le { desc } { asc } ifelse dup CompA
} ifelse
- counttomark 2 roll
- } {
- counttomark 1 sub { pop } repeat
/N 0 def
+ }{
+% \end{macrocode}
+% We have a minimum of two components on stack
+% \begin{macrocode}
+ /N ED
+ /CompA ED dup /CompB ED
+% \end{macrocode}
+% Check, if the components have been defined
+% \begin{macrocode}
+ CompA compIsKnown CompB compIsKnown and {
+ CompA isFreeray {
+ CompA isAmbiguous {
+ amb dup CompA
+ } {
+ CompB isAmbiguous {
+ 1 CompA GetIfcCenter (C) CompB GetIfcCenter @ABDist
+ (N) CompA GetIfcCenter (C) CompB GetIfcCenter @ABDist
+ } {
+ 1 CompA GetIfcCenter
+ 1 CompB GetIfcCenter
+ (N) CompB GetIfcCenter
+ true OrderNodes exch pop
+ (N) CompA GetIfcCenter
+ 1 CompB GetIfcCenter
+ (N) CompB GetIfcCenter
+ true OrderNodes exch pop
+ } ifelse
+ le { desc } { asc } ifelse dup CompA
+ } ifelse
+ counttomark 2 roll
+ }{
+ FiberCompWarning
+ counttomark 1 sub { pop } repeat
+ /N 0 def
+ } ifelse
+ }{
+% \end{macrocode}
+% One of the first two components was not defined, do not draw any beam
+% \begin{macrocode}
+ /N 0 def
+ CompA compIsKnown not {CompA}{CompB} ifelse
+ CompUnknownWarning
+ } ifelse
} ifelse
2 1 N {
/i ED exch /CompB ED
+ CompB compIsKnown not {
+ counttomark i 1 sub 2 mul 1 add sub { pop } repeat
+ CompB CompUnknownWarning
+ exit
+ } if
CompB isFreeray not {
counttomark i 1 sub 2 mul 1 add sub { pop } repeat
+ FiberCompWarning
exit
} if
CompB isAmbiguous not {
@@ -18254,7 +18413,8 @@ tx@OptexpDict begin
%
% \begin{macro}{PushAllPlanesOnStack}
% \begin{pssyntax}
-% \PSvar{[} \PSvar{desc|asc} \PSstring{CompN} \PSvar{\ldots} \PSvar{desc|asc} \PSstring{Comp1} \PSop{PushAllPlanesOnStack}
+% \PSvar{[} \PSvar{desc|asc} \PSstring{CompN} \PSvar{\ldots} \PSvar{desc|asc} \PSstring{Comp1}
+% \PSop{PushAllPlanesOnStack}
% \PSvar{[} \PSproc{PN \PSstring{CompName} n mode draw?} \PSvar{\ldots{}}
% \end{pssyntax}
% \begin{psarglist}
@@ -18362,6 +18522,7 @@ tx@OptexpDict begin
} ifelse
} for
DebugEnd
+ counttomark 1 eq { pop } if
} bind def
% \end{macrocode}
% \end{macro}
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 12a8a78b766..ad20b175b0b 100644
--- a/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins
+++ b/Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins
@@ -1,5 +1,5 @@
%%
-%% Copyright (C) 2007-2012 by Christoph Bersch <usenet@bersch.net>
+%% Copyright (C) 2007-2013 by Christoph Bersch <usenet@bersch.net>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -37,11 +37,13 @@
%% Installation:
%% TDS:tex/latex/pst-optexp/pst-optexp.sty
%% TDS:dvips/pst-optexp/pst-optexp.pro
-%% TDS:doc/generic/pst-optexp/pst-optexp.pdf
-%% TDS:doc/generic/pst-optexp/pst-optexp-DE.pdf
-%% TDS:doc/generic/pst-optexp/pst-optexp-quickref.pdf
-%% TDS:source/generic/pst-optexp/pst-optexp.ins
-%% TDS:source/generic/pst-optexp/pst-optexp.dtx
+%% TDS:doc/latex/pst-optexp/README
+%% TDS:doc/latex/pst-optexp/Changes
+%% TDS:doc/latex/pst-optexp/pst-optexp.pdf
+%% TDS:doc/latex/pst-optexp/pst-optexp-DE.pdf
+%% TDS:doc/latex/pst-optexp/pst-optexp-quickref.pdf
+%% TDS:source/latex/pst-optexp/pst-optexp.ins
+%% TDS:source/latex/pst-optexp/pst-optexp.dtx
%%
\input docstrip.tex
\keepsilent
@@ -51,9 +53,9 @@
This is a generated file.
Project: pst-optexp
-Version: 3.3a (2012/09/18)
+Version: 3.4alpha (2013/02/03)
-Copyright (C) 2007-2012 by Christoph Bersch <usenet@bersch.net>
+Copyright (C) 2007-2013 by Christoph Bersch <usenet@bersch.net>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
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 4ba71859a7b..332ee17a450 100644
--- a/Master/texmf-dist/tex/latex/pst-optexp/pst-optexp.sty
+++ b/Master/texmf-dist/tex/latex/pst-optexp/pst-optexp.sty
@@ -9,9 +9,9 @@
%% This is a generated file.
%%
%% Project: pst-optexp
-%% Version: 3.3a (2012/09/18)
+%% Version: 3.4alpha (2013/02/03)
%%
-%% Copyright (C) 2007-2012 by Christoph Bersch <usenet@bersch.net>
+%% Copyright (C) 2007-2013 by Christoph Bersch <usenet@bersch.net>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -31,7 +31,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{pst-optexp}
- [2012/09/18 v3.3a Optical experimental setups with PSTricks]
+ [2013/02/03 v3.4 Optical experimental setups with PSTricks]
\RequirePackage{pstricks}
\RequirePackage{pst-xkey}
\RequirePackage{pst-node}
@@ -267,6 +267,7 @@
\define@boolkey[psset]{optexp}[POE@]{frontlayer}[true]{}
\define@boolkey[psset]{optexp}[POE@]{optexpenv}[true]{}
\psset[optexp]{backlayer, frontlayer}%
+\newcommand{\oelabel}[1]{#1}%
\define@key[psset]{optexp}{labelangle}{%
\pst@checknum{#1}\POE@key@labelangle
}
@@ -348,7 +349,7 @@
\def\POE@key@extnodealign{#1}%
\fi
}%
- {\PackageError{pst-optexp}{Unknown value '\val' for extnodealign.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for extnodealign}}
\define@key[psset]{optexp}{extnode}{%
\edef\POE@key@extnode{#1}%
\ifx\@empty\POE@key@extnode\else
@@ -404,15 +405,15 @@
\define@choicekey*[psset]{optexp}{namingscheme}%
[\val\nr]{old,new}[new]{%
\ifcase\nr\relax
- \edef\POE@str@basicname@default{tempNode}
- \edef\POE@str@basicname@prefix{}
- \gdef\POE@str@basicname@sep{Intern}
- \edef\POE@str@extnode@postfix{ExtNode}
+ \edef\POE@str@basicname@default{tempNode}%
+ \edef\POE@str@basicname@prefix{}%
+ \gdef\POE@str@basicname@sep{Intern}%
+ \edef\POE@str@extnode@postfix{ExtNode}%
\or
- \edef\POE@str@basicname@default{@}
- \edef\POE@str@basicname@prefix{OE@}
- \gdef\POE@str@basicname@sep{}
- \edef\POE@str@extnode@postfix{Ext}
+ \edef\POE@str@basicname@default{@}%
+ \edef\POE@str@basicname@prefix{OE@}%
+ \gdef\POE@str@basicname@sep{}%
+ \edef\POE@str@extnode@postfix{Ext}%
\fi
}%
\psset[optexp]{namingscheme=new}%
@@ -542,7 +543,7 @@
\def\POE@psset@@crystalsize#1 #2 #3\@nil{%
\ifx\\#2\\%
\PackageWarning{pst-optexp}{%
- Parameter 'crystalsize' requires two numbers}%
+ Parameter 'crystalsize' requires two numbers.}%
\fi
\psset[optexp]{crystalwidth=#1}%
\psset[optexp]{crystalheight=#2}%
@@ -578,7 +579,7 @@
\def\POE@psset@@optboxsize#1 #2 #3\@nil{%
\ifx\\#2\\%
\PackageWarning{pst-optexp}{%
- Parameter 'optboxsize' requires two numbers}%
+ Parameter 'optboxsize' requires two numbers.}%
\fi
\psset[optexp]{optboxwidth=#1, optboxheight=#2}%
}%
@@ -607,7 +608,7 @@
\def\POE@psset@@platesize#1 #2 #3\@nil{%
\ifx\\#2\\%
\PackageWarning{pst-optexp}{%
- Parameter 'platesize' requires two numbers}%
+ Parameter 'platesize' requires two numbers.}%
\fi
\psset[optexp]{platewidth=#1, plateheight=#2}%
}%
@@ -626,7 +627,7 @@
}%
\define@choicekey*+[psset]{optexp}{dettype}[\val\nr]{round,diode}%
{\edef\POE@key@dettype{\val}}
- {\PackageError{pst-optexp}{Unknown value '\val' for dettype.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for dettype}}
\newpsstyle{DetectorStyle}{}
\psset[optexp]{%
detsize=0.8,
@@ -648,7 +649,7 @@
\define@choicekey+[psset]{optexp}{poltype}%
[\val\nr]{parallel,misc,perp,rcirc,lcirc}%
{\edef\POE@key@poltype{#1}}
- {\PackageError{pst-optexp}{Unknown value '\val' for poltype.}%
+ {\PackageError{pst-optexp}{Unknown value '\val' for poltype}%
}
\psset[optexp]{%
poltype=parallel,
@@ -686,7 +687,7 @@
\def\POE@psset@@glanthompsonsize#1 #2 #3\@nil{%
\ifx\\#2\\%
\PackageWarning{pst-optexp}{%
- Parameter 'glanthompsonsize' requires two numbers}%
+ Parameter 'glanthompsonsize' requires two numbers.}%
\fi
\psset[optexp]{glanthompsonwidth=#1, glanthompsonheight=#2}%
}%
@@ -806,7 +807,7 @@
\else
\def\POE@key@gratingalign{#1}%
\fi}%
- {\PackageError{pst-optexp}{Unknown value '\val' for gratingalign.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for gratingalign}}
\define@boolkey[psset]{optexp}[POE@]{reverse}[true]{}
\psset[optexp]{%
gratingcount=10,
@@ -834,7 +835,7 @@
\define@choicekey+[psset]{optexp}{prismalign}[\val\nr]%
{auto,center}%
{\def\POE@key@prismalign{#1}}%
- {\PackageError{pst-optexp}{Unknown value '\val' for prismalign.}}%
+ {\PackageError{pst-optexp}{Unknown value '\val' for prismalign}}%
\psset[optexp]{%
prismsize=1,
prismangle=60,
@@ -884,7 +885,7 @@
\define@choicekey+[psset]{optexp}{polcontroltype}[\val\nr]%
{linear,triangle}%
{\def\POE@key@polcontroltype{#1}}%
- {\PackageError{pst-optexp}{Unknown polcontroltype '\val'}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for polcontroltype}}
\psset[optexp]{%
polcontrolsize=0.15,
polcontroltype=linear
@@ -942,12 +943,20 @@
}%
\psset[optexp]{fiberpolsize=0.6}%
\define@key[psset]{optexp}{switchsize}{%
- \pst@checknum{#1}\POE@key@switchsize
-}
+ \pst@expandafter\POE@psset@@switchsize{#1} {} {} {}\@nil
+}%
+\def\POE@psset@@switchsize#1 #2 #3\@nil{%
+ \pst@checknum{#1}\POE@key@switchwidth
+ \ifx\\#2\\%
+ \pst@checknum{#1}\POE@key@switchheight
+ \else
+ \pst@checknum{#2}\POE@key@switchheight
+ \fi
+}%
\define@choicekey+[psset]{optexp}{switchstyle}%
[\val\nr]{opened,closed}%
{\edef\POE@key@switchstyle{#1}}%
- {\PackageError{pst-optexp}{Unknown value '\val' for switchstyle.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for switchstyle}}
\psset[optexp]{%
switchsize=0.8,
switchstyle=opened
@@ -991,8 +1000,6 @@
\pst@expandafter\POE@psset@@optcircangle{#1} {} {} {}\@nil
}%
\def\POE@psset@@optcircangle#1 #2 #3\@nil{%
- \edef\POE@tempA{#1}%
- \edef\POE@tempB{#2}%
\ifx\\#2\\%
\PackageError{pst-optexp}{optcircangle requires two numbers}%
\else\ifx\\#1\\%
@@ -1029,7 +1036,7 @@
\let\POE@key@couplertype\POE@str@couplertype@ellipse
\fi
}%
- {\PackageError{pst-optexp}{Unknown value '\val' for couplertype.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for couplertype}}
\define@key[psset]{optexp}{align}{%
\psset[optexp]{coupleralign=#1}%
\PackageWarning{pst-optexp}{%
@@ -1048,7 +1055,7 @@
\else
\def\POE@key@coupleralign{#1}%
\fi}%
- {\PackageError{pst-optexp}{Unknown value '\val' for coupleralign.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for coupleralign}}
\psset[optexp]{%
couplersize=0.2,
couplersep=0.05,
@@ -1103,7 +1110,7 @@
\psset[optexp]{n=#1}%
\PackageWarning{pst-optexp}{%
Option 'refractiveindex' is deprecated,\MessageBreak
- use 'n' instead}%
+ use 'n' instead.}%
}%
\define@key[psset]{optexp}{n}{%
\POE@parsealg{n}#1\@nil
@@ -1147,7 +1154,7 @@
\def\POE@key@savebeampoints{#1}
\else
\PackageError{pst-optexp}%
- {savebeampoints must be a positive integer or 0.}%
+ {savebeampoints must be a positive integer or 0}%
\fi
\@expandtwoargs\in@{,\POE@key@savebeampoints,}{,\POE@beamlist,}%
\ifin@\else
@@ -1169,7 +1176,7 @@
\def\POE@key@loadbeampoints{#1}%
\else
\PackageError{pst-optexp}%
- {loadbeampoints must be a positive integer or 0.}%
+ {loadbeampoints must be a positive integer or 0}%
\fi
\@expandtwoargs\in@{,\POE@key@loadbeampoints,}{,\POE@beamlist,}%
\ifin@\else
@@ -1214,7 +1221,7 @@
\def\POE@key@beamalign{#1}%
\fi
}%
- {\PackageError{pst-optexp}{Unknown value '\val' for beamalign.}}
+ {\PackageError{pst-optexp}{Unknown value '\val' for beamalign}}
\define@key[psset]{optexp}{ArrowInsideMinLength}{%
\def\POE@key@ArrowInsideMinLength{#1}%
}%
@@ -1384,10 +1391,10 @@
\def\POE@key@fiberalign{#1}%
\fi
}%
- {\PackageError{pst-optexp}{Unknown value '\val' for fiberalign.}}%
+ {\PackageError{pst-optexp}{Unknown value '\val' for fiberalign}}%
\define@key[psset]{optexp}{fiberstyle}{%
\@ifundefined{nc#1}%
- {\PackageError{pst-optexp}{Unknown value '#1' for fiberstyle.}}%
+ {\PackageError{pst-optexp}{Unknown value '#1' for fiberstyle}}%
{\def\POE@key@fiberstyle{#1}}}
\psset[optexp]{%
fiberangleA=0,
@@ -1423,6 +1430,7 @@
\POE@getcoor#1#2
\edef\POE@temp{{\pst@coor}}%
\else
+ \POE@checkcompname{#1#2}%
\edef\POE@temp{/\oenode{}{#1#2}\space}%
\fi%
}%
@@ -1896,12 +1904,18 @@
\def\POE@getcomprange#1-#2\@nil{%
\ifx\\#2\\%
\ifx\\#1\\%
- % empty option
\edef\POE@firstcomp{\the\POE@cnt}%
\edef\POE@lastcomp{\the\POE@cnt}%
\else
\edef\POE@firstcomp{#1}%
\edef\POE@lastcomp{#1}%
+ \ifodd
+ \ifnum 0<\POE@firstcomp\ifnum\POE@lastcomp>\the\POE@cnt \@ne\else\z@\fi\else\@ne\fi
+ \PackageError{pst-optexp}%
+ {Component ID \POE@firstcomp\space is not valid,
+ \ifnum\the\POE@cnt=0 no components have been defined\else
+ valid range is from 1 to \the\POE@cnt\fi}
+ \fi
\fi
\else
\ifx\\#1\\%
@@ -1910,20 +1924,36 @@
\edef\POE@firstcomp{#1}%
\fi
\POE@getlastcomp#2%
+ \ifnum\POE@firstcomp>\the\POE@cnt
+ \ifnum\POE@lastcomp>\the\POE@cnt
+ \PackageError{pst-optexp}%
+ {All components \POE@firstcomp-\POE@lastcomp\space out of range}%
+ \fi
+ \fi
+ \ifnum\POE@firstcomp<1
+ \PackageWarning{pst-optexp}%
+ {Component ID \POE@firstcomp\space is not valid, setting to 1.}%
+ \def\POE@firstcomp{1}%
+ \else\ifnum\POE@firstcomp>\the\POE@cnt
+ \PackageWarning{pst-optexp}%
+ {Component ID \POE@firstcomp\space is not valid, setting to \MessageBreak
+ the last defined value (\the\POE@cnt).}%
+ \edef\POE@firstcomp{\the\POE@cnt}%
+ \fi\fi
+ \ifnum\POE@lastcomp>\the\POE@cnt
+ \PackageWarning{pst-optexp}%
+ {Component ID \POE@lastcomp\space is not valid, setting to \MessageBreak
+ the last defined value (\the\POE@cnt).}%
+ \edef\POE@lastcomp{\the\POE@cnt}%
+ \else\ifnum\POE@lastcomp<1
+ \PackageWarning{pst-optexp}%
+ {Component ID \POE@lastcomp\space is not valid, setting to 1.}%
+ \def\POE@lastcomp{1}%
+ \fi\fi
\fi
- \ifnum\POE@firstcomp<1
- \def\POE@firstcomp{1}%
- \else\ifnum\POE@firstcomp>\the\POE@cnt
- \edef\POE@firstcomp{\the\POE@cnt}%
- \fi\fi
- \ifnum\POE@lastcomp>\the\POE@cnt
- \edef\POE@lastcomp{\the\POE@cnt}%
- \else\ifnum\POE@lastcomp<1
- \def\POE@lastcomp{1}%
- \fi\fi
-}
+}%
\def\POE@getlastcomp#1-{%
- \ifx.#1.%
+ \ifx\\#1\\%
\edef\POE@lastcomp{\the\POE@cnt}%
\else
\ifx\@empty#1\relax
@@ -1932,7 +1962,7 @@
\edef\POE@lastcomp{#1}%
\fi
\fi
-}
+}%
\def\POE@getcomps#1#2{%
\ifx\POE@key@conn\@empty
\def\POE@aftercomps{\addto@pscode{#1 \POE@comps }#2}%
@@ -1973,6 +2003,7 @@
\POE@firstcomp\space\POE@lastcomp\space GetCompRange %
}%
\else
+ \POE@checkcompname{#1#2}%
\POE@getcomp{(\oenode{}{#1#2})}%
\fi\fi\fi\fi%
\POE@getcomps@i%
@@ -2230,7 +2261,7 @@
\def\POE@checkcompname#1{%
\@expandtwoargs\in@{,#1,}{,\POE@complist,}%
\ifin@\else
- \PackageError{pst-optexp}{^^Jcompname '#1' undefined!^^J}
+ \PackageError{pst-optexp}{Component '#1' is undefined}
\fi
}%
\def\POE@getlastcompname{%
@@ -2240,18 +2271,18 @@
\def\oenode#1#2{%
\POE@str@basicname@prefix%
\ifx\\#2\\%
- \ifnum9<1\POE@getlastcompname%
- \POE@str@basicname@default%
- \POE@getlastcompname%
- \else%
- \POE@getlastcompname%
- \POE@str@basicname@sep%
- \fi%
- \else%
- \ifnum9<1#2%
- \POE@str@basicname@default%
+ \ifnum9<1\POE@getlastcompname\space%
+ \POE@str@basicname@default
+ \POE@getlastcompname
+ \else
+ \POE@getlastcompname
+ \POE@str@basicname@sep
+ \fi
+ \else
+ \ifnum9<1#2
+ \POE@str@basicname@default
#2%
- \else%
+ \else
#2\POE@str@basicname@sep%
\fi%
\fi%
@@ -2281,7 +2312,7 @@
\else
\PackageWarning{pst-optexp}{%
\string\oenodeIfc\space node argument must be\MessageBreak
- integer, 'N', or 'C'}
+ integer, 'N', or 'C'.}
\fi\fi\fi
}%
\def\oenodeBeam#1{%
@@ -2506,8 +2537,7 @@
\dipole@iimacro{#2}%
}{%
\PackageError{pst-optexp}{%
- dipole component `#2' already defined
- }%
+ dipole component '#2' already defined}%
}%
\ignorespaces}%
\def\POE@newfiberdipole[#1]#2#3{%
@@ -2538,8 +2568,7 @@
\fiberdipole@iimacro{#2}%
}{%
\PackageError{pst-optexp}{%
- fiber dipole object `#2' already defined
- }%
+ fiber dipole object '#2' already defined}%
}%
\ignorespaces}%
\def\POE@newtripole[#1]#2#3{%
@@ -2566,8 +2595,7 @@
\tripole@iimacro{#2}%
}{%
\PackageError{pst-optexp}{%
- tripole object `#2' already defined
- }%
+ tripole object '#2' already defined}%
}%
\ignorespaces}%
\def\dipole@iimacro#1{%
@@ -2836,7 +2864,8 @@
\ifnum\POE@key@fiberboxcountout=1
\ifdim\POE@key@fiberboxheight pt=0pt
\PackageError{pst-optexp}{%
- Cannot determine fiberboxheight automatically}
+ Cannot determine height of 1x1 fiberbox automatically,
+ use fiberboxheight}%
\fi
\fi
\fi
@@ -3021,10 +3050,10 @@
{\POE@key@labelangle}%
{\oenodeCenter{}}%
{\pnode(0,0){\oenodeLabel{}}%
- \rput[\POE@key@labelalign](0,0){\POE@key@labelstyle #1}}%
+ \rput[\POE@key@labelalign](0,0){\POE@key@labelstyle\oelabel{#1}}}%
\else\ifx\POE@key@labelref\POE@str@labelref@relgrav
\rput[\POE@key@labelalign](\oenodeLabel{}){%
- \POE@key@labelstyle #1}%
+ \POE@key@labelstyle\oelabel{#1}}%
\else\ifx\POE@key@labelref\POE@str@relative
\begingroup
\pst@def{InitNC}< % kindly contributed by Herbert Voss
@@ -3046,14 +3075,14 @@
{\POE@trefnodeA}{\POE@trefnodeB}%
\ifx\POE@key@position\@empty
\ifx\POE@key@abspos\@empty
- \ncput[nrot=:U,npos=]{\POE@putlabelrelative{#1}}%
+ \ncput[nrot=:U,npos=]{\POE@putlabelrelative{\oelabel{#1}}}%
\else
\POE@nlput[nrot=:U](\POE@trefnodeA)(\POE@trefnodeB)%
- {\POE@key@abspos}{\POE@putlabelrelative{#1}}%
+ {\POE@key@abspos}{\POE@putlabelrelative{\oelabel{#1}}}%
\fi
\else
\ncput[nrot=:U, npos=\POE@key@position]%
- {\POE@putlabelrelative{#1}}%
+ {\POE@putlabelrelative{\oelabel{#1}}}%
\fi
\endgroup
\fi\fi\fi
@@ -3452,10 +3481,10 @@
dimen=outer](! \@ht 4 div 0)%
(! \@ht -4 div \@ht 2.5 div)
\ifx\POE@key@extnode\@empty
- \psbezier(! 0 \@ht 2.5 div)%
- (! 0 \@ht 1.5 div)%
- (! \@ht 2 div \@ht 2 div)%
- (! \@ht 4 div \@ht)
+ \psbezier[fillstyle=none](! 0 \@ht 2.5 div)%
+ (! 0 \@ht 1.5 div)%
+ (! \@ht 2 div \@ht 2 div)%
+ (! \@ht 4 div \@ht)
\fi
\else\ifx\POE@key@mirrortype\POE@str@mirrortype@extended
\psframe[style=ExtendedMirror]%
@@ -3508,7 +3537,7 @@
\egroup
\fi
\bgroup
- \psset{linewidth=\POE@key@mirrorlinewidth}
+ \psset{linewidth=\POE@key@mirrorlinewidth, fillstyle=none}
\begin@OpenObj
\addto@pscode{\POE@dict{ \@ht \@r rightCurvedIfc \@postcode }}%
\end@OpenObj
@@ -3772,11 +3801,11 @@
\pscircle[fillstyle=none](0,0){0.12}
\fi
\ifx\POE@key@poltype\POE@str@pol@polrcirc
- \psellipticarc[arrows=->]%
+ \psellipticarc[fillstyle=none, arrows=->]%
(0,0)(! \@sz 2 div \@sz){20}{-20}
\fi
\ifx\POE@key@poltype\POE@str@pol@pollcirc
- \psellipticarc[arrows=<-]%
+ \psellipticarc[fillstyle=none, arrows=<-]%
(0,0)(! \@sz 2 div \@sz){20}{-20}
\fi
\ignorespaces}%
@@ -4108,6 +4137,8 @@
}%
}%
\def\optmzm@comp{%
+ \psframe[dimen=outer](! \POE@dict{@@x neg @@y neg})%
+ (!\POE@dict{@@x @@y})
\bgroup
\ifPOE@usefiberstyle
\psset{style=Fiber, arrows=-, ArrowInside=-}
@@ -4121,8 +4152,6 @@
(! \POE@dict{@@x -0.4 mul @@y -0.6 mul})%
(! \POE@dict{@@x} -0.7 mul 0)%
\egroup
- \psframe[dimen=outer](! \POE@dict{@@x neg @@y neg})%
- (!\POE@dict{@@x @@y})
\ignorespaces}%
\def\optfilter@ref{%
\POE@setref{\POE@key@filtersize\space 0.5 mul dup /@@y ED /@@x ED }%
@@ -4263,9 +4292,14 @@
\psline(! \@wd neg 0.2 mul \@ht neg)(!\@wd 0.2 mul \@ht)
\ignorespaces}%
\def\optswitch@ref{%
- \POE@setref{\POE@key@switchsize\space 0.5 mul dup /@@y ED /@@x ED }%
+ \POE@setref{%
+ /@@x \POE@key@switchwidth\space 0.5 mul def
+ /@@y \POE@key@switchheight\space 0.5 mul def
+ }%
}%
\def\optswitch@comp{%
+ \psframe[dimen=outer](! \POE@dict{@@x neg @@y neg})%
+ (! \POE@dict{@@x @@y})%
\pstVerb{tx@Dict begin /@lw \getCLW def end}%
\bgroup
\ifPOE@usefiberstyle
@@ -4292,8 +4326,6 @@
\pscircle(! \POE@dict{@@x} -0.6 mul 0){\pslinewidth}%
\psdot[dotsize=3\pslinewidth](! \POE@dict{@@x} 0.6 mul 0)%
\fi
- \psframe[dimen=outer](! \POE@dict{@@x neg @@y neg})%
- (! \POE@dict{@@x @@y})%
\ignorespaces}%
\def\fiberdelayline@ref{%
\POE@setref{%
@@ -4365,7 +4397,7 @@
{@@x neg @@y0 \@sep sub}
{@@x @@y0 \@sep add}
{@@x @@y0 \@sep sub} }%
- \pnode(! 0 \POE@dict{@@y0}){\oenodeCenter{}}
+ \pnode(0,0){\oenodeCenter{}}
}%
\def\POE@coupler@ref{%
\POE@setref{%
@@ -4449,7 +4481,7 @@
{@@x neg @@y0 \@sep add}
{@@x neg @@y0 \@sep sub}
{@@x 0}}%
- \pnode(! 0 \POE@dict{@@y0}){\oenodeCenter{}}
+ \pnode(0,0){\oenodeCenter{}}
}%
\def\wdmcoupler@comp{%
\ifx\POE@key@couplertype\POE@str@couplertype@none
@@ -4480,7 +4512,7 @@
{@@x neg 0}
{@@x @@y0 \@sep add}
{@@x @@y0 \@sep sub}}
- \pnode(! 0 \POE@dict{@@y0}){\oenodeCenter{}}
+ \pnode(0,0){\oenodeCenter{}}
}%
\def\wdmsplitter@comp{%
\ifx\POE@key@couplertype\POE@str@couplertype@none