From 9608e590685bb87d511a137d0e36f51a69f656e9 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 5 Feb 2016 23:31:39 +0000 Subject: tikz-feynman (5feb16) git-svn-id: svn://tug.org/texlive/trunk@39582 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/tikz-feynman/LICENSE | 10 ++ Master/texmf-dist/doc/latex/tikz-feynman/README.md | 70 ++++++++++- .../doc/latex/tikz-feynman/references.bib | 12 +- .../doc/latex/tikz-feynman/tikz-feynman.pdf | Bin 281261 -> 290598 bytes .../doc/latex/tikz-feynman/tikz-feynman.tex | 130 ++++++++++++++------- 5 files changed, 175 insertions(+), 47 deletions(-) (limited to 'Master/texmf-dist/doc/latex/tikz-feynman') diff --git a/Master/texmf-dist/doc/latex/tikz-feynman/LICENSE b/Master/texmf-dist/doc/latex/tikz-feynman/LICENSE index 97d7150807d..7c85a26f9af 100644 --- a/Master/texmf-dist/doc/latex/tikz-feynman/LICENSE +++ b/Master/texmf-dist/doc/latex/tikz-feynman/LICENSE @@ -1,3 +1,13 @@ +This documentation may be redistributed and/or modified under the terms of the +GNU General Public License as published by the Free Software Foundation, either +version 3 of the License, or (at your option) any later version. + +The code of this package may be distributed and/or modified under the conditions +of the LaTeX Project Public License, either version 1.3 of this license or (at +your option) any later version. + +A copy of both licenses are included hereunder: + ################################################################################ GNU GENERAL PUBLIC LICENSE diff --git a/Master/texmf-dist/doc/latex/tikz-feynman/README.md b/Master/texmf-dist/doc/latex/tikz-feynman/README.md index 7d6f0c689da..d37e445bfdb 100644 --- a/Master/texmf-dist/doc/latex/tikz-feynman/README.md +++ b/Master/texmf-dist/doc/latex/tikz-feynman/README.md @@ -1,5 +1,5 @@ -Ti*k*Z-Feynman -============== +[Ti*k*Z-Feynman](http://www.jpellis.me/projects/tikz-feynman) [![ctan.org](https://img.shields.io/ctan/v/tikz-feynman.svg)](https://ctan.org/pkg/tikz-feynman) [![Travis](https://img.shields.io/travis/JP-Ellis/tikz-feynman/master.svg)](https://travis-ci.org/JP-Ellis/tikz-feynman) +============================================================= Ti*k*Z-Feynman is a LaTeX package allowing Feynman diagrams to be easily generated within LaTeX with minimal user instructions and without the need of @@ -17,6 +17,72 @@ Ti*k*Z-Feynman is open source and contribution are welcome. If you have any suggestions, feature requests, or have found any bugs, feel free to create a new issue or pull request on Github. +Below are a few example to demonstrate how easy diagram can be, and how +extensible it can be. Many more are given in the +[documentation][documentation]: + +

QED Example

+```latex +\feynmandiagram [horizontal=a to b] { + i1 -- [fermion] a -- [fermion] i2, + a -- [photon] b, + f1 -- [fermion] b -- [fermion] f2, +}; +``` + +

Penguin Example

+```latex +\feynmandiagram [large, vertical=e to f] { + a -- [fermion] b -- [photon, momentum=\(k\)] c -- [fermion] d, + b -- [fermion, momentum'=\(p_{1}\)] e -- [fermion, momentum'=\(p_{2}\)] c, + e -- [gluon] f, + h -- [fermion] f -- [fermion] i; +}; +``` + +

Mixing Example

