[Tex/LaTex] Color each edge separately in TikZ

colortikz-pgf

I want to color the edge AB with thick blue color and edges AC and BC with thick red color.

Referring to the answer in Multiple color edges in TikZ, one way is to use the \clip[draw] command. But, I am not sure how to use in my context, as my shape is a triangle and the triangle is filled with orange color as well.

Expected Result:

enter image description here

Current Result:

enter image description here

The triangle should still have the orange color filled and the edges with the above mentioned color.

Note: This example is from the PGF manual only. Providing the code in the manual is not recommended/appreciated without explanation.

Is there an alternate way to fill a shape instead of using \filldraw or \draw[fill] command.

MWE:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{through}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[help lines/.style={thin,draw=black!50}]
  \coordinate[label=left:\textcolor{blue!80!black}{$A$}] (A) at (0,0);
  \coordinate[label=right:\textcolor{blue!80!black}{$B$}] (B) at (1.25,0.25);
  \draw[name path=A--B] (A) -- (B);
%  \draw let \p1 = ($(B) - (A)$),
%            \n2 = {veclen(\x1,\y1)}
%        in
%           (A) circle (\n2)
%           (B) circle (\n2);
  \node (D) [name path=D,draw,circle through=(B),label=left:$D$,help lines,draw] at (A) {};
  \node (E) [name path=E,draw,circle through=(A),label=right:$E$,help lines,draw] at (B) {};

  \path [name intersections={of=D and E, by={[label=above:$C$]C,[label=below:$C'$]C'}}];

  %\coordinate[label=above:$C$] (C) at (intersection-1); using by instead

  \draw [name path=C--C',red] (C) -- (C');

  \path [name intersections={of=A--B and C--C', by=F}];
  \node[fill=red,inner sep=1pt, label=-45:$F$] at (F) {};

  \draw[fill=orange!80] (A) -- (B) -- (C) -- cycle;
  \foreach \point in {A,B,C}
    \fill [black,opacity=0.5] (\point) circle (2pt);
\end{tikzpicture}
\end{document} 

Best Answer

Some options can be applied to a portion of the path, this is the case of rounded corners. But this does not work with the colors as indicated on page 149 of manual 3.1.1 which always apply to the entire path.

Screenshot of the page 149:

screenshot

So, to make it easier:

  • I first colored the ABC triangle orange with the \fill command (which doesn't draw anything);
  • then I drew two paths, one in blue, the other in red.

screenshot

Commented code:

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{through}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}[help lines/.style={thin,draw=black!50}]
  \coordinate[label=left:\textcolor{blue!80!black}{$A$}] (A) at (0,0);
  \coordinate[label=right:\textcolor{blue!80!black}{$B$}] (B) at (1.25,0.25);
  \path[name path=A--B] (A) -- (B);% <-- construct the path, but not draw it
%  \draw let \p1 = ($(B) - (A)$),
%            \n2 = {veclen(\x1,\y1)}
%        in
%           (A) circle (\n2)
%           (B) circle (\n2);
  \node (D) [name path=D,draw,circle through=(B),label=left:$D$,help lines,draw] at (A) {};
  \node (E) [name path=E,draw,circle through=(A),label=right:$E$,help lines,draw] at (B) {};

  \path [name intersections={of=D and E, by={[label=above:$C$]C,[label=below:$C'$]C'}}];

  %\coordinate[label=above:$C$] (C) at (intersection-1); using by instead

  \path [name path=C--C',red] (C) -- (C');

  \path [name intersections={of=A--B and C--C', by=F}];
  %\node[fill=red,inner sep=1pt, label=-45:$F$] at (F) {};

  \fill[orange!80] (A) -- (B) -- (C) -- cycle;%<-- only fill without draw the edges
  \draw[blue,thick](A)--(B);%<-- draw in blue
  \draw[red,thick](A)--(C)--(B);%<-- draw in red
  \foreach \point in {A,B,C}
    \fill [black,opacity=0.5] (\point) circle (2pt);
\end{tikzpicture}
\end{document}