From d0454fbe3c966efaf3504805b7bb8c1f25d5e1a7 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Wed, 20 Jan 2016 22:51:24 +0000
Subject: tikz-feynman (20jan16)

git-svn-id: svn://tug.org/texlive/trunk@39441 c570f23f-e606-0410-a88d-b1316a301751
---
 .../latex/tikz-feynman/tikzlibraryfeynman.code.tex | 337 +++++++++++++++++++++
 1 file changed, 337 insertions(+)
 create mode 100644 Master/texmf-dist/tex/latex/tikz-feynman/tikzlibraryfeynman.code.tex

(limited to 'Master/texmf-dist/tex/latex/tikz-feynman/tikzlibraryfeynman.code.tex')

diff --git a/Master/texmf-dist/tex/latex/tikz-feynman/tikzlibraryfeynman.code.tex b/Master/texmf-dist/tex/latex/tikz-feynman/tikzlibraryfeynman.code.tex
new file mode 100644
index 00000000000..380f7125096
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tikz-feynman/tikzlibraryfeynman.code.tex
@@ -0,0 +1,337 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% TikZ-Feynman
+% Feynman Diagrams with TikZ
+% Copyright (C) 2015  Joshua Ellis
+%
+%
+% This work 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.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Joshua Ellis.
+%
+% This program is distributed in the hope that it will be useful, but WITHOUT
+% ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+% FOR A PARTICULAR PURPOSE.  See the LaTeX Project Public License for more
+% details.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Pre-requisites
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usetikzlibrary{
+  arrows.meta,
+  calc,
+  decorations,
+  decorations.markings,
+  decorations.pathmorphing,
+  decorations.pathreplacing,
+  graphs,
+  patterns,
+  positioning,
+  shapes.geometric,
+}
+\ifluatex
+  \usetikzlibrary{
+    graphdrawing
+  }
+  \usegdlibrary{
+    circular,
+    force,
+    layered,
+    trees
+  }
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Function definitions
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Miscellaneous functions
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tikzfeynman@empty{}
+
+%% Key Manager
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Setup the tikz-feynman key family
+\pgfkeys{/tikzfeynman/.is family}
+
+%% |\tikzfeynmanset| allows keys that belong with tikz-feynman to be easily set.
+\def\tikzfeynmanset{\pgfqkeys{/tikzfeynman}}
+
+%% Luatex Waring
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Check if we are using luatex
+\newif\iftikzfeynman@warn@luatex%
+\tikzfeynmanset{
+  warn luatex/.is if=tikzfeynman@warn@luatex,
+  warn luatex=true,
+}
+
+\AtBeginDocument{
+  \ifluatex\else
+    \iftikzfeynman@warn@luatex
+      \PackageWarning{tikz-feynman}{LuaTeX is required if you wish to have vertices automatically placed.  You can disable this warning by setting /tikzfeynman/warn luatex=false}
+    \fi
+  \fi
+}
+
+%% Version check
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Check which version is expected and which is installed
+\def\tikzfeynman@compat@parse#1.#2.#3\pgfeov{
+  \edef\tikzfeynman@compat@major{#1}
+  \edef\tikzfeynman@compat@minor{#2}
+  \edef\tikzfeynman@compat@patch{#3}
+  \edef\tikzfeynman@compat{#1.#2.#3}
+}
+\let\tikzfeynman@compat=\tikzfeynman@empty
+\pgfkeyslet{/tikzfeynman/compat/.@cmd}{\tikzfeynman@compat@parse}
+
+\AtBeginDocument{
+  \ifx\tikzfeynman@version\tikzfeynman@compat\else
+    \ifx\tikzfeynman@compat\tikzfeynman@empty
+      \PackageWarning{tikz-feynman}{Consider adding \string\tikzfeynmanset{compat=\tikzfeynman@version} to your preamble so that you can be warned if TikZ-Feynman changes.}
+    \else
+      \ifx\tikzfeynman@compat@major\tikzfeynman@version@major
+        \ifx\tikzfeynman@compat@minor\tikzfeynman@version@minor
+          \ifx\tikzfeynman@compat@patch\tikzfeynman@version@patch\else
+            \PackageInfo{tikz-feynman}{The preamble requested version \tikzfeynman@compat, but the system version is \tikzfeynman@version.  This should cause no issue.}
+          \fi
+        \else
+          \PackageWarning{tikz-feynman}{The preamble requested version \tikzfeynman@compat, but the system version is \tikzfeynman@version.  This may change some diagrams.}
+        \fi
+      \else
+        \PackageError{tikz-feynman}{The preamble requested version \tikzfeynman@compat, but the system version is \tikzfeynman@version.  They are most likely incompatible.  Please download the appropriate version at github.com/JP-Ellis/tikz-feynman.}
+      \fi
+    \fi
+  \fi
+}
+
+%% Override Lua code if necessary
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tikzfeynman@apply@patch{
+  \directlua{require("tikzfeynman.patch.lua")}
+}
+
+%% Version 3.0.0, 3.0.1 and 3.0.1a need to be patched.
+\ifluatex
+  \def\tikzfeynman@temp{3.0.0}
+  \ifx\pgfversion\tikzfeynman@temp
+    \tikzfeynman@apply@patch
+  \else
+    \def\tikzfeynman@temp{3.0.1}
+    \ifx\pgfversion\tikzfeynman@temp
+      \tikzfeynman@apply@patch
+    \else
+      \def\tikzfeynman@temp{3.0.1a}
+      \ifx\pgfversion\tikzfeynman@temp
+        \tikzfeynman@apply@patch
+      \fi
+    \fi
+  \fi
+\fi
+
+%% Feynman Environment
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% Provide `\begin{feynman} ... \end{feynman}` within TikZ pictures.
+\tikzaddtikzonlycommandshortcutlet\feynman\tikzfeynman@environment@feynman
+\tikzaddtikzonlycommandshortcutlet\endfeynman\endtikzfeynman@environment@feynman
+
+%% \begin{feynman}...\end{feynman}
+\def\tikzfeynman@environment@feynman{%
+  \pgfutil@ifnextchar[{\tikzfeynman@environment@feynman@opt}
+  {\tikzfeynman@environment@feynman@opt[]}}
+
+\def\tikzfeynman@environment@feynman@opt[#1]{%
+  \begingroup
+  %% Local overrides
+  \let\tikz@@scan@fig=\tikzfeynman@scan@fig
+  \let\tikzfeynman@orig@graph=\graph
+  %% Local commands
+  \let\vertex=\tikzfeynman@commands@vertex
+  \let\diagram=\tikzfeynman@commands@diagram
+  \let\graph=\tikzfeynman@commands@graph
+  %% Opening hooks
+  \scope
+  \tikz@lib@ignore@sizetrue
+  \tikzfeynman@tikz@search@tikzfeynman
+  \pgfkeys{
+    /tikzfeynman/every feynman@@,
+    /tikzfeynman/every feynman,
+    #1}
+  \pgfkeysvalueof{/tikzfeynman/execute at begin feynman@@}%
+  \pgfkeysvalueof{/tikzfeynman/execute at begin feynman}%
+}
+
+\def\endtikzfeynman@environment@feynman{%
+  %% Closing hooks
+  \pgfkeysvalueof{/tikzfeynman/execute at end feynman}%
+  \pgfkeysvalueof{/tikzfeynman/execute at end feynman@@}%
+  \endscope
+  \endgroup
+}
+
+%% \feynmandiagram
+\def\feynmandiagram{%
+  \pgfutil@ifnextchar[{\feynmandiagram@opt}
+  {\feynmandiagram@opt[]}}
+\def\feynmandiagram@opt[#1]{%
+  \pgfutil@ifnextchar[{\feynmandiagram@opt@opt[#1]}
+  {\feynmandiagram@opt@opt[#1][#1]}}
+\def\feynmandiagram@opt@opt[#1][#2]{%
+  \tikz [/tikzfeynman/.cd, .search also={/tikz}, #1]
+  \graph [/tikzfeynman/every diagram@@, /tikzfeynman/every diagram, /tikz/graphs/spring layout, #2]}
+
+%% Allow empty nodes
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\iftikzfeynmanallowemptynode
+\newif\iftikzfeynmanvertex
+\def\tikzfeynman@scan@fig{%
+  \pgfutil@ifnextchar a{\tikz@fig@scan@at}
+  {\pgfutil@ifnextchar({\tikz@fig@scan@name}
+    {\pgfutil@ifnextchar[{\tikz@fig@scan@options}%
+      {\pgfutil@ifnextchar\bgroup{\tikz@fig@main}%
+      {\iftikzfeynmanvertex%
+         \tikzset{
+           /tikzfeynman/every vertex@@,
+           /tikzfeynman/every vertex}%
+         \iftikzfeynmanallowemptynode%
+         \else%
+           \tikzset{/tikzfeynman/particle}%
+         \fi%
+       \fi%
+       \tikz@fig@main{}}}}}}%}}
+
+%% Include /tikzfeynman in the search path
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tikzfeynman@tikz@search@tikzfeynman{%
+  \pgfkeys{/tikz/.unknown/.code=%
+    \let\tikz@key\pgfkeyscurrentname%
+    %% Is it a tikzfeynman key?
+    \pgfkeys{/tikzfeynman/\tikz@key/.try={##1}}%
+    \ifpgfkeyssuccess%
+    \else%
+      %% Is it a pgf key?
+      \pgfkeys{/pgf/\tikz@key/.try={##1}}%
+      \ifpgfkeyssuccess%
+      \else%
+        \expandafter\pgfutil@in@\expandafter!\expandafter{\tikz@key}%
+        \ifpgfutil@in@%
+          %% this is a color!
+          \expandafter\tikz@addoption\expandafter{\expandafter\tikz@compat@color@set\expandafter{\tikz@key}}%
+          \edef\tikz@textcolor{\tikz@key}%
+        \else%
+          \pgfutil@doifcolorelse{\tikz@key}
+          {%
+            \expandafter\tikz@addoption\expandafter{\expandafter\tikz@compat@color@set\expandafter{\tikz@key}}%
+            \edef\tikz@textcolor{\tikz@key}%
+          }%
+          {%
+            %% Ok, second chance: This might be an arrow specification:
+            \expandafter\pgfutil@in@\expandafter-\expandafter{\tikz@key}%
+            \ifpgfutil@in@%
+              %% Ah, an arrow spec!
+              \expandafter\tikz@processarrows\expandafter{\tikz@key}%
+            \else%
+              %% Ok, third chance: A shape!
+              \expandafter\ifx\csname pgf@sh@s@\tikz@key\endcsname\relax%
+                \pgfkeys{/errors/unknown key/.expand
+                once=\expandafter{\expandafter/\expandafter t\expandafter
+                i\expandafter k\expandafter z\expandafter/\tikz@key}{##1}}%
+              \else%
+                \edef\tikz@shape{\tikz@key}%
+              \fi%
+            \fi%
+          }%
+        \fi%
+      \fi%
+    \fi%
+  }
+}
+
+
+%% Vertex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Adapted from |\coordinate| code
+\def\tikzfeynman@commands@vertex{
+  \path \pgfextra{\tikzfeynmanallowemptynodetrue}
+        \pgfextra{\tikzfeynmanvertextrue}
+        node}
+
+%% Diagram
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tikzfeynman@commands@diagram{\@ifstar
+  \tikzfeynman@commands@diagram@star%
+  \tikzfeynman@commands@diagram@nostar}
+
+\def\tikzfeynman@commands@diagram@nostar{%
+  \pgfutil@ifnextchar[{\tikzfeynman@commands@diagram@nostar@opt}
+  {\tikzfeynman@commands@diagram@nostar@opt[]}}
+\def\tikzfeynman@commands@diagram@nostar@opt[#1]{%
+  \tikzfeynman@orig@graph [/tikzfeynman/every diagram@@, /tikzfeynman/every diagram, /tikz/graphs/spring layout, #1]}
+
+\def\tikzfeynman@commands@diagram@star{%
+  \pgfutil@ifnextchar[{\tikzfeynman@commands@diagram@star@opt}
+  {\tikzfeynman@commands@diagram@star@opt[]}}
+\def\tikzfeynman@commands@diagram@star@opt[#1]{%
+  \tikzfeynman@orig@graph [/tikzfeynman/every diagram@@, /tikzfeynman/every diagram, #1]}
+
+%% Graph
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tikzfeynman@commands@graph{%
+  \pgfutil@ifnextchar[{\tikzfeynman@commands@graph@opt}
+  {\tikzfeynman@commands@graph@opt[]}}
+\def\tikzfeynman@commands@graph@opt[#1]{%
+  \PackageWarning{tikz-feynman}{It is not recommended to use \string\graph.  Use \string\diagram\space or \string\diagram* instead.}
+  \tikzfeynman@orig@graph [/tikzfeynman/every diagram@@, /tikzfeynman/every diagram, #1]}
+
+%% Optional argument in style key
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tikzfeynman@key@opt#1[#2]#3\pgfeov{%
+  \tikzfeynmanset{#1={[#2]#3}}}
+
+%% Insertion
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tikzfeynman@insertion{%
+  \pgfutil@ifnextchar[{\tikzfeynman@key@opt{insertion@@}}
+  {\tikzfeynman@key@opt{insertion@@}[]}}
+\pgfkeyslet{/tikzfeynman/insertion/.@cmd}{\tikzfeynman@insertion}
+
+%% Momentum
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\def\tikzfeynman@momentum@std{%
+  \pgfutil@ifnextchar[{\tikzfeynman@key@opt{momentum@@}}
+  {\tikzfeynman@key@opt{momentum@@}[]}}
+\pgfkeyslet{/tikzfeynman/momentum/.@cmd}{\tikzfeynman@momentum@std}
+
+\def\tikzfeynman@momentum@stdp{%
+  \pgfutil@ifnextchar[{\tikzfeynman@key@opt{momentum'@@}}
+  {\tikzfeynman@key@opt{momentum'@@}[]}}
+\pgfkeyslet{/tikzfeynman/momentum'/.@cmd}{\tikzfeynman@momentum@stdp}
+
+\def\tikzfeynman@momentum@stdr{%
+  \pgfutil@ifnextchar[{\tikzfeynman@key@opt{reversed momentum@@}}
+  {\tikzfeynman@key@opt{reversed momentum@@}[]}}
+\pgfkeyslet{/tikzfeynman/reversed momentum/.@cmd}{\tikzfeynman@momentum@stdr}
+\pgfkeyslet{/tikzfeynman/rmomentum/.@cmd}{\tikzfeynman@momentum@stdr}
+
+\def\tikzfeynman@momentum@stdrp{%
+  \pgfutil@ifnextchar[{\tikzfeynman@key@opt{reversed momentum'@@}}
+  {\tikzfeynman@key@opt{reversed momentum'@@}[]}}
+\pgfkeyslet{/tikzfeynman/reversed momentum'/.@cmd}{\tikzfeynman@momentum@stdrp}
+\pgfkeyslet{/tikzfeynman/rmomentum'/.@cmd}{\tikzfeynman@momentum@stdrp}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Styles
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\input tikzfeynman.keys.code.tex
+
+\endinput
\ No newline at end of file
-- 
cgit v1.2.3

