Mejor uso de esquinas redondeadas con tikz en \draw

Mejor uso de esquinas redondeadas con tikz en \draw

Tengo este código:

% !TeX encoding = UTF-8


\documentclass[utf8]{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{positioning}

\newcommand{\multilinks}[3]{\foreach \noeud in {#1} {\draw[<-, rounded corners] (#2.west) -| ++(-#3em,0em) |- (\noeud.east);}}

\begin{document}
    \begin{figure}[htp]
        \centering
        \tikzset{
            basic/.style={draw, rounded corners=2pt, thick, text width=8em, align=flush center, node distance=2em},
        }
        \begin{tikzpicture}[]
            \matrix[row sep=2em, column sep=4em, every node/.style={basic}] {
                \node(n1){Text}; & \node(n3){another text}; \\
                \node(n2){one thing}; & \node(n4){again text}; \\
            };
            \multilinks{n1,n2}{n3}{3}
            \multilinks{n1}{n4}{1}
        \end{tikzpicture}
    \end{figure}

\end{document}

Me da este resultado:

Como puedes ver, una curva es extraña. ¿Cómo puedo arreglarlo?

Aquí está el resultado que quiero:

Respuesta1

Un ligero cambio en la definición \multilinksy la lista #1en el primero \multilinks:

\documentclass[tikz]{standalone}
\usetikzlibrary{matrix,positioning}

\newcommand{\multilinks}[3]{
    \foreach \noeud in {#1} {
        \draw[<-, rounded corners] (#2.west) -- ++(-#3 em,0em) |- (\noeud.east);
    }
}

\begin{document}
\tikzset{
    basic/.style={
        draw, 
        rounded corners=2pt, 
        thick, 
        text width=8em, 
        align=flush center, 
        node distance=2em
    }
}
\begin{tikzpicture}[]
\fontsize{8}{9} \selectfont
\matrix[row sep=2em, column sep=4em, every node/.style={basic}] {
    \node(n1){Text}; & \node(n3){another text}; \\
    \node(n2){one thing}; & \node(n4){again text}; \\
};
\multilinks{n2}{n3}{3}
\multilinks{n1}{n4}{1}
\end{tikzpicture}

\end{document}

ingrese la descripción de la imagen aquí


Editar

En caso de que quieras mantener la forma original, la definición de \multilinkses un poco más complicada:

\documentclass[tikz]{standalone}
\usetikzlibrary{matrix,positioning}

\newcommand{\multilinks}[3]{
    \begin{scope}[x=1em,y=1em]
    \newdimen\xend
    \newdimen\yend  
    \path (#2.west);
    \pgfgetlastxy{\xend}{\yend}
    \foreach \i in {#1} {
        \newdimen\xstart
        \newdimen\ystart 
        \path (\i.east);
        \pgfgetlastxy{\xstart}{\ystart}
        \coordinate (1) at ({\xend-#3 em},\ystart);
        \coordinate (2) at ({\xend-#3 em},\yend);
        \ifdim\ystart=\yend
            \draw[->] (\i.east)--(#2.west);
        \else
            \draw[->,rounded corners] (\i.east)--(1)--(2)--(#2.west);
        \fi
    }
    \end{scope}
}

\begin{document}
\tikzset{
    basic/.style={
        draw, 
        rounded corners=2pt, 
        thick, 
        text width=8em, 
        align=flush center, 
        node distance=2em
    }
}
\begin{tikzpicture}[]
\fontsize{8}{9} \selectfont
\matrix[row sep=2em, column sep=4em, every node/.style={basic}] {
    \node(n1){Text}; & \node(n3){another text}; \\
    \node(n2){one thing}; & \node(n4){again text}; \\
};
\multilinks{n1,n2}{n3}{3}
\multilinks{n1}{n4}{1}
\end{tikzpicture}

\end{document}

ingrese la descripción de la imagen aquí

Tenemos que agregar un\ifdim porque TikZ está bastante confundido cuando se le ordena dibujar unrounded corners camino desde el puntoAapuntarA(es decir, dos puntos idénticos):

\documentclass[tikz,margin=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[y=0.2cm]
\draw[rounded corners] (0,0) --(1,0) --(1,0)--(2,0) ; % Some bugs?
\draw[rounded corners] (0,-1)--(1,-1)--       (2,-1);
\draw[rounded corners] (0,-2)--               (2,-2);
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada