tikz-feynman 图表在独立文档中被截断

tikz-feynman 图表在独立文档中被截断

当我使用该tikz-feynman包绘制费曼图时,PDF 输出非常奇怪。它看起来像被剪切了。我认为这是因为 Tikz 图片的真正中心点并不是它看起来的那样。

\documentclass{standalone} 

\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}

\begin{tikzpicture}[auto]
    \begin{feynman}
        \feynmandiagram [horizontal=a to b] {
            i1[particle=\(\phi\)] -- [scalar, edge label=\(p_2\)] a -- [anti fermion,edge label=\(p_1\)] i2[particle=$\psi(\lambda_1)$],
            a -- [fermion,momentum=\(p_1+p_2\)] b,
            f1[particle=\(\phi\)] -- [scalar, edge label=\(q_1\)] b -- [fermion,edge label=\(q_2\)] f2[particle=\(\psi(\lambda^\prime_1)\)]
};  
    \end{feynman}
\end{tikzpicture}

\end{document}

在此处输入图片描述

我尝试更改设置standalone,例如

\documentclass[tikz,border=20pt]{standalone} 

这次虽然显示了整个图表,但是它仍然没有居中? 在此处输入图片描述

有没有什么办法可以解决这个问题?

答案1

删除tikzpicture和环境(带有和的feynman内容)即可解决问题。或者,您可以保留环境,然后更改为简单环境以获得所需的输出。以下代码显示了这两种方法。\begin{...}\end{...}\feynmandiagram\diagram

%!TeX program = LuaLaTeX
\documentclass{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}

% Both of these methods produce the same output
% Choose the one you like better

% --------------------------------------------------------------
% Method 1
\feynmandiagram [horizontal=a to b] {
  i1[particle=\(\phi\)] -- [scalar, edge label=\(p_2\)] a -- [anti fermion,edge label=\(p_1\)] i2[particle=$\psi(\lambda_1)$],
  a -- [fermion,momentum=\(p_1+p_2\)] b,
  f1[particle=\(\phi\)] -- [scalar, edge label=\(q_1\)] b -- [fermion, edge label=\(q_2\)] f2[particle=\(\psi(\lambda^\prime_1)\)]
};

% --------------------------------------------------------------
% Method 2
\begin{tikzpicture}
\begin{feynman}
  \diagram [horizontal=a to b] {
    i1[particle=\(\phi\)] -- [scalar, edge label=\(p_2\)] a -- [anti fermion,edge label=\(p_1\)] i2[particle=$\psi(\lambda_1)$],
    a -- [fermion,momentum=\(p_1+p_2\)] b,
    f1[particle=\(\phi\)] -- [scalar, edge label=\(q_1\)] b -- [fermion,edge label=\(q_2\)] f2[particle=\(\psi(\lambda^\prime_1)\)]
  };
\end{feynman}
\end{tikzpicture}

\end{document}

您现在可以看到输出适合单个独立页面:

费曼图经过修正后,整个图都显示在页面上

那么,为什么你的原始代码没有按预期工作?原来,宏的定义\feynmandiagram会同时创建tikzpicturefeynman环境。但是,由于你\feynmandiagram已经在这些环境中,因此 LaTeX 本质上是在里面放置了一组tikzpicture和环境feynman另一组 tikzpicturefeynman图表。这可能解释了为什么你看到图表的中心不在它看起来的位置——那是中心点tikzpicture,但独立包根据框大小来塑造页面tikzpicture。

相关内容