From a7d7e0b4ba4b69c7a87690d1f197cc005fa957aa Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 28 Sep 2018 22:31:34 +0000 Subject: pst-feyn (27sep18) git-svn-id: svn://tug.org/texlive/trunk@48781 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/generic/pst-feyn/Changes | 10 + Master/texmf-dist/doc/generic/pst-feyn/README.md | 45 ++ .../texmf-dist/doc/generic/pst-feyn/data/data0.dat | 6 + .../texmf-dist/doc/generic/pst-feyn/data/data1.dat | 3 + .../doc/generic/pst-feyn/pst-feyn-doc.bib | 90 +++ .../doc/generic/pst-feyn/pst-feyn-doc.pdf | Bin 0 -> 193815 bytes .../doc/generic/pst-feyn/pst-feyn-doc.tex | 719 +++++++++++++++++++++ Master/texmf-dist/dvips/pst-feyn/pst-feyn.pro | 671 +++++++++++++++++++ .../texmf-dist/tex/generic/pst-feyn/pst-feyn.tex | 344 ++++++++++ Master/texmf-dist/tex/latex/pst-feyn/pst-feyn.sty | 14 + Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/tlpsrc/pst-feyn.tlpsrc | 0 12 files changed, 1903 insertions(+), 1 deletion(-) create mode 100644 Master/texmf-dist/doc/generic/pst-feyn/Changes create mode 100644 Master/texmf-dist/doc/generic/pst-feyn/README.md create mode 100644 Master/texmf-dist/doc/generic/pst-feyn/data/data0.dat create mode 100644 Master/texmf-dist/doc/generic/pst-feyn/data/data1.dat create mode 100644 Master/texmf-dist/doc/generic/pst-feyn/pst-feyn-doc.bib create mode 100644 Master/texmf-dist/doc/generic/pst-feyn/pst-feyn-doc.pdf create mode 100644 Master/texmf-dist/doc/generic/pst-feyn/pst-feyn-doc.tex create mode 100644 Master/texmf-dist/dvips/pst-feyn/pst-feyn.pro create mode 100644 Master/texmf-dist/tex/generic/pst-feyn/pst-feyn.tex create mode 100644 Master/texmf-dist/tex/latex/pst-feyn/pst-feyn.sty create mode 100644 Master/tlpkg/tlpsrc/pst-feyn.tlpsrc (limited to 'Master') diff --git a/Master/texmf-dist/doc/generic/pst-feyn/Changes b/Master/texmf-dist/doc/generic/pst-feyn/Changes new file mode 100644 index 00000000000..0863c31bee6 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-feyn/Changes @@ -0,0 +1,10 @@ +pst-feyn.pro -------- +0.01 2018-09-26 first CTAN version + + +pst-feyn.tex -------- +0.01 2018-09-26 first CTAN version + + +pst-feyn.sty -------- +0.01 2018-09-26 first CTAN version diff --git a/Master/texmf-dist/doc/generic/pst-feyn/README.md b/Master/texmf-dist/doc/generic/pst-feyn/README.md new file mode 100644 index 00000000000..46118e75228 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-feyn/README.md @@ -0,0 +1,45 @@ +# Package pst-feyn + +pst-feyn is a set of drawing graphical elements which are used for Feynman diagrams. +The package is based on the macros of the old package axodraw +but uses the capabilities of PSTricks. + +Save the files pst-feyn.sty|tex in a directory, which is part of your +local TeX tree. pst-feyn.pro should be saved in ../texmf/dvips/pstricks/ +Then do not forget to run texhash to update this tree. +pst-feyn needs pst-solides3d and pstricks, which should be part of your +local TeX installation, otherwise get it from a CTAN server +http://mirror.CTAN.org + + +Save the files + +pst-feyn.sty +pst-feyn.tex +pst-feyn.pro + +in any place, where latex or any other TeX program will find it. +Do not forget to update your database, when installing this +package the first time. + +If you like to get the documentation file in another format run + +latex pst-feyn-doc.tex +biber pst-feyn.doc +latex pst-feyn-doc.tex +dvips pst-feyn-doc.dvi +ps2pdf pst-feyn-doc.ps + +or alteratively + +xelatex pst-feyn-doc.tex +biber pst-feyn.doc +xelatex pst-feyn-doc.tex + +to get a PDF file. + +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory CTAN:/macros/latex/base/lppl.txt. + +$Id: README.md 826 2018-09-27 09:21:43Z herbert $ diff --git a/Master/texmf-dist/doc/generic/pst-feyn/data/data0.dat b/Master/texmf-dist/doc/generic/pst-feyn/data/data0.dat new file mode 100644 index 00000000000..2204ade7495 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-feyn/data/data0.dat @@ -0,0 +1,6 @@ +(.1057,1.2997) +(.1057,1.5399) +(.1057,1.6908)(.1057,1.8019)(.1057,2.0406)(.1057,2.1911)(.10571,2.3020)% +(.10573,2.5403)(.10576,2.6904)(.1058,2.8007)(.106,3.0365)(.108,3.4512)(.11,3.56)% +(.12,3.695)(.13,3.6969)(.15,3.6308)(.18,3.5024)(.22,3.3413)(.3,3.0788)(.5,2.6374)% +(.8,2.2295)(1,2.0357)(1.3,1.8078)(1.6,1.6275)(2,1.4336)(2.5,1.2398)(3,1.0815) diff --git a/Master/texmf-dist/doc/generic/pst-feyn/data/data1.dat b/Master/texmf-dist/doc/generic/pst-feyn/data/data1.dat new file mode 100644 index 00000000000..4fd301e109c --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-feyn/data/data1.dat @@ -0,0 +1,3 @@ +(1.78536,.0111)(1.78538,.0228)(1.7854,.0339)(1.7856,.1218)(1.786,.2324)(1.787,.3821)% + (1.79,.5786)(1.8,.8089)(1.82,.9765)(1.85,1.0869)(1.9,1.1718)(2,1.2335)(2.1,1.2468)% + (2.2,1.2413)(2.4,1.2064)(2.7,1.134)(3,1.0574) diff --git a/Master/texmf-dist/doc/generic/pst-feyn/pst-feyn-doc.bib b/Master/texmf-dist/doc/generic/pst-feyn/pst-feyn-doc.bib new file mode 100644 index 00000000000..3bce505019f --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-feyn/pst-feyn-doc.bib @@ -0,0 +1,90 @@ +%% -*-bibtex-*- +@STRING{tugboat = {TUGboat} } +@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} } + +@manual{axodraw2, +title = {The Axodraw2 package}, +subtitle = {Feynman diagrams in a LaTeX document}, +author = {Collins, John and Vermaseren, Jos}, +url = {http://www.ctan.org/pkg/axodraw2}, +urldate = {2018-09-27}, +date = {2018-09-12}, +version = {2.1.1a} +} + + + +@Book{companion, + author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Dennis Roegel and Herbert Vo\ss}, + title = {The {\LaTeX} {G}raphics {C}ompanion}, + publisher = {{Addison-Wesley Publishing Company}}, + edition = {2}, + year = {2007}, + location = {Boston, Mass.} +} + +@Article{girou:01:, + author = {Denis Girou}, + title = {Pr\'esentation de {PST}ricks}, + journal = {Cahier {GUT}enberg}, + year = 1994, + volume = {16}, + month = apr, + pages = {21-70} +} + +@Article{girou:02:, + author = {{Timothy Van} Zandt and Denis Girou}, + title = {Inside {PST}ricks}, + journal = TUGboat, + year = 1994, + volume = {15}, + month = sep, + pages = {239-246} +} + +@Book{PostScript, + Author = {Kollock, Nikolai G.}, + Title = {Post{S}cript richtig eingesetzt: vom {K}onzept zum + praktischen {E}insatz}, + Publisher = {IWT}, + location = {Vaterstetten}, + year = 1989, +} + +@Book{PSTricks2, + author = {Herbert Vo\ss{}}, + title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX}, + edition = {7}, + publisher = {DANTE and Lehmanns Media}, + year = {2016}, + location = {Heidelberg and Berlin} +} + +@Book{PSTricksE, + author = {Herbert Vo\ss{}}, + title = {\texttt{PSTricks} -- {G}raphics and {P}ost{S}cript for \LaTeX}, + edition = {1}, + publisher = {UIT}, + year = {2011}, + location = {Cambridge -- UK} +} + +@Book{LTXquick, + author = {Herbert Vo\ss{}}, + title = {{\LaTeX} quick reference}, + edition = {1}, + publisher = {UIT}, + year = {2012}, + location = {Cambridge -- UK} +} + +@Book{tbt, + author = {Victor Eijkhout}, + title = {\TeX\ by Topic -- {A} \TeX{}nician Reference}, + edition = {1}, + publisher = {DANTE and Lehmanns Media}, + year = {2014}, + location = {Heidelberg and Berlin} +} + diff --git a/Master/texmf-dist/doc/generic/pst-feyn/pst-feyn-doc.pdf b/Master/texmf-dist/doc/generic/pst-feyn/pst-feyn-doc.pdf new file mode 100644 index 00000000000..bd76adcf16e Binary files /dev/null and b/Master/texmf-dist/doc/generic/pst-feyn/pst-feyn-doc.pdf differ diff --git a/Master/texmf-dist/doc/generic/pst-feyn/pst-feyn-doc.tex b/Master/texmf-dist/doc/generic/pst-feyn/pst-feyn-doc.tex new file mode 100644 index 00000000000..31a191f2a61 --- /dev/null +++ b/Master/texmf-dist/doc/generic/pst-feyn/pst-feyn-doc.tex @@ -0,0 +1,719 @@ +%% $Id: pst-feyn-doc.tex 826 2018-09-27 09:21:43Z herbert $ +\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor} +\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings, + headexclude,footexclude,oneside,dvipsnames,svgnames]{pst-doc} +\listfiles + +\usepackage[utf8]{inputenc} +\usepackage{pst-feyn} +\let\pstFV\fileversion +\let\pstFD\filedate +\let\belowcaptionskip\abovecaptionskip +\usepackage{pst-plot} + + +%\usepackage[dvipsnames,svgnames,x11names]{xcolor} + +\def\textRed#1{\textcolor{red}{#1}} +\def\textBlack#1{\textcolor{black}{#1}} +\def\textOliveGreen#1{\textcolor{OliveGreen}{#1}} + +\makeatletter +\renewcommand*\l@subsection{\bprot@dottedtocline{2}{1.5em}{3.6em}} +\renewcommand*\l@subsubsection{\bprot@dottedtocline{3}{3.8em}{4.5em}} +\makeatother +\def\bgImage{\begin{pspicture}(0,-1)(4.4,2) +\psArrowLine(0,0)(1,1) \psArrowLine(1,1)(0,2) +\psArrowLine(3,1)(4,0) \psArrowLine(4,2)(3,1) +\psPhoton[windings=4.5,amplitude=4pt,linecolor=blue](1,1)(3,1) +\psGluon[windings=4,amplitude=3pt,linecolor=Green](3.5,1.5)(4.2,0.9) +\rput(0.5,1.9){$\mathrm{e}^-$} \rput(3.5,1.9){$\bar{\mathrm{q}}$} +\rput(0.5,0.2){$\mathrm{e}^+$} \rput(3.5,0.2){q} +\rput(2,1.5){$\gamma$}\rput[r](4.2,1.3){$\mathrm{g}$} +\psline{->}(0,-0.2)(4,-0.2)\uput[0](4,-0.2){$t$} +\end{pspicture} +} +\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}}, + escapechar=?} +\def\textat{\char064}% + +\let\KeyWord\Lkeyword +%#1{$\backslash\!\!\textRed{#1}\textBlack\!\!$} + +\addbibresource{\jobname.bib} + + +\begin{document} +\author{Herbert Voß} +\date{\today} +\title{pst-feyn} +\subtitle{A PSTricks package for drawing Feynman diagrams\newline v\pstFV~--~\pstFD} +\maketitle + +\tableofcontents + +\begin{abstract} +\LPack{pst-feyn} is a set of drawing graphical elements which are used for Feynman diagrams. +Simple flow charts and other graphics are possible, too. The package is based on the +macros of the old package \LPack{axodraw} from John Collins and Jos Vermaseren (\cite{axodraw2}), but uses the +capabilities of PSTricks (\cite{PSTricks2,PSTricksE}). + + +\vfill\noindent +Thanks for feedback and contributions to:\\ + +\end{abstract} +\clearpage + +\section{Using pst-feyn} + +The commands of \LPack{pst-feyn} should be executed inside either the \Lenv{pspicture} +environment. Inside this environment it is possible to place objects +at arbitrary positions and put text between them. An example would be + + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-1,-3.3)(4,3) +\psGluonArc[linecolor=red,windings=8,radius=2cm](1.5,0)(0,180) +\psGluonArc[linecolor=green,windings=8,radius=2cm](1.5,0)(180,360) +\psGluon[linecolor=blue,windings=4](-0.5,0)(1,0)\psdot(-0.5,0) +\psGluon[linecolor=blue,windings=4](2,0)(3.5,0)\psdot(3.5,0) +\end{pspicture} +\end{LTXexample} + +The syntax and the meaning of these command are explained in the next +section. One should note that all coordinates are presented in the current +user units, which is by default 1cm. +It is possible to use scale +transformations if these units are not convenient. + + + +\section{The commands} + +The commands that are currently available in \LPack{pst-feyn} are (in alphabetic +order): + +\subsection*{\Lcs{psArrowArc}\OptArgs\Largr{$x,y$}\Largr{$\phi_1,\phi_2$}} + + Draws an arc segment centered around $(x,y)$. The radius can be set by the optional argument \Lkeyword{radius} +The arc-segment runs counterclockwise from $\phi_1$ to $\phi_2$. All + angles are given in degrees. In the middle of the segment there will + be an arrow. + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,2.4) +\psArrowArc[linecolor=blue, + linewidth=1.5pt,radius=1.75](2,0)(0,180) +\end{pspicture} +\end{LTXexample} + +\subsection*{\Lcs{psArrowArcn}\OptArgs\Largr{$x,y$}\Largr{$\phi_1,\phi_2$}} + +The same, but clockwise. + +\subsection*{\Lcs{psArrowLine}\OptArgs\Largr{$x_1,y_1$}\Largr{$x_2,y_2$}} + + Draws a line from ($x_1$,$y_1$) to ($x_2$,$y_2$). There will be an + arrow in the middle of the line. + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,2.4) +\psArrowLine[linecolor=blue, + linewidth=1.5pt](0,0)(4,2) +\end{pspicture} +\end{LTXexample} + + +\subsection*{\Lcs{psBCirc}\OptArgs\Largr{x,y}\Largb{radius}} + + Draws a circle of which the contents are blanked out. This means that + anything that was present at the position of the circle will be + overwritten. The center of the circle is at $(x,y)$. + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,4.2) +\psBCirc[linecolor=blue, + linewidth=1.5pt](2,2){2} +\end{pspicture} +\end{LTXexample} + + +\subsection*{\Lcs{psBText}\OptArgs\Largr{$x,y$}\Largb{text}} + Draws a box with one line of text in it. The coordinates refer to the + center of the box. The box is like a BBox in that it blanks out + whatever was at the position of the box. + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,4.2) +\psBText[linecolor=blue](2,3.5){A short line} +\psBText[linecolor=red](2,1.5){% + A short line\\ and another one \\a.s.o.} +\end{pspicture} +\end{LTXexample} + + +\subsection*{\Lcs{psCArc}\OptArgs\Largr{$x,y$}\Largr{$\phi_1,\phi_2$}} + + Draws an arc segment centered around $(x,y)$. The radius is set by the optional argument \Lkeyword{radius}. The + arc-segment runs counterclockwise from $\phi_1$ to $\phi_2$. The star version (\Lcs{psCArc*}) creates a filled arc. + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,2.2) +\psCArc[linecolor=blue,radius=2, + linewidth=1.5pt](2,0)(80,180) +\psCArc[linecolor=red,linestyle=dashed,radius=2, + linewidth=1.5pt](2,0)(0,80) +\end{pspicture} +\end{LTXexample} + + +\subsection*{\Lcs{psCCirc}\Largr{$x,y$}\Largb{radius}\Largb{color1}\Largb{color2}} +Draws a circle around $(x,y)$. The contents of + the circle are lost. The color of the box will be color1 and the color + of the background inside the box will be color2. It is the same as\\ +\verb|\pscircle[linecolor=color1,fillstyle=solid,fillcolor=color2](x,y){radius}| + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,4) +\psCCirc[linewidth=1.5pt](1.5,2){1.5}{blue}{red} +\psCCirc[linewidth=2.5pt](3,1){1}{green}{cyan} +\end{pspicture} +\end{LTXexample} + + +\subsection*{\Lcs{psCText}\OptArgs\Largr{$x,y$}\Largb{col1}\Largb{col2}\Largb{text}} + Draws a box with test in it. The + box is just big enough to fit around the text. The box is like a CBox in that it blanks out + whatever was at the position of the box. The color of the box and the + text inside is color1 and the background inside has the color color2. + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,4.2) +\psCText(2,3.5){red}{cyan}{A short line} +\psCText(2,1.5){green}{yellow}{% + A short line\\ and another one \\a.s.o.} +\end{pspicture} +\end{LTXexample} + + +\subsection*{\Lcs{psGluonArc}\Largr{$x,y$}\Largr{$\phi_1,\phi_2$}} + + Draws a gluon on an arc-segment. The center of the arc is (x,y) and r + is its radius. The arc segment runs counterclockwise from $\phi_1$ + to $\phi_2$. The width of the gluon is twice `amplitude'. Note that whether + the curls are inside or outside can be influenced with the sign of + the amplitude. When it is positive the curls are on the inside. + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,4.2) +\psGluonArc(0,2)(-90,90)% shows the default setting +\psGluonArc[windings=8,amplitude=5mm,radius=2cm, + linecolor=red](4,2)(90,270) +\psGluonArc[windings=8,amplitude=-3mm,radius=2cm, + linecolor=blue](4,2)(90,270) +\end{pspicture} +\end{LTXexample} + +\subsection*{\Lcs{psGluon}\Largr{$x_1,y_1$}\Largr{$x_2,y_2$}} + Draws a gluon from ($x_1$,$y_1$) to ($x_2$,$y_2$). The width of the + gluon will be twice the value of `amplitude'. If the number of windings is not an integer + it will be rounded. The side at which the + windings lie is determined by the order of the two coordinates. Also + a negative amplitude can change this side. + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,4.2) +\psGluon(0,3)(4,3)% shows the default setting +\psGluon[windings=5,amplitude=5mm,linecolor=red](0,2)(4,2) +\psGluon[windings=6,amplitude=-3mm,linecolor=blue](0,1)(4,1) +\end{pspicture} +\end{LTXexample} + +\subsection*{\Lcs{psPhoton}\Largr{$x_1,y_1$}\Largr{$x_2,y_2$}} + Draws a photon from $(x_1,y_1)$ to $(x_2,y_2)$. The width of the + photon will be twice the value of `amplitude'. The number of wiggles + is given by the last parameter. If twice this parameter is not an integer + it will be rounded to an integer value. Whether the first wiggle + starts up or down can be influenced with the sign of the amplitude. + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,4.2) +\psPhoton(0,3)(4,3)% shows the default setting +\psPhoton[windings=5,amplitude=5mm,linecolor=red](0,2)(4,2) +\psPhoton[windings=6,amplitude=-2mm,linecolor=blue](0,1)(4,1) +\end{pspicture} +\end{LTXexample} + + + +\subsection*{\Lcs{psPhotonArc}\Largr{$x,y$}\Largr{$\phi_1,\phi_2$}} + Draws a photon on an arc-segment. The center of the arc is $(x,y)$. The arc segment runs counterclockwise from $\phi_1$ + to $\phi_2$. The width of the photon is twice `amplitude', and the + number of wiggles is given by the last parameter. Note that + the sign of the amplitude influences whether the photon starts going + outside (positive) or starts going inside (negative). If one likes + the photon to reach both endpoints from the outside the number of + wiggles should be an integer plus 0.5. + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,4.2) +\psPhotonArc(0,2)(-90,90)% shows the default setting +\psPhotonArc[windings=8,amplitude=5mm,radius=2cm, + linecolor=red](4,2)(90,270) +\psPhotonArc[windings=8,amplitude=-3mm,radius=2cm, + linecolor=blue](4,2)(90,270) +\end{pspicture} +\end{LTXexample} + + +\subsection*{\Lcs{psPText}\OptArg{mode}\Largr{$x,y$}\Largr{$\phi$}\Largb{text}} + The focal point of the text box is $(x,y)$. The mode parameter tells how the text should be + positioned with respect to the focal point. If this parameter is + omitted the center of the text will correspond to the focal point. + Other options are: l for having the left side correspond to the + focal point, r for having the right side correspond to it, t for + having the top at the focal point and b for the bottom. One may + combine two letters as in [bl], as long as it makes sense. The + parameter $\phi$ is a rotation angle. The command is the same as\\ + \verb|\rput[mode]{phi}(x,y){\shortstack{#4}}| + + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,4.2) +\psPText(2,3.5)(0){A short line} +\psPText[lb](3,0)(90){% + A short line\\ and another one \\a.s.o.} +\end{pspicture} +\end{LTXexample} + + + +\subsection*{\Lcs{psText}\OptArg{mode}\Largr{$x,y$}\Largb{text}} +Same as \Lcs{rput}. + + + +\subsection*{\Lcs{psZigZag}\Largr{$x_1,y_1$}\Largr{$x_2,y_2$}} + Draws a zigzag line from ($x_1$,$y_1$) to ($x_2$,$y_2$). The width of the + zigzagging will be twice the value of `amplitude'. The number of zigzags + is given by the last parameter. If twice this parameter is not an integer + it will be rounded to an integer value. Whether the first zigzag + starts up or down can be influenced with the sign of the amplitude. + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](-0.4,-0.4)(4,4.2) +\psZigZag(0,3)(4,3)% shows the default setting +\psZigZag[windings=5,amplitude=5mm,linecolor=red](0,2)(4,2) +\psZigZag[windings=6,amplitude=-2mm,linecolor=blue](0,1)(4,1) +\end{pspicture} +\end{LTXexample} + + + +\iffalse +\begin{itemize} +\item \Lcs{psLinAxis}($x_1$,$y_1$)($x_2$,$y_2$)($N_D$,$d$,hashsize + ,offset,width) \hfill \\ + This draws a line to be used as an axis in a graph. Along the axis + are hash marks. Going from the first coordinate to the second, the + hash marks are on the left side if `hashsize', which is the size of the + hash marks, is positive and on the right side if it is negative. + $N_D$ is the number of `decades', indicated by fat hash marks, and + $d$ is the number of subdivisions inside each decade. The offset + parameter tells to which subdivision the first coordinate + corresponds. When it is zero, this coordinate corresponds to a fat + mark of a decade. Because axes have their own width, this is + indicated with the last parameter. +\item \Lcs{psLogAxis}($x_1$,$y_1$)($x_2$,$y_2$)($N_L$,hashsize + ,offset,width) \hfill \\ + This draws a line to be used as an axis in a graph. Along the axis + are hash marks. Going from the first coordinate to the second, the + hash marks are on the left side if `hashsize', which is the size of the + hash marks, is positive and on the right side if it is negative. + $N_L$ is the number of orders of magnitude, indicated by fat + hash marks. The offset parameter tells to which integer subdivision + the first coordinate corresponds. When it is zero, this coordinate + corresponds to a fat mark, which is identical to when the value + would have been 1. Because axes have their own width, this is + indicated with the last parameter. +\end{itemize} +\fi + +A note about color. The names of the colors can be found in the documentation +of package \LPack{xcolor}. +This package gives also the commands that allow the user to change the color of the text. +It is loaded by default with PSTricks. + +\section{Examples} + +\subsection{Text modes} +The meaning of the mode characters in the text commands can best be +demonstrated. The statements +produce 9 texts and for each the focal point is indicated by a little +circle. It looks like + + +\begin{LTXexample}[width=7cm] +\begin{pspicture}[showgrid](7,2) +\psset{linecolor=BrickRed,radius=2pt}\footnotesize +\psCArc*(0,2)(0,360)\psText[lt](0,2){left-top} +\psCArc(0,1)(0,360) \psText[l] (0,1){left-center} +\psCArc*(0,0)(0,360)\psText[lb](0,0){left-bottom} +\psCArc*(3,2)(0,360)\psText[t] (3,2){center-top} +\psCArc(3,1)(0,360) \psText (3,1){center-center} +\psCArc*(3,0)(0,360)\psText[b] (3,0){center-bottom} +\psCArc*(7,2)(0,360)\psText[rt](7,2){right-top} +\psCArc(7,1)(0,360) \psText[r](7,1){right-center} +\psCArc*(7,0)(0,360)\psText[rb](7,0){right-bottom} +\end{pspicture} +\end{LTXexample} + +This illustrates exactly all the combinations of the mode characters and +what their effects are. The text is +insensitive to the scaling commands, and the color of the text should be +set with the regular color commands. In the case of \LaTeX{} text +it can of course contain different fonts, +math mode and all those little things. + + + +\subsection{The windings of a gluon} + +Gluons are traditionally represented by a two dimensional projection of +a helix. Actually close inspection of some pretty gluons reveals that +it is usually not quite a helix. Hence the gluons in pst-feyn are also +not quite helices. In addition one may notice that the begin and end +points deviate slightly from the regular windings. This makes it more in +agreement with hand drawn gluons. When a gluon is drawn, one needs not +only its begin and end points but there is an amplitude connected to +this almost helix, and in addition there are windings. The number of +windings is the number of curls that the gluon will have. Different +people may prefer different densities of curls. This can effect the +appearance considerably: + +\begin{LTXexample}[pos=t] +\begin{pspicture}[showgrid](0,-0.4)(10,4) +\psset{linecolor=Red}\footnotesize +\psGluon[windings=4](1,0.5)(1,4)\psText(1,0.25){4 windings} +\psGluon[windings=5](3,0.5)(3,4)\psText(3,0.25){5 windings} +\psGluon[windings=6](5,0.5)(5,4)\psText(5,0.25){6 windings} +\psGluon[windings=7](7,0.5)(7,4)\psText(7,0.25){7 windings} +\psGluon[windings=8](9,0.5)(9,4)\psText(9,0.25){8 windings} +\end{pspicture} +\end{LTXexample} + +The influence of the amplitude is also rather great. The user should +experiment with it. There is however an aspect to the amplitude that +should be discussed. For a straight gluon the amplitude can determine on +which side the curls are. So does the direction of the gluon: + + +\begin{LTXexample}[pos=t] +\begin{pspicture}[showgrid](0,-0.4)(10,4) +\psset{linecolor=Red,windings=10}\footnotesize +\psGluon[amplitude=0.2](2,0.5)(2,4) \psText(2,0.2){amp $> 0$}\psText(1.5,2){$\uparrow$} +\psGluon[amplitude=0.2](4,4)(4,0.5) \psText(4,0.2){amp $> 0$}\psText(3.5,2){$\downarrow$} +\psGluon[amplitude=-0.2](6,0.5)(6,4)\psText(6,0.2){amp $< 0$}\psText(5.5,2){$\uparrow$} +\psGluon[amplitude=-0.2](8,4)(8,0.5)\psText(8,0.2){amp $< 0$}\psText(7.5,2){$\downarrow$} +\end{pspicture} +\end{LTXexample} + +For straight gluons one does not need the option of the negative +amplitude. It is however necessary for gluons on an arc segment. In that +case the arc is always drawn in an anticlockwise direction. Hence the +direction is fixed and only the amplitude is left as a tool for +determining the side with the curls. + +\subsection{Scaling} + +Sometimes it is much easier to design a figure on a larger scale than it +is needed in the eventual printing. In that case one can use a scale +factor, either during the design or in the final result. We use the +figure in the first section as an example: + +\begin{LTXexample}[pos=t] +\psset{unit=0.3,amplitude=0.2} +\begin{pspicture}[shift=*](0,-0.4)(10,3.5) +\psGluonArc[linecolor=Red,radius=2,windings=8](5,2)(0,180) +\psGluonArc[linecolor=Green,radius=2,windings=8](5,2)(180,360) +\psGluon[windings=6,linecolor=Blue](0,2)(3,2)\psdot(3,2) +\psGluon[windings=6,linecolor=Blue](7,2)(10,2)\psdot(7,2) +\end{pspicture} +$+ \textrm{ others} = C_A(\frac{5}{3}+\frac{31}{9}\epsilon) + + n_F(-\frac{2}{3}-\frac{10}{9}\epsilon)$ +\end{LTXexample} + +This way it is rather straightforward to make whole pictorial equations. +Of course some things are not scale invariant. The appreciation of a +figure may be somewhat different when the scale is changed. In the above +case one might consider changing the amplitude of the gluons a little +bit. Changing this to 0.5cm and at the same time reducing the number +of windings from 6 to 3 for the straight gluons and from 8 to 7 for the +gluons in the arcs gives + +\begin{LTXexample}[pos=t] +\psset{unit=0.3,amplitude=0.5} +\begin{pspicture}[shift=*](0,-0.4)(10,3.5) +\psGluonArc[linecolor=Red,radius=2,windings=7](5,2)(0,180) +\psGluonArc[linecolor=Green,radius=2,windings=7](5,2)(180,360) +\psGluon[windings=3,linecolor=Blue](0,2)(3,2)\psdot(3,2) +\psGluon[windings=3,linecolor=Blue](7,2)(10,2)\psdot(7,2) +\end{pspicture} +$+ \textrm{ others} = C_A(\frac{5}{3}+\frac{31}{9}\epsilon) + + n_F(-\frac{2}{3}-\frac{10}{9}\epsilon)$ +\end{LTXexample} + +\subsection{Photons} + +When drawing photons one should take care that the number of wiggles is +selected properly. Very often this number should be an integer plus +$0.5$. This can be seen in the following example: + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](0,-0.4)(4,3) +\psdot(0.5,0.4)\psdot(3.5,0.4) +\psArrowLine[linecolor=Red](0,0.4)(4,0.4) +\psarc[linecolor=Green,arrowscale=2]{->}(2,0.4){1}{60}{120} +\psPhotonArc[amplitude=4pt,windings=8.5,% wiggles + radius=1.5,linecolor=Brown](2,0.4)(0,180) +\end{pspicture} +\end{LTXexample} + + + +When the number of wiggles is reduced to 8 we obtain: + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](0,-0.4)(4,3) +\psdot(0.5,0.4)\psdot(3.5,0.4) +\psArrowLine[linecolor=Red](0,0.4)(4,0.4) +\psarc[linecolor=Green,arrowscale=2]{->}(2,0.4){1}{60}{120} +\psPhotonArc[amplitude=4pt,windings=8,% wiggles + radius=1.5,linecolor=Brown](2,0.4)(0,180) +\end{pspicture} +\end{LTXexample} + +This is not as nice. Somehow the symmetry is violated. One should also +take care that the wiggles start in the proper way. If we make the +amplitude negative we see that the photons are not `right' either: + + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](0,-0.4)(4,3) +\psdot(0.5,0.4)\psdot(3.5,0.4) +\psArrowLine[linecolor=Red](0,0.4)(4,0.4) +\psarc[linecolor=Green,arrowscale=2]{->}(2,0.4){1}{60}{120} +\psPhotonArc[amplitude=-4pt,windings=8.5,% wiggles + radius=1.5,linecolor=Brown](2,0.4)(0,180) +\end{pspicture} +\end{LTXexample} + + +\begin{LTXexample}[width=5cm] +\begin{pspicture}[showgrid](0,-0.4)(4,2) +\psArrowLine(0,0)(1,1) \psArrowLine(1,1)(0,2) +\psArrowLine(3,1)(4,0) \psArrowLine(4,2)(3,1) +\psPhoton[windings=4.5,amplitude=4pt](1,1)(3,1) +\psdot(1,1) \psdot(3,1) +\end{pspicture} +\end{LTXexample} + + +\begin{LTXexample}[width=5cm] +\begin{pspicture}(0,-1)(4.4,2) +\psArrowLine(0,0)(1,1) \psArrowLine(1,1)(0,2) +\psArrowLine(3,1)(4,0) \psArrowLine(4,2)(3,1) +\psPhoton[windings=4.5,amplitude=4pt,linecolor=blue](1,1)(3,1) +\psGluon[windings=4,amplitude=3pt,linecolor=Green](3.5,1.5)(4.2,0.9) +\rput(0.5,1.9){$\mathrm{e}^-$} \rput(3.5,1.9){$\bar{\mathrm{q}}$} +\rput(0.5,0.2){$\mathrm{e}^+$} \rput(3.5,0.2){q} +\rput(2,1.5){$\gamma$}\rput[r](4.2,1.3){$\mathrm{g}$} +\psline{->}(0,-0.2)(4,-0.2)\uput[0](4,-0.2){$t$} +\end{pspicture} +\end{LTXexample} + + + +\subsection{Curves and graphs} + +\LPack{pst-feyn} is a PSTricks related package and can use all commands by one of +the nearly``endless'' PSTricks packages. +An example of a complete picture would be: + +%\begin{LTXexample}[pos=t] +\psset{unit=1pt} +\begin{pspicture}(-30,-30)(360,440) +\psLinAxis(0,0)(300,0)(3,10,5,0)\psLinAxis(0,400)(300,400)(3,10,-5,0) +\psLogAxis(0,0)(0,400)(4,-5,2) \psLogAxis(300,0)(300,400)(4,5,2) +\readdata\DataA{data/data0.dat} \readdata\DataB{data/data1.dat} +\listplot[plotstyle=curve,linecolor=Blue,linewidth=1.5pt,unit=100,curvature=.5 2 0]{\DataA} +\listplot[plotstyle=curve,linecolor=Red,linewidth=1.5pt,linestyle=dashed,unit=100, + curvature=.5 2 0]{\DataB} +\psline[linecolor=Blue](200,360)(270,360) +\rput[r](195,360){\blue\large$e^+e^-\rightarrow\mu^+\mu^-$} +\psline[linestyle=dashed,linecolor=Red](200,330)(270,330) +\rput[r](195,330){\red\large$e^+e^-\rightarrow\tau^+\tau^-$} +\rput(0,-10){0} \rput(100,-10){1}\rput(200,-10){2}\rput(300,-10){3} +\rput(150,-25){Beam energy in GeV (Threshold effects for $\mu$ and $\tau$)} +\rput(-10,70){$1$} \rput(-10,170){$10$}\rput(-10,270){$10^2$}\rput(-10,370){$10^3$} +\rput{90}(-25,220){\large$\sigma$ in nb} +\psArrowLine(190,270)(160,300) \psArrowLine(160,240)(190,270) +\psArrowLine(270,300)(240,270) \psArrowLine(240,270)(270,240) +\psPhoton[windings=4.5,amplitude=4](190,270)(240,270) +\psdot(190,270) \psdot(240,270) +\end{pspicture} +%\end{LTXexample} + +\begin{lstlisting} +\psset{unit=1pt} +\begin{pspicture}(-30,-30)(360,440) +\psLinAxis(0,0)(300,0)(3,10,5,0)\psLinAxis(0,400)(300,400)(3,10,-5,0) +\psLogAxis(0,0)(0,400)(4,-5,2) \psLogAxis(300,0)(300,400)(4,5,2) +\readdata\DataA{data/data0.dat} \readdata\DataB{data/data1.dat} +\listplot[plotstyle=curve,linecolor=Blue,linewidth=1pt,unit=100,curvature=.5 2 0]{\DataA} +\listplot[plotstyle=curve,linecolor=Red,linewidth=1.5pt,linestyle=dashed,unit=100, + curvature=.5 2 0]{\DataB} +\psline[linecolor=Blue](200,360)(270,360) +\rput[r](195,360){\blue\large$e^+e^-\rightarrow\mu^+\mu^-$} +\psline[linestyle=dashed,linecolor=Red](200,330)(270,330) +\rput[r](195,330){\red\large$e^+e^-\rightarrow\tau^+\tau^-$} +\rput(0,-10){0} \rput(100,-10){1}\rput(200,-10){2}\rput(300,-10){3} +\rput(150,-25){Beam energy in GeV (Threshold effects for $\mu$ and $\tau$)} +\rput(-10,70){$1$} \rput(-10,170){$10$}\rput(-10,270){$10^2$}\rput(-10,370){$10^3$} +\rput{90}(-25,220){\large$\sigma$ in nb} +\psArrowLine(190,270)(160,300) \psArrowLine(160,240)(190,270) +\psArrowLine(270,300)(240,270) \psArrowLine(240,270)(270,240) +\psPhoton[windings=4.5,amplitude=4](190,270)(240,270) +\psdot(190,270) \psdot(240,270) +\end{pspicture} +\end{lstlisting} + +\psset{unit=1cm} + + +\begin{LTXexample}[width=5cm] +\begin{pspicture}(0,-0.4)(4,2) +\psline[linecolor=Blue](0,1)(2,1) +\psGluon[linecolor=Green,amplitude=3pt,windings=6](2,1)(4,1) +\psPhoton[linecolor=Red,amplitude=3pt,windings=6](2,1.5)(4,2) +\psZigZag[linecolor=Lime,amplitude=3pt,windings=6](2,0.5)(4,0) +\psellipse[fillcolor=Yellow,fillstyle=solid](2,1)(0.45,0.8) +\end{pspicture} +\end{LTXexample} + + + +\subsection{Flowcharts} + +There are several commands for creating boxes with text in them. The rest +is just a matter of drawing lines and circle segments with arrows. It might describe +a system for the automatic computation of cross-sections: + +%\begin{LTXexample}[pos=t] +\begin{center} +\psscalebox{0.9}{% +\begin{pspicture}(11,14) +\sffamily\psset{unit=1pt,linecolor=Magenta} +\psArrowLine(200,40)(200,10) \psArrowLine(200,100)(200,40) +\psArrowLine(200,150)(200,100)\psArrowLine(100,130)(200,100) +\psArrowLine(85,95)(200,100) \psArrowLine(260,105)(200,100) +\psArrowLine(250,135)(200,100)\psArrowLine(160,75)(200,100) +\psArrowLine(200,100)(250,70) \psArrowLine(200,185)(200,150) +\psArrowLine(200,220)(200,185)\psArrowLine(200,250)(200,220) +\psArrowLine(240,263)(200,250)\psArrowLine(240,237)(200,250) +\psArrowLine(200,285)(200,250)\psArrowLine(200,310)(200,285) +\psArrowLine(200,335)(200,310)\psArrowLine(180,360)(200,335) +\psArrowLine(200,385)(180,360)\psArrowLine(50,370)(180,360) +\psArrowArc[radius=62.5](200,247.5)(90,180)\psArrowArc[radius=62.5](200,247.5)(180,270) +\psArrowLine(210,385)(300,360) \psArrowLine(210,335)(300,360) +\psArrowLine(80,300)(80,130) \psArrowLine(190,335)(80,300) +\psArrowLine(190,385)(80,300) \psArrowLine(50,335)(80,300) +\psArrowLine(300,360)(340,340) \psArrowArcn[radius=37.5](205,347.5)(90,270) +\psBCirc[linecolor=Blue](200,100){10} \psBCirc[linecolor=Blue](200,100){5} +\psBCirc[linecolor=Blue](200,40){7.5} \psBCirc[linecolor=Blue](200,250){10} +\psBCirc[linecolor=Blue](200,250){5} \psBCirc[linecolor=Blue](200,310){7.5} +\psBCirc[linecolor=Blue](180,360){7.5}\psBCirc[linecolor=Blue](80,300){7.5} +\psBCirc[linecolor=Blue](300,360){7.5}\psCCirc(200,185){7.5}{Blue}{Yellow} +\footnotesize\psBText[linecolor=Red](200,285){\red Form program} +\psBText[linecolor=Red](200,335){\red Diagrams}\psBText[linecolor=Red](200,385){\red Model} +\psBText[linecolor=Red](200,10){\red events}\psBText[linecolor=Red](80,95){\red Axolib} +\psBText[linecolor=Red](350,335){\red Pictures}\psCText(137.5,247.5){Blue}{Yellow}{instructions} +\psBText(260,70){Cross-sections\\Histograms}\psBText(140,75){Monte Carlo\\Routine} +\psBText(275,105){FF\\1 loop integrals}\psCText(260,135){Blue}{Yellow}{Spiderlib\\Fortran/C} +\psCText(200,150){Blue}{Yellow}{Matrix\\Element}\psBText(80,130){Kinematics\\Configuration} +\psCText(200,220){Blue}{Yellow}{Output\\Formula} +\psCText(260,263){Blue}{Yellow}{Spiderlib\\Form part} +\psCText(260,237){Blue}{Yellow}{FF support\\library}\psBText(40,370){Reaction\\selection} +\psBText(40,340){Specification\\Cuts, etc.}\psPText[lb](211,36)(0){Event Generator} +\psPText[lb](211,181)(0){Code Generator}\psPText[lb](162,258)(0){FORM} +\psPText[lb](211,301)(0){Form program construction}\psPText[lb](191,362)(0){Diagram} +\psPText[lb](191,352)(0){Generator}\psPText[lb](311,370)(0){Postscript} +\psPText[lb](311,360)(0){Generator}\psPText[lb](91,292)(0){Kinematics} +\psPText[lb](91,282)(0){Generator} +\end{pspicture}% +} +%\end{LTXexample} +\end{center} + +\begin{lstlisting} +\begin{pspicture}(11,14) +\sffamily\psset{unit=1pt,linecolor=Magenta} +\psArrowLine(200,40)(200,10) \psArrowLine(200,100)(200,40) +\psArrowLine(200,150)(200,100)\psArrowLine(100,130)(200,100) +\psArrowLine(85,95)(200,100) \psArrowLine(260,105)(200,100) +\psArrowLine(250,135)(200,100)\psArrowLine(160,75)(200,100) +\psArrowLine(200,100)(250,70) \psArrowLine(200,185)(200,150) +\psArrowLine(200,220)(200,185)\psArrowLine(200,250)(200,220) +\psArrowLine(240,263)(200,250)\psArrowLine(240,237)(200,250) +\psArrowLine(200,285)(200,250)\psArrowLine(200,310)(200,285) +\psArrowLine(200,335)(200,310)\psArrowLine(180,360)(200,335) +\psArrowLine(200,385)(180,360)\psArrowLine(50,370)(180,360) +\psArrowArc[radius=62.5](200,247.5)(90,180)\psArrowArc[radius=62.5](200,247.5)(180,270) +\psArrowLine(210,385)(300,360) \psArrowLine(210,335)(300,360) +\psArrowLine(80,300)(80,130) \psArrowLine(190,335)(80,300) +\psArrowLine(190,385)(80,300) \psArrowLine(50,335)(80,300) +\psArrowLine(300,360)(340,340) \psArrowArcn[radius=37.5](205,347.5)(90,270) +\psBCirc[linecolor=Blue](200,100){10} \psBCirc[linecolor=Blue](200,100){5} +\psBCirc[linecolor=Blue](200,40){7.5} \psBCirc[linecolor=Blue](200,250){10} +\psBCirc[linecolor=Blue](200,250){5} \psBCirc[linecolor=Blue](200,310){7.5} +\psBCirc[linecolor=Blue](180,360){7.5}\psBCirc[linecolor=Blue](80,300){7.5} +\psBCirc[linecolor=Blue](300,360){7.5}\psCCirc(200,185){7.5}{Blue}{Yellow} +\footnotesize\psBText[linecolor=Red](200,285){\red Form program} +\psBText[linecolor=Red](200,335){\red Diagrams}\psBText[linecolor=Red](200,385){\red Model} +\psBText[linecolor=Red](200,10){\red events}\psBText[linecolor=Red](80,95){\red Axolib} +\psBText[linecolor=Red](350,335){\red Pictures}\psCText(137.5,247.5){Blue}{Yellow}{instructions} +\psBText(260,70){Cross-sections\\Histograms}\psBText(140,75){Monte Carlo\\Routine} +\psBText(275,105){FF\\1 loop integrals}\psCText(260,135){Blue}{Yellow}{Spiderlib\\Fortran/C} +\psCText(200,150){Blue}{Yellow}{Matrix\\Element}\psBText(80,130){Kinematics\\Configuration} +\psCText(200,220){Blue}{Yellow}{Output\\Formula} +\psCText(260,263){Blue}{Yellow}{Spiderlib\\Form part} +\psCText(260,237){Blue}{Yellow}{FF support\\library}\psBText(40,370){Reaction\\selection} +\psBText(40,340){Specification\\Cuts, etc.}\psPText[lb](211,36)(0){Event Generator} +\psPText[lb](211,181)(0){Code Generator}\psPText[lb](162,258)(0){FORM} +\psPText[lb](211,301)(0){Form program construction}\psPText[lb](191,362)(0){Diagram} +\psPText[lb](191,352)(0){Generator}\psPText[lb](311,370)(0){Postscript} +\psPText[lb](311,360)(0){Generator}\psPText[lb](91,292)(0){Kinematics} +\psPText[lb](91,282)(0){Generator} +\end{pspicture} +\end{lstlisting} + + +\clearpage +\section{List of all optional arguments for \nxLPack{pst-feyn}} + +\xkvview{family=pst-feyn,columns={key,type,default}} + + +\bgroup +\raggedright +\nocite{*} +\printbibliography +\egroup + +\printindex + + + + +\end{document} diff --git a/Master/texmf-dist/dvips/pst-feyn/pst-feyn.pro b/Master/texmf-dist/dvips/pst-feyn/pst-feyn.pro new file mode 100644 index 00000000000..e49c6a47fee --- /dev/null +++ b/Master/texmf-dist/dvips/pst-feyn/pst-feyn.pro @@ -0,0 +1,671 @@ +%% $Id: pst-feyn.pro 826 2018-09-27 09:21:43Z herbert $ +%% +%% This is file `pst-feyn.pro', +%% It is based on the old axodraw package from Jos Vermaseren +%% +%% IMPORTANT NOTICE: +%% +%% Package `pst-feyn.tex' +%% +%% Herbert Voss +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `pst-feyn' is a PSTricks package to draw 3d curves and graphical objects +%% +%% +%% version 0.01 / 2018-09-26 Herbert Voss +%% +% +/tx@FeynDict 100 dict def +tx@FeynDict begin +% +/ED { exch def } def +/SLW { setlinewidth } def +/p1 {/y1 ED /x1 ED } def +/p2 {/y2 ED /x2 ED } def +/abox{ newpath x1 y1 moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto closepath } def +% +% +/arrowdown{ + /nwidth { CLW 1 add } def + newpath + 0 nwidth 1.5 mul neg moveto % Arrow is a triangle + nwidth 1.2 mul nwidth 3 mul rlineto + nwidth 2.4 mul neg 0 rlineto + nwidth 1.2 mul nwidth 3 mul neg rlineto + closepath fill % and it is filled +} def +% +/arrowup{ + /nwidth { CLW 1 add } def + newpath + 0 nwidth 1.5 mul moveto % Arrow is a triangle + nwidth 1.2 mul nwidth 3 mul neg rlineto + nwidth 2.4 mul neg 0 rlineto + nwidth 1.2 mul nwidth 3 mul rlineto + closepath fill % and it is filled +} def +% +/arrowright{ + /nwidth { CLW 1 add } def + newpath + nwidth 1.5 mul 0 moveto % Arrow is a triangle + nwidth 3 mul neg nwidth 1.2 mul rlineto + 0 nwidth 2.4 mul neg rlineto + nwidth 3 mul nwidth 1.2 mul rlineto + closepath fill % and it is filled +} def +% +/gluon{ + %dup scale /width ED width SLW + /num ED /ampi ED /y2 ED /x2 ED /y1 ED /x1 ED + + /dy y2 y1 sub def /dx x2 x1 sub def +% +% We have a 'head' and a 'tail' and inbetween the 'body' +% The head + tail is 2 windings. The body is num-1 windings. +% + /dr dx dx mul dy dy mul add sqrt def +% + x1 y1 translate dy dx atan rotate +% + /num num 0.5 sub round def + /inc dr num 2 mul 2 add div def % increment per half winding + /amp8 ampi 0.9 mul def + amp8 0 lt {/amp8 amp8 neg def} if +% + /x1 inc 2 mul def +% + newpath + 0 0 moveto + inc 0.1 mul ampi 0.5 mul inc 0.5 mul ampi inc 1.4 mul ampi curveto + x1 amp8 add dup ampi exch ampi neg dup x1 exch curveto +% + 2 1 num { + pop + x1 amp8 sub dup ampi neg exch ampi dup x1 inc add exch curveto + /x1 x1 inc dup add add def + x1 amp8 add dup ampi exch ampi neg dup x1 exch curveto + } for +% + x1 amp8 sub dup ampi neg exch ampi dup x1 inc 0.6 mul add exch curveto + x1 inc 1.5 mul add ampi dr inc 0.1 mul sub ampi 0.5 mul dr 0 curveto +% stroke +% +} def +% +/photon{ +% +% Draws a photon from x1,y1 to x2,y2 with amplitude A and n wiggles +% +% gsave dup scale /width ED width SLW + /num ED /ampi ED p2 p1 + /dy y2 y1 sub def /dx x2 x1 sub def + /dr dx dx mul dy dy mul add sqrt def +% + x1 y1 translate + dy dx atan rotate + /num num 2 mul 0.5 sub round def + /x2 dr num div def + /pi 3.141592 def + /sign 1 def + 1 1 num { + pop + newpath + 0 0 moveto + 4 3 div x2 mul pi div dup neg x2 add + 4 3 div ampi sign mul mul dup 3 1 roll + x2 0 curveto + stroke + /sign sign neg def + x2 0 translate + } for +% +% grestore +} def +% +/zigzag{ +% +% Draws a zigzag line from x1,y1 to x2,y2 with amplitude A and n zigzags +% +% gsave dup scale /width ED width SLW + /num ED /ampi ED p2 p1 + /dy y2 y1 sub def /dx x2 x1 sub def + /dr dx dx mul dy dy mul add sqrt def +% + x1 y1 translate + dy dx atan rotate + /num num 2 mul 0.5 sub round def + /x2 dr num div def + /pi 3.141592 def + /sign 1 def + 1 1 num { + pop + newpath + 0 0 moveto + x2 2 div ampi sign mul lineto + x2 0 lineto + stroke + /sign sign neg def + x2 0 translate + } for +% +% grestore +} def +% +/photonarc{ +% +% Draws a photonarc center at x1,y1, radius arcstart,arcend, amplitude +% number of wiggles, width, scale +% +% gsave dup scale /width ED width SLW + /num ED /ampli ED /arcend ED /arcstart ED /radius ED +% + translate % The center of the circle is now the origin +% + /num num 2 mul round def % number of half wiggles + arcend arcstart lt { /arcend arcend 360 add def } if + /arcend arcend arcstart sub num div def % phi + arcstart rotate + /arcstart arcend 2 div def % phi/2 + /cp arcend cos def + /sp arcend sin def + /cp2 arcstart cos def + /sp2 arcstart sin def +% + newpath + 1 1 num { + pop + radius 0 moveto + /beta radius arcend mul 180 ampli mul div def + /tt sp cp beta mul sub cp sp beta mul add div def + /amp1 radius ampli add 8 mul beta cp2 mul sp2 sub mul beta 4 cp add mul + tt cp mul 3 mul sp 4 mul sub add radius mul sub + beta tt sub 3 mul div def % this is x2 + radius ampli add 8 mul cp2 mul 1 cp add radius mul sub 3 div amp1 sub + dup radius sub beta mul % x1,y1 + amp1 dup radius cp mul sub tt mul radius sp mul add % x2,y2 + radius cp mul radius sp mul % x3 y3 + curveto + /ampli ampli neg def + arcend rotate + } for +% stroke +% +% grestore +} def +% +/gluearc{ +% +% Draws a gluon on an arcsegment +% radius,stat_angle,end_angle,gluon_radius,num +% in which num is the number of windings of the gluon. +% Method: +% 1: compute length of arc. +% 2: generate gluon in x and y as if the arc is a straight line +% 3: x' = (radius+y)*cos(x*const) +% y' = (radius+y)*sin(x*const) +% + gsave %dup scale /width ED width SLW + /num ED + /ampi ED + /arcend ED + /arcstart ED + /radius ED +% + arcstart rotate % segment starts at zero + /darc arcend arcstart sub def % argsegment + /dr darc 180 div 3.141592 mul radius mul def % length of segment. + /const darc dr div def % conversion constant +% + /num num 0.5 sub round def + /inc dr num 2 mul 2 add div def % increment per half winding +% + /amp8 ampi 0.9 mul def + /amp1 radius ampi add def + /amp2 radius ampi sub def + /amp3 radius ampi 2 div add def + /amp4 amp1 inc amp8 add const mul cos div def + /amp5 amp2 amp8 const mul cos div def + /amp6 amp1 inc 0.6 mul amp8 add const mul cos div def + /amp7 amp1 inc 0.9 mul const mul cos div def + amp8 0 lt {/amp8 amp8 neg def} if +% + /x1 inc 2 mul def +% + newpath + radius 0 moveto +% + inc 0.1 mul const mul dup cos amp3 mul exch sin amp3 mul + inc 0.5 mul const mul dup cos amp7 mul exch sin amp7 mul + inc 1.4 mul const mul dup cos amp1 mul exch sin amp1 mul + curveto + x1 amp8 add const mul dup cos amp6 mul exch sin amp6 mul + x1 amp8 add const mul dup cos amp5 mul exch sin amp5 mul + x1 const mul dup cos amp2 mul exch sin amp2 mul + curveto +% + 2 1 num { + pop + x1 amp8 sub const mul dup cos amp5 mul exch sin amp5 mul + x1 amp8 sub const mul dup cos amp4 mul exch sin amp4 mul + x1 inc add const mul dup cos amp1 mul exch sin amp1 mul + curveto + /x1 x1 inc dup add add def + x1 amp8 add const mul dup cos amp4 mul exch sin amp4 mul + x1 amp8 add const mul dup cos amp5 mul exch sin amp5 mul + x1 const mul dup cos amp2 mul exch sin amp2 mul + curveto + } for +% + x1 amp8 sub const mul dup cos amp5 mul exch sin amp5 mul + x1 amp8 sub const mul dup cos amp6 mul exch sin amp6 mul + x1 inc 0.6 mul add const mul dup cos amp1 mul exch sin amp1 mul + curveto + x1 inc 1.5 mul add const mul dup cos amp7 mul exch sin amp7 mul + dr inc 0.1 mul sub const mul dup cos amp3 mul exch sin amp3 mul + dr const mul dup cos radius mul exch sin radius mul + curveto + stroke +% + grestore +} def +% +/arrowarc{ +% +% Draws an anticlockwise arc with an arrow in the middle +% The arc is x_center, y_center, radius, start_angle, end_angle +% +% gsave dup scale /width ED width SLW + /arcend ED /arcstart ED /radius ED +% + translate % x and y are still on stack + newpath 0 0 radius arcstart arcend arc stroke + arcstart arcend gt { + /arcend arcend 360 add def } if + arcstart arcend add 2 div rotate % middle of arc + radius 0 translate % move to it + arrowup +% grestore +} def +% +/longarrowarc{ +% +% Draws an anticlockwise arc with an arrow at the end +% The arc is x_center, y_center, radius, start_angle, end_angle +% +% gsave dup scale /width ED width SLW + /arcend ED /arcstart ED /radius ED +% + translate % x and y are still on stack + arcstart arcend gt { + /arcend arcend 360 add def } if + /arcmid 540 CLW 1 add mul 3.14159 div radius div def + % discount for arrow +% newpath 0 0 radius arcstart arcend arcmid sub arc stroke + arcend arcmid 2 div sub rotate % middle of arrow + radius 0 translate % move to it + arrowup +% grestore +} def +% +/dasharrowarc{ +% +% Draws a dashed anticlockwise arc with an arrow in the middle +% The arc is x_center, y_center, radius, start_angle, end_angle dsize +% + gsave dup scale /width ED width SLW /dsize ED /arcend1 ED /arcstart1 ED /radius ED +% + translate % x and y are still on stack +% + arcend1 arcstart1 lt { /arcend1 arcend1 360 add def } if + /arcmid1 arcend1 arcstart1 add 2 div def +% + 0 0 radius arcstart1 arcmid1 dsize width 1 dashcarc + 0 0 radius arcmid1 arcend1 dsize width 1 dashcarc + arcmid1 rotate + radius 0 translate + arrowup + grestore +} def +% +/arrowarcn{ +% +% Draws a clockwise arc with an arrow in the middle +% The arc is x_center, y_center, radius, start_angle, end_angle +% +% gsave dup scale /width ED width SLW + /arcend ED /arcstart ED /radius ED +% + translate % x and y are still on stack + newpath 0 0 radius arcstart arcend arcn stroke + arcstart arcend lt { + /arcstart arcstart 360 add def } if + arcstart arcend add 2 div rotate % middle of arc + radius 0 translate % move to it + arrowdown +% grestore +} def +% +/longarrowarcn{ +% +% Draws a clockwise arc with an arrow in the end +% The arc is x_center, y_center, radius, start_angle, end_angle +% + gsave dup scale /width ED width SLW /arcend ED /arcstart ED /radius ED +% + translate % x and y are still on stack + arcstart arcend lt { + /arcstart arcstart 360 add def } if + /arcmid 540 width 1 add mul 3.14159 div radius div def + % correction for arrow + newpath 0 0 radius arcstart arcend arcmid add arcn stroke + arcend arcmid 2 div add rotate % middle of arrow + radius 0 translate % move to it + arrowdown + grestore +} def +% +/dasharrowarcn{ +% +% Draws a dashed clockwise arc with an arrow in the middle +% The arc is x_center, y_center, radius, start_angle, end_angle +% + gsave dup scale /width ED width SLW /dsize ED /arcend1 ED /arcstart1 ED /radius ED +% + translate % x and y are still on stack + arcstart1 arcend1 lt { + /arcstart1 arcstart1 360 add def } if + /arcmid1 arcstart1 arcend1 add 2 div def + 0 0 radius arcmid1 arcstart1 dsize width 1 dashcarc + 0 0 radius arcend1 arcmid1 dsize width 1 dashcarc + arcmid1 rotate + radius 0 translate + arrowdown + grestore +} def +% +/arrowline{ +% +% Draws a straight line with an arrow in the middle +% x1,y1,x2,y2 +% + %gsave dup scale /width ED width SLW + p2 p1 + /dx x2 x1 sub def /dy y2 y1 sub def + /dr dx dx mul dy dy mul add sqrt def +% + x1 y1 translate +% newpath +% 0 0 moveto +% dx dy rlineto +% stroke + dy dx atan rotate + dr 2.0 div 0 translate + arrowright +% grestore +} def +% +/longarrow{ +% +% Draws a straight line with an arrow at the end +% x1,y1,x2,y2 +% + gsave dup scale /width ED width SLW p2 p1 + /dx x2 x1 sub def /dy y2 y1 sub def + /dr dx dx mul dy dy mul add sqrt def +% + x1 y1 translate + dy dx atan rotate + newpath + 0 0 moveto + dr width 3 mul sub 0 rlineto + stroke + dr width 1.5 mul sub 0 translate + arrowright + grestore +} def +% +/dasharrowline{ +% +% Draws a straight dashed line with an arrow in the middle +% x1,y1,x2,y2 +% +% The pattern is ideally [dsize dsize] 0 setdash +% but we want to have (2*n+1)/2 patterns, so dsize must be rounded +% Actually we want the center to be black too so that the arrow +% fits in nice. This means that n must be odd. So +% r = dsize*(4*m+3) +% + gsave dup scale /width ED width SLW /dsize ED p2 p1 + /dx x2 x1 sub def /dy y2 y1 sub def + /dr dx dx mul dy dy mul add sqrt 2 div def +% + x1 y1 translate + dy dx atan rotate +% + 0 0 dr 0 dsize width 1 dashline + dr 0 translate + 0 0 dr 0 dsize width 1 dashline + arrowright + grestore +} def +% +/carc{ +% +% Draws an anti-clockwise arc segment: +% x_center, y_center, radius, start_angle, end_angle +% + %dup scale /width ED width SLW + /arcend ED /arcstart ED /radius ED +% + translate % x and y are still on stack + newpath 0 0 radius arcstart arcend arc +% stroke +% grestore +} def +% +/dashcarc{ +% +% Draws an anti-clockwise arc segment: +% x_center, y_center, radius, start_angle, end_angle, dsize +% + gsave dup scale /width ED width SLW /dsize ED /arcend ED /arcstart ED /radius ED +% + translate % x and y are still on stack +% +% Compute the length of the line +% + /dr arcend arcstart sub dup 0 lt { 360 add } if + 3.14159 mul 180 div radius mul def + /dsize dr dsize 2 mul div 0.5 sub round dup 0 le { pop 0 } if 2 mul 1 add + dr exch div def + [dsize dsize] 0 setdash +% + newpath 0 0 radius arcstart arcend arc stroke + grestore +} def +% +/bcirc{ +% +% Draws an anti-clockwise blanked circle: +% x_center, y_center, radius +% + gsave dup scale /width ED width SLW /radius ED +% + translate % x and y are still on stack +% + gsave + 1 setgray + newpath 0 0 radius 0 360 arc fill + grestore + newpath 0 0 radius 0 360 arc stroke + grestore +} def +% +/gcirc{ +% +% Draws an anti-clockwise blanked gray circle: +% x_center, y_center, radius, grayscale +% + gsave dup scale /width ED width SLW /gcolor ED /radius ED +% + translate % x and y are still on stack +% + 1 setgray + newpath 0 0 radius 0 360 arc fill + gcolor setgray + newpath 0 0 radius 0 360 arc fill + 0 setgray + newpath 0 0 radius 0 360 arc stroke + grestore +} def +% +/ccirc1{ +% +% Draws an anti-clockwise circle : +% x_center, y_center, radius +% Part 1: the contents in background color +% + gsave dup scale /width ED width SLW /radius ED +% + translate % x and y are still on stack +% + newpath 0 0 radius 0 360 arc fill + grestore +} def +% +/ccirc2{ +% +% Draws an anti-clockwise circle : +% x_center, y_center, radius +% Part 1: the contents in background color +% + gsave dup scale /width ED width SLW /radius ED +% + translate % x and y are still on stack +% + newpath 0 0 radius 0 360 arc stroke + grestore +} def +% +% +/pathlength{ + flattenpath + /dist 0 def + { /yfirst ED /xfirst ED /ymoveto yfirst def /xmoveto xfirst def } + { /ynext ED /xnext ED /dist dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def } + {} + {/ynext ymoveto def /xnext xmoveto def + /dist ynext yfirst sub dup mul + xnext xfirst sub dup mul add sqrt add def + /yfirst ynext def /xfirst xnext def } + pathforall + dist +} def +% +/centerdash{ + /pathlen pathlength def + /jj pathlen dsize div 2.0 div cvi def + /ddsize pathlen jj 2.0 mul div def + [ddsize] ddsize 2 div setdash +} def +% +/logaxis{ +% +% Draws an axis from x1,y1 to x2,y2 with nl log divisions +% size of the hashes hs, offset F +% and width W. The stack looks like +% x1,y1,x2,y2,nl,hs,F,W,scale +% After the rotation the hash marks are on top if nl is positive and +% on the bottom if nl is negative +% +% gsave dup scale /width ED width SLW + /offset ED /hashsize ED /nlogs ED p2 p1 + x1 y1 translate + /y2 y2 y1 sub def /x2 x2 x1 sub def + y2 x2 atan rotate + /rr x2 dup mul y2 dup mul add sqrt def + offset 0 ne { /offset offset ln 10 ln div def } if + /offset offset dup cvi sub def + newpath + 0 0 moveto + rr 0 lineto + /lsize rr nlogs div def + 0 1 nlogs { /x2 ED + x2 offset ge { + /y2 x2 offset sub lsize mul def + y2 rr le { + y2 0 moveto + y2 hashsize 1.2 mul lineto + } if + } if + } for + stroke + CLW 0.6 mul setlinewidth + newpath + 0 1 nlogs { /x2 ED + 2 1 9 { + ln 10 ln div x2 add + /xx2 ED + xx2 offset ge { + /y2 xx2 offset sub lsize mul def + y2 rr le { + y2 0 moveto + y2 hashsize 0.8 mul lineto + } if + } if + } for + } for +% stroke +% grestore +} def +% +/linaxis{ +% +% x1,y1,x2,y2,num_decs,per_dec,hashsize,offset,width,scale +% + %gsave dup scale /width ED width SLW + /offset ED /hashsize ED /perdec ED /numdec ED p2 p1 + x1 y1 translate + /y2 y2 y1 sub def /x2 x2 x1 sub def + y2 x2 atan rotate + /rr x2 dup mul y2 dup mul add sqrt def + newpath + 0 0 moveto + rr 0 lineto + /x1 rr numdec perdec mul div def + /y1 rr numdec div def + /offset offset x1 mul def + 0 1 numdec { y1 mul offset sub + dup 0 ge { + dup rr le { + dup 0 moveto + hashsize 1.2 mul lineto + } if + } if + } for + stroke + CLW 0.6 mul setlinewidth + newpath + offset cvi 1 numdec perdec mul offset add { + x1 mul offset sub + dup 0 ge { + dup rr le { + dup 0 moveto + hashsize 0.8 mul lineto + } if + } if + } for + stroke + %grestore +} def +% +end % tx@FeynDict +% \ No newline at end of file diff --git a/Master/texmf-dist/tex/generic/pst-feyn/pst-feyn.tex b/Master/texmf-dist/tex/generic/pst-feyn/pst-feyn.tex new file mode 100644 index 00000000000..35e272c9c06 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pst-feyn/pst-feyn.tex @@ -0,0 +1,344 @@ +%% $Id: pst-feyn.tex 826 2018-09-27 09:21:43Z herbert $ +%% +%% This is file `pst-feyn.tex', +%% +%% IMPORTANT NOTICE: +%% +%% Package `pst-feyn.tex' +%% +%% Herbert Voss +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN archives +%% in directory macros/latex/base/lppl.txt. +%% +%% DESCRIPTION: +%% `pst-feyn' is a style file for the drawing of Feynman diagrams. +%% originally made by J.A.M. Vermaseren 14-feb-1994 for the picture environment +% +%% +\csname PSTFeynLoaded\endcsname +\let\PSTFeynLoaded\endinput +% Requires PSTricks, +\ifx\PSTricksLoaded\endinput\else \input pstricks.tex\fi +\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi +% +\def\fileversion{0.01} +\def\filedate{2018/09/26} +\message{`PST-feyn' v\fileversion, \filedate\space (HV,DL)} +% +\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax +\pst@addfams{pst-feyn} + +\pstheader{pst-feyn.pro} +% +\def\axoxoff{0 } +\def\axoyoff{0 } +\def\axoxo{0 } +\def\axoyo{0 } +% +\define@key[psset]{pst-feyn}{amplitude}[0.25]{\pst@getlength{#1}\psk@feyn@amplitude} +\define@key[psset]{pst-feyn}{windings}[10]{\pst@checknum{#1}\psk@feyn@windings} +%\pst@getint{#1}\psk@feyn@windings} +\define@key[psset]{pst-feyn}{radius}[1]{\pst@getlength{#1}\psk@feyn@radius} +\psset[pst-feyn]{amplitude=0.25,windings=10,radius=1} +% +\def\psGluon{\pst@object{psGluon}} +\def\psGluon@i(#1)(#2){% Draws a gluon from (P1) to (P2) with amplitude and number of windings +%\put(\axoxoff,\axoyoff){\special{"\axocolor #1 \axoxo add #2 \axoyo add #3 +% \axoxo add #4 \axoyo add #5 #6 \axowidth \axoscale gluon showpage}} + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB + \begin@OpenObj + \addto@pscode{ + \pst@tempA\space \axoyo add exch \axoxo add exch + \pst@tempB\space \axoyo add exch \axoxo add exch + \psk@feyn@amplitude\space %\pst@number\psunit mul + \psk@feyn@windings + tx@FeynDict begin gluon end + }% + \end@OpenObj + \ignorespaces +} + +\def\psPhoton{\pst@object{psPhoton}} +\def\psPhoton@i(#1)(#2){% Draws a photon from (x1,y1) to (x2,y2) with amplitude and number of windings + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB + \begin@OpenObj + \addto@pscode{ + \pst@tempA\space \axoyo add exch \axoxo add exch + \pst@tempB\space \axoyo add exch \axoxo add exch + \psk@feyn@amplitude\space %\pst@number\psunit mul + \psk@feyn@windings + tx@FeynDict begin photon end + }% + \end@OpenObj + \ignorespaces +} +% +\def\psZigZag{\pst@object{psZigZag}} +\def\psZigZag@i(#1)(#2){% Draws a zigzag from (x1,y1) to (x2,y2) with amplitude and number of windings + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB + \begin@OpenObj + \addto@pscode{ + \pst@tempA\space \axoyo add exch \axoxo add exch + \pst@tempB\space \axoyo add exch \axoxo add exch + \psk@feyn@amplitude\space %\pst@number\psunit div + \psk@feyn@windings + tx@FeynDict begin zigzag end + }% + \end@OpenObj + \ignorespaces +} +% +\def\psPhotonArc{\pst@object{psPhotonArc}} +\def\psPhotonArc@i(#1)(#2,#3){% Draws a photon on an arc segment. start angle and target angle are (#2,#3) + \pst@getcoor{#1}\pst@tempA + \begin@OpenObj + \addto@pscode{ + \pst@tempA\space \axoyo add exch \axoxo add exch + \psk@feyn@radius + #2 #3 + \psk@feyn@amplitude\space %\pst@number\psunit div + \psk@feyn@windings + tx@FeynDict begin photonarc end + }% + \end@OpenObj + \ignorespaces +} +% +\def\psGluonArc{\pst@object{psGluonArc}} +\def\psGluonArc@i(#1)(#2,#3){% +% +% Draws a gluon on an arc segment. The center of the curve is at (1,2) +% The radius, start angle and target angle are (#2,#3,#4), 5 is the +% amplitude of the gluon, and 6 is the number of windings. +%New \psGluonArc[options](Coor)(phi1,\phi2) + \pst@getcoor{#1}\pst@tempA + \begin@OpenObj + \addto@pscode{ + \pst@tempA\space \axoyo add exch \axoxo add exch translate + \psk@feyn@radius + #2 #3 % start angle end angle + \psk@feyn@amplitude\space %\pst@number\psunit div + \psk@feyn@windings + tx@FeynDict begin gluearc end + }% + \end@OpenObj + \ignorespaces +} +% +\def\psArrowArc{\pst@object{psArrowArc}}% Draws an arc segment with an arrow in it. +\def\psArrowArc@i(#1)(#2,#3){% + \pst@getcoor{#1}\pst@tempA + \begin@OpenObj + \addto@pscode{ + \pst@tempA\space \axoyo add exch \axoxo add exch + \psk@feyn@radius\space %\pst@number\psrunit div + #2 #3 + tx@FeynDict begin arrowarc end + }% + \end@OpenObj + \ignorespaces +} +% +\def\psLongArrowArc{\pst@object{psLongArrowArc}} +\def\psLongArrowArc@i(#1)(#2,#3){% Draws an arc segment with an arrow at its end. +% The arc segment runs anticlockwise + \begingroup + \use@keep@par + \psarc(#1){\psk@feyn@radius pt}{#2}{#3}% + \endgroup + \pst@getcoor{#1}\pst@tempA + \begin@OpenObj + \addto@pscode{ + \pst@tempA\space \axoyo add exch \axoxo add exch + \psk@feyn@radius + #2 #3 + tx@FeynDict begin longarrowarc end + }% + \end@OpenObj + \ignorespaces +} +% +\def\DashArrowArc(#1,#2)(#3,#4,#5)#6{ +% +% Draws a dashed arc segment with an arrow in it. The center of the curve +% is at (1,2). +% The radius, start angle and target angle are (#3,#4,#5). +% The arc segment runs anticlockwise +% +\put(\axoxoff,\axoyoff){\special{" tx@FeynDict begin \axocolor #1 \axoxo add #2 \axoyo add #3 + #4 #5 #6 \axowidth \axoscale dasharrowarc end showpage}} +} +% +\def\psArrowArcn{\pst@object{psArrowArcn}}% Draws an arc segment with an arrow in it. +\def\psArrowArcn@i(#1)(#2,#3){% + \pst@getcoor{#1}\pst@tempA + \begin@OpenObj + \addto@pscode{ + \pst@tempA\space \axoyo add exch \axoxo add exch + \psk@feyn@radius\space \pst@number\psrunit div + #2 #3 + tx@FeynDict begin arrowarcn end + }% + \end@OpenObj + \ignorespaces +} +% +\def\LongArrowArcn(#1,#2)(#3,#4,#5){ +% +% Draws an arc segment with an arrow at the end. The center of the curve +% is at (1,2). +% The radius, start angle and target angle are (#3,#4,#5). +% The arc segment runs clockwise +% +\put(\axoxoff,\axoyoff){\special{" tx@FeynDict begin \axocolor #1 \axoxo add #2 \axoyo add #3 + #4 #5 \axowidth \axoscale longarrowarcn end showpage}} +} +% +\def\DashArrowArcn(#1,#2)(#3,#4,#5)#6{ +% +% Draws a dashed arc segment with an arrow in it. The center of the curve +% is at (1,2). +% The radius, start angle and target angle are (#3,#4,#5). +% The arc segment runs clockwise +% +\put(\axoxoff,\axoyoff){\special{" tx@FeynDict begin \axocolor #1 \axoxo add #2 \axoyo add #3 + #4 #5 #6 \axowidth \axoscale dasharrowarcn end showpage}} +} +% +\def\psArrowLine{\pst@object{psArrowLine}} +\def\psArrowLine@i(#1)(#2){% Draws a line with an arrow in it from (x1,y1) to (x2,y2) + \begingroup + \use@keep@par + \psline(#1)(#2)% + \endgroup + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB + \begin@OpenObj + \addto@pscode{ + \pst@tempA\space \axoyo add exch \axoxo add exch %\tx@UserCoor + \pst@tempB\space \axoyo add exch \axoxo add exch %\tx@UserCoor + tx@FeynDict begin arrowline end + }% + \end@OpenObj + \ignorespaces +} +% +\def\LongArrow(#1,#2)(#3,#4){ +% +% Draws a line with an arrow at the end from (x1,y1) to (x2,y2) +% +\put(\axoxoff,\axoyoff){\special{" tx@FeynDict begin \axocolor #1 \axoxo add #2 \axoyo add #3 + \axoxo add #4 \axoyo add \axowidth \axoscale longarrow end showpage}} +} +% +\def\DashArrowLine(#1,#2)(#3,#4)#5{ +% +% Draws a dashed line with an arrow in it from (x1,y1) to (x2,y2) +% The size of the dashes is given by the fifth argument. +% +\put(\axoxoff,\axoyoff){\special{" tx@FeynDict begin \axocolor #1 \axoxo add #2 \axoyo add #3 + \axoxo add #4 \axoyo add #5 \axowidth \axoscale dasharrowline end showpage}} +} +% +\def\psCArc{\pst@object{psCArc}} +\def\psCArc@i(#1)(#2,#3){% Draws an arc segment. The center of the curve is at . + %\axocolor #1 \axoxo add #2 \axoyo add #3 #4 #5 \axowidth \axoscale carc end showpage + \pst@getcoor{#1}\pst@tempA + \begin@OpenObj + \addto@pscode{ + \pst@tempA\space \axoyo add exch \axoxo add exch + \psk@feyn@radius\space %\pst@number\psrunit div + #2 #3 + tx@FeynDict begin carc end + }% + \end@OpenObj + \ignorespaces +} +% +\let\psText\rput +% +\def\psBCirc{\pst@object{psBCirc}} +\def\psBCirc@i(#1)#2{\begingroup\use@par\pscircle[fillstyle=solid,fillcolor=white](#1){#2}\endgroup}% +% Draws a circle at (1,2) and radius 3 that is blanked out. +% +\def\psGCirc{\pst@object{psGCirc}}% fill the circle with a gray scale +\def\psGCirc@i(#1)#2#3{{\use@par\pscircle[fillstyle=solid,fillcolor={[gray]#3}](#1){#2}}}% +% +\def\psCCirc{\pst@object{psCCirc}}% #3 is the color of the circle, #4 the color of the contents +\def\psCCirc@i(#1)#2#3#4{\begingroup\use@par\pscircle[linecolor=#3,fillstyle=solid,fillcolor=#4](#1){#2}\endgroup} +% +\def\psPText{\@ifnextchar[\psPText@i{\psPText@i[c]}} +\def\psPText@i[#1](#2)(#3)#4{% +% \definecolor{temp@color}{gray}{#3}% + \rput[#1]{#3}(#2){\shortstack{#4}}% +% \rput[#1](#2){\textcolor{temp@color}{\shortstack{#4}}}% +} +% +\def\psLogAxis{\pst@object{psLogAxis}} +% LogAxis(x1,y1)(x2,y2)(num_logs,hashsize,offset) +\def\psLogAxis@i(#1)(#2)(#3,#4,#5){% +% The line is from (x1,y1) to (x2,y2) and the marks are on the left side +% when hashsize is positive, and right when it is negative. +% num_logs is the number of orders of magnitude and offset is the number +% at which one starts at (x1,y1) (like if offset=2 we start at 2) +% When offset is 0 we start at 1. Width is the linewidth. + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB + \begin@OpenObj + \addto@pscode{ + \pst@tempA\space \axoyo add exch \axoxo add exch + \pst@tempB\space \axoyo add exch \axoxo add exch + #3 #4 #5 + tx@FeynDict begin logaxis end + }% + \end@OpenObj + \ignorespaces +} +% +\def\psLinAxis{\pst@object{psLinAxis}} +% LinAxis(x1,y1)(x2,y2)(num_decs,per_dec,hashsize,offset) +\def\psLinAxis@i(#1)(#2)(#3,#4,#5,#6){% +% The line is from (x1,y1) to (x2,y2) and the marks are on the left side +% when hashsize is positive, and right when it is negative. +% num_decs is the number of accented marks, per_dec the number of +% divisions between them and offset is the number +% at which one starts at (x1,y1) (like if offset=2 we start at the second +% small mark) Width is the linewidth. + \pst@getcoor{#1}\pst@tempA + \pst@getcoor{#2}\pst@tempB + \begin@OpenObj + \addto@pscode{ + \pst@tempA\space \axoyo add exch \axoxo add exch + \pst@tempB\space \axoyo add exch \axoxo add exch + #3 #4 #5 #6 + tx@FeynDict begin linaxis end + }% + \end@OpenObj + \ignorespaces +} +% +\def\psBText{\pst@object{psBText}}% Draws a box with the center at (x1,y1) and postscript text in it. +\def\psBText@i(#1)#2{\begingroup\use@par + \rput(#1){\psframebox[fillstyle=solid,fillcolor=white]{\shortstack{#2}}}% +\endgroup} +% +\def\psGText{\pst@object{psGText}}% The color of the background is in #2 +\def\psCText@i(#1)#2#3{\begingroup\use@par + \rput(#1){\psframebox[fillcolor={[gray]#2},fillstyle=solid]{\shortstack{#3}}}% + \endgroup} +% +\def\psCText{\pst@object{psCText}}% The color of box and text is in #2 +\def\psCText@i(#1)#2#3#4{\begingroup\use@par + \rput(#1){\psframebox[linecolor=#2,fillcolor=#3,fillstyle=solid]{\shortstack{#4}}}% + \endgroup} +% +\catcode`\@=\PstAtCode\relax +% +%% END: pst-feyn.tex +\endinput + diff --git a/Master/texmf-dist/tex/latex/pst-feyn/pst-feyn.sty b/Master/texmf-dist/tex/latex/pst-feyn/pst-feyn.sty new file mode 100644 index 00000000000..f16ca95b80e --- /dev/null +++ b/Master/texmf-dist/tex/latex/pst-feyn/pst-feyn.sty @@ -0,0 +1,14 @@ +%% $Id: pst-feyn.sty 826 2018-09-27 09:21:43Z herbert $ +\PassOptionsToPackage{dvipsnames,svgnames}{pstricks} +\RequirePackage{pstricks} +\ProvidesPackage{pst-feyn}[2018/09/26 package wrapper for + pst-feyn.tex (hv)] +\input{pst-feyn.tex} +\IfFileExists{pst-feyn.pro}{% + \ProvidesFile{pst-feyn.pro} + [2018/09/26 v. 0.01, PostScript prologue file (hv)] + \@addtofilelist{pst-feyn.pro}}{}% +\ProvidesFile{pst-feyn.tex} + [\filedate\space v\fileversion\space `PST-feyn' (hv)] +\endinput + diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 1d920f4cf07..5dae20469a3 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -531,7 +531,7 @@ my @TLP_working = qw( pst-coil pst-contourplot pst-cox pst-dart pst-dbicons pst-diffraction pst-electricfield pst-eps pst-eucl pst-eucl-translation-bg pst-exa - pst-fill pst-fit pst-fr3d pst-fractal pst-fun pst-func + pst-feyn pst-fill pst-fit pst-fr3d pst-fractal pst-fun pst-func pst-gantt pst-geo pst-geometrictools pst-gr3d pst-grad pst-graphicx pst-infixplot pst-intersect pst-jtree pst-knot pst-labo pst-layout pst-lens pst-light3d pst-lsystem diff --git a/Master/tlpkg/tlpsrc/pst-feyn.tlpsrc b/Master/tlpkg/tlpsrc/pst-feyn.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d -- cgit v1.2.3