原始问题tikz-feynman
:我在编译使用软件包生成的费曼图时遇到了很大问题lualatex
。为了避免我草率,我从这里复制了示例很好的答案。
\documentclass[tikz, border=10pt]{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\diagram [vertical'=a to b, edges={red}] {
i1 -- [fermion] a -- [fermion] f1,
a -- [photon] b,
i2 -- [fermion] b -- [fermion] f2,
};
\vertex [above right=of f1] (k1);
\vertex [below right=of f1] (p1);
\vertex [below right=of f2] (k2);
\vertex [above right=of f2] (p2);
\diagram* {
(f1) -- [fermion] (k1),
(f1) -- [photon] (p1),
(f2) -- [fermion] (k2),
(f2) -- [photon] (p2),
};
\end{feynman}
\end{tikzpicture}
\end{document}
鉴于这是公认的答案,可以安全地假设曾经有一段时间可以编译它。但是,当我在更新的 TeXLive2018 发行版上使用 编译它时lualatex
,我收到错误消息
! Package pgf Error: Graph drawing library 'circular' not found.
额外的信息:这个问题被我自己标记为重复问题这个问题。事实上,如果使用接受的答案为了解决这个问题,人们可能会得到
\documentclass[tikz, border=10pt]{standalone}
\usepackage{luacode}
\usepackage{tikz}
\usetikzlibrary{graphdrawing}
\begin{luacode*}
function pgf_lookup_and_require(name)
local sep = package.config:sub(1,1)
local function lookup(name)
local sub = name:gsub('%.',sep)
if kpse.find_file(sub, 'lua') then
require(name)
elseif kpse.find_file(sub, 'clua') then
collectgarbage('stop')
require(name)
collectgarbage('restart')
else
return false
end
return true
end
return
lookup('pgf.gd.' .. name .. '.library') or
lookup('pgf.gd.' .. name) or
lookup(name .. '.library') or
lookup(name)
end
\end{luacode*}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\diagram [vertical'=a to b, edges={red}] {
i1 -- [fermion] a -- [fermion] f1,
a -- [photon] b,
i2 -- [fermion] b -- [fermion] f2,
};
\vertex [above right=of f1] (k1);
\vertex [below right=of f1] (p1);
\vertex [below right=of f2] (k2);
\vertex [above right=of f2] (p2);
\diagram* {
(f1) -- [fermion] (k1),
(f1) -- [photon] (p1),
(f2) -- [fermion] (k2),
(f2) -- [photon] (p2),
};
\end{feynman}
\end{tikzpicture}
\end{document}
好消息是错误已经消失。然而,输出看起来真的与原始答案的输出不同
右上角的光子顶点向左移动了。当我将我的答案标记为重复时,我没有仔细检查输出是否正确。现在我检查了一下,发现使用 Henri 的修复方法生成的输出产生了意想不到的结果。因此,我想重新提出这个问题。
答案1
随着最新的master
在我的 TikZ/PGF 开发存储库的分支中,它可以很好地编译,但由于 Lua 5.3 中的新功能,一些图表可能会出现镜像。解决方法但是 TikZ 不提供向后兼容性。
\documentclass[tikz, border=10pt]{standalone}
\usepackage{luacode}
\usepackage{tikz}
\usetikzlibrary{graphdrawing}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\diagram [vertical'=a to b, edges={red}] {
i1 -- [fermion] a -- [fermion] f1,
a -- [photon] b,
i2 -- [fermion] b -- [fermion] f2,
};
\vertex [above right=of f1] (k1);
\vertex [below right=of f1] (p1);
\vertex [below right=of f2] (k2);
\vertex [above right=of f2] (p2);
\diagram* {
(f1) -- [fermion] (k1),
(f1) -- [photon] (p1),
(f2) -- [fermion] (k2),
(f2) -- [photon] (p2),
};
\end{feynman}
\end{tikzpicture}
\end{document}