3

I'd like to label of my edges like in the example below:

residualgraph

However, at this moment, the node labels always appear right on top of the edge and I have difficulties arranging the node labels individually-

Here is the code:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

% Syntax:
% \DoublLine[half of the double line distance]{first node}{second node}{options line 1}{options line 2}
\newcommand\DoubleLine[5][4pt]{%
    \path(#2)--(#3)coordinate[at start](h1)coordinate[at end](h2);
    \draw[#4]($(h1)!#1!90:(h2)$)--($(h2)!#1!-90:(h1)$); 
    % node [midway, above=1pt, fill=none] {3};
    \draw[#5]($(h1)!#1!-90:(h2)$)--($(h2)!#1!90:(h1)$); 
    % node [midway, below=1pt, fill=none] {3};
    }

\begin{document}
    \begin{tikzpicture}[myn/.style={circle,very thick,draw,inner sep=0.25cm,outer sep=3pt}]

    \node[myn] (s) at (0,2) {s};
    \node[myn] (a) at (2,4) {a};
    \node[myn] (b) at (2,0) {b};
    \node[myn] (c) at (5,4) {c};
    \node[myn] (d) at (5,0) {d};
    \node[myn] (t) at (7,2) {t};

    \DoubleLine{s}{a}{<-,very thick,black}{->,very thick,red}
    \DoubleLine{s}{b}{<-,very thick,black}{->,very thick,red}
    \DoubleLine{a}{b}{<-,very thick,black}{->,very thick,red}
    \DoubleLine{a}{c}{<-,very thick,black}{->,very thick,red}
    \DoubleLine{b}{d}{<-,very thick,black}{->,very thick,red}
    \DoubleLine{c}{t}{<-,very thick,black}{->,very thick,red}
    \DoubleLine{d}{t}{<-,very thick,black}{->,very thick,red} 

    \end{tikzpicture}
\end{document}
0

Alternatively to Zarko's answer and probably with fewer modifications to your own code, you may have:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

% Syntax:
% \DoublLine[half of the double line distance]{first node}{second node}{options line 1}{label line 1}{options line 2}{label line 2}
\newcommand\DoubleLine[7][4pt]{%
    \path(#2)--(#3)coordinate[at start](h1)coordinate[at end](h2);
    \draw[#4]($(h1)!#1!90:(h2)$)-- node [auto=left] {#5} ($(h2)!#1!-90:(h1)$); 
    \draw[#6]($(h1)!#1!-90:(h2)$)-- node [auto=right] {#7} ($(h2)!#1!90:(h1)$);
    }

\begin{document}
    \begin{tikzpicture}[myn/.style={circle,very thick,draw,inner sep=0.25cm,outer sep=3pt}]

    \node[myn] (s) at (0,2) {s};
    \node[myn] (a) at (2,4) {a};
    \node[myn] (b) at (2,0) {b};
    \node[myn] (c) at (5,4) {c};
    \node[myn] (d) at (5,0) {d};
    \node[myn] (t) at (7,2) {t};

    \DoubleLine{s}{a}{<-,very thick,black}{1}{->,very thick,red}{7}
    \DoubleLine{s}{b}{<-,very thick,black}{2}{->,very thick,red}{6}
    \DoubleLine{a}{b}{<-,very thick,black}{3}{->,very thick,red}{5}
    \DoubleLine{a}{c}{<-,very thick,black}{4}{->,very thick,red}{4}
    \DoubleLine{b}{d}{<-,very thick,black}{5}{->,very thick,red}{3}
    \DoubleLine{c}{t}{<-,very thick,black}{6}{->,very thick,red}{2}
    \DoubleLine{d}{t}{<-,very thick,black}{7}{->,very thick,red}{1}

    \end{tikzpicture}
\end{document}

which produces:

snapshot

For more information about the auto option, you may want to consult the pgfmanual, §17.8, page 236).

|improve this answer|||||
1

Like this:

enter image description here

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc, quotes}

% Syntax:
% \DoublLine[half of the double line distance]{first node}{second node}{options line 1}{options line 2}
\newcommand\DoubleLine[5][4pt]{%
    \path(#2)--(#3)coordinate[at start](h1)coordinate[at end](h2);
    \draw[<-,very thick,black] ($(h1)!#1!90:(h2)$)  to ["#4"]   ($(h2)!#1!-90:(h1)$);
    \draw[->,very thick,  red] ($(h1)!#1!-90:(h2)$) to ["#5" '] ($(h2)!#1!90:(h1)$);
    }

\begin{document}
    \begin{tikzpicture}[
myn/.style={circle,very thick,draw,inner sep=0.25cm,outer sep=3pt}
                        ]
    \node[myn] (s) at (0,2) {s};
    \node[myn] (a) at (2,4) {a};

    \DoubleLine{s}{a}{1}{2}

    \end{tikzpicture}
\end{document}

Edit: In case, that you like to determine each arrow style at arrow, than you need extend arrows definition to:

\newcommand\DoubleLine[7][4pt]{%
    \path(#2)--(#3)coordinate[at start](h1)coordinate[at end](h2);
    \draw[#4] ($(h1)!#1!90:(h2)$)  to ["#6"]   ($(h2)!#1!-90:(h1)$);
    \draw[#5] ($(h1)!#1!-90:(h2)$) to ["#7" '] ($(h2)!#1!90:(h1)$);
    }

and wrote your double line as

\DoubleLine{s}{a}{<-,very thick,black}{->,very thick,red}{1}{2}
|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for?Browse other questions tagged or ask your own question.