diff options
author | Karl Berry <karl@freefriends.org> | 2014-01-14 00:00:52 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-01-14 00:00:52 +0000 |
commit | ae3316ebcba4127854375bc6089614efdad986a3 (patch) | |
tree | 93ae48f015c6c3b321b34c5eb574cd5c32f623ba /Master/texmf-dist/source/latex/pst-optexp | |
parent | 72292f770e87b207288e709d626f014b3e70e2e3 (diff) |
pst-optexp (13jan14)
git-svn-id: svn://tug.org/texlive/trunk@32656 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/pst-optexp')
-rw-r--r-- | Master/texmf-dist/source/latex/pst-optexp/pst-optexp.dtx | 329 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/pst-optexp/pst-optexp.ins | 6 |
2 files changed, 225 insertions, 110 deletions
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 7bbc707a1b4..acc893eae3c 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-2013 by Christoph Bersch <usenet@bersch.net> +% Copyright (C) 2007-2014 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> - [2013/11/27 v4.6 Optical experimental setups with PSTricks] + [2014/01/12 v4.7 Optical experimental setups with PSTricks] %</stylefile> % %<*driver> @@ -111,7 +111,7 @@ oeBeamCenter, optplate, optretplate, pinhole, crystal, optdetector, optdiode, doveprism, glanthompson, polarization, mirror, beamsplitter, optgrating, optprism, rightangleprism, pentaprism, - optdipole, optripole, optfiber, optamp, optmzm, optfilter, + optdipole, opttripole, optfiber, optamp, optmzm, optfilter, polcontrol, optisolator, optswitch, fiberdelayline, optfiberpolarizer, fibercollimator, optcoupler, wdmcoupler, wdmsplitter, optcirculator, fiberbox, eleccoupler, elecsynthesizer, @@ -968,24 +968,27 @@ % \ifGERMAN % Ich danke allen Aktiven auf der PSTricks-Mailingliste für ihre Hilfe, % insbesondere Herbert Voß. Mein Dank gilt ebenfalls unterschiedlichen -% Paketautoren, von denen ich Code kopiert und viel gelernt habe: Florent -% Chervet, Rolf Niepraschk und Heiko Oberdiek. Christine Römer hat mich mit -% ihrem Artikel in der DTK\footnote{Pakete in Deutsch dokumentieren. in Die -% TeXnische Komödie. Heft 2/2011, S. 28-35.} überzeugt, ebenfalls eine deutsche -% Dokumentation bereitzustellen. Der Dokumentationsstil ist eine Mischung aus -% der \opt{pst-doc} Klasse (Herbert Voß) und dem \opt{ltxdockit} Paket für die -% \opt{biblatex} Dokumentation (Philipp Lehmann). +% Paketautoren, von denen ich Code kopiert und viel gelernt habe: David +% Carlisle, Florent Chervet, Enrico Gregorio, Rolf Niepraschk und Heiko +% Oberdiek. Christine Römer hat mich mit ihrem Artikel in der +% DTK\footnote{Pakete in Deutsch dokumentieren. in Die TeXnische +% Komödie. Heft 2/2011, S. 28-35.} überzeugt, ebenfalls eine deutsche +% Dokumentation bereitzustellen. Der Dokumentationsstil ist eine +% Mischung aus der \opt{pst-doc} Klasse (Herbert Voß) und dem +% \opt{ltxdockit} Paket für die \opt{biblatex} Dokumentation (Philipp +% Lehmann). % \fi % \ifENGLISH -% I thank all the people of the PSTricks mailinglist for the continuous help, -% especially Herbert Voß. Thanks also to various package authors from which I -% learned and adopted code for this package, Florent Chervet, Rolf Niepraschk -% and Heiko Oberdiek. Christine Römer convinced me with her article in the -% german DTK\footnote{Pakete in Deutsch dokumentieren. in Die TeXnische -% Komödie. Heft 2/2011, S. 28-35.} to provide a german translation of the -% documentation. The documentation style is a mixture of the \opt{pst-doc} class -% (Herbert Voß) and the \opt{ltxdockit} package for the \opt{biblatex} -% documentation (Philipp Lehman). +% I thank all the people of the PSTricks mailinglist for the continuous +% help, especially Herbert Voß. Thanks also to various package authors +% from which I learned and adopted code for this package: David +% Carlisle, Florent Chervet, Enrico Gregorio, Rolf Niepraschk and Heiko +% Oberdiek. Christine Römer convinced me with her article in the german +% DTK\footnote{Pakete in Deutsch dokumentieren. in Die TeXnische +% Komödie. Heft 2/2011, S. 28-35.} to provide a german translation of +% the documentation. The documentation style is a mixture of the +% \opt{pst-doc} class (Herbert Voß) and the \opt{ltxdockit} package for +% the \opt{biblatex} documentation (Philipp Lehman). % \fi % % \ifGERMAN @@ -6028,12 +6031,24 @@ % Alle Komponenten einer Aufbauskizze werden in Reihenfolge ihrer Definition im % Code aufsteigend nummeriert, angefangen bei \opt{1}. Die Komponenten und deren % Spezialknoten können immer über diese Nummer (ID) referenziert werden. +% +% IDs können auch relativ zur aktuellen ID über die Syntax +% \opt{<}\prm{num} angegeben werden: \opt{<1} ist die vorletzte ID, +% \opt{<2} die vorvorletzte ID usw. Die vorletzte ID kann abgekürzt auch +% mit \opt{<} erhalten werden, und die aktuelle ID mit \opt{<0}, was +% äquivalent zu einem leeren Parameter ist. % \fi % \ifENGLISH % All components of a setup drawing are numbered automatically in increasing % order according to their definition in the code, starting with \opt{1}. The % components as well as their special nodes can always be accessed by this -% number (ID). +% number (ID). +% +% ID specifications relative to the current ID can be used with the +% syntax \opt{<}\prm{num}: \opt{<1} is the previous ID, \opt{<2} is the +% current ID minus two etc. The previous ID can also be accessed by only +% \opt{<}, and the current ID is \opt{<0}, which is equivalent to an +% empty parameter. % \fi % % \begin{optionlist} @@ -6046,11 +6061,21 @@ % \Lenv*{pspicture}-Umgebung eindeutig sein. % \fi % \ifENGLISH -% Assigns a name identifier to a component, which can then be referenced both -% by this name and by its ID. The parameter can be assigned only in the -% optional Argument of a \nxLPack{pst-optexp} component and should be unique -% within one \Lenv*{pspicture} environment. +% Assigns a name identifier to a component, which can then be +% referenced both by this name and by its ID. The parameter can be +% assigned only locally, i.e. in the optional argument of a +% \nxLPack{pst-optexp} component, and should be unique within one +% \Lenv*{pspicture} environment. % \fi +% \end{optionlist} +% +% \ifGERMAN Beispiele für unterschiedliche Methoden auf ein und +% dieselbe Komponente zuzugreifen. +% \fi +% \ifENGLISH Examples for different methods to access the same +% component. +% \fi +% % \iffalse %<*ignore> % \fi @@ -6073,11 +6098,43 @@ \end{pspicture} \end{LTXexample} \fi -% \end{optionlist} % \iffalse %</ignore> % \fi % +% \ifGERMAN +% Die Verwendung von relativen IDs ist u.a. nützlich, um eine neue +% Komponente relativ zur vorangegangenen zu definieren. Die Verwendung +% von z.B. \Lcs{oenodeOut}\opt{\{\}} in den Referenzknoten ist nicht +% möglich, da hiermit zum Zeitpunkt der Auswertung der Koordinaten schon +% auf die neue, nicht fertige Komponente referenziert wird. Ein Aufruf +% der Art \lstinline!\optbox(\oenodeOut{})(B)! ist daher nicht möglich, +% und führt zu einem Fehler. Mit relativen IDs kann das allerdings mit +% \lstinline!\optbox(\oenodeOut{<})(B)! erreicht werden: +% \fi +% \ifENGLISH +% Using relative IDs can be very handy to define a component relative to +% the previous one. It is not possible to use +% e.g. \Lcs{oenodeOut}\opt{\{\}} as reference node, because at the time +% these coordinates are evaluated, they reference to the new, not yet +% defined component. A call like \lstinline!\optbox(\oenodeOut{})(B)! +% is, therefore, not possible and gives an error. With relative IDs one +% can achieve that with \lstinline!\optbox(\oenodeOut{<})(B)!: +% \fi +% \iffalse +%<*ignore> +% \fi +\begin{LTXexample} +\begin{pspicture}(4,2) + \psset{optboxsize=0.4 0.8, abspos=0.5} + \optbox(0,1)(4,1) + \multido{}{3}{\optbox(\oenodeOut{<})(4,1)} +\end{pspicture} +\end{LTXexample} +% \iffalse +%</ignore> +% \fi +% % \ifGERMAN\section{Referenzknoten}\fi % \ifENGLISH\section{Reference nodes}\fi % \label{sec:refnode} @@ -12917,6 +12974,10 @@ % % \begin{changelog} %\patchcmd{\release}{\setlength{\itemsep}{0pt}}{\setlength{\itemsep}{0pt}\setlength{\parsep}{0pt}}{}{} +% \begin{release}{4.7}{2014-01-12} +% \item Added syntax \opt{<}\prm{num} for accessing relative component +% IDs\see{sec:namingobj} +% \end{release} % \begin{release}{4.6}{2013-11-27} % \item Added option \opt{extnodes}\see{prm:extnodes} % \item Added option \opt{optdipolecomp}\see{prm:optdipolecomp} @@ -16188,43 +16249,77 @@ \else \@tempcnta=#1 \fi - \POE@getlastcomp#2% - \ifnum\@tempcnta>\POE@cnt - \ifnum\@tempcntb>\POE@cnt - \PackageError{pst-optexp}% - {All components \the\@tempcnta-\the\@tempcntb\space out of range}% - \fi + \edef\POE@temp{\POE@getfirstchar#2\@nil}% + \expandafter\ifx\POE@temp<\relax + \POE@getlastcompprev#2% + \else + \POE@getlastcomp#2% \fi - \ifnum\@tempcnta<\@ne - \PackageWarning{pst-optexp}% - {Component ID \the\@tempcnta\space is not valid, setting to 1.}% - \@tempcnta=\@ne - \else\ifnum\@tempcnta>\POE@cnt - \PackageWarning{pst-optexp}% - {Component ID \the\@tempcnta\space is not valid, setting to \MessageBreak - the last defined value (\the\POE@cnt).}% - \@tempcnta=\POE@cnt% - \fi\fi + \POE@checkandfixcomprange + \fi +}% +\def\POE@getcomprangeprev<#1-#2\@nil{% + \@tempcnta=\POE@cnt + \@tempcntb=\POE@cnt + \ifx\\#1\\% + \advance\@tempcnta by -1 + \else + \advance\@tempcnta by -#1 + \fi + \ifx\\#2\\\else + \edef\POE@temp{\POE@getfirstchar#2\@nil}% + \expandafter\ifx\POE@temp<\relax + \POE@getlastcompprev#2% + \else + \POE@getlastcomp#2% + \fi + \fi + \POE@checkandfixcomprange +}% +\def\POE@checkandfixcomprange{% + \ifnum\@tempcnta>\POE@cnt \ifnum\@tempcntb>\POE@cnt - \PackageWarning{pst-optexp}% - {Component ID \the\@tempcntb\space is not valid, setting to \MessageBreak - the last defined value (\the\POE@cnt).}% - \@tempcntb=\POE@cnt% - \else\ifnum\@tempcntb<\@ne - \PackageWarning{pst-optexp}% - {Component ID \the\@tempcntb\space is not valid, setting to 1.}% - \@tempcntb=\@ne - \fi\fi + \PackageError{pst-optexp}% + {All components \the\@tempcnta-\the\@tempcntb\space out of range}% + \fi \fi + \ifnum\@tempcnta<\@ne + \PackageWarning{pst-optexp}% + {Component ID \the\@tempcnta\space is not valid, setting to 1.}% + \@tempcnta=\@ne + \else\ifnum\@tempcnta>\POE@cnt + \PackageWarning{pst-optexp}% + {A: Component ID \the\@tempcnta\space is not valid, setting to \MessageBreak + the last defined value (\the\POE@cnt).}% + \@tempcnta=\POE@cnt + \fi\fi + \ifnum\@tempcntb>\POE@cnt + \PackageWarning{pst-optexp}% + {B: Component ID \the\@tempcntb\space is not valid, setting to \MessageBreak + the last defined value (\the\POE@cnt).}% + \@tempcntb=\POE@cnt + \else\ifnum\@tempcntb<\@ne + \PackageWarning{pst-optexp}% + {Component ID \the\@tempcntb\space is not valid, setting to 1.}% + \@tempcntb=\@ne + \fi\fi }% \def\POE@getlastcomp#1-{% - \ifx\@empty#1\relax + \ifx\\#1\\% \ifnum\@tempcnta>\POE@cnt \PackageError{pst-optexp}{All components \the\@tempcnta- out of range.}% - \fi + \fi% \@tempcntb=\POE@cnt \else - \@tempcntb=#1 + \@tempcntb=#1\relax + \fi +}% +\def\POE@getlastcompprev<#1-{% + \@tempcntb=\POE@cnt + \ifx\\#1\\% + \advance\@tempcntb by -1 + \else + \advance\@tempcntb by -#1 \fi }% % \end{macrocode} @@ -16244,32 +16339,42 @@ \def\POE@getcomps@ii{% \@ifnextchar\bgroup{\POE@getcomps@iii}{\POE@aftercomps}% }% +\def\POE@getfirstchar#1#2\@nil{#1}% +\def\POE@getprevcompid<#1\@nil{% + \ifx\\#1\\% + \number\numexpr\POE@cnt-1\relax + \else + \number\numpexp\POE@cnt-#1\relax + \fi +}% \def\POE@getcomps@iii#1{% - \def\POE@temp{#1\@empty}% - \expandafter\POE@getcomps@iv\POE@temp\@nil -}% -\def\POE@getcomps@iv#1#2\@nil{% - \edef\POE@temp{#1}% + \edef\POE@temp{\POE@getfirstchar#1{}\@nil}% \ifx\POE@temp\@empty \POE@getcomp{(\oenode{}{})}% - \else\ifx(#1\relax%) - \POE@getplanenode#1#2% - \else\ifnum9<1#1\relax - \POE@getcomprange#1#2-\@nil + \else\expandafter\ifx\POE@temp(\relax%) + \POE@getplanenode#1% + \else\ifnum9<1\POE@temp\relax + \expandafter\POE@getcomprange#1-\@nil \POE@getcomp{% (\POE@str@basicname@prefix\POE@str@basicname@default) \the\@tempcnta\space\the\@tempcntb\space GetCompRange % }% - \else\ifx-#1\relax - \POE@getcomprange#1#2-\@nil + \else\expandafter\ifx\POE@temp<\relax + \expandafter\POE@getcomprangeprev#1-\@nil + \POE@getcomp{% + (\POE@str@basicname@prefix\POE@str@basicname@default) + \the\@tempcnta\space\the\@tempcntb\space GetCompRange % + }% + \else\expandafter\ifx\POE@temp-\relax + \POE@getcomprange#1-\@nil \POE@getcomp{% (\POE@str@basicname@prefix\POE@str@basicname@default) \the\@tempcnta\space\the\@tempcntb\space GetCompRange % }% \else - \POE@checkcompname{#1#2}% - \POE@getcomp{(\oenode{}{#1#2})}% - \fi\fi\fi\fi% + \POE@checkcompname{#1}% + \POE@getcomp{(\oenode{}{#1})}% + \fi\fi\fi\fi\fi% \POE@getcomps@i% }% % \end{macrocode} @@ -16305,7 +16410,7 @@ % \end{macro} % \begin{macro}{\POE@normalizecomps} % Expands all component parameters by resolving the ranges, i.e. {1-3} -% becomes {1}{2}{3}, and wrapping nodes with brackets, if necessary +% becomes {1}{2}{3}. Nodes are wrapped with brackets, if necessary: % (1,1) becomes {(1,1)}. % \begin{macrocode} \def\POE@normalizecomps#1{% @@ -16325,21 +16430,25 @@ \def\POE@normalizecomps@iii{% \@ifnextchar\bgroup{\POE@normalizecomps@iv}{\POE@aftercomps}% }% +% \end{macrocode} +% +% Analyze the content of the comp id and expand it accordingly. +% \begin{macrocode} \def\POE@normalizecomps@iv#1{% - \def\POE@temp{#1\@empty}% - \expandafter\POE@normalizecomps@v\POE@temp\@nil -}% -\def\POE@normalizecomps@v#1#2\@nil{% - \edef\POE@temp{#1}% - \ifnum9<1#1\relax - \def\POE@tempa{1} - \else\ifx-#1\relax - \def\POE@tempa{1} + \edef\POE@temp{\POE@getfirstchar#1{}\@nil}% + \let\POE@tempb\POE@getcomprange + \ifnum9<1\POE@temp\relax + \def\POE@tempa{1}% + \else\expandafter\ifx\POE@temp-\relax + \def\POE@tempa{1}% + \else\expandafter\ifx\POE@temp<\relax + \def\POE@tempa{1}% + \let\POE@tempb\POE@getcomprangeprev \else - \def\POE@tempa{0} - \fi\fi + \def\POE@tempa{0}% + \fi\fi\fi \ifodd\POE@tempa - \POE@getcomprange#1#2-\@nil + \POE@tempb#1-\@nil \ifnum\@tempcnta<\@tempcntb \def\POE@rel{<}\def\POE@inc{\@ne}% \else \def\POE@rel{>}\def\POE@inc{\m@ne}\fi \advance\@tempcntb\POE@inc @@ -16348,7 +16457,7 @@ \advance\@tempcnta\POE@inc }% \else - \edef\POE@comps{\POE@comps{#1#2}}% + \edef\POE@comps{\POE@comps{#1}}% \fi \POE@normalizecomps@i% }% @@ -16456,35 +16565,20 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\POE@getlastcompname} -% Get the last component name which was defined. -% \begin{macrocode} -\def\POE@getlastcompname{% - \expandafter\POE@getlastcompname@i \POE@complist,\relax,\@nil -}% -\def\POE@getlastcompname@i#1,#2,#3\@nil{#1}% -% \end{macrocode} -% \end{macro} -% % \begin{macro}{\oenode} % Get the full node name of the node \#1 defined in component \#2. % \begin{macrocode} \def\oenode#1#2{% \POE@str@basicname@prefix% \ifx\\#2\\% - \ifnum9<1\POE@getlastcompname\space% - \POE@str@basicname@default - \POE@getlastcompname - \else - \POE@getlastcompname - \POE@str@basicname@sep - \fi + \POE@str@basicname@default\the\POE@cnt \else \ifnum9<1#2 \POE@str@basicname@default #2% \else - #2\POE@str@basicname@sep% + \POE@prevnode#2\@nil + \POE@str@basicname@sep% \fi% \fi% #1% @@ -16492,6 +16586,23 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{POE@prevnode} +% \begin{macrocode} +\def\POE@prevnode#1#2\@nil{% + \ifx<#1% + \POE@str@basicname@default + \ifx\\#2\\% + \number\numexpr\POE@cnt-1\relax + \else + \number\numexpr\POE@cnt-#2\relax + \fi + \else + #1#2% + \fi +}% +% \end{macrocode} +% \end{macro} +% % Define some special nodes, which should be accessed always via these macros. % % \begin{macro}{\oenodeExt} @@ -16750,22 +16861,23 @@ % \end{macro} % % \begin{macro}{\POE@compalias} -% Components which have a \opt{compname} assigned, must also be available by -% their component number. Here, all necessary informations (nodes, component -% dictionary) are referenced such that any information is accessible via -% numeber or name. +% Components which have a \opt{compname} assigned, must also be +% available by their component number. Here, all necessary +% informations (nodes, component dictionary) are referenced such that +% any information is accessible via number or name. First parameter is +% the component name, second one the component id. % \begin{macrocode} \def\POE@compalias#1#2{% \POE@Verb{% % \end{macrocode} % Copy the component dictionary % \begin{macrocode} - /\oenode{}{#1} dup currentdict exch known { - load /#2 ED + /\oenode{}{#2} dup currentdict exch known { + load /\oenode{}{#1} ED } { pop } ifelse - (#2) (\oenode{}{#1}) + (\oenode{}{#1}) (\oenode{}{#2}) tx@NodeDict begin % \end{macrocode} % Copy all interface nodes of the component. @@ -16893,7 +17005,7 @@ % \begin{macrocode} \def\end@OptexpObj{% \ifnum9<1\POE@key@compname\else - \POE@compalias{\POE@key@compname}{\oenode{}{\the\POE@cnt}}% + \POE@compalias{\POE@key@compname}{\the\POE@cnt}% \fi \endgroup \ignorespaces% @@ -17540,6 +17652,9 @@ }% \fi \ignorespaces}% +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\POE@pnode@shiftedrot} % Define a new node \#3 shifted by (\#1) relative to existing node \#2. % Aditionally rotate the new node by \#4 degree around existing node as origin. 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 45a986f5f1c..0a020009772 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-2013 by Christoph Bersch <usenet@bersch.net> +%% Copyright (C) 2007-2014 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 @@ -53,9 +53,9 @@ This is a generated file. Project: pst-optexp -Version: 4.6 (2013/11/27) +Version: 4.7 (2014/01/12) -Copyright (C) 2007-2013 by Christoph Bersch <usenet@bersch.net> +Copyright (C) 2007-2014 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 |