TeX - LaTeX Asked on November 1, 2021
How can I change the edges’ arrow style? For example with a fermion line:
RequirePackage{luatex85}
documentclass[tikz]{standalone}
usepackage{tikz-feynman}
begin{document}
tikzfeynmanset{ fermion/.style = {???} }
begin{tikzpicture}
begin{feynman}
vertex (a);
vertex [right of a] (b);
diagram*{ (a) -- [fermion](b) };
end{feynman}
end{tikzpicture}
end{document}
I've changed a little of Torbjørn T.'s answer to include antiparticles, as they seem to be built upon with reversed arrow
instead of with arrow
(please correct me if I'm mistaken).
documentclass[review]{article}
usepackage{tikz-feynman}
usetikzlibrary{positioning,arrows.meta}
tikzfeynmanset{ with arrow/.style = {
decoration={
markings,
mark=at position 0.5
with {arrow[xshift=2mm]{Stealth[red,width=3mm,length=4mm]}}
},
postaction=decorate},
with reversed arrow/.style = {
decoration={
markings,
mark=at position 0.5
with {arrowreversed[xshift=-2mm]{Stealth[red,width=3mm,length=4mm]}}
},
postaction=decorate}
}
begin{document}
begin{tikzpicture}
begin{feynman}
vertex (a);
vertex [right=of a] (b);
diagram*{ (a) -- [fermion](b) };
end{feynman}
end{tikzpicture}
begin{tikzpicture}
begin{feynman}
vertex (a);
vertex [right=of a] (b);
diagram*{ (a) -- [charged boson](b) };
end{feynman}
end{tikzpicture}
begin{tikzpicture}
begin{feynman}
vertex (a);
vertex [right=of a] (b);
diagram*{ (a) -- [anti fermion](b) };
end{feynman}
end{tikzpicture}
begin{tikzpicture}
begin{feynman}
vertex (a);
vertex [right=of a] (b);
diagram*{ (a) -- [anti charged boson](b) };
end{feynman}
end{tikzpicture}
end{document}
This yields the following diagrams:
Answered by Níckolas Alves on November 1, 2021
Internally, TikZ-Feynman (CTAN) does not use 'arrows' in the sense of the 'arrows' library from TikZ; instead, it decorates the path using a triangle:
/tikz/decoration={
markings,
mark=at position 0.5 with {
node[
transform shape,
xshift=-0.5mm,
fill,
inner sep=〈some distance〉,
draw=none,
isosceles triangle
] { };
},
},
/tikz/decorate=true,
In particular, you can change the shape from isosceles triangle
to whatever you want. Alternatively, it is also possible to use the arrow
command within the decoration (refer to the TikZ manual for the exact details).
I have illustrated two cases below.
RequirePackage{luatex85}
documentclass[tikz, border=10pt]{standalone}
usepackage[compat=1.1.0]{tikz-feynman}
tikzfeynmanset{
fermion1/.style={
/tikz/postaction={
/tikz/decoration={
markings,
mark=at position 0.5 with {
node[
transform shape,
xshift=-0.5mm,
fill,
dart tail angle=100,
inner sep=1.3pt,
draw=none,
dart
] { };
},
},
/tikz/decorate=true,
},
},
fermion2/.style={
/tikz/postaction={
/tikz/decoration={
markings,
mark=at position 0.5 with {
arrow{>[length=6pt, width=5pt]};
},
},
/tikz/decorate=true,
},
},
}
begin{document}
feynmandiagram [horizontal=a to b] {
a -- [fermion1] b -- [fermion2] {c, d},
};
end{document}
Since you probably want to change the fermion style completely, then I would recommend creating a new fermion style instead of overwriting the default one. Having said that, have a look at Torbjørn T.'s answer as he is going even more general than I am in this answer! He is modifying one of the underlying styles in TikZ-Feynman (the with arrow
style) so that the arrows are changed for all particles.
Answered by JP-Ellis on November 1, 2021
The arrow tip in the middle of the lines are placed using a decoration from the decoration.markings
library. I think you need to specify a new decoration altogether, for example:
documentclass{article}
usepackage{tikz-feynman}
usetikzlibrary{positioning,arrows.meta}
tikzfeynmanset{ fermion/.style = {
decoration={
markings,
mark=at position 0.5
with {arrow[xshift=2mm]{Stealth[red,width=3mm,length=4mm]}}
},
postaction=decorate}
}
begin{document}
begin{tikzpicture}
begin{feynman}
vertex (a);
vertex [right=of a] (b);
diagram*{ (a) -- [fermion](b) };
end{feynman}
end{tikzpicture}
end{document}
More generally, fermion
and other styles with an arrow in the middle use a style called with arrow
, that is defined by tikz-feynman
. If you want the same arrow tip for all of these, you could modify that style instead. Not sure if JP-Ellis, the package author, intended for people to do that though.
documentclass[review]{article}
usepackage{tikz-feynman}
usetikzlibrary{positioning,arrows.meta}
tikzfeynmanset{ with arrow/.style = {
decoration={
markings,
mark=at position 0.5
with {arrow[xshift=2mm]{Stealth[red,width=3mm,length=4mm]}}
},
postaction=decorate}
}
begin{document}
begin{tikzpicture}
begin{feynman}
vertex (a);
vertex [right=of a] (b);
diagram*{ (a) -- [fermion](b) };
end{feynman}
end{tikzpicture}
begin{tikzpicture}
begin{feynman}
vertex (a);
vertex [right=of a] (b);
diagram*{ (a) -- [charged boson](b) };
end{feynman}
end{tikzpicture}
end{document}
Answered by Torbjørn T. on November 1, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP