Properly align vertex labels (decorated with brace) of different lengths in tikz-feynman

tikz-feynman

In the following (incomplete) Feynman diagram,

\documentclass{minimal}

\usepackage{tikz-feynman}

\begin{document}

  \begin{tikzpicture}
    \begin{feynman}
      \vertex (i1) {$b$};
      \vertex [right=of i1] (m1) ;
      \vertex [right=of m1] (o1) {$c$};
      \vertex [below=2em of i1] (i2) {$\bar u, \bar d$};
      \vertex [right=of i2] (m2) ;
      \vertex [right=of m2] (o2) {$\bar u, \bar d$};

      \diagram* {
        (i1) -- [fermion] (m1),
        (m1) -- [fermion] (o1),
        (o2) -- [fermion] (m2),
        (m2) -- [fermion] (i2)
      };
      
      % annotations
      \draw [decoration={brace}, decorate] (i2.south west) -- (i1.north west)
        node [pos=0.5, left] {$B^-, \bar B^{0}$};
    \end{feynman}
  \end{tikzpicture}

\end{document}

the bracket is drawn at an angle

enter image description here

because the labels have different lengths. Is there an easy way to fix this?

Best Answer

By use of the orthogonal coordinate (i2.west |- i1.north) for top side of brace:

\documentclass[border=3.141592]{standalone}
\usepackage{tikz-feynman}

\begin{document}
    \begin{tikzpicture}
\begin{feynman}
  \vertex (i1) {$b$};
  \vertex [right=of i1] (m1) ;
  \vertex [right=of m1] (o1) {$c$};
  \vertex [below=2em of i1] (i2) {$\bar{u}, \bar d$};
  \vertex [right=of i2] (m2) ;
  \vertex [right=of m2] (o2) {$\bar{u}, \bar{d}$};

  \diagram* {
    (i1) -- [fermion] (m1),
    (m1) -- [fermion] (o1),
    (o2) -- [fermion] (m2),
    (m2) -- [fermion] (i2)
            };
% annotations
  \draw [decoration={brace}, decorate] 
    (i2.south west) -- node [left] {$B^-, \bar{B}^{0}$} (i2.west |- i1.north);
\end{feynman}
  \end{tikzpicture}
\end{document}

enter image description here

Related Question