diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.sty | 114 |
1 files changed, 104 insertions, 10 deletions
diff --git a/Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.sty b/Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.sty index 81e514be6ec..54ee1263337 100644 --- a/Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.sty +++ b/Master/texmf-dist/tex/latex/pgf-spectra/pgf-spectra.sty @@ -3,12 +3,13 @@ % Hugo Gomes @ 12/05/2021 (v2.1.0) % Hugo Gomes @ 27/06/2021 (v2.1.1) % Hugo Gomes @ 03/07/2021 (v2.1.2) +% Hugo Gomes @ 23/02/2023 (v2.2.0) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e}% -\ProvidesPackage{pgf-spectra}[03/07/2021 pgf-spectra v2.1.2]% +\ProvidesPackage{pgf-spectra}[21/02/2023 pgf-spectra v2.2.0]% \RequirePackage{tikz}% -\DeclareOption{LSE}{\input{spectra.data.LSE.tex}}% -\DeclareOption{NIST}{\input{spectra.data.NIST.tex}}% +\DeclareOption{LSE}{\input{spectra.data.LSE.tex}\xdef\wl@DATASET{1}}% +\DeclareOption{NIST}{\input{spectra.data.NIST.tex}\xdef\wl@DATASET{0}}% \ExecuteOptions{NIST}% \ProcessOptions\relax% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -28,6 +29,10 @@ \newif\ifwl@redshift% NEW v2.0.0 \newif\ifwl@RSvalue% NEW v2.0.0 \newif\ifwl@usevisibleshade% NEW v2.1.0 +\newif\ifwl@visibleRangeOnly% NEW v2.2.0 +\newif\ifwl@UVRangeOnly% NEW v2.2.0 +\newif\ifwl@IRRangeOnly% NEW v2.2.0 +\newif\ifwl@datanotfound% NEW v2.2.0 % defining PGF keys \pgfkeys{/wl/.cd,% element/.get=\wl@element,% @@ -213,6 +218,32 @@ use visible shading,backVIS=black}}% NEW v2.1.0 -> use visible shading \wl@processredshiftkey\wl@redshift\relax% \fi% % ---------------------------------------------------------------------------------------------------------- +% check if is only in visible range... or in UV... or in IV % NEW v2.2.0 +\wl@visibleRangeOnlyfalse% +\wl@UVRangeOnlyfalse% +\wl@IRRangeOnlyfalse% +\ifnum\wl@end>\wl@begin\relax% + \ifnum\wl@end<380\relax% UV + \wl@UVRangeOnlytrue% + \else% VIS or IV + \ifnum\wl@end<781\relax% + \ifnum\wl@begin>379\relax\wl@visibleRangeOnlytrue\fi% VIS + \else% + \ifnum\wl@begin>780\relax\wl@IRRangeOnlytrue\fi% IR + \fi% + \fi% +\else% + \ifnum\wl@begin<380\relax% UV + \wl@UVRangeOnlytrue% + \else% VIS or IV + \ifnum\wl@begin<781\relax% + \ifnum\wl@end>379\relax\wl@visibleRangeOnlytrue\fi% VIS + \else% + \ifnum\wl@end>780\relax\wl@IRRangeOnlytrue\fi% IR + \fi% + \fi% +\fi% +% ---------------------------------------------------------------------------------------------------------- % if no element provided draws continuous spectrum with options or user list of lines \ifx\wl@element\wlN@NE%no element by the user \ifx\wl@elt@chemsym\undefined\else\let\wl@elt@chemsym\undefined\fi% @@ -250,7 +281,22 @@ use visible shading,backVIS=black}}% NEW v2.1.0 -> use visible shading % check if element provided exists \ifx\@search@result@err\wl@elt@chemsym Element\ ``\@myarg'' with charge ``\wl@charge'' not found!\cur@elem@existfalse\else% % if exists, set the wavelength's list - \wl@set@element@list{\wl@elt@elemdata}{\wl@elt@Imax}% + % CHANGED IN v2.2.0 to better accommodate relative intensities (also considering charges...) ----> + \ifwl@UVRangeOnly% + \expandafter\wl@getmaxint\wl@elt@Imax@UV\relax% + \wl@setmaxint{UV}% + \else\ifwl@visibleRangeOnly% + \expandafter\wl@getmaxint\wl@elt@Imax@VIS\relax% + \wl@setmaxint{VIS}% + \else\ifwl@IRRangeOnly% + \expandafter\wl@getmaxint\wl@elt@Imax@IR\relax% + \wl@setmaxint{IR}% + \else% + \expandafter\wl@getmaxint\wl@elt@Imax@ALL\relax% + \wl@setmaxint{ALL}% + \fi\fi\fi% + % <----- v2.0.0 + \wl@set@element@list{\wl@elt@elemdata}{\wl@elt@Imax}% \fi%\@search@result@err\wl@elt@chemsym \ifcur@elem@exist\ifnum\wl@countd<\wl@countc\wl@addt@list{\wl@list@@}{,}\fi\fi% \advance\wl@countd by1% @@ -1718,7 +1764,7 @@ color(.95cm)=(wlshcolLI)% \wl=#1pt% \@wl@gamma=\wl@gamma pt% % compute the rgb components -\ifdim\wl<10pt\relax\PackageWarning{pgf-spectra}{(#1nm) wavelength out of range ignored. The wavelength must be graeter or equal to 10nm (EUV)...}\else% NEW v2.0.0 +\ifdim\wl<10pt\relax\PackageWarning{pgf-spectra}{(#1nm) wavelength out of range ignored. The wavelength must be greater or equal to 10nm (EUV)...}\else% NEW v2.0.0 \ifdim\wl<379.99999pt\relax\else%% NEW v2.0.0 \ifdim\wl<440pt\wlc@lorr=440pt\advance\wlc@lorr by-\wl\divide\wlc@lorr by60\wlc@lorg=0pt\wlc@lorb=1pt\else% \ifdim\wl<490pt\wlc@lorr=0pt\wlc@lorg=\wl\advance\wlc@lorg by-440pt\divide\wlc@lorg by50\wlc@lorb=1pt\else% @@ -1749,17 +1795,65 @@ color(.95cm)=(wlshcolLI)% }% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\wl@elt@search#1#2#3#4{\ignorespaces% +\def\wl@elt@search#1#2#3#4#5#6#7{\ignorespaces% % #1 Chemical Symbol, entered by USER % #2 Chemical Symbol to compare to, e.g. Na % #3 Emission Lines Data (or error message) -% #4 Imax -\edef\wl@CS@user{#1}\edef\wl@CS@comp{#2}\relax% New -\ifx\wl@CS@user\wl@CS@comp\relax% New -> was \iftthenelse{... +% #4 Imax@ALL (changed in v2.2.0) +% #5 Imax@UV (NEW v2.2.0) +% #6 Imax@VIS (NEW v2.2.0) +% #7 Imax@IR (NEW v2.2.0) +\ifwl@datanotfound\relax% +\edef\wl@CS@user{#1}\edef\wl@CS@comp{#2}\relax% +\ifx\wl@CS@user\wl@CS@comp\relax% +\global\wl@datanotfoundfalse\relax% \def\wl@elt@chemsym{#2}% set chemical symbol \def\wl@elt@elemdata{#3}% set element lines data -\def\wl@elt@Imax{#4}% set element Imax +\def\wl@elt@Imax@ALL{#4}% set element Imax: ALL range +\def\wl@elt@Imax@UV{#5}% set element Imax: UV range +\def\wl@elt@Imax@VIS{#6}% set element Imax: VIS range +\def\wl@elt@Imax@IR{#7}% set element Imax: IR range +\fi% \fi% }% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% NEW v2.2.0 +% \wl@setmaxin{UV or VIS or IR or ALL} -> OUTPUT: \wl@elt@Imax +\def\wl@setmaxint#1{\ignorespaces% +\edef\wl@qALL{all}\edef\wl@qO{0}\edef\wl@qI{1}\edef\wl@qII{2}\edef\wl@qIII{3}\edef\wl@qIV{4}% +\ifnum\wl@DATASET=0\relax% NIST + \ifx\wl@charge\wl@qO\relax% + \edef\wl@elt@Imax{\csname int#1qO\endcsname}% + \else\ifx\wl@charge\wl@qI\relax% + \edef\wl@elt@Imax{\csname int#1qI\endcsname}% + \else% + \edef\wl@elt@Imax{\csname int#1qALL\endcsname}% + \fi\fi% +\else% LSE + \ifx\wl@charge\wl@qO\relax% + \edef\wl@elt@Imax{\csname int#1qO\endcsname}% + \else\ifx\wl@charge\wl@qI\relax% + \edef\wl@elt@Imax{\csname int#1qI\endcsname}% + \else\ifx\wl@charge\wl@qII\relax% + \edef\wl@elt@Imax{\csname int#1qII\endcsname}% + \else\ifx\wl@charge\wl@qIII\relax% + \edef\wl@elt@Imax{\csname int#1qIII\endcsname}% + \else\ifx\wl@charge\wl@qIV\relax% + \edef\wl@elt@Imax{\csname int#1qIV\endcsname}% + \else% + \edef\wl@elt@Imax{\csname int#1qALL\endcsname}% + \fi\fi\fi\fi\fi% +\fi% +}% +% NEW v2.2.0 +%USAGE \expandafter\wl@getmaxint#1x#2x#3x#4x#5x#6x#7x#8\relax +\def\wl@getmaxint#1x#2x#3x#4x#5x#6x#7x#8\relax{% +\expandafter\edef\csname int#1qALL\endcsname{#2}% all charges +\expandafter\edef\csname int#1qO\endcsname{#3}% charge 0 (neutral atom) +\expandafter\edef\csname int#1qI\endcsname{#4}% charge +1 +\expandafter\edef\csname int#1qII\endcsname{#5}% charge +2 +\expandafter\edef\csname int#1qIII\endcsname{#6}% charge +3 +\expandafter\edef\csname int#1qIV\endcsname{#7}% charge +4 +%\expandafter\edef\csname int#1qU\endcsname{#8}% charge Unknown +}% \endinput |