更新了 lualatex 与 tikz-feynman

更新了 lualatex 与 tikz-feynman

原始问题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}

在此处输入图片描述

相关内容