+```latex +\begin{tikzpicture} + \begin{feynman} + \vertex (a1) {\(\overline b\)}; + \vertex[right=1cm of a1] (a2); + \vertex[right=1cm of a2] (a3); + \vertex[right=1cm of a3] (a4) {\(b\)}; + \vertex[right=1cm of a4] (a5); + \vertex[right=2cm of a5] (a6) {\(u\)}; + + \vertex[below=2em of a1] (b1) {\(d\)}; + \vertex[right=1cm of b1] (b2); + \vertex[right=1cm of b2] (b3); + \vertex[right=1cm of b3] (b4) {\(\overline d\)}; + \vertex[below=2em of a6] (b5) {\(\overline d\)}; + + \vertex[above=of a6] (c1) {\(\overline u\)}; + \vertex[above=2em of c1] (c3) {\(d\)}; + \vertex at ($(c1)!0.5!(c3) - (1cm, 0)$) (c2); + + \diagram* { + {[edges=fermion] + (b1) -- (b2) -- (a2) -- (a1), + (b5) -- (b4) -- (b3) -- (a3) -- (a4) -- (a5) -- (a6), + }, + (a2) -- [boson, edge label=\(W\)] (a3), + (b2) -- [boson, edge label'=\(W\)] (b3), + + (c1) -- [fermion, out=180, in=-45] (c2) -- [fermion, out=45, in=180] (c3), + (a5) -- [boson, bend left, edge label=\(W^{-}\)] (c2), + }; + + \draw [decoration={brace}, decorate] (b1.south west) -- (a1.north west) + node [pos=0.5, left] {\(B^{0}\)}; + \draw [decoration={brace}, decorate] (c3.north east) -- (c1.south east) + node [pos=0.5, right] {\(\pi^{-}\)}; + \draw [decoration={brace}, decorate] (a6.north east) -- (b5.south east) + node [pos=0.5, right] {\(\pi^{+}\)}; + \end{feynman} +\end{tikzpicture} +``` + [ctan]: https://ctan.org/pkg/tikz-feynman [documentation]: http://www.jpellis.me/projects/tikz-feynman/tikz-feynman/tikz-feynman.pdf [projectpage]: http://www.jpellis.me/projects/tikz-feynman diff --git a/Master/texmf-dist/doc/latex/tikz-feynman/references.bib b/Master/texmf-dist/doc/latex/tikz-feynman/references.bib index 8c0998e7638..7e222288ef5 100644 --- a/Master/texmf-dist/doc/latex/tikz-feynman/references.bib +++ b/Master/texmf-dist/doc/latex/tikz-feynman/references.bib @@ -71,7 +71,7 @@ @article{eades1991, author = "Peter,Eades and Kozo,Sugiyama", title = "How to Draw a Directed Graph", - journal = "Journal of Information Processing ", + journal = "Journal of Information Processing", year = 1991, volume = 13, number = 4, @@ -110,3 +110,13 @@ doi = {10.1103/PhysRev.76.769}, url = {http://link.aps.org/doi/10.1103/PhysRev.76.769} } + +@article{tikz-feynman, + title = {Tik{Z}-{F}eynman: {F}eynman diagrams with {T}ik{Z}}, + author = {Ellis, Joshua}, + archivePrefix = {arXiv}, + year = 2016, + eprint = {1601.05437}, + primaryClass = {hep-ph}, + url = {http://arxiv.org/abs/1601.05437}, +} \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/tikz-feynman/tikz-feynman.pdf b/Master/texmf-dist/doc/latex/tikz-feynman/tikz-feynman.pdf index 6e55eedc4e1..8b80a306ea5 100644 Binary files a/Master/texmf-dist/doc/latex/tikz-feynman/tikz-feynman.pdf and b/Master/texmf-dist/doc/latex/tikz-feynman/tikz-feynman.pdf differ diff --git a/Master/texmf-dist/doc/latex/tikz-feynman/tikz-feynman.tex b/Master/texmf-dist/doc/latex/tikz-feynman/tikz-feynman.tex index 98173d79845..c4c96d61aaa 100644 --- a/Master/texmf-dist/doc/latex/tikz-feynman/tikz-feynman.tex +++ b/Master/texmf-dist/doc/latex/tikz-feynman/tikz-feynman.tex @@ -124,6 +124,8 @@ %% Page breaks can be avoided at particular places by using \\* \allowdisplaybreaks[2] +\DeclarePairedDelimiter{\angles}{\langle}{\rangle} + %% Tables %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -158,9 +160,12 @@ %% hyperref should be loaded first \usepackage[ backend=biber, - autocite=inline, style=phys, + autocite=inline, biblabel=brackets, + eprint=true, + doi=true, + isbn=true, ]{biblatex} \addbibresource{references.bib} @@ -351,7 +356,7 @@ directory}{}} the need of external programs. It builds upon the \tikzname{} package and leverages the graph placement algorithms from \tikzname{} in order to automate the placement of many vertices. \tikzfeynmanname{} still allows fine-tuned - placement of vertices so that even complex diagrams can still be generated with + placement of vertices so that even complex diagrams can be generated with ease. \end{abstract} \fi @@ -362,6 +367,13 @@ directory}{}} \tikzfeynmanname{} provides a new way to draw Feynman diagrams in \LaTeX{} that does not rely on external programs and uses a clear extensible syntax. +\ifarxiv\else +If you use \tikzfeynmanname{} in an academic setting, please cite: +\begin{quote} + \fullcite{tikz-feynman} +\end{quote} +\fi + Feynman diagrams provide a description of interactions of subatomic particles in a form that is clearer and more succinct than the corresponding mathematical description. They were introduced by \citeauthor{PhysRev.76.769} and first @@ -446,9 +458,10 @@ changes but they should not change the output otherwise\footnote{That is, with backwards compatible. Finally, changes in the first number (|1.0.0| to |2.0.0|) indicates a major change in the package and code written for |1.0.0| is not guaranteed to work on |2.0.0|. The intended version of this package to use -should be indicated in the preamble with |\tikzfeynmanset{compat=x.y.z}| so the -user may be informed of any discrepancy. If needed, earlier versions may be -downloaded from the \href{http://www.jpellis.me/projects/tikz-feynman}{project +should be indicated when the package is loaded with +|\usepackage[compat=x.y.z]{tikz-feynman}| so the user may be informed of any +discrepancyx. If needed, earlier versions may be downloaded from the +\href{http://www.jpellis.me/projects/tikz-feynman}{project page}\footnote{\url{http://www.jpellis.me/projects/tikz-feynman}}. \subsection*{Licence} @@ -485,9 +498,10 @@ This package is distributed in the hope that it will be useful, but After installing the package, the \tikzfeynmanname{} package can be loaded with |\usepackage{tikz-feynman}| in the preamble. It is recommend that you also -place |\tikzfeynmanset{compat=1.0.0}| in the preamble to ensure that a new -versions of \tikzfeynmanname{} do not produce any undesirable changes without -warning. +specify the version of \tikzfeynmanname{} to use with the optional package +argument |compat|: |\usepackage[compat=1.1.0]{tikz-feynman}|. This ensures that +any new versions of \tikzfeynmanname{} do not produce any undesirable changes +without warning. \subsection{A First Diagram} \label{subsec:a_first_diagram} @@ -552,6 +566,12 @@ we named vertices is completely different): }; \end{codeexample} +As a final remark, the calculation of where vertices should be placed is usually +done through an algorithm written in Lua. As a result, \LuaTeX{} is required in +order to make use of these algorithms. If \LuaTeX{} is not used, +\tikzfeynmanname{} will default to a more rudimentary algorithm and will warn +the user instead. + \subsection{Adding Styles} \label{subsec:adding_styles} @@ -582,6 +602,16 @@ be used as well: For a list of all the various styles that \tikzname{} provides, have a look at the \pgfmanual; it is extremely thorough and provides many usage examples. +\tikzfeynmanname{} also supports combining styles together which can be useful +in certain new models such as supersymmetry: +\begin{codeexample}[] +\feynmandiagram [horizontal=a to b] { + i1 [particle=\(\tilde W\)] -- [plain, boson] a -- [anti fermion] i2 [particle=\(q\)], + a -- [charged scalar, edge label=\(\tilde q\)] b, + f1 [particle=\(\tilde g\)] -- [plain, gluon] b -- [fermion] [particle=\(q\)], +}; +\end{codeexample} + \subsection{When the Algorithm Isn't Enough} \label{subsec:when_the_algorithm_isnt_enough} @@ -870,14 +900,14 @@ which are particularly useful to \tikzfeynmanname{} are documented and these are prefixed with |/tikz| or |/graph drawing|. Please refer to the \pgfmanual{} for a more in thorough documentation of the \tikzname{} keys. -If you wish to modify the default \tikzfeynmanname{} styles, the best way to do -this is to use \meta{key}|/.append style={...}|. For example, to make every -diagram red except for small diagrams which remain black, one would add to the -preamble: + +\tikzfeynmanname{} provides many |every |\meta{key} which allow every instance +of \meta{key} to be modified. For example, to make every diagram red except for +small diagrams which should be blue, then one would add to the preamble: \begin{codeexample}[execute code=false] \tikzfeynmanset{ - every diagram/.append style={red}, - small/.append style={black}, + every diagram={red}, + every small={blue}, } \end{codeexample} If you are completely unhappy with a particular inbuilt style, you can define @@ -888,17 +918,11 @@ following example: myblob/.style={ shape=circle, draw=blue, - fill=red} + fill=red, + } } \end{codeexample} -All the |every |\meta{key} keys documented here are initially empty, so it is up -to you whether you use \meta{key}|/.append style| or \meta{key}|/.style|. The -predefined style keys (such as |small|, |particle|, |fermion|, etc.) should -\emph{never} by modified with \meta{key}|/.style| as that will overwrite the -style entirely. Instead, modify the appropriate |every |\meta{key} if available -or use \meta{key}|/.append style|. - All the keys defined here are made available inside the |{feynman}| environment and inside |\feynmandiagram|; but if you wish to access them outside of this (say, in a regular |{tikzpicture}| environment), you will need to specify the @@ -914,14 +938,14 @@ full path with the leading |/tikzfeynman|. environment. \end{keylist} -\begin{stylekey}{/tikzfeynman/every feynman} +\begin{key}{/tikzfeynman/every feynman=\meta{styles}} Set of styles which are applied to every |{feynman}| environments (and consequently, every apply inside all |\feynmandiagram| too). The style also applies to regular \tikzname{} commands used inside the |{feynman}| environment. \begin{codeexample}[] -\tikzfeynmanset{every feynman/.append style={red}} +\tikzfeynmanset{every feynman={red}} \begin{tikzpicture} \node at (0, 0.5) {This is not red}; \begin{feynman} @@ -929,7 +953,7 @@ full path with the leading |/tikzfeynman|. \end{feynman} \end{tikzpicture} \end{codeexample} -\end{stylekey} +\end{key} \begin{stylekey}{/tikzfeynman/inline=\meta{node}} A style used to display a Feynman diagram inline (typically in an equation), @@ -1022,19 +1046,19 @@ full path with the leading |/tikzfeynman|. \subsubsection{Diagram Keys} \label{subsubsec:diagram_keys} -\begin{stylekey}{/tikzfeynman/every diagram} +\begin{key}{/tikzfeynman/every diagram=\meta{styles}} Set of styles which are applied to every diagram; that is, to everything inside the |\feynmandiagram|, |\diagram| and |\diagram*| commands but not the general |{feynman}| environment (see \cref{subsubsec:feynman_keys} for that). \begin{codeexample}[] -\tikzfeynmanset{every diagram/.append style={red}} +\tikzfeynmanset{every diagram={red}} \feynmandiagram [small, horizontal=d to b] { a -- [fermion] b -- [fermion] c, b -- [boson] d, }; \end{codeexample} -\end{stylekey} +\end{key} \begin{keylist}{% /tikzfeynman/small, @@ -1068,7 +1092,10 @@ There are several algorithms which are available to place the vertices which are all provided within the |graph drawing| library from \tikzname. Below are listed a few of these layouts which are more relevant for drawing Feynman diagrams. For a more complete description of how these algorithm work, please -refer to the \pgfmanual{}. +refer to the \pgfmanual{}. Please note that most graph drawing algorithms are +implemented in Lua and thus require \LuaTeX{} in order to work. If \LuaTeX{} is +not used, \tikzfeynmanname{} will default to a more rudimentary algorithm and +will warn the user instead. \begin{key}{/graph drawing/spring layout=\opt{\meta{string}}} Uses Hu's spring layout \cite{hu2005} as implemented by Pohlmann @@ -1162,7 +1189,7 @@ refer to the \pgfmanual{}. that is, a null shape with no size or width. \end{key} -\begin{stylekey}{/tikzfeynman/every \meta{vertex shape} (initially \normalfont empty)} +\begin{key}{/tikzfeynman/every \meta{vertex shape}=\meta{styles}} The style of specific vertices can be modified by changing the appropriate |every |\meta{vertex shape} key. For example, in order to change the style of every |dot|-styled vertex, you can modify the |every dot| key, or to modify @@ -1170,16 +1197,16 @@ refer to the \pgfmanual{}. \begin{codeexample}[] \tikzfeynmanset{ - every vertex/.style={red, dot}, - every particle/.style={blue}, - every blob/.style={draw=green!40!black, pattern color=green!40!black}, + every vertex={red, dot}, + every particle={blue}, + every blob={draw=green!40!black, pattern color=green!40!black}, } \feynmandiagram [horizontal=a to b] { a [particle={\(\gamma, Z\)}] -- [boson] b [blob], c -- [fermion] b -- [fermion] d, }; \end{codeexample} -\end{stylekey} +\end{key} \begin{key}{/tikzfeynman/dot} Modifies the vertex so that it has a small filled circle. @@ -1258,32 +1285,47 @@ refer to the \pgfmanual{}. Just like with the various vertex keys, each edge type has a corresponding |every |\meta{edge type}; however, due to the existence of very similar keys such as |scalar|, |charged scalar| and |anti charged scalar|, more specific keys -inherit styles from less specific ones. For example, styles in -|every charged scalar| will apply to |charged scalar| and |anti charged scalar| -but not |scalar| whilst styles in |every scalar| will apply to all three. +inherit styles from less specific ones. For example, styles in |every scalar| +will apply to |charged scalar| and |anti charged scalar|. + +The edge styles do not override each other and instead stack. This means that +an edge styled with both |boson| and |fermion| will consist of a straight line +with a wavy line on top and an error. If not styles are provided, then a simple +solid line is drawn. -\begin{stylekey}{/tikzfeynman/every edge (initially \normalfont empty)} +\begin{key}{/tikzfeynman/every edge=\meta{styles}} A style to apply to every edge initially. -\end{stylekey} +\end{key} -\begin{stylekey}{/tikzfeynman/every \meta{edge style} (initially \normalfont empty)} +\begin{stylekey}{/tikzfeynman/every \meta{edge style}=\meta{styles}} The style of specific edges can be modified by changing the appropriate |every |\meta{edge style} key. For example, in order to make a global change to every |boson|, you can modify the |every boson| key. \begin{codeexample}[] \tikzfeynmanset{ - every edge/.style={fermion}, - every boson/.style={red}, - every photon/.style={blue}, + every edge={green}, + every boson={red}, + every photon={blue}, } \feynmandiagram [small] { a [particle=\(a\)] -- [boson] o -- [photon] b [particle=\(b\)], - f1 [particle=\(c\)] -- o -- f2 [particle=\(d\)], + f1 [particle=\(c\)] -- [fermion] o -- [scalar] f2 [particle=\(d\)], }; \end{codeexample} \end{stylekey} +\begin{key}{/tikzfeynman/plain} + Draws a simple solid line. This style is identical to the default style + applied if no other style is used, but is provided so that it can be combined + with other styles. + +\begin{codeexample}[] +\feynmandiagram [horizontal=a to b] {a -- [plain] b}; +\feynmandiagram [horizontal=a to b] {a -- [plain, gluon] b}; +\end{codeexample} +\end{key} + \begin{key}{/tikzfeynman/boson} Draws a sinusoidal line to denote a boson. -- cgit v1.2.3